1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-14 10:16:26 +00:00

syntax mode will be detected by filename

This commit is contained in:
Dick Choi
2016-08-22 00:43:52 +09:00
parent fc237848c8
commit 108e83a402
2 changed files with 256 additions and 130 deletions

View File

@@ -8,379 +8,442 @@ const modes = [
name: 'abap', name: 'abap',
label: 'ABAP', label: 'ABAP',
alias: [], alias: [],
mode: 'abap' mode: 'abap',
match: /\.abap$/i
}, },
{ {
name: 'abc', name: 'abc',
label: 'ABC', label: 'ABC',
alias: [], alias: [],
mode: 'abc' mode: 'abc',
match: /\.abc$/i
}, },
{ {
name: 'actionscript', name: 'actionscript',
label: 'ActionScript', label: 'ActionScript',
alias: ['as'], alias: ['as'],
mode: 'actionscript' mode: 'actionscript',
match: /\.as$/i
}, },
{ {
name: 'ada', name: 'ada',
label: 'Ada', label: 'Ada',
alias: [], alias: [],
mode: 'ada' mode: 'ada',
match: /\.ada$/i
}, },
{ {
name: 'apache_conf', name: 'apache_conf',
label: 'Apache config', label: 'Apache config',
alias: ['apache', 'conf'], alias: ['apache', 'conf'],
mode: 'apache_conf' mode: 'apache_conf',
match: /\.conf$/i
}, },
{ {
name: 'applescript', name: 'applescript',
label: 'AppleScript', label: 'AppleScript',
alias: ['scpt'], alias: ['scpt'],
mode: 'applescript' mode: 'applescript',
match: /\.scpt$|\.scptd$|\.AppleScript$/i
}, },
{ {
name: 'asciidoc', name: 'asciidoc',
label: 'AsciiDoc', label: 'AsciiDoc',
alias: ['ascii', 'doc', 'txt'], alias: ['ascii', 'doc', 'txt'],
mode: 'asciidoc' mode: 'asciidoc',
match: /\.txt$/i
}, },
{ {
name: 'assembly_x86', name: 'assembly_x86',
label: 'Assembly x86', label: 'Assembly x86',
alias: ['assembly', 'x86', 'asm'], alias: ['assembly', 'x86', 'asm'],
mode: 'assembly_x86' mode: 'assembly_x86',
match: /\.asm$/i
}, },
{ {
name: 'autohotkey', name: 'autohotkey',
label: 'AutoHotkey', label: 'AutoHotkey',
alias: ['ahk'], alias: ['ahk'],
mode: 'autohotkey' mode: 'autohotkey',
match: /\.ahk$/i
}, },
{ {
name: 'batchfile', name: 'batchfile',
label: 'Batch file', label: 'Batch file',
alias: ['dos', 'windows', 'bat', 'cmd', 'btm'], alias: ['dos', 'windows', 'bat', 'cmd', 'btm'],
mode: 'batchfile' mode: 'batchfile',
match: /\.bat$|\.cmd$/i
}, },
{ {
name: 'c', name: 'c',
label: 'C', label: 'C',
alias: ['c', 'h', 'clang', 'clang'], alias: ['c', 'h', 'clang', 'clang'],
mode: 'c_cpp' mode: 'c_cpp',
match: /\.c$|\.h\+\+$/i
}, },
{ {
name: 'cirru', name: 'cirru',
label: 'Cirru', label: 'Cirru',
alias: [], alias: [],
mode: 'cirru' mode: 'cirru',
match: /\.cirru$/i
}, },
{ {
name: 'clojure', name: 'clojure',
label: 'Clojure', label: 'Clojure',
alias: ['clj', 'cljs', 'cljc', 'edn'], alias: ['clj', 'cljs', 'cljc', 'edn'],
mode: 'clojure' mode: 'clojure',
match: /\.clj$|\.cljs$|\.cljc$|\.edn$/i
}, },
{ {
name: 'cobol', name: 'cobol',
label: 'COBOL', label: 'COBOL',
alias: ['cbl', 'cob', 'cpy'], alias: ['cbl', 'cob', 'cpy'],
mode: 'cobol' mode: 'cobol',
match: /\.cbl$|\.cob$\.cpy$/i
}, },
{ {
name: 'coffee', name: 'coffee',
label: 'CoffeeScript', label: 'CoffeeScript',
alias: ['coffee'], alias: ['coffee'],
mode: 'coffee' mode: 'coffee',
match: /\.coffee$|\.litcoffee$/i
}, },
{ {
name: 'coldfusion', name: 'coldfusion',
label: 'ColdFusion', label: 'ColdFusion',
alias: ['cfm', 'cfc'], alias: ['cfm', 'cfc'],
mode: 'coldfusion' mode: 'coldfusion',
match: /\.cfm$|\.cfc$/i
}, },
{ {
name: 'cpp', name: 'cpp',
label: 'C++', label: 'C++',
alias: ['cc', 'cpp', 'cxx', 'hh', 'c++', 'cplusplus'], alias: ['cc', 'cpp', 'cxx', 'hh', 'c++', 'cplusplus'],
mode: 'c_cpp' mode: 'c_cpp',
match: /\.cc$|\.cpp$|\.cxx$|\.C$|\.c\+\+$|\.hh$|\.hpp$|\.hxx$|\.h\+\+$/i
}, },
{ {
name: 'csharp', name: 'csharp',
label: 'C#', label: 'C#',
alias: ['cs', 'c#'], alias: ['cs', 'c#'],
mode: 'csharp' mode: 'csharp',
match: /\.cs$/i
}, },
{ {
name: 'css', name: 'css',
label: 'CSS', label: 'CSS',
alias: ['cascade', 'stylesheet'], alias: ['cascade', 'stylesheet'],
mode: 'css' mode: 'css',
match: /\.css$/i
}, },
{ {
name: 'curly', name: 'curly',
label: 'Curly', label: 'Curly',
alias: [], alias: [],
mode: 'curly' mode: 'curly',
match: /\.curly$/i
}, },
{ {
name: 'd', name: 'd',
label: 'D', label: 'D',
alias: ['dlang'], alias: ['dlang'],
mode: 'd' mode: 'd',
match: /\.d$/i
}, },
{ {
name: 'dockerfile', name: 'dockerfile',
label: 'DockerFile', label: 'DockerFile',
alias: ['docker'], alias: ['docker'],
mode: 'docker' mode: 'docker',
match: /Dockerfile$/i
}, },
{ {
name: 'dart', name: 'dart',
label: 'Dart', label: 'Dart',
alias: [], alias: [],
mode: 'dart' mode: 'dart',
match: /\.dart$/i
}, },
{ {
name: 'diff', name: 'diff',
label: 'Diff', label: 'Diff',
alias: [], alias: [],
mode: 'diff' mode: 'diff',
match: /\.diff$|\.patch$/i
}, },
{ {
name: 'django', name: 'django',
label: 'Django', label: 'Django',
alias: [], alias: [],
mode: 'djt' mode: 'djt',
match: /\.djt$/i
}, },
{ {
name: 'dot', name: 'dot',
label: 'DOT', label: 'DOT',
alias: ['gv'], alias: ['gv'],
mode: 'dot' mode: 'dot',
match: /\.gv$|\.dot/i
}, },
{ {
name: 'eiffel', name: 'eiffel',
label: 'Eiffel', label: 'Eiffel',
alias: [], alias: [],
mode: 'eiffel' mode: 'eiffel',
match: /\.e$/i
}, },
{ {
name: 'ejs', name: 'ejs',
label: 'EJS', label: 'EJS',
alias: [], alias: [],
mode: 'ejs' mode: 'ejs',
match: /\.ejs$/i
}, },
{ {
name: 'elixir', name: 'elixir',
label: 'Elixir', label: 'Elixir',
alias: ['ex', 'exs'], alias: ['ex', 'exs'],
mode: 'elixir' mode: 'elixir',
match: /\.ex$|\.exs$/i
}, },
{ {
name: 'elm', name: 'elm',
label: 'Elm', label: 'Elm',
alias: [], alias: [],
mode: 'elm' mode: 'elm',
match: /\.elm$/i
}, },
{ {
name: 'erlang', name: 'erlang',
label: 'Erlang', label: 'Erlang',
alias: ['erl', 'hrl'], alias: ['erl', 'hrl'],
mode: 'erlang' mode: 'erlang',
match: /\.erl$|\.hrl$/i
}, },
{ {
name: 'forth', name: 'forth',
label: 'Forth', label: 'Forth',
alias: ['fs', 'fth'], alias: ['fs', 'fth'],
mode: 'forth' mode: 'forth',
match: /\.fs$|\.fth$/i
}, },
{ {
name: 'freemaker', name: 'freemaker',
label: 'Freemaker', label: 'Freemaker',
alias: ['ftl'], alias: ['ftl'],
mode: 'ftl' mode: 'ftl',
match: /\.ftl$/i
}, },
{ {
name: 'gcode', name: 'gcode',
label: 'G-code', label: 'G-code',
alias: ['mpt', 'mpf', 'nc'], alias: ['mpt', 'mpf', 'nc'],
mode: 'gcode' mode: 'gcode',
match: /\.mpt$|\.mpf$|\.nc$/i
}, },
{ {
name: 'gherkin', name: 'gherkin',
label: 'Gherkin', label: 'Gherkin',
alias: ['cucumber'], alias: ['cucumber'],
mode: 'gherkin' mode: 'gherkin',
match: /\.feature$/i
}, },
{ {
name: 'gitignore', name: 'gitignore',
label: 'Gitignore', label: 'Gitignore',
alias: ['git'], alias: ['git'],
mode: 'gitignore' mode: 'gitignore',
match: /\.gitignore$/i
}, },
{ {
name: 'glsl', name: 'glsl',
label: 'GLSL', label: 'GLSL',
alias: ['opengl', 'shading'], alias: ['opengl', 'shading'],
mode: 'glsl' mode: 'glsl',
match: /\.vert$|\.frag/i
}, },
{ {
name: 'golang', name: 'golang',
label: 'Go', label: 'Go',
alias: ['go'], alias: ['go'],
mode: 'golang' mode: 'golang',
match: /\.go$/i
}, },
{ {
name: 'groovy', name: 'groovy',
label: 'Groovy', label: 'Groovy',
alias: [], alias: [],
mode: 'grooby' mode: 'grooby',
match: /\.groovy$/i
}, },
{ {
name: 'haml', name: 'haml',
label: 'Haml', label: 'Haml',
alias: [], alias: [],
mode: 'haml' mode: 'haml',
match: /\.haml$/i
}, },
{ {
name: 'handlebars', name: 'handlebars',
label: 'Handlebars', label: 'Handlebars',
alias: ['hbs'], alias: ['hbs'],
mode: 'handlebars' mode: 'handlebars',
match: /\.hbs$/i
}, },
{ {
name: 'haskell', name: 'haskell',
label: 'Haskell', label: 'Haskell',
alias: ['hs', 'lhs'], alias: ['hs', 'lhs'],
mode: 'haskell' mode: 'haskell',
match: /\.hs$|\.lhs$/i
}, },
{ {
name: 'haxe', name: 'haxe',
label: 'Haxe', label: 'Haxe',
alias: ['hx', 'hxml'], alias: ['hx', 'hxml'],
mode: 'haxe' mode: 'haxe',
match: /\.hx$|\.hxml$/i
}, },
{ {
name: 'html', name: 'html',
label: 'HTML', label: 'HTML',
alias: [], alias: [],
mode: 'html' mode: 'html',
match: /\.html$/i
}, },
{ {
name: 'html_ruby', name: 'html_ruby',
label: 'HTML (Ruby)', label: 'HTML (Ruby)',
alias: ['erb', 'rhtml'], alias: ['erb', 'rhtml'],
mode: 'html_ruby' mode: 'html_ruby',
match: /\.erb$|\.rhtml$/i
}, },
{ {
name: 'jsx', name: 'jsx',
label: 'JSX', label: 'JSX',
alias: ['es', 'babel', 'js', 'jsx', 'react'], alias: ['es', 'babel', 'js', 'jsx', 'react'],
mode: 'jsx' mode: 'jsx',
match: /\.jsx$/i
}, },
{ {
name: 'typescript', name: 'typescript',
label: 'TypeScript', label: 'TypeScript',
alias: ['ts'], alias: ['ts'],
mode: 'typescript' mode: 'typescript',
match: /\.ts$/i
}, },
{ {
name: 'ini', name: 'ini',
label: 'INI file', label: 'INI file',
alias: [], alias: [],
mode: 'ini' mode: 'ini',
match: /\.ini$/i
}, },
{ {
name: 'io', name: 'io',
label: 'Io', label: 'Io',
alias: [], alias: [],
mode: 'io' mode: 'io',
match: /\.io$/i
}, },
{ {
name: 'jack', name: 'jack',
label: 'Jack', label: 'Jack',
alias: [], alias: [],
mode: 'jack' mode: 'jack',
match: /\.jack$/i
}, },
{ {
name: 'jade', name: 'pug',
label: 'Jade', label: 'Pug(Jade)',
alias: [], alias: ['jade'],
mode: 'jade' mode: 'jade',
match: /\.jade$|\.pug$/i
}, },
{ {
name: 'java', name: 'java',
label: 'Java', label: 'Java',
alias: [], alias: [],
mode: 'java' mode: 'java',
match: /\.java$/i
}, },
{ {
name: 'javascript', name: 'javascript',
label: 'JavaScript', label: 'JavaScript',
alias: ['js', 'jscript', 'babel', 'es'], alias: ['js', 'jscript', 'babel', 'es'],
mode: 'javascript' mode: 'javascript',
match: /\.js$/i
}, },
{ {
name: 'json', name: 'json',
label: 'JSON', label: 'JSON',
alias: [], alias: [],
mode: 'json' mode: 'json',
match: /\.json$/i
}, },
{ {
name: 'jsoniq', name: 'jsoniq',
label: 'JSONiq', label: 'JSONiq',
alias: ['query'], alias: ['query'],
mode: 'jsoniq' mode: 'jsoniq',
match: /\.jq$|\.jqy$/i
}, },
{ {
name: 'jsp', name: 'jsp',
label: 'JSP', label: 'JSP',
alias: [], alias: [],
mode: 'jsp' mode: 'jsp',
match: /\.jsp$/i
}, },
{ {
name: 'julia', name: 'julia',
label: 'Julia', label: 'Julia',
alias: [], alias: [],
mode: 'julia' mode: 'julia',
match: /\.jl$/i
}, },
{ {
name: 'latex', name: 'latex',
label: 'Latex', label: 'Latex',
alias: ['tex'], alias: ['tex'],
mode: 'latex' mode: 'latex',
match: /\.tex$/i
}, },
{ {
name: 'lean', name: 'lean',
label: 'Lean', label: 'Lean',
alias: [], alias: [],
mode: 'lean' mode: 'lean',
match: /\.lean$/i
}, },
{ {
name: 'less', name: 'less',
label: 'Less', label: 'Less',
alias: [], alias: [],
mode: 'less' mode: 'less',
match: /\.less$/i
}, },
{ {
name: 'liquid', name: 'liquid',
label: 'Liquid', label: 'Liquid',
alias: [], alias: [],
mode: 'liquid' mode: 'liquid',
match: /\.liquid$/i
}, },
{ {
name: 'lisp', name: 'lisp',
label: 'Lisp', label: 'Lisp',
alias: ['lsp'], alias: ['lsp'],
mode: 'lisp' mode: 'lisp',
match: /\.lisp$|\.lsp$|\.cl/i
}, },
{ {
name: 'livescript', name: 'livescript',
label: 'LiveScript', label: 'LiveScript',
alias: ['ls'], alias: ['ls'],
mode: 'livescript' mode: 'livescript',
match: /\.ls$/i
}, },
{ {
name: 'logiql', name: 'logiql',
@@ -392,19 +455,22 @@ const modes = [
name: 'lsl', name: 'lsl',
label: 'LSL', label: 'LSL',
alias: [], alias: [],
mode: 'lsl' mode: 'lsl',
match: /\.lsl$/i
}, },
{ {
name: 'lua', name: 'lua',
label: 'Lua', label: 'Lua',
alias: [], alias: [],
mode: 'lua' mode: 'lua',
match: /\.lsl$/i
}, },
{ {
name: 'luapage', name: 'luapage',
label: 'Luapage', label: 'Luapage',
alias: [], alias: [],
mode: 'luapage' mode: 'luapage',
match: /\.lp$/i
}, },
{ {
name: 'lucene', name: 'lucene',
@@ -416,13 +482,15 @@ const modes = [
name: 'makefile', name: 'makefile',
label: 'Makefile', label: 'Makefile',
alias: [], alias: [],
mode: 'makefile' mode: 'makefile',
match: /Makefile$/i
}, },
{ {
name: 'markdown', name: 'markdown',
label: 'Markdown', label: 'Markdown',
alias: ['md'], alias: ['md'],
mode: 'markdown' mode: 'markdown',
match: /\.md$/i
}, },
{ {
name: 'mask', name: 'mask',
@@ -434,7 +502,8 @@ const modes = [
name: 'matlab', name: 'matlab',
label: 'MATLAB', label: 'MATLAB',
alias: [], alias: [],
mode: 'matlab' mode: 'matlab',
match: /\.m$|\.mat$/i
}, },
{ {
name: 'maze', name: 'maze',
@@ -464,55 +533,64 @@ const modes = [
name: 'mysql', name: 'mysql',
label: 'MySQL', label: 'MySQL',
alias: [], alias: [],
mode: 'mysql' mode: 'mysql',
match: /\.mysql$/i
}, },
{ {
name: 'nix', name: 'nix',
label: 'Nix', label: 'Nix',
alias: [], alias: [],
mode: 'nix' mode: 'nix',
match: /\.nix$/i
}, },
{ {
name: 'objectivec', name: 'objectivec',
label: 'Objective C', label: 'Objective C',
alias: ['objc'], alias: ['objc'],
mode: 'objectivec' mode: 'objectivec',
match: /\.h$|\.m$|\.mm$/i
}, },
{ {
name: 'ocaml', name: 'ocaml',
label: 'OCaml', label: 'OCaml',
alias: [], alias: [],
mode: 'ocaml' mode: 'ocaml',
match: /\.ml$|\.mli$/i
}, },
{ {
name: 'pascal', name: 'pascal',
label: 'Pascal', label: 'Pascal',
alias: [], alias: [],
mode: 'pascal' mode: 'pascal',
match: /\.pp$|\.pas$|\.inc$/i
}, },
{ {
name: 'perl', name: 'perl',
label: 'Perl', label: 'Perl',
alias: [], alias: [],
mode: 'perl' mode: 'perl',
match: /\.pl$|\.pm$|\.t$|\.pod$/i
}, },
{ {
name: 'pgsql', name: 'pgsql',
label: 'Postgres SQL', label: 'Postgres SQL',
alias: ['postgres'], alias: ['postgres'],
mode: 'pgsql' mode: 'pgsql',
match: /\.pgsql$/i
}, },
{ {
name: 'php', name: 'php',
label: 'PHP', label: 'PHP',
alias: [], alias: [],
mode: 'php' mode: 'php',
match: /\.php$/i
}, },
{ {
name: 'powershell', name: 'powershell',
label: 'PowerShell', label: 'PowerShell',
alias: ['ps1'], alias: ['ps1'],
mode: 'powershell' mode: 'powershell',
match: /\.ps1$/i
}, },
{ {
name: 'praat', name: 'praat',
@@ -524,121 +602,141 @@ const modes = [
name: 'prolog', name: 'prolog',
label: 'Prolog', label: 'Prolog',
alias: ['pl', 'pro'], alias: ['pl', 'pro'],
mode: 'prolog' mode: 'prolog',
match: /\.pl$/i
}, },
{ {
name: 'properties', name: 'properties',
label: 'Properties', label: 'Properties',
alias: [], alias: [],
mode: 'properties' mode: 'properties',
match: /\.properties$/i
}, },
{ {
name: 'protobuf', name: 'protobuf',
label: 'Protocol Buffers', label: 'Protocol Buffers',
alias: ['protocol', 'buffers'], alias: ['protocol', 'buffers'],
mode: 'protobuf' mode: 'protobuf',
match: /\.proto$/i
}, },
{ {
name: 'python', name: 'python',
label: 'Python', label: 'Python',
alias: ['py'], alias: ['py'],
mode: 'python' mode: 'python',
match: /\.py$/i
}, },
{ {
name: 'r', name: 'r',
label: 'R', label: 'R',
alias: ['rlang'], alias: ['rlang'],
mode: 'r' mode: 'r',
match: /\.r$/i
}, },
{ {
name: 'rdoc', name: 'rdoc',
label: 'RDoc', label: 'RDoc',
alias: [], alias: [],
mode: 'rdoc' mode: 'rdoc',
match: /\.rdoc$/i
}, },
{ {
name: 'ruby', name: 'ruby',
label: 'Ruby', label: 'Ruby',
alias: ['rb'], alias: ['rb'],
mode: 'ruby' mode: 'ruby',
match: /\.rb$/i
}, },
{ {
name: 'rust', name: 'rust',
label: 'Rust', label: 'Rust',
alias: [], alias: [],
mode: 'rust' mode: 'rust',
match: /\.rs$/i
}, },
{ {
name: 'sass', name: 'sass',
label: 'Sass', label: 'Sass',
alias: [], alias: [],
mode: 'sass' mode: 'sass',
match: /\.sass$/i
}, },
{ {
name: 'scad', name: 'scad',
label: 'SCAD', label: 'SCAD',
alias: [], alias: [],
mode: 'scad' mode: 'scad',
match: /\.scad$/i
}, },
{ {
name: 'scala', name: 'scala',
label: 'Scala', label: 'Scala',
alias: [], alias: [],
mode: 'scala' mode: 'scala',
match: /\.scala$|\.sc$/i
}, },
{ {
name: 'scheme', name: 'scheme',
label: 'Scheme', label: 'Scheme',
alias: ['scm', 'ss'], alias: ['scm', 'ss'],
mode: 'scheme' mode: 'scheme',
match: /\.scm$|\.ss$/i
}, },
{ {
name: 'scss', name: 'scss',
label: 'Scss', label: 'Scss',
alias: [], alias: [],
mode: 'scss' mode: 'scss',
match: /\.scss$/i
}, },
{ {
name: 'sh', name: 'sh',
label: 'Shell', label: 'Shell',
alias: ['shell'], alias: ['shell'],
mode: 'sh' mode: 'sh',
match: /\.sh$/i
}, },
{ {
name: 'sjs', name: 'sjs',
label: 'StratifiedJS', label: 'StratifiedJS',
alias: ['stratified'], alias: ['stratified'],
mode: 'sjs' mode: 'sjs',
match: /\.sjs$/i
}, },
{ {
name: 'smarty', name: 'smarty',
label: 'Smarty', label: 'Smarty',
alias: [], alias: [],
mode: 'smarty' mode: 'smarty',
match: /\.smarty$/i
}, },
{ {
name: 'snippets', name: 'snippets',
label: 'Snippets', label: 'Snippets',
alias: [], alias: [],
mode: 'snippets' mode: 'snippets',
match: /snippets$/i
}, },
{ {
name: 'soy_template', name: 'soy_template',
label: 'Soy Template', label: 'Soy Template',
alias: ['soy'], alias: ['soy'],
mode: 'soy_template' mode: 'soy_template',
match: /\.soy$/i
}, },
{ {
name: 'space', name: 'space',
label: 'Space', label: 'Space',
alias: [], alias: [],
mode: 'space' mode: 'space',
match: /\.space$/i
}, },
{ {
name: 'sql', name: 'sql',
label: 'SQL', label: 'SQL',
alias: [], alias: [],
mode: 'sql' mode: 'sql',
match: /\.sql$/i
}, },
{ {
name: 'sqlserver', name: 'sqlserver',
@@ -650,103 +748,120 @@ const modes = [
name: 'stylus', name: 'stylus',
label: 'Stylus', label: 'Stylus',
alias: [], alias: [],
mode: 'stylus' mode: 'stylus',
match: /\.styl$/i
}, },
{ {
name: 'svg', name: 'svg',
label: 'SVG', label: 'SVG',
alias: [], alias: [],
mode: 'svg' mode: 'svg',
match: /\.svg$/i
}, },
{ {
name: 'swift', name: 'swift',
label: 'Swift', label: 'Swift',
alias: [], alias: [],
mode: 'swift' mode: 'swift',
match: /\.swift$/i
}, },
{ {
name: 'swig', name: 'swig',
label: 'SWIG', label: 'SWIG',
alias: [], alias: [],
mode: 'swig' mode: 'swig',
match: /\.i$|\.swg$/i
}, },
{ {
name: 'tcl', name: 'tcl',
label: 'Tcl', label: 'Tcl',
alias: [], alias: [],
mode: 'tcl' mode: 'tcl',
match: /\.tcl$/i
}, },
{ {
name: 'tex', name: 'tex',
label: 'TeX', label: 'TeX',
alias: [], alias: [],
mode: 'tex' mode: 'tex',
match: /\.tex$/i
}, },
{ {
name: 'textile', name: 'textile',
label: 'Textile', label: 'Textile',
alias: [], alias: [],
mode: 'textile' mode: 'textile',
match: /\.textile$/i
}, },
{ {
name: 'toml', name: 'toml',
label: 'TOML', label: 'TOML',
alias: [], alias: [],
mode: 'toml' mode: 'toml',
match: /\.toml$/i
}, },
{ {
name: 'twig', name: 'twig',
label: 'Twig', label: 'Twig',
alias: [], alias: [],
mode: 'twig' mode: 'twig',
match: /\.twig$/i
}, },
{ {
name: 'vala', name: 'vala',
label: 'Vala', label: 'Vala',
alias: [], alias: [],
mode: 'vala' mode: 'vala',
match: /\.vala$|\.vapi$/i
}, },
{ {
name: 'vbscript', name: 'vbscript',
label: 'VBScript', label: 'VBScript',
alias: ['vbs', 'vbe'], alias: ['vbs', 'vbe'],
mode: 'vbscript' mode: 'vbscript',
match: /\.vbs$|\.vbe$/i
}, },
{ {
name: 'velocity', name: 'velocity',
label: 'Velocity', label: 'Velocity',
alias: [], alias: [],
mode: 'velocity' mode: 'velocity',
match: /\.vm$/i
}, },
{ {
name: 'verilog', name: 'verilog',
label: 'Verilog', label: 'Verilog',
alias: [], alias: [],
mode: 'verilog' mode: 'verilog',
match: /\.v$/i
}, },
{ {
name: 'vhdl', name: 'vhdl',
label: 'VHDL', label: 'VHDL',
alias: [], alias: [],
mode: 'vhdl' mode: 'vhdl',
match: /\.vhdl$/i
}, },
{ {
name: 'xml', name: 'xml',
label: 'XML', label: 'XML',
alias: [], alias: [],
mode: 'xml' mode: 'xml',
match: /\.xml$/i
}, },
{ {
name: 'xquery', name: 'xquery',
label: 'XQuery', label: 'XQuery',
alias: [], alias: [],
mode: 'xquery' mode: 'xquery',
match: /\.xq$|\.xqy$|\.xquery$/i
}, },
{ {
name: 'yaml', name: 'yaml',
label: 'YAML', label: 'YAML',
alias: [], alias: [],
mode: 'yaml' mode: 'yaml',
match: /\.yaml$/i
} }
] ]

View File

@@ -11,6 +11,17 @@ import modes from 'browser/lib/modes'
import { hashHistory } from 'react-router' import { hashHistory } from 'react-router'
import ee from 'browser/main/lib/eventEmitter' import ee from 'browser/main/lib/eventEmitter'
function detectModeByFilename (filename) {
for (let key in modes) {
const mode = modes[key]
if (mode.match != null && mode.match.test(filename)) {
console.log(mode)
return mode.mode
}
}
return null
}
const electron = require('electron') const electron = require('electron')
const { remote } = electron const { remote } = electron
const Menu = remote.Menu const Menu = remote.Menu
@@ -251,18 +262,18 @@ class SnippetNoteDetail extends React.Component {
} }
} }
handleNameInputChange (index) { handleNameInputChange (e, index) {
return (e) => { let snippets = this.state.note.snippets.slice()
let snippets = this.state.note.snippets.slice() snippets[index].name = e.target.value
snippets[index].name = e.target.value let mode = detectModeByFilename(e.target.value.trim())
this.state.note.snippets = snippets if (mode != null) snippets[index].mode = mode
this.state.note.snippets = snippets
this.setState({ this.setState({
note: this.state.note note: this.state.note
}, () => { }, () => {
this.save() this.save()
}) })
}
} }
handleModeButtonClick (index) { handleModeButtonClick (index) {
@@ -359,7 +370,7 @@ class SnippetNoteDetail extends React.Component {
<input styleName='tabView-top-name' <input styleName='tabView-top-name'
placeholder='Filename including extensions...' placeholder='Filename including extensions...'
value={snippet.name} value={snippet.name}
onChange={(e) => this.handleNameInputChange(index)(e)} onChange={(e) => this.handleNameInputChange(e, index)}
/> />
<button styleName='tabView-top-mode' <button styleName='tabView-top-mode'
onClick={(e) => this.handleModeButtonClick(index)(e)} onClick={(e) => this.handleModeButtonClick(index)(e)}