Aprendiendo GNU Emacs y org-mode (IV)

Lo perfecto es enemigo de lo bueno

Esta larga baja está matando mi ánimo y, si además le sumo mi tendencia a leer demasiado, me ando perdiendo un poco, así que trataré de recordar la frase del encabezado y ponerme a escribir ;).

Viene esto a colación de que el exceso de lectura me esta haciendo no avanzar, lo que aumenta el desánimo, por lo que he decidido parar con la explicación de org-mode  que creo esta muy bien hecha por nasciiboy en la entrada que encontrareis en las referencias y centrarme en usarlo, os cuento.

Mi .Emacs

Vamos al meollo de la entrada que es dejar registro del estado en que comienzo a avanzar y por fin me he decidido a meterle  mano al fichero .Emacs.

Oh cielos, que dolor de cabeza de paŕentesis!   🙁

Básicamente he tomado de las páginas que os pongo en las referencias aquellas partes que me han parecido más interesantes, y entendía, para que Emacs funciones en mi equipo como quiero.

Decir que tras muchas pruebas he descartado el aplicar un tema a mi Emacs para tener el fondo oscuro, ya que en general no me han gustado, y me he limitado a crear un lanzador con esta instrucción:

emacs -rv

Con ello he conseguido un fondo negro y unos colores muy aceptables en mi Emacs sin recurrir a ningún tema.

Incluir repositorios y paquetes

La primera parte ha consistido en incluir en .emacs los tres repositorios fundamentales de que os hablé en esta entrada mediante el siguiente código:

;;; Añado los repositorios principales del Emacs

(package-initialize)

(setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
 ("marmalade" . "https://marmalade-repo.org/packages/")
 ("melpa" . "https://melpa.org/packages/")))

Con esta pequeña “tontería” conseguimos qie la lista de paquetes pase de 244 a 4.196, con lo que parece se justifica una frase que leí hace poco en la lista de Emacs que decía

“No es correcto preguntar si Emacs puede hacer algo, lo correcto es preguntar cómo Emacs puede hacerlo”

Activar los paquetes que nos interesan

A partir de ahí sólo he instalado el paquete undo-tree ya que tanto org cómo ido, los otros que de momento voy a usar, vienen por defecto, para lo que añado estas líneas a mi .emacs:

;;; Instalado al incluir paquetes

(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(package-selected-packages (quote (undo-tree org))))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

;; Paquetes requeridos

