Añade mejoras al script de instalacion

This commit is contained in:
drymer 2016-11-10 22:49:08 +01:00
parent 0370bdcff1
commit 9dcb89afea
2 changed files with 36 additions and 41 deletions

View File

@ -102,48 +102,48 @@
- [[Añadir soporte para editar archivos en docker][Añadir soporte para editar archivos en docker]]
- [[Insertar fecha de hoy][Insertar fecha de hoy]]
- [[Abrir eshell aquí][Abrir eshell aquí]]
- [[Devolver enlaces][Devolver enlaces]]
* Acerca de este documento
:PROPERTIES:
:CUSTOM_ID: Acerca de este documento
:END:
Este documento está hecho en org-mode y es a la vez la explicación de todo lo que hay en mi configuración de emacs y la propia configuración de emacs. Esto se logra mediante la programación literaria, un concepto bastante molón de programación.
Este documento está hecho en org-mode y es tanto mi configuración de emacs como la explicación de esta. Más información sobre esto aquí.
Mi idea es que termine siendo más o menos un tutorial de emacs, extendido con los articulos del blog. A ver como sale. El documento estará en este git.
Mi idea es que termine siendo más o menos un tutorial de emacs, tal vez extendido con los articulos del blog. A ver como sale. Se puede instalar mi configuración de emacs del siguiente modo:
#+BEGIN_SRC sh :results code
cat ~/.emacs.d/init.el
#+BEGIN_SRC bash :tangle no :eval no
git clone https://daemons.cf/cgit/dotfiles
cd dotfiles
./instala.sh emacs
#+END_SRC
#+RESULTS:
#+BEGIN_SRC emacs-lisp :tangle no
;; Antes que nada, quitamos del path el org-mode que viene con emacs, por que es viejo
(dolist (val load-path)
(if (string-match "lisp\/org" val)
(progn
(setq org-viejo val)
(delete val load-path)
)
)
)
Que hace esto exactamente? Básicamente, instalar todos los paquetes y scripts mencionados en este documento. De un modo más extendido, lo que hace el script de =instala.sh= es esto (la explicación en los comentarios):
;; Se añade la ruta del org-mode nuevo
(add-to-list 'load-path (concat user-emacs-directory "el-get/org-mode-maint/lisp/"))
#+BEGIN_SRC bash :tangle no :eval no
# Establece el directorio de las configuraciones, lo crea y las copia ahí
EMACSDIR="$HOME/.emacs.d"
mkdir -p $EMACSDIR
ln -sf $(pwd)/emacs.d/{init.el,init-literate.org} $EMACSDIR
;; Se intenta cargar el org-mode más nuevo. Si falla, vuelve a añadir al path la versión vieja para poder cargar el fichero de configuración
(unless (require 'org nil 'noerror)
(add-to-list 'load-path org-viejo)
)
# crear private-literate.org si no existe para que no se queje init.el
if [[ ! -e $EMACSDIR/private-literate.org ]]
then
echo -e "* Vacio\n#+BEGIN_SRC emacs-lisp\n#+END_SRC" > $EMACSDIR/private-literate.org
fi
;; Se carga la configuración pública y la privada
(org-babel-load-file (concat user-emacs-directory "init-literate.org"))
(org-babel-load-file (concat user-emacs-directory "private-literate.org"))
# Instalar todos los paquetes de emacs
emacs -Q --batch --eval "(ignore-errors (load-file \""$EMACSDIR/"init.el\"))"
emacs -Q --batch --eval "(ignore-errors (load-file \""$EMACSDIR/"init-literate.el\"))"
emacs -Q --batch --eval '(ignore-errors (load-file "/tmp/powerline.el"))'
# Por algún motivo al compilar desde el-get mete una ruta incorrecta en org-loaddefs.el
find $EMACSDIR -name 'org-loaddefs.el' | xargs sed -i "s,org-mode-maint/lisp/,,g"
# Necesito permiso de superusuario para copiar los scripts capture y demacs en /usr/local/bin/
sudo ln -sf $(pwd)/emacs.d/{capture,demacs} /usr/local/bin/
#+END_SRC
Estas lineas cargan =org-mode= y mediante =org-babel= coge todos los bloques de lisp que hay en =init-literate.org= y los junta todos en =init-literate.el=, que luego carga cómo la configuración cómo tal. El archivo =private-literate.org= es, como su nombre indica, privado. Tengo mi contraseña de GNU Social y la de mi nextcloud.
PD: =init-literate.org= está [[http://daemons.cf/wp-content/init-literate.org][aquí]].
Este archivo en formato org-mode está [[https://daemons.cf/cgit/dotfiles/plain/emacs.d/init-literate.org][aquí]]. Este archivo en formato HTML está [[https://daemons.cf/stories/mi-configuracin-de-emacs/][aquí]].
* Configuración Genérica
:PROPERTIES:
:CUSTOM_ID: Configuración Genérica
@ -163,7 +163,7 @@ cat `which demacs`
USERID=`id -u`
if [[ ! -e /tmp/emacs$USERID/server ]]
then
emacs-24.5 --daemon
emacs --daemon
emacsclient -c -n -e '(load-file "/tmp/powerline.el")' -e "(org-agenda-list)"
else
emacsclient -c -n -e "(org-agenda-list)"
@ -2111,11 +2111,3 @@ directory to make multiple eshell windows easier."
(insert (concat "ls"))
(eshell-send-input)))
#+END_SRC
** Devolver enlaces
:PROPERTIES:
:CUSTOM_ID: Devolver enlaces
:END:
No le servirá de mucho a nadie, lo uso para copiar en el portapapeles las direcciones de un articulo de mi web.
#+BEGIN_SRC emacs-lisp
#+END_SRC

View File

@ -56,23 +56,26 @@ then
elif [[ $1 = "emacs" ]]
then
# Establece el directorio de las configuraciones, lo crea y las copia ahí
EMACSDIR="$HOME/.emacs.d"
mkdir -p $EMACSDIR
cp $(pwd)/emacs.d/{init.el,init-literate.org} $EMACSDIR
ln -sf $(pwd)/emacs.d/{init.el,init-literate.org} $EMACSDIR
# crear private-literate.org si no existe para que no se queje init.el
if [[ ! -e $EMACSDIR/private-literate.org ]]
then
echo -e "* Vacio\n#+BEGIN_SRC emacs-lisp\n#+END_SRC" > $EMACSDIR/private-literate.org
fi
echo "Instalando paquetes de emacs."
# Instalar todos los paquetes de emacs
emacs -Q --batch --eval "(ignore-errors (load-file \""$EMACSDIR/"init.el\"))"
emacs -Q --batch --eval "(ignore-errors (load-file \""$EMACSDIR/"init-literate.el\"))"
emacs -Q --batch --eval '(ignore-errors (load-file "/tmp/powerline.el"))'
# Por algun motivo al compilar desde el-get mete una ruta incorrecta en org-loaddefs.el
# Por algún motivo al compilar desde el-get mete una ruta incorrecta en org-loaddefs.el
find $EMACSDIR -name 'org-loaddefs.el' | xargs sed -i "s,org-mode-maint/lisp/,,g"
echo "Necesito permiso de superusuario para copiar los scripts capture y demacs en /usr/local/bin/."
# Necesito permiso de superusuario para copiar los scripts capture y demacs en /usr/local/bin/
sudo ln -sf $(pwd)/emacs.d/{capture,demacs} /usr/local/bin/
elif [[ $1 = "" ]]
then