こんにちは私はneotreeで 'm'を使用してNerdtreeで使用したものと同様のオプションを与えるときにインタラクティブメニューを定義しようとしています。バインドキーの引数が間違っています
私はこのキーをバインドさ:
(evil-define-key
'normal neotree-mode-map
... More keybindings ...
(kbd "m") 'neotree-modify-mode-menu)
と私の機能は次のとおりです。
(defun neotree-modify-mode-menu (option)
"Asks for a mode and execute associated Neotree command"
(interactive "c(a)dd node | (d)elete node | (r)ename node")
(cond
((eq option ?a) (neotree-create-node))
((eq option ?d) (neotree-delete-node))
((eq option ?c) (neotree-copy-node))
((eq option ?r) (neotree-rename-node))
(:else (message (format "Invalid option %c" option)))))
それはすべてのオプションのために動作しますが作成ノードはありません。その理由は、ここで見ることができるように、create-nodeが1つの引数をとり、残りが引数をとらないからです。
キーバインドから関数を呼び出すときにだから私はこのエラーを取得する:
Wrong number of arguments: #[(filename) "Å2w^@Æ^X GÇU\203^R^@ÈÅÆ\"\210 ÉÆOÊ\232?^PË !\203*^@ÌÍ \"\210ÈÅÆ\"\210^H\203[^@
ÎÏ \"!\203[^@Ð ÇÑÒ ÓÔ$TOÔ\"\210ÕÖÆ #\210× !\210ØÆ!\210^K\203[^@Ù !\210^H?\205u^@^LÎÚ \"!\205u^@Ð Ô\"\210× !\210ØÆ!)0\207" [is-file filename neo-confirm-create-file neo-create-file-auto-o\
pen neo-confirm-create-directory rlt nil 0 throw -1 ...] 8 ("/home/panavtec/.emacs.d/elpa/neotree-20170522.758/neotree.elc" . 64641) (let* ((current-dir (neo-buffer--get-filename-current-lin\
e neo-buffer--start-node)) (current-dir (neo-path--match-path-directory current-dir)) (filename (read-file-name "Filename:" current-dir))) (if (file-directory-p filename) (setq filename (con\
cat filename "/"))) (list filename))], 0
私がキーにneotree作成ノードの機能をバインドする場合、それは動作します:
(evil-define-key normal neotree-mode-map
(kbd "m") 'neotree-create-node)
私は修正することができますどのようにそれ?
こんにちは、あなたは明らかに正しいです、私は渡す引数が不足していますが、私はバインドされたキーからノードを作成すると動作なぜ? (evot-define-key 'normal neotree-mode-map (kbd "m")neotree-create-node) – PaNaVTEC
これは、関数をインタラクティブに呼び出すと、対話的に関数を呼び出さないカスタムコード。しかし、あなたは '(neotree-create-node)'の代わりに '(call-interactively 'neotree-create-node)'を使って正確に行うことができることに注意してください... *(編集:あなた自身で...)* – phils