Наборы файлов Emacs: как запускать другие команды (elisp, а не оболочки)?

Существует 5 команд Elisp, которые можно запустить в наборе файлов Emacs, а также возможность запуска любой команды оболочки. А как насчет всех остальных команд Emacs? Чтобы привести один пример, было бы неплохо иметь возможность запускать M-x в наборе файлов.

Я знаю, что можно пометить несколько файлов в dired, а затем запустить для них любую команду Emacs (это правда, или я путаю команды оболочки?), но было бы очень удобно определить набор файлов один раз, а затем иметь возможность использовать это как один файл для всех видов редактирования текста.

Спасибо за любой совет


person Thorsten    schedule 15.08.2011    source источник


Ответы (4)


Команды, которые могут работать с наборами файлов, указаны в глобальной пользовательской переменной «filesets-commands». Вы можете добавить свои собственные команды в этот список. Значение по умолчанию для этой переменной:

("Isearch" multi-isearch-files
  (filesets-cmd-isearch-getargs))
 ("Isearch (regexp)" multi-isearch-files-regexp
  (filesets-cmd-isearch-getargs))
 ("Query Replace" perform-replace
  (filesets-cmd-query-replace-getargs))
 ("Query Replace (regexp)" perform-replace
  (filesets-cmd-query-replace-regexp-getargs))
 ("Grep <<selection>>" "grep"
  ("-n " filesets-get-quoted-selection " " "<<file-name>>"))
 ("Run Shell Command" filesets-cmd-shell-command
  (filesets-cmd-shell-command-getargs)))

Значения состоят из ассоциативного списка имен, функций и списка аргументов (или функции, которая их возвращает) для выполнения над файлами наборов файлов. Итак, если вы хотите добавить команду, которая выполняет команду «происходит» в наборе файлов, вы можете использовать запись «Isearch» в качестве примера для создания своей собственной новой записи (которую вы добавите в «наборы файлов-команды» глобальная переменная), которая будет выглядеть примерно так:

 ("Occur (regexp)" multi-occur-files-regexp
  (filesets-cmd-occur-getargs))

Вам нужно будет написать функции «multi-occur-files-regexp» и «filesets-cmd-occur-getargs» (вы можете использовать существующие «multi-isearch-files-regexp» и «filesets-cmd-isearch-getargs»). "функции в качестве основы, так как они были бы похожи). То же самое относится к любой дополнительной команде Emacs, которую вы хотите добавить для работы с наборами файлов.

person zev    schedule 16.08.2011

Dired имеет несколько операций над наборами файлов. Примером может служить dired-do-search (привязанный к A), где вы можете перемещаться по результатам поиска в нескольких файлах с помощью M-, так же, как с tags-search. Точно так же вы можете запросить замену в файлах с тегами (с Q).

В недавних сообщениях на irreal.org описаны некоторые интересные функции dired.

person Juancho    schedule 16.08.2011
comment
Хорошая ссылка - действительно очень интересный блог. И спасибо Dired за подсказки, так много нужно узнать (и запомнить ..) - person Thorsten; 16.08.2011

С помощью Icicles вы можете использовать наборы файлов для всего, что вам может понадобиться, с набором файлов и каталогов. И вы можете создать набор файлов из любого набора имен файлов и каталогов в буфере Completions во время завершения. И вы можете использовать сопоставление подстрок и регулярных выражений во время завершения, чтобы получить такой набор имен файлов в Completions.

Эти ссылки могут помочь:

http://www.emacswiki.org/emacs/Icicles_-_Persistent_Completions#Filesets

http://www.emacswiki.org/emacs/Icicles_-_Dired_Enhancements#OpenDiredOnSavedFiles

http://www.emacswiki.org/emacs/Icicles_-_Dired_Enhancements#MarkedFilesAsProject

http://www.emacswiki.org/emacs/Icicles_-_Customization_and_General_Tips#icicle-filesets-as-saved-completion-sets-flag

person Drew    schedule 19.08.2011
comment
Вселенная Emacs кажется настоящей вселенной — без ограничений. Спасибо, удивительная вещь. - person Thorsten; 20.08.2011

Dired+ имеет команду diredp-fileset , который открывает Dired в наборе файлов Emacs. Вам будет предложено использовать набор файлов.

person Drew    schedule 10.09.2011
comment
У меня установлен Dired+, но M-x diredp-fileset приводит к сообщению «наборы файлов функций не предоставлены». - person Thorsten; 15.09.2011
comment
Это означает, что библиотеки filesets.el нет в вашем load-path. Команде diredp-fileset требуется эта библиотека — первое, что делает команда, это пытается загрузить эту библиотеку. Если он не найден, возникает ошибка, которую вы видели. Emacs выпускает 22 и более поздние версии с filesets.el. В противном случае вы, вероятно, можете найти его в Google, но вам может потребоваться выяснить, работает ли он с вашей версией Emacs. См. также filesets+.el, исправляющий некоторые ограничения в filesets.el. - person Drew; 20.11.2011
comment
@Drew Это также может означать, что filesets-data - это nil. Было бы очень любезно, если бы в этом случае было другое диагностическое сообщение. С уважением, Тобиас - person Tobias; 10.11.2015
comment
@Tobias: Хорошая идея - сделано. Попробуйте последнюю версию dired+.el. - person Drew; 10.11.2015