Самый быстрый способ перехода к каталогам по различным деревьям ревизий в emacs - PullRequest
0 голосов
/ 22 февраля 2019

Я использую Emacs и трекер ревизий (Perforce) для связанных с работой вещей.

У меня есть множество (~ 10) разных клиентов для Perforce, которые имеют одинаковую файловую структуру.Я хотел бы сделать общие команды для перехода к каталогам в этих клиентах в Emacs.

Однако пути клиентов различны.Я хочу, чтобы навигация по каталогам была независимой от имени клиента;вместо этого имя клиента должно определяться динамически.

Например, вот несколько путей к моим клиентам:

/home/scratch/client1/hw/unit1/
/home/scratch2/client2/hw/unit2/
/home/scratch3/client3/hw/unit1/

Как видите, путь к каждому клиенту различен, хотя используется та же структура.Внутри каждого из этих клиентов файловая структура идентична.Таким образом, файл модуля каждого клиента будет иметь одинаковую структуру (т. Е. ip/src/ или некоторый эквивалентный путь)

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

Для меня это означало бы, что мне нужно что-то, что динамически определяетместоположение клиента, а затем показывает одинаковые файлы закладок в каждом клиенте.

Итак, скажем, я хочу, чтобы следующие три папки с закладками отображались в зависимости от текущего клиента, в котором я нахожусь:

/path/to/client/ip/src/bin
/path/to/client/ip/src/etc
/path/to/client/ip/src/inc

Как я могу сделать это в Emacs, чтобы клиентский путь (/path/to/client/) динамически определялся в зависимости от того, где я запустил Emacs, и затем он добавляет фактический путь в клиенте к клиентскому пути (ip/src/bin).

ПРИМЕЧАНИЕ. У меня есть псевдонимы bash для быстрого перехода к каталогам независимо от имени клиента.Но я бы хотел как можно больше свести к минимуму переключение между Emacs и командной строкой, найдя решение, которое работает прямо внутри Emacs.

1 Ответ

0 голосов
/ 24 февраля 2019
  1. Доступен ли путь к текущему клиенту в переменной среды?Если это так, то вы можете использовать эту переменную в наборе find-file.Он будет расширен во время завершения.

  2. Каталог, в который был вызван сам Emacs, является значением переменной invocation-directory.Если местоположение вашего клиента легко определяется из этого ( "путь клиента (/path/to/client/) определяется динамически в зависимости от того, где я запустил Emacs" ), тогда вы можете определить команду, которая читает файл (или каталог).) имя в вашем клиентском каталоге.

Для # 2, как ваш "путь клиента (/path/to/client/) ... динамически вычисляется в зависимости от того, где [вы] запустилиEmacs "?Если вы показываете этот код, то все остальное должно быть тривиальным.

...