YASnippet + popup: trozos de código automáticamente
Estuve buscando por todas partes un .el que, cada vez que escribiera el principio de un tag, este plugin autocompletara el final del tag, y pusiera mi cursor al medio.
Al final lo encontré en la forma de una herramienta mucho más completa, que no solo funciona con tags, sino con C, C++, C#, Perl, Python, Ruby, SQL, LaTeX, HTML, CSS y más~, dejaré aquí las instrucciones para instalarlo... si todo lo que dije aquí no funciona, o si quieres aprender más sobre YASnippet y cómo añadirle la opción popup, no olvides ver los enlazes en la última sección "fuente"...
En realidad, es bastante fácil ~_^
Puedes descargar un .zip de esta dirección: https://github.com/capitaomorte/yasnippet/archive/master.zip y luego descomprimirlo en tu ~/.emacs.d/plugins/ (si la carpeta plugins no existe, créala)
También puedes clonar el repositorio en tu ~/.emacs.d/plugins con un
$ cd ~/.emacs.d/plugins/
$ git clone https://github.com/capitaomorte/yasnippet.git
$ cp -r ~/.emacs.d/plugins/yasnippet/snippets ~/.emacs.d/plugins/
Luego, solo añades éstas líneas a tu .emacs:
;;YASnippet
(add-to-list 'load-path "~/.emacs.d/plugins/yasnippet") (require 'yasnippet)
(yas-global-mode 1)
;;popup on YASnippet
(require 'popup)
(require 'yasnippet)
;; add some shotcuts in popup menu mode
(define-key popup-menu-keymap (kbd "M-n") 'popup-next)
(define-key popup-menu-keymap (kbd "TAB") 'popup-next)
(define-key popup-menu-keymap (kbd "<tab>") 'popup-next)
(define-key popup-menu-keymap (kbd "<backtab>") 'popup-previous)
(define-key popup-menu-keymap (kbd "M-p") 'popup-previous)
(defun yas/popup-isearch-prompt (prompt choices &optional display-fn)
(when (featurep 'popup)
(popup-menu*
(mapcar
(lambda (choice)
(popup-make-item
(or (and display-fn (funcall display-fn choice))
choice)
:value choice))
choices)
:prompt prompt
;; start isearch mode immediately
:isearch t
)))
(setq yas/prompt-functions '(yas/popup-isearch-prompt yas/no-prompt))
para usarlo... tienes que escribir una "palabra clave" y luego presionar TAB. Por ejemplo, crea un archivo .html y escribe "div", luego, presiona tab y selecciona el esqueleto que quieras usar :D
O... entra a un archivo .cpp, escribe "main" y presiona TAB...
Para ver cuáles son palabras clave disponibles, puedes revisar el menú YASnippet (dentro de emacs, la barra superior), y en la primera parte del menú (antes de la primera división de "-------------") puedes ver *-mode >, y cuando pongas tu cursor sobre eso, aparecerán todos los "snippets" disponibles para el modo de edición en el que estás, y a la derecha de cada uno, la palabra clave que debes insertar, seguido de un "=>".
Si algo falla, o si quieres aprender más sobre este plugin, te recomiendo estos links:
https://github.com/capitaomorte/yasnippet <-- Github de YASnippet
http://iany.me/2012/03/use-popup-isearch-for-yasnippet-prompt/ <-- explicación de popups para YASnippet