繁体   English   中英

粘土emacs中的键绑定

[英]key binding in slime emacs

我想在slime-mode和slime-repl中将密钥绑定Mx slime-fuzzy-complete-symbol更改为M-TAB。 我查阅了常见的lisp手册,并尝试了以下句子:

(eval-after-load 'slime                                                                                                            
         `(define-key slime-prefix-map (kbd "M-TAB") 'slime-fuzzy-complete-symbol))

(add-hook 'slime-load-hook                                                                                                         
        #'(lambda ()                                                                                                               
            (define-key slime-prefix-map (kbd "M-TAB") 'slime-fuzzy-complete-symbol)))

(define-key slime-repl-mode-map (kbd "M-TAB")                                                                                        
                   'slime-fuzzy-complete-symbol)

它们都没有用。 第三句甚至有一个错误:符号的变量值为void:slime-repl-mode-map

作为参考,以下是我的init.el与粘液有关:

(let ((default-directory "/usr/local/share/emacs/site-lisp/"))
  (normal-top-level-add-subdirs-to-load-path))

;; Setup load-path, autoloads and your lisp system                                                                                   
;; Not needed if you install SLIME via MELPA                                                                                         
(add-to-list 'load-path "~/default-directory/slime")
(require 'slime-autoloads)
(setq inferior-lisp-program "/usr/local/opt/clozure-cl/bin/ccl64")

;; Setup slime-repl                                                                                                                  
(setq slime-contribs '(slime-scratch slime-editing-commands))
;;(setq slime-contribs '(slime-repl)) ; repl only                                                                                    
(setq slime-contribs '(slime-fancy)) ; almost everything                                                                             

;;Setup suto-complete                                                                                                                
(add-to-list 'load-path "~/default-directory/auto-complete/")
(require 'auto-complete-config)
;;(add-to-list 'ac-dictionary-directories "~/default-directory/auto-complete/ac-dict")                                               
(ac-config-default)

对于这种情况,最好遵循emacs文档:

键绑定命令

在你的情况下,使用全局键绑定应该工作:

(global-set-key (kbd "M-TAB") 'slime-fuzzy-complete-symbol)

我知道这是一个老问题,但几周前我一直在寻找类似的答案,我希望其他信息对某些人有用......这就是我发现的:

  • 在你的.emacs (dot-emacs)文件中using (eval-after-load 'slime) load'smime)不是一个好主意,直​​到你有(autoload 'slime) - 这没关系 - 没有它(eval-after-load "...")可能要等到装载slime的时间结束

  • 如果全局密钥绑定适合您,则上一个答案是可以的

  • 如果您需要或优先使用本地绑定,您可以定义自己的函数并在本地绑定它,例如:

     (defun my-slime-mode-keybindings () "For use in `slime-mode-hook' and 'slime-repl-mode-hook." (local-set-key (kbd "<C-f1>") 'slime-describe-symbol) (local-set-key (kbd "<M-f1>") 'slime-apropos-all) (local-set-key (kbd "Cc Cp") nil) ;; when you want to remove a key/sequence (local-set-key (kbd "C-<tab>") 'ace-window) (local-set-key (kbd "M-<tab>") 'slime-fuzzy-complete-symbol) ;; your case :) ) ;; end of defun my-slime-mode-keybindings() ;; tell emacs to use your function only in required mode(s) (add-hook 'slime-mode-hook #'my-slime-mode-keybindings) (add-hook 'slime-repl-mode-hook #'my-slime-mode-keybindings) 

最好的祝福

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM