Как распознать типы файлов с несколькими точками для выбора возвышенного синтаксиса - PullRequest
1 голос
/ 16 октября 2019

Я бы хотел использовать Sublime для моих сообщений коммитов Mercurial, поэтому я установил

HGEDITOR="C:\Program Files\Sublime Text 3\subl.exe" -w -n a

Это запустит Sublime с файлом с именем, например, hg-editor-mstdne.commit.hg.txt.

Затем я бы хотелчтобы иметь возможность автоматически обернуть его 72 символами (например, Обтекание строки Sublime Text и фиксация сообщений ). Это может быть сделано в соответствии с синтаксисом, поэтому я определил синтаксис для него

%YAML 1.2
---
name: hg-commit
file_extensions: [.commit.hg.txt]
scope: text.hg


contexts:
  main:
    - match: "^HG:.*"
      captures:
        0: comment.line.hg-commit

Я могу вручную выбрать синтаксис, но коммит все еще открывается как обычный текст. Если я выберу «Просмотр» -> «Синтаксис» -> «Открыть все с текущим расширением как», то все остальные файлы .txt также будут открыты с синтаксисом hg-commit.

Есть ли способы заставить его использоватьмой синтаксис только для файлов сообщений hg commit?

1 Ответ

0 голосов
/ 17 октября 2019

Это было довольно просто с событием on_load, как предложил @OdatNurd.

import sublime_plugin
# Load special syntax for hg commit. Also sets line wrapping
class RtxOnload(sublime_plugin.EventListener):
    def on_load(self, view):
        if view.file_name().endswith('.commit.hg.txt'):
            view.settings().set('syntax', 'Packages/MLA/hg-commit.sublime-syntax')
            view.settings().set('wrap_width', 72)

Единственная проблема в том, что он работает только тогда, когда Sublime уже запущен. Возможно, это можно исправить с помощью другого хука, но для меня это не проблема.

...