Хук для завершения вкладки в emacs (интерактивный) файл ввода? - PullRequest
3 голосов
/ 21 января 2010

В emacs следующее определит функцию, которая при интерактивном вызове будет запрашивать у пользователя имя файла:

(defun do-something (filename )
  (interactive "FFilename: ")
  ...
  )

Когда пользователь вводит имя файла, он может использовать завершение табуляции и т. Д. Кто-нибудь знает, есть ли какие-либо хуки в этом коде ввода файла? В частности, я хотел бы изменить мою команду find-file, чтобы символические ссылки Windows (которые отображаются как «foo.lnk») автоматически переходили к их цели, если вы нажали tab.

В настоящее время я использую w32-символические ссылки , что означает, что, по крайней мере, если я нажму Enter на ссылке, тогда она откроет цель в diredit. Но я предпочел бы иметь возможность просто завершить его до нужного мне файла, а не открывать diredit и затем выполнять вторую команду find-file.

Ответы [ 2 ]

2 голосов
/ 22 января 2010

Прежде чем изобретать велосипед, возможно, поместите (ido-mode t) в свой файл .emacs и посмотрите, делает ли он то, что вам нужно.

Я не использую windows, но я использую ido, и он намного лучше, чем по умолчанию.

1 голос
/ 22 августа 2011

Ответ на ваш вопрос в целом заключается в использовании completing-read непосредственно в спецификации interactive - не используйте строковый аргумент. IOW, составьте свой собственный набор дополнений.

Или вы можете привязать read-file-name-function к своей собственной функции, которая выполняет завершение имени файла (и, например, включает стандартное поведение). Смотри стандартную библиотеку minibuffer.el.

...