Завершение с использованием внешнего файла или файла, содержащегося в проекте?

Кто-нибудь знает, как заставить TextMate выполнять поиск во внешнем файле (или даже в файлах, содержащихся в «проекте» TextMate), с помощью которого можно выполнить завершение слов?

Я кодирую некоторые вещи на C64 (используя TextMate для написания кода), и у меня есть внешний файл, содержащий метки для всех аппаратных регистров / подпрограмм ядра, например

VIC2InteruptStatus = $D019

Было бы очень удобно набрать, скажем, «VIC2I», затем нажать клавишу для завершения слова и заставить TextMate найти совпадения во внешнем файле библиотеки. Вместо того, чтобы делать это сейчас, открыв файл библиотеки и скопировав и вставив имена регистров в свой код.


person Neil Baldwin    schedule 10.10.2009    source источник


Ответы (1)


После значительных проб и ошибок я получил, что это работает ... вроде.

Сначала вам понадобится соответствующий пакет для вашего языка / типа файла. Затем в этом пакете вам нужно использовать редактор пакетов, чтобы добавить новое «Предпочтение». Назовите его как хотите, а затем перейдите на панель редактирования и добавьте это;

{ЗавершениеCommand = 'grep -oh "\ w * $ {TM_CURRENT_WORD} \ w *" FILESPEC | сортировать | uniq ';}

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

Закройте редактор пакетов.

Теперь, если вы начнете вводить слово из файла FILESPEC, нажмите ESC (или любую другую клавишу, на которую у вас назначено завершение), и TextMate предложит завершение слов с сортировкой по алфавиту. Продолжайте нажимать ESC, чтобы просмотреть все совпадения (SHIFT + ESC - назад).

Я не мог понять, как сделать поисковый регистр нечувствительным. Вы можете использовать параметр -i в GREP, но параметр -o переопределяет его. В идеале, если вы набрали;

com Com COM

он найдет во внешнем файле все слова, начинающиеся с букв c, o, m. Вместо этого, если вы наберете «COM», будут найдены только слова, начинающиеся с «COM», а не «com» ​​или «Com» и т. Д.

Если бы кто-нибудь, кто лучше разбирается в GREP, мог это понять, я был бы очень благодарен.

person Neil Baldwin    schedule 12.10.2009
comment
Интересный; Вы всегда можете пойти на ядерный удар и окунуться в Perl. Например, для бита / i регистр не учитывается: $ echo 'VIC2InteruptStatus = $ D019' | perl -lane 'print join \ n, grep / c2i / i, @F' | сортировать | уникальный - person Ryan Bright; 25.11.2009
comment
@Neil - В чем преимущество использования пользовательского списка завершения слов в этом методе (с использованием внешнего файла), в отличие от простого ввода списка слов внутри предпочтения в textmate? Это польза от Grep? Кроме того, какой тип файла вы используете для списка слов? Это просто список, разделенный пробелами? - person stefmikhail; 05.04.2012