2015-02-04 2 views
0

Я использую следующее.Как связать helm-do-grep-1 с ключом в emacs?

(global-set-key [f9] 'helm-do-grep-1) 

Но когда я нажимаю f9, он жалуется на неправильный аргумент. Я просто хочу, чтобы поведение, подобное «C-u C-c h g», регрессировалось grep. Но типа так много ключей скучно.

обновление: Мне нужно, чтобы grep рекурсивно. helm-do-grep работает в нерекурсивном режиме.

+1

Вы уверены, что хотите '' helm-do-grep1', а не '' helm-do-grep'? – Squidly

ответ

1

Вы можете использовать

(global-set-key [f9] 
    (lambda() 
    (interactive) 
    (let ((current-prefix-arg 't)) 
     (call-interactively 'helm-do-grep)))) 

U pd,. Если вы заинтересованы: версия с последовательностью KBD

(global-set-key [f9] 
    (lambda() 
    (interactive) 
    (let ((minibuffer-message-timeout 0)) 
       (execute-kbd-macro (read-kbd-macro "C-u C-c h g C-x Q")))) 

См определение Cx Q здесь https://stackoverflow.com/a/28435402/1937596

+0

Код не вызывает ошибок. но после его выполнения нажмите f9, появится ответ. –

1

Поскольку сообщение об ошибке уже указывает, функция helm-do-grep-1 имеет один аргумент: https://github.com/emacs-helm/helm/blob/master/helm-grep.el#L810

Возможно, что вы хотите связать f9 с helm-do-grep, который вызывает helm-do-grep-1 в обмен с правильными параметрами ( https://github.com/emacs-helm/helm/blob/master/helm-grep.el#L1129)

(global-set-key [f9] 'helm-do-grep) 

Update:

(global-set-key [f5] 
       (lambda() 
        (interactive) 
        (call-interactively (key-binding (kbd "C-c h g"))))) 

В этом случае вы вызываете helm-do-grep с использованием <f5> и рекурсивным подходом с C-u <f5>. Однако этот подход будет зависеть от ваших привязок ключей.

+0

Мне нужно, чтобы grep рекурсивно. helm-do-grep run в нерекурсивном режиме –

+0

Теперь я вижу. Это было сразу не ясно из вашей первой формулировки. Я обновлю ответ, надеюсь, полезную ссылку – homeless