【问题标题】:key binding in slime emacsslime emacs 中的键绑定
【发布时间】:2016-06-30 10:29:25
【问题描述】:

我想在 slime-mode 和 slime-repl 中将键绑定 M-x slime-fuzzy-complete-symbol 更改为 M-TAB。 我查阅了 common 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)

它们都没有用。第三句甚至有一个错误: 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 key-bindings slime


    【解决方案1】:

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

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

    • 如果 global-key-binding 适合你,前面的答案是可以的

    • 如果您需要或喜欢本地绑定,您可以定义自己的函数并将其绑定到本地,例如:

      (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 "C-c C-p")  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)
      

    最好的问候

    【讨论】:

      【解决方案2】:

      这个案例最好遵循emacs文档:

      Key binding commands

      在您的情况下,全局键绑定应该可以工作:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-10-31
        • 2016-12-15
        • 1970-01-01
        • 2015-07-02
        • 2013-09-30
        • 2011-02-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多