(require 'org-install)
(require 'org-capture)
(require 'undo-tree)

(global-undo-tree-mode)
Personalizaciones

Lo siguiente es hacer los ajustes de presentación que me interesan que son los siguientes y creo quedan bien explicados en los comentarios:

;;; =================
;;; Personalizaciones
;;; =================

;;; Elimnar el mensaje de bienvenida:

(setq inhibit-startup-message t)
 
;;; No mostrar la barra del menú: y de herramientas
;;; Por el momento las dejo comentadas hasta que me sienta seguro para desactivarlas

;(menu-bar-mode -1)
(tool-bar-mode -1)
 
;;; Reemplazar "yes" y "no" por "y" y "n"

(fset 'yes-or-no-p 'y-or-n-p)
 
;;; Mover a la papelera al borrar archivos y directorios:

(setq delete-by-moving-to-trash t
 trash-directory "~/.local/share/Trash/files")
 
;;; guardar la sessión al cerrar emacs y restaurarla
;;; al arrancar de nuevo. Cero (0) para desactivar:

(desktop-save-mode 1)
 
;;; Para que se muestren todos los buffers abiertos al pulsar C-x b (ido):

(ido-mode 1)

;;; Activar/desactivar automáticamente corrector con C-c c:

(global-set-key (kbd "C-c c") 'flyspell-mode)

;;; Ignorar determinados buffers.

(setq ido-ignore-buffers '("^ " "*Completions*" "*Shell Command Output*"
 "*Messages*" "Async Shell Command" "*scratch*"
 "*tramp*"))

;;; ajuste de la apariencia de org-mode

'(fill-column 130) ;; posición de fin de columna
'(org-tags-column 135)      ;; posición de inicio de etiquetas
'(global-visual-line-mode 1) ; activa salto de linea 1 for on, 0 for off.

Destacar en este apartado que aunque en general todo el mundo propone desactivar la barra de menú, yo por mi manía de huir del ratón he preferido dejarla, ya que con F10 me permite llegar a sitios que aún no controlo bien y sin embargo la barra de herramientas no me sirve para nada.

Ajustes para org-mode

Lo último son una seríe de ajustes necesario para el uso de org-mode:

;;; ======================
;;; CONFIGURACION org-mode
;;; ======================

(org-agenda-files (quote ("/media/datos/org/miGTD.org")))

;; This buffer is for text that is not saved, and for Lisp evaluation.
;; To create a file, visit it with C-x C-f and enter text in its buffer.

;; (setq load-path (append (list (expand-file-name "/usr/share /emacs/site-lisp/org")) load-path))
;; (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))

'(org-startup-indented t)   ;; activar la indentación en org-mode

;;; Teclas definidas para org-mode

(global-set-key "\C-cl" 'org-store-link)
(global-set-key "\C-ca" 'org-agenda)
(global-set-key "\C-cb" 'org-iswitchb)
(global-set-key (kbd "<f6>") 'org-capture)

Decir que de este apartado es por ahora el más complejo para mí y soy consciente que necesitará retoques.

Entiendo la definición de teclas no así las líneas en negrita que estoy pendiente de investigar, pero que he tenido que dejar.  Si alguno lo tiene claro y puede incluirlo en los comentarios se agradece.

También sé me falta algo para usar MobileOrg, algo que tendré que hacer.

Actualización 2-2017: Las dos líneas en negrita son innecesarias, por eso el comentario (ver en los comentarios el mensaje de drymer)

Una joyita “Copy as org-mode”

No hace mucho encontré este complemento de Firefox  que me esta resultando de lo más efectivo en mi toma de notas en la Web al permitir copiar fácilmente a mi fichero de notas, links o trozos de páginas.

Entradas sobre Emacs que me han llamado la atención

En los últimos tiempos he revisado, a veces leído con mucho interés y algunas hasta comprendido, una serie de entradas sobre Emacs que creo interesante destacar:

En Español
En Inglés
La comunidad Emacs

Cómo demuestra el punto anterior hay una comunidad viva tras esta “religión” que es GNU Emacs, comunidad a la que espero ir conociendo y poder aportar mi granito de arena.

Por lo que he vitos el protocolo IRC parece ser de lo mejor para mantener a un grupo en contacto, dentro del Software Libre y espero pronto poder incorporarme a los canales de Emacs y Debian, aunque mi inglés sea algo cortito.

La caña será que pueda hacerlo desde el propio Emacs.

Existen canales en el servidor de freenode tanto en inglés (#emacs) cómo en español (#emacs-es) y por supuesto no hay que perderse los planet en español e inglés.

Unos retoques a mi equipo

Vuelta a XFCE

Lo primero a decir es que últimamente FireFox me tocaba mucho las narices en Gnome 3, debido a que las teclas rápidas no iban correctamente, lo que para mí es crítico.

Debido a que único que he encontrado por la Web es alguna referencia a estos fallos debido a la integración con Gnome, he vuelto a mi inicial XFCE dejando el escritorio como veis en la imagen inicial  aunque FireFox sigue sin ir correctamente, por lo que esperaremos a Debian 9 y me pondré en estable en ese momento, a ver que pasa.

Es lo que tiene ser un aprendiz! 🙁

Instalación de un programa para tomar imágenes de pantalla

He instalado este pequeño paquete xfce4-screenshooter para que me facilite la toma de imágenes de pantalla, me encanta su simplicidad y sólo hecho en falta, por que no he podido encontrarlo no porque no esté, que igual si está, la posibilidad de cambiar la carpeta de destino de las imágenes.

Ajustes del teclado

Gnu/Linux suele incorporar una opción muy útil para mí que es la combinación de teclas Alt-F2 para llamar a un programa.

Por desgracias las traducciones de los nombres de paquetes hacen que muchas veces sea difícil encontrarlos por este medio y aunque siempre nos queda el menú he preferido crearme mis propios atajos de teclado para las aplicaciones que más uso dejando, por el momento, estas:

Super-A: Thunar (explorador archivos)
Super-C: Evolution (correo)
Super-E: emacs -rv
Super-F: GnuCash
Super-T: Sakura (terminal)
Super-W: FireFox
ImprPantalla: xfce-screenshooter -f (copia pantalla)Ctrl-ImprPantalla: xfce-screenshooter -w (copia ventana activa)
Mayús-ImprPantalla: xfce-screenshooter -r (copia regíon de pantalla)

Perdonar si esto se ha alargado un poco y hasta la próxima! ;).

Referencias

Además de los correspondientes manuales, estos son los sitios de los que ha salido gran parte de la información que estoy usando:

Mi más sincero agradecimiento a todos ellos por el trabajo realizado y, sobre todo, por compartirlo con la comunidad.

2 opiniones en “Aprendiendo GNU Emacs y org-mode (IV)”

  1. Holi
    Te explico.

    (setq load-path (append (list (expand-file-name “/usr/share/emacs/site-lisp/org”)) load-path))

    load-path es la variable encargada de definir las rutas en las que buscar paquetes. El setq es para definir variables, en este caso la variable load-path. El valor de esta es la concatenación (concat) del valor antiguo de la variable load-path junto a todos los ficheros que hay en la ruta “/usr/share/emacs/site-lisp/org” (expand-file-name), todo ello transformado en una lista (list), ya que es el formato que tiene la variable load-path.

    (add-to-list ‘auto-mode-alist ‘(“\\.org\\'” . org-mode))
    auto-mode-alist es la variable encargada de definir que tipos de ficheros se abren en que modo. En este caso, los ficheros “.org” se abren org-mode. Lo que hace el código es añadir a la variable auto-mode-alist la asociación de fichero con su modo.

    En cualquier caso, diria que ambas lineas son innecesarias, ya que todo lo que hay en /usr/share/emacs/site-lisp/ ya está en la variable load-path. Para comprobar esto, puedes comentar la linea, reiniciar emacs y ejecutar C-h v load-path RET. Así verás el valor de la variable antes de modificarlo, y probablemente veas que esa ruta ya está incluida. Y en el caso de auto-mode-alist lo mismo, aunque de esto no estoy tan convencido.

    Saludos, una entrada muy interesante.

    1. Muchísimas gracias por tan clara explicación!
      Me alegro te haya gustado la entrada.
      Ambas líneas están ya comentadas, “/usr/share/emacs/site-lisp/org” no aparece duplicados salvo con “/usr/share/emacs/25.1/site-lisp/org” y creo debe dar igual.
      La segunda no es necesaria, ya que Emacs abre cualquier archivo con extensión .org en modo org.
      Un saludo

Deja un comentario