feat(syntax): support phoenix file extensions (#278)
* feat(syntax): support phoenix file extensions * feat(syntax): add elixir codemirror language
This commit is contained in:
@@ -11,6 +11,7 @@ import { sql } from '@codemirror/lang-sql';
|
||||
import { xml } from '@codemirror/lang-xml';
|
||||
import { yaml as yamlLanguage } from '@codemirror/lang-yaml';
|
||||
import { rust } from '@codemirror/lang-rust';
|
||||
import { elixir } from 'codemirror-lang-elixir';
|
||||
|
||||
import { Language, LanguageDescription, StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';
|
||||
import { tags as t } from '@lezer/highlight';
|
||||
@@ -20,6 +21,7 @@ import { diff } from '@codemirror/legacy-modes/mode/diff';
|
||||
import { dockerFile } from '@codemirror/legacy-modes/mode/dockerfile';
|
||||
import { ruby } from '@codemirror/legacy-modes/mode/ruby';
|
||||
import { properties } from '@codemirror/legacy-modes/mode/properties';
|
||||
import { erlang } from '@codemirror/legacy-modes/mode/erlang';
|
||||
|
||||
const shellLanguage = StreamLanguage.define(shell);
|
||||
const tomlLanguage = StreamLanguage.define(toml);
|
||||
@@ -27,6 +29,9 @@ const diffLanguage = StreamLanguage.define(diff);
|
||||
const dockerfileLanguage = StreamLanguage.define(dockerFile);
|
||||
const rubyLanguage = StreamLanguage.define(ruby);
|
||||
const propertiesLanguage = StreamLanguage.define(properties);
|
||||
const elixirSupport = elixir();
|
||||
const elixirLanguage = elixirSupport.language;
|
||||
const erlangLanguage = StreamLanguage.define(erlang);
|
||||
|
||||
function codeBlockLanguageResolver(info: string): Language | LanguageDescription | null {
|
||||
const normalized = info.trim().toLowerCase();
|
||||
@@ -76,6 +81,18 @@ function codeBlockLanguageResolver(info: string): Language | LanguageDescription
|
||||
case 'rs':
|
||||
case 'rust':
|
||||
return rust().language;
|
||||
case 'ex':
|
||||
case 'exs':
|
||||
case 'elixir':
|
||||
return elixirLanguage;
|
||||
case 'erl':
|
||||
case 'hrl':
|
||||
case 'erlang':
|
||||
return erlangLanguage;
|
||||
case 'heex':
|
||||
case 'eex':
|
||||
case 'leex':
|
||||
return html().language;
|
||||
default:
|
||||
return LanguageDescription.matchLanguageName(languages, normalized, true);
|
||||
}
|
||||
@@ -201,6 +218,18 @@ export function languageByExtension(filePath: string): Extension | null {
|
||||
case 'gemspec':
|
||||
return rubyLanguage;
|
||||
|
||||
case 'ex':
|
||||
case 'exs':
|
||||
return elixirSupport;
|
||||
case 'erl':
|
||||
case 'hrl':
|
||||
return erlangLanguage;
|
||||
|
||||
case 'eex':
|
||||
case 'leex':
|
||||
case 'heex':
|
||||
return html();
|
||||
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -473,9 +473,9 @@ export function getLanguageFromExtension(filePath: string): string | null {
|
||||
// Elixir/Erlang
|
||||
'ex': 'elixir',
|
||||
'exs': 'elixir',
|
||||
'eex': 'elixir',
|
||||
'heex': 'elixir',
|
||||
'leex': 'elixir',
|
||||
'eex': 'html',
|
||||
'heex': 'html',
|
||||
'leex': 'html',
|
||||
'erl': 'erlang',
|
||||
'hrl': 'erlang',
|
||||
|
||||
|
||||
Reference in New Issue
Block a user