2011-12-22 10 views
9

Estoy usando emacs 24 en Windows 7 y tengo instalado technomancy's clojure-mode junto con paredit 23 beta. Cargué el archivo fuente de mi proyecto de leiningen y obtengo una réplica usando clojure-jack-in. El problema es que, mientras que el crédito está habilitado tanto en el modo Clojure como en el repl, las llaves no se combinan en el repl únicamente en los archivos fuente.paredit juego de llaves a juego en swank-clojure repl

¿Cómo puedo conseguir que coincida con las llaves en la réplica también?

Respuesta

6

que añade lo siguiente a mi archivo .emacs, que hace el truco para mí (yo no he inventado yo mismo, que es un fragmento de código que encontré en algún lugar en línea - pero no puedo recordar dónde):

(defun setup-slime-repl-paredit() 
    (define-key slime-repl-mode-map 
    (kbd "DEL") 'paredit-backward-delete) 
    (define-key slime-repl-mode-map 
    (kbd "{") 'paredit-open-curly) 
    (define-key slime-repl-mode-map 
    (kbd "}") 'paredit-close-curly) 
    (modify-syntax-entry ?\{ "(}") 
    (modify-syntax-entry ?\} "){") 
    (modify-syntax-entry ?\[ "(]") 
    (modify-syntax-entry ?\] ")[") 
    (modify-syntax-entry ?~ "' ") 
    (modify-syntax-entry ?, " ") 
    (modify-syntax-entry ?^ "'") 
    (modify-syntax-entry ?= "'")) 

(add-hook 'slime-repl-mode-hook 'setup-slime-repl-paredit) 

(add-hook 'slime-repl-mode-hook  'enable-paredit-mode) 
+0

Eso funcionó, gracias! – pventura

1

Grab Phil Hagelberg de durendal package, que proporcionar algunas mejoras-clojure específica a limo, entonces prueba este fragmento:

(require 'durendal) 
(durendal-enable t) 

(defun slime-clojure-repl-setup() 
    (when (string-equal (slime-lisp-implementation-name) "clojure") 
    (set-syntax-table clojure-mode-syntax-table) 
    (setq lisp-indent-function 'clojure-indent-function))) 

(add-hook 'slime-repl-mode-hook 'slime-clojure-repl-setup) 

en el futuro, Phil puede incluir la funcionalidad de DURENDAL en sí mismo Swank-clojure como una carga útil de Lisp adicional , en ese punto lo anterior se volvería innecesario.

+0

Intenté instalar durendal, que luego requirió que instalara slime y slime-repl. Incluso después de instalarlos todos y agregar el código anterior, aún no coincidía con las llaves. – pventura

+0

Impar Supongo que reinició su Emacs? Durendal proporciona exactamente la misma función de enlace que @gertalot proporcionada anteriormente. Pero ya que tienes esa solución funcionando de todos modos, ya estás listo. Para el registro, el fragmento específico de Clojure de mi configuración de emacs está aquí: https://github.com/purcell/emacs.d/blob/master/init-clojure.el – sanityinc

+0

@sanityinc - es mi fragmento realmente * de * Durendal? No sé dónde lo encontré, pero si lo es lo editaré y agregaré crédito. – Gert