Я использую расширение cscope emacs (и нахожу его весьма полезным). К сожалению, по умолчанию поведение только для поиска в текущем каталоге и ниже для меня недостаточно, поэтому я использую каталог cscope-set-initial-directory в каталоге по своему выбору. К сожалению, для меня это стало недостаточным, потому что у меня есть несколько разных проектов, каждый со своей собственной «начальной» директорией.Обтекание цитируемой функции в emacs-lisp
Я настроил горячие клавиши для трех методов Cscope я использую большинство в Emacs
(global-set-key [f9] 'cscope-find-this-text-string)
(global-set-key [f8] 'cscope-find-global-definition)
(global-set-key [f7] 'cscope-find-this-symbol)
Я полагал, что это было бы довольно легко как-то обернуть эти вызовы с функцией запуска Cscope набором, начальным -каталог на заданном пути (сгенерированный путем просмотра того, что такое имя-буфер-файл). Но я пока еще не увенчался успехом!
(global-set-key [f9] (lambda() (interactive) (cscope-set-initial-directory "blah") 'cscope-find-this-text-string))
не работает. Я также попытался добавить крючки к двум cscope-hooks, но ни один из них, кажется, никогда не вызван во время моих обычных шаблонов использования. Я бы даже не думал запускать его каждый раз, когда я переключаю буферы, но я не видел для этого нигде: //.
Может кто-нибудь помочь? :)
Сладкий, ваш совет полностью помог мне. Я добавил, что просто добавил (call-interactiveively 'blah) к моей первоначальной попытке, и это сработало. То, что я действительно хотел сделать, было чем-то действительно интересным, например, иметь функцию-оболочку, которая возвращала оператор лямбда, который устанавливал каталог, а затем вызывал данную функцию.Но я предполагаю, что это невозможно из-за того, как emacs-lisp выполняет обзор (аргумент, предоставляемый оболочке, выходит из области действия в возвращаемом заявлении лямбда). Может быть, есть другой способ подумать об этой проблеме на земле emacs-lisp? – jdizzle
Я не совсем понимаю, что вы описываете, возврат заявления (функции) лямбды кажется ненужным, поскольку в этой ситуации нет необходимости в программировании более высокого порядка. –