2016-06-24 4 views
1

Я пытаюсь написать функцию реферата, который helm-imenu вариант использования:Как передать ARG в Emacs абстрактной функции

(defun my/helm-menu() 
    "For Org mode buffers, show Org headlines. 
For programming mode buffers, show functions, variables, etc." 
    (interactive) 
    (cond ((derived-mode-p 'org-mode) 
      (helm-org-in-buffer-headings)) 
     (t 
      (helm-semantic-or-imenu)))) 

Хотя, при использовании его в не-Org режиме буфера, он терпит неудачу, говоря это нужен один аргумент.

Действительно, helm-semantic-or-imenu требует: arg.

Как передать это?

Почему это работает с M-x helm-semantic-or-imenu: где аргумент?

+0

Вы должны попытаться спросить, что на http://emacs.stackexchange.com – rsenna

+0

Вам не нужно спрашивать об этом на emacs.stackexchange.com. Вы можете спросить его здесь. – Drew

+0

Используйте 'C-h f helm-semantic-or-imenu', чтобы узнать, что такое аргумент. Нажмите ссылку, чтобы перейти к определению источника и узнать, что такое аргумент и как он получен. Если эта функция является командой, тогда проверьте спецификацию 'interactive', чтобы узнать, откуда появился аргумент. Затем передайте тот же тип аргумента в ваш вызов этой функции. – Drew

ответ

0

После куске Дрю совета, это должно сделать это:

(defun my/helm-menu (arg) 
    "For Org mode buffers, show Org headlines. 
For programming mode buffers, show functions, variables, etc." 
    (interactive "P") 
    (cond ((derived-mode-p 'org-mode) 
      (helm-org-in-buffer-headings)) 
     (t 
      (helm-semantic-or-imenu arg)))) 

По крайней мере, это работает!

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

  • Нет связанных вопросов^_^