Jak utworzyć domyślną składnię według typu pliku w edytorze tekstu Atom?

Chcę Mojego .pliki ejs mają składnię html, jednak zawsze otwiera pliki jako zwykły tekst.

W sublime możesz wybrać " Open all with current extension as..."następnie wybierz składnię.

składnia sublime text3

Widzę, że można zmienić składnię w lewym dolnym roguzmiana składni

Jak otwierać pliki z określonym typem z określoną składnią?

Author: NathanBrakk, 2014-03-13

7 answers

Easy mode: include

Jeśli twój język naprawdę jest tylko HTML, możesz skonfigurować prosty pakiet do obsługi tego.

Utwórz pakiet o nazwie langugage-ejs i w grammars/ejs.cson możesz dołączyć HTML jako mający wzorce, na których Ci zależy:

'fileTypes': [
  'ejs'
]

'name': 'Embedded JavaScript'

'patterns': [
  {
    'include': 'source.html'
  }
]

'scopeName': 'source.ejs'

Język-ipynb z pewnością robi to rozszerzając JSON.

A co z moimi tagami szablonów?

W rzeczywistości jednak, masz znaczniki szablonów na wierzchu HTML, które chcesz, aby edytor rozpoznał. Najlepszy przykład I can find jest dla erb (Embedded Ruby templates). To źródła z HTML, ale także dodaje do innych tagów, jak pokazano w tym fragmencie:

...
'patterns': [
  {
    'begin': '<%+#'
    'captures':
      '0':
        'name': 'punctuation.definition.comment.erb'
    'end': '%>'
    'name': 'comment.block.erb'
  }
  {
    'begin': '<%+(?!>)[-=]?'
    'captures':
      '0':
        'name': 'punctuation.section.embedded.ruby'
    'end': '-?%>'
    'name': 'source.ruby.rails.embedded.html'
    'patterns': [
      {
        'captures':
          '1':
            'name': 'punctuation.definition.comment.ruby'
        'match': '(#).*?(?=-?%>)'
        'name': 'comment.line.number-sign.ruby'
      }
      {
        'include': 'source.ruby.rails'
      }
    ]
  }
  {
    'include': 'text.html.basic'
  }
]
...
 6
Author: Kyle Kelley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-17 23:21:36

To jest teraz W Atom core , nie potrzebujesz już tego pakietu typów plików.

Gdzie pracuję, używamy .phl dla określonego rodzaju pliku PHP. Aby powiedzieć Atom o tym, edytuj config.cson tak:
core:
    customFileTypes:
      "text.html.php": [
        "phl"
      ]
    themes: [
// snip

Możesz znaleźć ten plik w ~/.atom/config.cson, lub w oknie ustawień kliknij przycisk "Otwórz Folder konfiguracyjny".

Łatwo się pomylić, o czym świadczy wiele błędów, które ludzie popełnili w wydaniu GitHub dla tej funkcji.

 85
Author: timseal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-04-04 11:05:33

Edit: odkąd napisałem tę odpowiedź, ta funkcjonalność została dodana do Atom core, Zobacz Ta odpowiedź Po szczegóły.

Pakiet Atom typów plików

(https://atom.io/packages/file-types )

Robi dokładnie to, o co prosi pytanie tytułowe: możesz zdefiniować nowe rozszerzenia plików dla istniejących języków za pomocą prostej edycji pliku config.cson.

 5
Author: Ábel Hegedüs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:29

Dla poszczególnych plików można użyć selektora gramatyki; Ctrl+Shift+L aby ustawić język, którego używasz na tym pliku. To nie to samo, co automatyczne wykrywanie, ale przydatne w przypadku, gdy używasz pliku, dla którego nie chcesz ustawić domyślnej wartości.

 4
Author: Jesse,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-07 18:25:14

Wygląda na to, że został wydany zupełnie nowy pakiet. https://atom.io/packages/language-ejs .

 3
Author: Dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-12 20:32:22

Na przykład, jeśli chcesz otworzyć wszystkie pliki .jsx ze składnią javascript, musisz dodać to do swojego config.cson

"*":
  core:
    customFileTypes:
      "source.js": [
         "jsx"
      ]
To wszystko mapuje .pliki jsx do otwierania za pomocą składni js.
 3
Author: Sachin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-18 07:04:01

Jak wspomina Dave Andersen w Zakopanym komentarzu, teraz Można to zrobić bez żadnych dodatkowych pakietów i jest to udokumentowane tutaj .

 2
Author: Evan Siroky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-19 00:52:02