Bad Daemons

Ver documentación usando Ivy

No es raro necesitar consultar documentación mientras se está programando. Como siempre, es mejor buscarla y verla desde emacs. Hay un modo de hacerlo usando los archivos de Dash, que es un programa para buscar documentación offline.

El modo que veremos a continuación es counsel-dash, que de hecho está basado en helm-dash, un programa muy molón. La diferencia que hay entre counsel-dash y helm-dash es la obvia, la primera usa counsel y la segunda helm. El problema de counsel-dash es que aún no está muy refactorizado y sigue necesitando que se instale helm, pero no es muy terrible ya que no se usa y además hay intención de quitar la dependencia.

Antes que nada hay que instalar sqlite en la distribución que se use. En Debian el paquete se llama sqlite o sqlite3. Luego, se puede instalar mediante el-get o mediante elpa. Yo he usado el primer método. La configuración es la siguiente:

(add-to-list 'el-get-sources '(:name counsel-dash
                                     :description "counsel-dash"
                                     :type github
                                     :pkgname "nathankot/counsel-dash"))

(if (not (el-get-package-installed-p 'counsel-dash))
  (progn
    (package-install 'helm)
    (package-install 'dash-functional)
    (package-install 'helm-dash)
    (el-get 'sync 'counsel-dash)))

(use-package counsel-dash
  :load-path "el-get/counsel-dash"
  :init
  (setq counsel-dash-docsets-path "~/.emacs.d/docsets")
  (setq counsel-dash-common-docsets '("Bash" "Emacs Lisp" "HTML" "Markdown" "Nginx" "Python 3" "Docker" "Font_Awesome" "LaTeX" "MySQL" "Python 2" "SQLite"))
  (setq counsel-dash-browser-func 'eww))

La variable counsel-dash-docsets-path define la ruta en la que estaran los docsets (veremos luego como instalarlos), counsel-dash-common-docsets son los docsets que se quieren usar y la última linea establece que para ver la documentación se usará eww, el navegador de Emacs.

Ahora veremos como instalar los docsets. Para ver una lista, se puede ir a esta dirección o se puede simplemente ejecutar counsel-dash-install-docset. Como a mi me gusta que se auto-instalen las cosas que no tengo instaladas, he escrito el siguiente código de elisp para que instale los docsets que me interesan:

(setq local_docsets counsel-dash-common-docsets)
(while local_docsets
  (setq docs (car local_docsets))
  (if (string-match "Python" docs)
      (setq docs (replace-regexp-in-string " " "_" docs)))
  (if (string-match "Emacs Lisp" docs)
      (setq docs (replace-regexp-in-string " " "_" docs)))
  (if (not (file-exists-p (concat counsel-dash-docsets-path "/" (car local_docsets) ".docset")))
      (counsel-dash-install-docset docs))
  (setq local_docsets (cdr local_docsets)))

No tengo ni idea si el código es muy "correcto", pero dado que funciona y solo deberia usarse una vez cada mucho, valdrá. Lo que hace es un bucle pasando por todas las cadenas de texto de la lista counsel-dash-common-docsets, comprueba si existe el docset en la ruta especificiada en counsel-dash-docsets-path y si no está instalado, lo instala.

A continuación una captura del print de Python.

counsel-dash.png