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

How to extend Neotree to open a file using hexl?

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

至少,您缺少函数中的(空)参数列表:

(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. Eventually, you will want to read the Emacs Lisp Reference Manual. Calling a function is covered in the Introduction and is covered in detail in the Reference.