2017-02-05 2 views
0

Я недавно обратился в Evil-mode от Vim, и я стараюсь сделать среду более знакомой. Одна из вещей, которые я пропускаю, - команда find в Виме. Я пытаюсь настроить что-то подобное в Emacs, обернув команду find-file в функцию. До сих пор у меня есть это:Я пытаюсь затенять find-файл в Emacs, почему эта функция кричит на меня о аргументах?

(defun find nil 
    "Shadow vim find command, with helm." 
    (interactive) 
    (find-file)) 

Когда я запускаю команду он кричит на меня, Wrong number of arguments {doc string} 0 я попытался добавить аргументы и не имели никакого успеха. Действительно сбивает с толку немного, что я слежку функцию, Helm так же, как и он работал, как это:

(defun buflist nil 
    "List buffers in helm." 
    (interactive) 
    (helm-buffers-list)) 

Что изменилось? Как это исправить?

ответ

0

find-file нужны аргументы, вы не можете назвать это так же, как

(find-file) 

отладчик показывает, что нужны аргументы:

(filename &optional wildcards) 

Вы также можете вызвать помощь, чтобы увидеть их: Chf.

Другой вариант заключается в использовании call-interactively:

(call-interactively 'find-file) 
+0

Удивительного спасибо! Мне нужно научиться изучать использование отладчика. – Jonathan

+0

Просто напишите '(find-file)' и нажмите 'C-x'' C-e'. – choroba

3

find-file принимает имя файла в качестве аргумента, вы хотите, чтобы ознакомиться с C-h f для поиска до функции документации.

interactive может принимать аргументы, например,

(defun find (filename) 
    (interactive "F") 
    (find-file filename)) 
+3

Вы также можете использовать '(call-interactiveively # 'find-file) вместо того, чтобы сами получать и передавать аргументы. – phils

Смежные вопросы