Подтвердить что ты не робот

Не показывать неинтересные файлы в окне завершения Emacs

Как я могу запретить Emacs показывать мне все файлы, которые мне не интересны (например, ~ файлы резервных копий,.pyc файлы или файлы .orig), когда I: C-x C-f TAB?

Он работает в одном отношении: если я знаю, что файл, который я хочу открыть, начинается с foo, и я набираю foo TAB, тогда мини-буфер правильно автозаполняет весь путь до foo.py. Он правильно игнорирует foo ~ и foo.pyc, потому что и ~ и .pyc находятся в завершении-игнорируются-расширения. Он также правильно позволяет мне открыть либо проигнорированный файл, если я действительно хочу, набрав все буквы сам.

Однако, если я просто удалю TAB, чтобы вызвать буфер списка завершения, тогда этот список включает файлы с расширениями в дополнениях с игнорированием-расширением, что затрудняет поиск того, что я ищу.

Очевидно, что код для игнорирования неинтересных файлов есть и работает. Как получить буфер списка завершения для уважения к завершению-игнорируемым расширениям?

(by-by-by, могу ли я заставить себя работать так же?)

4b9b3361

Ответ 1

Этот совет отфильтровывает файлы с расширениями, перечисленными в 'completion-ignored-extensions:

(defadvice completion--file-name-table (after 
                                        ignoring-backups-f-n-completion 
                                        activate)
  "Filter out results when they match `completion-ignored-extensions'."
  (let ((res ad-return-value))
(if (and (listp res)
     (stringp (car res))
     (cdr res))                 ; length > 1, don't ignore sole match
    (setq ad-return-value
              (completion-pcm--filename-try-filter res)))))

Примечание. Это не влияет на dired.

Для проблемы dired добавьте это в ваш .emacs

(eval-after-load "dired"
  '(require 'dired-x))

(add-hook 'dired-mode-hook
          (lambda ()
            (dired-omit-mode 1)))

Прочитайте документацию для dired-x, чтобы получить представление о том, что доступно там.

Ответ 2

Я бы рекомендовал использовать ido-mode для игнорирования файлов; он поставляется с Emacs по умолчанию и добавляет много других полезных улучшений, которые вы быстро научитесь любить. Незнание - это раздел Блаженства из этого сообщения в блоге Mastering Emacs описывает, как игнорировать файлы, каталоги и буферы:

  • ido-ignore-buffers Принимает список буферов для игнорирования в C-x b
  • ido-ignore-directories Принимает список каталогов для игнорирования в C-x d и C-x C-f
  • ido-ignore-files Принимает список файлов для игнорирования в C-x C-f

Ответ 3

Icicles делает то, что вы ожидаете по умолчанию. Он всегда уважает completion-ignored-extensions для завершения имени файла, в том числе для буфера *Completions*. И вы можете переключать это игнорирование вкл/выкл в любое время, нажав C-. в минибуфере.

Кроме того, если вы используете библиотеку completion-ignored-build.el Kevin Ryde, то Icicles автоматически использует это библиотека динамическая настройка игнорируемых расширений файлов. (Просто загрузите completion-ignored-build.el - не включите его второстепенный режим или совет.)

Ответ 4

Я не знаю ответа на завершение, боюсь. Я думаю, что это по дизайну - когда вы знаете имя, которое вы ищете, вы, вероятно, не хотите, например. файл резервной копии. Но когда вы не знаете, вероятно, лучше иметь список всех файлов.

Однако для прошивки вы можете загрузить пакет "dired-x" при запуске (в вашем .emacs), и это обеспечивает режим dired-omit-mode:

(load "dired-x")

Вы можете использовать "M-x customize-variable <RET> dired-omit-files", чтобы игнорировать фактические шаблоны. Затем, когда вы находитесь в режиме ожидания, вы можете использовать M-O (буква, а не номер) для включения и выключения "упущения".