2010-01-27 11 views
12

Wenn Sie eine M-x beschreiben-Modus in einer .EL-Datei, habe ich festgestellt, dass der Emacs-Lisp-Modus tatsächlich Code-Vervollständigung tut. Jedoch ist lisp-complete-symbol an M-TAB gebunden. In Windows wird diese Tastenbelegung von Windows übernommen, um das aktive Fenster zu wechseln. Die meisten IDEs verwenden C-SPC, aber das ist auch in Emacs übernommen. Was ist eine gute, ziemlich häufige Schlüsselbindung für die Code-Vervollständigung?Code-Vervollständigung Tastenbelegung in Emacs

+5

Natürlich können Sie 'ESC TAB' eingeben. –

+1

+1 Sie haben Recht. Warum funktioniert das? ESC = Meta? – User1

+0

Ja, deshalb. – jrockway

Antwort

8

Wenn Sie Abschluss aller Art mögen, empfehle ich M-/ und Bindung, die zu hippie-expand.

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

Es hat eine Vielzahl von Fertigstellungen, die durch die variable hippie-expand-try-functions-list gesteuert werden. In den .el-Dateien können Sie festlegen, dass die 'try-complete-lisp-symbol zuerst ausgeführt wird, um das Verhalten zu erhalten, nach dem Sie oben gefragt haben, zusammen mit allen anderen Erweiterungen, die hippie-expand bereitstellt.

Dies würde das für Sie tun:

(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-Erweiterung klingt interessant. Warum haben Sie M- statt M-SPC gewählt (wie auf der EmacsWiki-Seite gezeigt)? Auch wie machst du diese coole Box um das M- /? – User1

+1

@ User1 'M- /' ist die Standardbindung für 'dabbrev' (für die hippe-expand ein Ersatz ist). Auch "M-SPC" ist standardmäßig an "just-one-space" gebunden, welches ich ständig benutze. Und schließlich wird die Kühlbox unter Verwendung des Tags KEY

+0

+1 gemacht. Das macht für mich total Sinn. Du bist ein Emacs Genie! – User1

2

Ich benutze:

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

Ich benutze M-. und M-/ für die 2 Abschluss Modi - Hippie-erweitern und die Standard-Emacs ein.

3

C-M-i; keine Anpassung erforderlich.

7

Als Trey Jackson erwähnt, hippie-expand ist der Weg zu gehen, aber zusammen mit ihm zu M-/, habe ich auch für mich wie mit der TAB Schlüssel tun alle meine Abschlussarbeiten verbindlich. Also ich habe diese von der Emacs-Wiki in meiner .emacs-Datei:

;;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) 

Sie haben Hippie-Einstellungen erweitern könnte wie folgt aussehen:

;;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

Setzen Sie diese in Ihrem .emacs auf Windows geben Emacs die Verwendung von M-TAB zu machen :

(when (fboundp 'w32-register-hot-key) (w32-register-hot-key [M-tab])) 
Verwandte Themen