Algo de mi configuración de Emacs, por orden alfabético
Se puede ejecutar directamente el código en org-mode si configuramos http://orgmode.org/worg/org-contrib/babel/
;;(acons 'sh 't org-babel-load-languages)
;; Babel
;; http://stackoverflow.com/questions/15773354/indent-code-in-org-babel-src-blocks
(setq org-src-tab-acts-natively t)
;; http://stackoverflow.com/questions/10642888/syntax-highlighting-within-begin-src-block-in-emacs-orgmode-not-working
(setq org-src-fontify-natively t)
;; esto lo tenía de antes
;;(require 'calfw)
(org-babel-do-load-languages
'org-babel-load-languages
'((emacs-lisp . t)
(R . t)
(sh . t)
(python . t)
(ruby . t)
(sparql . t)
))
;; http://stackoverflow.com/questions/4711179/auto-expanding-blocks-of-comments-in-emacs
(defun refill-when-in-comment ()
(interactive)
(let ((curr-face (get-char-property (point) 'face)))
(if (member "comment" (split-string (prin1-to-string curr-face) "-"))
(fill-paragraph t)
)
)
)
(defun smart-space (arg)
(interactive "P")
(refill-when-in-comment)
(self-insert-command (prefix-numeric-value arg))
)
(global-set-key " " 'smart-space)
Elpy es el entorno Python en Emacs Lisp:
Primero añadimos a Emacs el paquete en GitHub:
;; elpy
;
(require 'package)
(add-to-list 'package-archives
'("elpy" . "http://jorgenschaefer.github.io/packages/"))
Luego corremos en Emacas M-x package-refresh-contents
para cargar los contenidos del repositorio. Entonces ya podemos añadir elpy con M-x package-install RET elpy RET
.
A continuación añadimos esto al archivo de configuración de Emacs, .emacs
:
(package-initialize)
(elpy-enable)
En el lado de Python, debemos instalar:
pip install flake8
Y luego tendrás que elegir entre rope o jedi:
pip install rope
pip install jedi
ERC es un cliente este cliente de IRC.
(require 'erc)
Soporte para LaTeX en Emacs. Fundamental.
;; LaTeX
(require 'ox-latex)
(add-to-list 'load-path "~/.emacs.d/elisp")
(load-library "latex-templates")
;; wrap código fuente
;(add-to-list 'org-latex-packages-alist '("" "minted"))
;(setq org-latex-listings 'minted)
;
;(setq org-latex-pdf-process
; '("pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f"
; "pdflatex -shell-escape -interaction nonstopmode -output-directory %o %f")
(setq org-export-latex-listings t)
(add-to-list 'org-latex-packages-alist '("" "listings"))
(add-to-list 'org-latex-packages-alist '("" "color"))
Presentaciones HTML5 con org-mode, una alternativa a Reveal.
;; org-html5presentation
(add-to-list 'load-path "~/ruta/org-html5presentation.el/")
(require 'ox-html5presentation)
Aunque org-mode es maravilloso, hay que prestar atencióna Markdown.
;; Markdown
(eval-after-load "org"
'(require 'ox-md nil t))
Gestión de bibliografía en Emacs
;; reftex
(defun org-mode-reftex-setup ()
(load-library "reftex")
(and (buffer-file-name)
(file-exists-p (buffer-file-name))
(reftex-parse-all))
(define-key org-mode-map (kbd "C-c )") 'reftex-citation)
)
(add-hook 'org-mode-hook 'org-mode-reftex-setup)
(setq org-latex-to-pdf-process (list "latexmk -pdf -bibtex %f"))
(setq org-latex-pdf-process '("latexmk -pdflatex='pdflatex -interaction nonstopmode' -pdf -bibtex -f %f"))
(setq reftex-default-bibliography
(quote
("~/Documentos/doctorado/tesis/bibliografia.bib")
))
(setq reftex-use-external-file-finders t)
(setq reftex-external-file-finders
'(("tex" . "kpsewhich -format=.tex %f")
("bib" . "kpsewhich -format=.bib %f")))
Melpa responde a Milkypostman’s Emacs Lisp Package Archive, un gestor de paquetes para Emacs Lisp con las siguientes características:
- Paquetes actualizados en sus propios servidores.
- Se instalan con el paquete package.el, no se necesitan herramientas de control de versiones locales.
- Verificados, no los encontrarás obsoletos ni con otro nombre ni distintos.
- Permite actualizaciones automáticas.
- Una forma estándar de acceso
- Extensible, puedes crear tu propia receta en github y Melpa creará el paquete.
;; melpa
(setq package-archives
'(("gnu" . "http://elpa.gnu.org/packages/")
("melpa" . "http://melpa.milkbox.net/packages/")))
La maravillosa herramienta para creación de presentaciones en Reveal en org-mode:
;; Reveal
(require 'ox-reveal)
(setq org-reveal-root "~/emacs.d/elisp/org-reveal")
Configuración que mejora tu sesión.
(setq max-specpdl-size 1000) ; default is 1000, reduce the backtrace level
(setq max-specpdl-size 32000) ; http://stackoverflow.com/questions/30736631/ess-produces-variable-binding-depth-exceeds-max-specpdl-size
(setq debug-on-error t) ; now you should get a backtrace
Leído en Stackoverflow, cómo guardar la sesión con Emacs, por si te da por cerrar de repente:
You can save the desktop manually with the command M-x desktop-save. You can also enable automatic saving of the desktop when you exit Emacs, and automatic restoration of the last saved desktop when Emacs starts: use the Customization buffer (see Easy Customization) to set desktop-save-mode to t for future sessions, or add this line in your ~/.emacs file:
(desktop-save-mode 1)
Quién no ha querido hacer un poco de SPARQL en Emacs? Puedes empezar en Emacswiki o GitHub y si no lo has hecho antes, configurar Babel:
;; sparql
;;
(add-to-list 'load-path "~/.emacs.d/elisp/sparql-mode/")
(autoload 'sparql-mode "sparql-mode.el"
"Major mode for editing SPARQL files" t)
(add-to-list 'auto-mode-alist '("\\.sparql$" . sparql-mode))
(add-to-list 'auto-mode-alist '("\\.rq$" . sparql-mode))
Web-mode es un modo para editar contenido web. Tienes tantas posibilidades que mejor que lo pruebes
;; web-mode
(require 'web-mode)
(add-to-list 'auto-mode-alist '("\\.phtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.tpl\\.php\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.[agj]sp\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.as[cp]x\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.erb\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.mustache\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.djhtml\\'" . web-mode))
(add-to-list 'auto-mode-alist '("\\.html?\\'" . web-mode))
Motor de tipografías TeX que utiliza Unicode.
;; xetex
(setq-default TeX-engine 'xetex)
Zotelo gestiona tus colecciones de Zotero en Emacs
;; Zotelo
(require 'zotelo)
(add-hook 'TeX-mode-hook 'zotelo-minor-mode)