我正在尝试扩展Neotree以使用十六进制模式和快捷键C-c C-x打开文件。怎么会这样?
我尝试在Neotree加载后评估键定义,其中它使用my / neotree-hex使用neo-buffer--get-filename-current-line打开文件路径。
(defun my/neotree-hex
(hexl-find-file neo-buffer--get-filename-current-line))
(with-eval-after-load 'neotree
(define-key neotree-mode-map (kbd "C-c C-x")
'my/neotree-hex))
答案 0 :(得分:1)
至少,您缺少函数中的(空)参数列表:
(defun my/neotree-hex ()
(hexl-find-file neo-buffer--get-filename-current-line))
我不知道neo-buffer--get-filename-current-line
是什么:如果它是一个函数,则说明您未正确调用它-在Lisp中,您通过将(函数名)及其参数括在其中来调用函数括号:(func arg1 arg2 ...)
[1];因此,如果是是一个函数并且不带任何参数,那么您的函数应该看起来像这样:
(defun my/neotree-hex ()
(interactive)
(hexl-find-file (neo-buffer--get-filename-current-line)))
为了能够将其绑定到键,必须将函数设置为command,这意味着您需要添加(interactive)
形式。
免责声明:我对neotree
一无所知。
[1]您可能想阅读Lisp的简介。一个(专门针对Emasc Lisp定制)包含在emacs文档中,但也包含available online。最终,您将需要阅读Emacs Lisp Reference Manual。调用函数是covered in the Introduction,是covered in detail in the Reference。