2010-01-27 11 views
12

Al hacer un M-x describir-modo en un archivo .el, me di cuenta de que el modo Emacs-Lisp realmente completa el código. Sin embargo, lisp-complete-symbol está vinculado a M-TAB. En Windows, este enlace de clave lo toma Windows para cambiar la ventana activa. La mayoría de los IDE usan C-SPC, pero eso también se toma en Emacs. ¿Qué es un enlace de clave bueno y bastante común para completar el código?Codifique los enlaces de finalización de claves en Emacs

+5

Por supuesto, usted puede escribir 'ESC TAB'. –

+1

+1 Tienes razón. ¿Por qué funciona eso? ESC = Meta? – User1

+0

Sí, es por eso. – jrockway

Respuesta

8

Si te gusta la finalización de todo tipo, recomiendo M-/ y vinculante que a hippie-expand.

(global-set-key (kbd "M-/") 'hippie-expand) 

lo hace una variedad de terminaciones, que son controlados por la variable hippie-expand-try-functions-list. En los archivos .el, puede configurarlo para hacer el 'try-complete-lisp-symbol primero para obtener el comportamiento que está pidiendo arriba, junto con todas las otras expansiones que proporciona hippie-expand.

Esto hará por usted:

(add-hook 'emacs-lisp-mode-hook 'move-lisp-completion-to-front) 
(defun move-lisp-completion-to-front() 
    "Adjust hippie-expand-try-functions-list to have lisp completion at the front." 
    (make-local-variable 'hippie-expand-try-functions-list) 
    (setq hippie-expand-try-functions-list 
     (cons 'try-complete-lisp-symbol 
       (delq 'try-complete-lisp-symbol hippie-expand-try-functions-list))) 
    (setq hippie-expand-try-functions-list 
     (cons 'try-complete-lisp-symbol-partially 
       (delq 'try-complete-lisp-symbol-partially hippie-expand-try-functions-list)))) 
+0

Hippie-expand suena interesante. ¿Por qué eligió M-/en lugar de M-SPC (como se muestra en la página de EmacsWiki)? Además, ¿cómo se hace esa caja genial alrededor de la M- /? – User1

+1

@ Usuario1 'M- /' es el enlace predeterminado para 'dabbrev' (para el cual hippe-expand es un reemplazo). Además 'M-SPC' está por defecto obligado a' 'just-one-space' que yo uso todo el tiempo. Y, por último, la caja fría se hace usando la etiqueta CLAVE

+0

+1 Eso tiene mucho sentido para mí. ¡Eres un genio de Emacs! – User1

2

que utilizo:

(define-key function-key-map [(control tab)] [?\M-\t]) 
1

utilizo M-. y M-/ para los modos de terminación 2 - hippie-expanda y las emacs estándar uno.

3

C-M-i; no se requiere personalización

7

Como se mencionó Trey Jackson, hippie-expand es el camino a seguir, pero junto con la unión a M-/, también me gusta tener la tecla TAB todos mis trabajos de acabado para mí. Así que tengo esto desde el Emacs-Wiki en mis .emacs presentar:

;;function to implement a smarter TAB (EmacsWiki) 
(defun smart-tab() 
    "This smart tab is minibuffer compliant: it acts as usual in 
    the minibuffer. Else, if mark is active, indents region. Else if 
    point is at the end of a symbol, expands it. Else indents the 
    current line." 
    (interactive) 
    (if (minibufferp) 
     (unless (minibuffer-complete) 
     (hippie-expand nil)) 
    (if mark-active 
     (indent-region (region-beginning) 
         (region-end)) 
     (if (looking-at "\\_>") 
     (hippie-expand nil) 
     (indent-for-tab-command))))) 
(global-set-key (kbd "TAB") 'smart-tab) 

usted podría tener hippie ampliar la configuración de la siguiente manera:

;;settings for hippie-expand 
(setq hippie-expand-try-functions-list 
     '(try-complete-lisp-symbol 
     try-complete-lisp-symbol-partially 
     try-expand-dabbrev 
     try-expand-dabbrev-from-kill 
     try-expand-dabbrev-all-buffers 
     try-expand-line 
     try-complete-file-name-partially 
     try-complete-file-name)) 
0

poner esto en su .emacs para hacer que Windows Emacs dar el uso de M-TAB :

(when (fboundp 'w32-register-hot-key) (w32-register-hot-key [M-tab])) 
Cuestiones relacionadas