Создание tcsh история isearch нечувствительный к регистру

Компонент Emacs это ответственно за расширение ~ в именах файлов expand-file-name. К сожалению, это записано в C, и глубоко в его кишечнике код, который предполагает это, что прибывает после ~ имя пользователя. К счастью, Emacs имеет универсальный способ добавить обертку вокруг функций, таким образом, можно сделать то, что Вы хотите, если Вы не возражаете повторять часть логики во встроенной функции.

Вот некоторый полностью непротестированный код, который должен получить Вас движение. Ищите “Уведомление Emacs Функции Lisp” в руководстве Lisp Emacs для получения дополнительной информации; основная идея - это defadvice добавляет некоторый код для выполнения перед фактическим кодом expand-file-name. Предупредите об ошибках, которые я неизбежно сделал в комментариях (знаете ли Вы, как зафиксировать их или не).

(defvar expand-file-name-custom-tilde-alist
  '(("foo" . "/home/Documents/foo")))

(defadvice expand-file-name (before expand-file-name-custom-tilde
                             (name &optional default-directory)
                             activate compile)
  "User-defined expansions for ~NAME in file names."
  (save-match-data
    (when (string-match "\\`\\(\\(.*/\\)?~\\([^:/]+\\)\\)/" name)
      (let ((replacement (assoc (match-string 3 name) expand-file-name-custom-tilde-alist)))
        (when replacement
          (setq name (replace-match (cdr replacement) t t name 1)))))))

Я оставлю парсинг ярлыков в .zshrc заполниться expand-file-name-custom-tilde-alist (или безотносительно техники Вы принимаете решение сохранить псевдонимы в синхронизации) как осуществление.

1
08.05.2011, 19:06
1 ответ

Поиск истории в tcsh всегда ищет точное совпадение (и возрастающий и невозрастающий) ¹. Если Вы хотите поиск без учета регистра, кодируете его сами, или делаете запрос новых функций — но не задерживаете дыхание, tcsh не был активно разработан в течение многих лет.

Я рекомендую переключиться на zsh, где возрастающий поиск нечувствителен к регистру по умолчанию.

¹ С tcsh 6.17.02. Посмотрите c_search_line и e_inc_search в ed.chared.c.

2
27.01.2020, 23:40

Теги

Похожие вопросы