usar salir como comandos emacs clojure dot-emacs

salir - como usar emacs



Emacs: ¿la mejor práctica para los modos de carga perezosos en.emacs? (2)

¿Existe una mejor práctica en cuanto a los modos de carga perezosa cuando se encuentra con una extensión de archivo relevante?

En este momento tengo aproximadamente 25 modos de Emacs diferentes instalados, y el inicio se ha vuelto lento. Por ejemplo, aunque es genial tener el modo clojure listo, raramente lo uso, y quiero evitar cargarlo a menos que abra un archivo con la extensión .clj. Tal funcionalidad "requiere pereza" parece la forma correcta de configurar el modo en general ...

No encontré nada en línea, así que lo hice yo mismo.

En lugar de:

(require ''clojure-mode) (require ''tpl-mode)

Tengo esto:

(defun lazy-require (ext mode) (add-hook ''find-file-hook `(lambda () (when (and (stringp buffer-file-name) (string-match (concat "//." ,ext "//'") buffer-file-name)) (require (quote ,mode)) (,mode))))) (lazy-require "soy" ''soy-mode) (lazy-require "tpl" ''tpl-mode)

Esto parece funcionar (¡soy un novato elisp así que los comentarios son bienvenidos!), Pero me desconcierta no encontrar nada escrito sobre este tema en línea. ¿Es este un enfoque razonable?


La instalación que desea se llama carga automática . El archivo fuente clojure-mode , clojure-mode.el , incluye un comentario sobre cómo organizar esto:

;; Add these lines to your .emacs: ;; (autoload ''clojure-mode "clojure-mode" "A major mode for Clojure" t) ;; (add-to-list ''auto-mode-alist ''("//.clj$" . clojure-mode))


Esta es una forma,

(provide ''my-slime) (eval-after-load "slime" ''(progn (setq slime-lisp-implementations ''((sbcl ("/usr/bin/sbcl")) (clisp ("/usr/bin/clisp"))) common-lisp-hyperspec-root "/home/sujoy/documents/hyperspec/") (slime-setup ''(slime-asdf slime-autodoc slime-editing-commands slime-fancy-inspector slime-fontifying-fu slime-fuzzy slime-indentation slime-mdot-fu slime-package-fu slime-references slime-repl slime-sbcl-exts slime-scratch slime-xref-browser)) (slime-autodoc-mode) (setq slime-complete-symbol*-fancy t) (setq slime-complete-symbol-function ''slime-fuzzy-complete-symbol) (add-hook ''lisp-mode-hook (lambda () (slime-mode t))))) (require ''slime)

junto con,

;; slime mode (autoload ''slime "my-slime" "Slime mode." t) (autoload ''slime-connect "my-slime" "Slime mode." t)