update modelist extension

This commit is contained in:
nightwing 2013-04-17 16:15:58 +04:00
commit 35563c5e84
7 changed files with 110 additions and 233 deletions

View file

@ -451,7 +451,7 @@ event.addListener(container, "drop", function(e) {
if (window.FileReader) { if (window.FileReader) {
var reader = new FileReader(); var reader = new FileReader();
reader.onload = function() { reader.onload = function() {
var mode = modelist.getModeFromPath(file.name); var mode = modelist.getModeForPath(file.name);
env.editor.session.doc.setValue(reader.result); env.editor.session.doc.setValue(reader.result);
modeEl.value = mode.name; modeEl.value = mode.name;

View file

@ -51,7 +51,7 @@ function initDoc(file, path, doc) {
session.setUseWrapMode(true); session.setUseWrapMode(true);
session.setWrapLimitRange(80, 80); session.setWrapLimitRange(80, 80);
} }
var mode = modelist.getModeFromPath(path); var mode = modelist.getModeForPath(path);
session.modeName = mode.name; session.modeName = mode.name;
session.setMode(mode.mode); session.setMode(mode.mode);
return session; return session;

View file

@ -1,138 +0,0 @@
define(function(require, exports, module) {
"use strict";
/************** modes ***********************/
var modes = [];
function getModeFromPath(path) {
var mode = modesByName.text;
var fileName = path.split(/[\/\\]/).pop();
for (var i = 0; i < modes.length; i++) {
if (modes[i].supportsFile(fileName)) {
mode = modes[i];
break;
}
}
return mode;
}
var Mode = function(name, desc, extensions) {
this.name = name;
this.desc = desc;
this.mode = "ace/mode/" + name;
if (/\^/.test(extensions)) {
var re = extensions.replace(/\|(\^)?/g, function(a, b){
return "$|" + (b ? "^" : "^.*\\.");
}) + "$";
} else {
var re = "^.*\\.(" + extensions + ")$";
}
this.extRe = new RegExp(re, "gi");
};
Mode.prototype.supportsFile = function(filename) {
return filename.match(this.extRe);
};
var modesByName = {
asciidoc: ["AsciiDoc" , "asciidoc"],
c9search: ["C9Search" , "c9search_results"],
coffee: ["CoffeeScript" , "^Cakefile|coffee|cf|cson"],
coldfusion: ["ColdFusion" , "cfm"],
csharp: ["C#" , "cs"],
css: ["CSS" , "css"],
curly: ["Curly" , "curly"],
dart: ["Dart" , "dart"],
diff: ["Diff" , "diff|patch"],
dot: ["Dot" , "dot"],
ftl: ["FreeMarker" , "ftl"],
glsl: ["Glsl" , "glsl|frag|vert"],
golang: ["Go" , "go"],
groovy: ["Groovy" , "groovy"],
haxe: ["haXe" , "hx"],
haml: ["HAML" , "haml"],
html: ["HTML" , "htm|html|xhtml"],
c_cpp: ["C/C++" , "c|cc|cpp|cxx|h|hh|hpp"],
clojure: ["Clojure" , "clj"],
jade: ["Jade" , "jade"],
java: ["Java" , "java"],
jsp: ["JSP" , "jsp"],
javascript: ["JavaScript" , "js"],
json: ["JSON" , "json"],
jsx: ["JSX" , "jsx"],
latex: ["LaTeX" , "latex|tex|ltx|bib"],
less: ["LESS" , "less"],
lisp: ["Lisp" , "lisp"],
scheme: ["Scheme" , "scm|rkt"],
liquid: ["Liquid" , "liquid"],
livescript: ["LiveScript" , "ls"],
logiql: ["LogiQL" , "logic|lql"],
lua: ["Lua" , "lua"],
luapage: ["LuaPage" , "lp"], // http://keplerproject.github.com/cgilua/manual.html#templates
lucene: ["Lucene" , "lucene"],
lsl: ["LSL" , "lsl"],
makefile: ["Makefile" , "^GNUmakefile|^makefile|^Makefile|^OCamlMakefile|make"],
markdown: ["Markdown" , "md|markdown"],
mushcode: ["TinyMUSH" , "mc|mush"],
objectivec: ["Objective-C" , "m"],
ocaml: ["OCaml" , "ml|mli"],
pascal: ["Pascal" , "pas|p"],
perl: ["Perl" , "pl|pm"],
pgsql: ["pgSQL" , "pgsql"],
php: ["PHP" , "php|phtml"],
powershell: ["Powershell" , "ps1"],
properties: ["Properties" , "properties"],
python: ["Python" , "py"],
r: ["R" , "r"],
rdoc: ["RDoc" , "Rd"],
rhtml: ["RHTML" , "Rhtml"],
ruby: ["Ruby" , "ru|gemspec|rake|rb"],
scad: ["OpenSCAD" , "scad"],
scala: ["Scala" , "scala"],
scss: ["SCSS" , "scss"],
sass: ["SASS" , "sass"],
sh: ["SH" , "sh|bash"],
sql: ["SQL" , "sql"],
stylus: ["Stylus" , "styl|stylus"],
svg: ["SVG" , "svg"],
tcl: ["Tcl" , "tcl"],
tex: ["Tex" , "tex"],
text: ["Text" , "txt"],
textile: ["Textile" , "textile"],
tmsnippet: ["tmSnippet" , "tmSnippet"],
toml: ["Toml" , "toml"],
typescript: ["Typescript" , "typescript|ts|str"],
vbscript: ["VBScript" , "vbs"],
velocity: ["Velocity" , "vm"],
xml: ["XML" , "xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"],
xquery: ["XQuery" , "xq"],
jsoniq: ["JSONiq" , "jq"],
yaml: ["YAML" , "yaml"],
abap: ["ABAP" , "abap"],
actionscript: ["ActionScript" ,"as"],
autohotkey: ["AutoHotKey" , "ahk"],
batch_file: ["BatchFile" , "bat|cmd"],
erlang: ["Erlang" ,"erl|hrl"],
forth: ["Forth", ,"frt|fs|ldr"],
haskell: ["Haskell", "hs"],
julia: ["Julia", "jl"],
prolog: ["Prolog", "plg|prolog"],
rust: ["Rust", "rs"]
};
for (var name in modesByName) {
var mode = modesByName[name];
mode = new Mode(name, mode[0], mode[1]);
modesByName[name] = mode;
modes.push(mode);
}
module.exports = {
getModeFromPath: getModeFromPath,
modes: modes,
modesByName: modesByName
};
});

View file

@ -220,8 +220,8 @@ function elt(tag, attributes, content) {
function optgroup(values) { function optgroup(values) {
return values.map(function(item) { return values.map(function(item) {
if (typeof item == "string") if (typeof item == "string")
item = {name: item, desc: item}; item = {name: item, caption: item};
return elt("option", {value: item.name}, item.desc); return elt("option", {value: item.name}, item.caption || item.desc);
}); });
} }

View file

@ -1,10 +1,6 @@
define(function(require, exports, module) { define(function(require, exports, module) {
"use strict"; "use strict";
/************** modes ***********************/
/**
* An array containing information about rendering modes.
*/
var modes = []; var modes = [];
/** /**
* Suggests a mode based on the file extension present in the given path * Suggests a mode based on the file extension present in the given path
@ -12,7 +8,7 @@ var modes = [];
* @returns {object} Returns an object containing information about the * @returns {object} Returns an object containing information about the
* suggested mode. * suggested mode.
*/ */
function getModeFromPath(path) { function getModeForPath(path) {
var mode = modesByName.text; var mode = modesByName.text;
var fileName = path.split(/[\/\\]/).pop(); var fileName = path.split(/[\/\\]/).pop();
for (var i = 0; i < modes.length; i++) { for (var i = 0; i < modes.length; i++) {
@ -24,10 +20,11 @@ function getModeFromPath(path) {
return mode; return mode;
} }
var Mode = function(name, desc, extensions) { var Mode = function(name, caption, extensions) {
this.name = name; this.name = name;
this.desc = desc; this.caption = caption;
this.mode = "ace/mode/" + name; this.mode = "ace/mode/" + name;
this.extensions = extensions;
if (/\^/.test(extensions)) { if (/\^/.test(extensions)) {
var re = extensions.replace(/\|(\^)?/g, function(a, b){ var re = extensions.replace(/\|(\^)?/g, function(a, b){
return "$|" + (b ? "^" : "^.*\\."); return "$|" + (b ? "^" : "^.*\\.");
@ -43,95 +40,113 @@ Mode.prototype.supportsFile = function(filename) {
return filename.match(this.extRe); return filename.match(this.extRe);
}; };
/** // todo firstlinematch
* An object containing properties that map to rendering modes. Each property var supportedModes = {
* contains an array where element 0 is the name of the mode and element 1 ABAP: ["abap"],
* contains information about the file extensions where this mode is ActionScript:["as"],
* applicable. AsciiDoc: ["asciidoc"],
*/ AutoHotKey: ["ahk"],
var modesByName = { BatchFile: ["bat|cmd"],
abap: ["ABAP" , "abap"], C9Search: ["c9search_results"],
asciidoc: ["AsciiDoc" , "asciidoc"], C_Cpp: ["c|cc|cpp|cxx|h|hh|hpp"],
c9search: ["C9Search" , "c9search_results"], Clojure: ["clj"],
coffee: ["CoffeeScript" , "^Cakefile|coffee|cf|cson"], coffee: ["^Cakefile|coffee|cf|cson"],
coldfusion: ["ColdFusion" , "cfm"], ColdFusion: ["cfm"],
csharp: ["C#" , "cs"], CSharp: ["cs"],
css: ["CSS" , "css"], CSS: ["css"],
curly: ["Curly" , "curly"], Curly: ["curly"],
dart: ["Dart" , "dart"], Dart: ["dart"],
diff: ["Diff" , "diff|patch"], Diff: ["diff|patch"],
dot: ["Dot" , "dot"], Dot: ["dot"],
ftl: ["FreeMarker" , "ftl"], Erlang: ["erl|hrl"],
glsl: ["Glsl" , "glsl|frag|vert"], Forth: ["frt|fs|ldr"],
golang: ["Go" , "go"], FreeMarker: ["ftl"],
groovy: ["Groovy" , "groovy"], Glsl: ["glsl|frag|vert"],
haxe: ["haXe" , "hx"], golang: ["go"],
haml: ["HAML" , "haml"], Groovy: ["groovy"],
html: ["HTML" , "htm|html|xhtml"], HAML: ["haml"],
c_cpp: ["C/C++" , "c|cc|cpp|cxx|h|hh|hpp"], Haskell: ["hs"],
clojure: ["Clojure" , "clj"], haXe: ["hx"],
jade: ["Jade" , "jade"], HTML: ["htm|html|xhtml"],
java: ["Java" , "java"], Ini: ["Ini|conf"],
jsp: ["JSP" , "jsp"], Jade: ["jade"],
javascript: ["JavaScript" , "js"], Java: ["java"],
json: ["JSON" , "json"], JavaScript: ["js"],
jsx: ["JSX" , "jsx"], JSON: ["json"],
latex: ["LaTeX" , "latex|tex|ltx|bib"], JSONiq: ["jq"],
less: ["LESS" , "less"], JSP: ["jsp"],
lisp: ["Lisp" , "lisp"], JSX: ["jsx"],
scheme: ["Scheme" , "scm|rkt"], Julia: ["jl"],
liquid: ["Liquid" , "liquid"], LaTeX: ["latex|tex|ltx|bib"],
livescript: ["LiveScript" , "ls"], LESS: ["less"],
logiql: ["LogiQL" , "logic|lql"], Liquid: ["liquid"],
lua: ["Lua" , "lua"], Lisp: ["lisp"],
luapage: ["LuaPage" , "lp"], // http://keplerproject.github.com/cgilua/manual.html#templates LiveScript: ["ls"],
lucene: ["Lucene" , "lucene"], LogiQL: ["logic|lql"],
lsl: ["LSL" , "lsl"], LSL: ["lsl"],
makefile: ["Makefile" , "^GNUmakefile|^makefile|^Makefile|^OCamlMakefile|make"], Lua: ["lua"],
markdown: ["Markdown" , "md|markdown"], LuaPage: ["lp"],
mushcode: ["TinyMUSH" , "mc|mush"], Lucene: ["lucene"],
objectivec: ["Objective-C" , "m"], Makefile: ["^GNUmakefile|^makefile|^Makefile|^OCamlMakefile|make"],
ocaml: ["OCaml" , "ml|mli"], Markdown: ["md|markdown"],
pascal: ["Pascal" , "pas|p"], MUSHCode: ["mc|mush"],
perl: ["Perl" , "pl|pm"], ObjectiveC: ["m"],
pgsql: ["pgSQL" , "pgsql"], OCaml: ["ml|mli"],
php: ["PHP" , "php|phtml"], Pascal: ["pas|p"],
powershell: ["Powershell" , "ps1"], Perl: ["pl|pm"],
python: ["Python" , "py"], pgSQL: ["pgsql"],
r: ["R" , "r"], PHP: ["php|phtml"],
rdoc: ["RDoc" , "Rd"], Powershell: ["ps1"],
rhtml: ["RHTML" , "Rhtml"], Prolog: ["plg|prolog"],
ruby: ["Ruby" , "ru|gemspec|rake|rb"], Properties: ["properties"],
scad: ["OpenSCAD" , "scad"], Python: ["py"],
scala: ["Scala" , "scala"], R: ["r"],
scss: ["SCSS" , "scss"], RDoc: ["Rd"],
sass: ["SASS" , "sass"], RHTML: ["Rhtml"],
sh: ["SH" , "sh|bash|bat"], Ruby: ["ru|gemspec|rake|rb"],
sql: ["SQL" , "sql"], Rust: ["rs"],
stylus: ["Stylus" , "styl|stylus"], SASS: ["sass"],
svg: ["SVG" , "svg"], SCAD: ["scad"],
tcl: ["Tcl" , "tcl"], Scala: ["scala"],
tex: ["Tex" , "tex"], Scheme: ["scm|rkt"],
text: ["Text" , "txt"], SCSS: ["scss"],
textile: ["Textile" , "textile"], SH: ["sh|bash"],
tmsnippet: ["tmSnippet" , "tmSnippet"], snippets: ["snippets"],
toml: ["toml" , "toml"], SQL: ["sql"],
typescript: ["Typescript" , "typescript|ts|str"], Stylus: ["styl|stylus"],
vbscript: ["VBScript" , "vbs"], SVG: ["svg"],
xml: ["XML" , "xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"], Tcl: ["tcl"],
xquery: ["XQuery" , "xq"], Tex: ["tex"],
yaml: ["YAML" , "yaml"] Text: ["txt"],
Textile: ["textile"],
Toml: ["toml"],
Typescript: ["typescript|ts|str"],
VBScript: ["vbs"],
Velocity: ["vm"],
XML: ["xml|rdf|rss|wsdl|xslt|atom|mathml|mml|xul|xbl"],
XQuery: ["xq"],
YAML: ["yaml"]
}; };
for (var name in modesByName) { var nameOverrides = {
var mode = modesByName[name]; ObjectiveC: "Objective-C",
mode = new Mode(name, mode[0], mode[1]); CSharp: "C#",
modesByName[name] = mode; golang: "Go",
C_Cpp: "C/C++",
coffee: "CoffeeScript"
};
var modesByName = {};
for (var name in supportedModes) {
var data = supportedModes[name];
var displayName = nameOverrides[name] || name;
var filename = name.toLowerCase();
mode = new Mode(filename, displayName, data[0]);
modesByName[filename] = mode;
modes.push(mode); modes.push(mode);
} }
module.exports = { module.exports = {
getModeFromPath: getModeFromPath, getModeForPath: getModeForPath,
modes: modes, modes: modes,
modesByName: modesByName modesByName: modesByName
}; };

View file

@ -43,7 +43,7 @@ define(function(require, exports, module) {
var oop = require("../lib/oop"); var oop = require("../lib/oop");
var TextMode = require("./text").Mode; var TextMode = require("./text").Mode;
var Tokenizer = require("../tokenizer").Tokenizer; var Tokenizer = require("../tokenizer").Tokenizer;
var BatchFileHighlightRules = require("./batch_file_highlight_rules").BatchFileHighlightRules; var BatchFileHighlightRules = require("./batchfile_highlight_rules").BatchFileHighlightRules;
var FoldMode = require("./folding/cstyle").FoldMode; var FoldMode = require("./folding/cstyle").FoldMode;
var Mode = function() { var Mode = function() {