如何扩展Neotree以使用hexl打开文件?

时间:2019-07-05 10:22:42

标签: emacs key-bindings

我正在尝试扩展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))

1 个答案:

答案 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