summaryrefslogtreecommitdiff
path: root/js/codemirror/prolog.js
diff options
context:
space:
mode:
authorAleš Smodiš <aless@guru.si>2015-07-14 11:26:11 +0200
committerAleš Smodiš <aless@guru.si>2015-07-14 11:26:11 +0200
commit579f8afbca30ea91244cd839340ee7f67d94d78e (patch)
treeb26f924746665e77ac868d99b46f366cef8247e0 /js/codemirror/prolog.js
parent216fbf74e5720cd3e05742699ad7cb4e1d84bc27 (diff)
Changed the organization of js and css file to reflect the libraries they are used with.
Added the show-hint add-on for CodeMirror.
Diffstat (limited to 'js/codemirror/prolog.js')
-rw-r--r--js/codemirror/prolog.js62
1 files changed, 62 insertions, 0 deletions
diff --git a/js/codemirror/prolog.js b/js/codemirror/prolog.js
new file mode 100644
index 0000000..9083019
--- /dev/null
+++ b/js/codemirror/prolog.js
@@ -0,0 +1,62 @@
+/*
+ lqUty : loqt utilities
+
+ Author : Carlo Capelli
+ E-mail : cc.carlo.cap@gmail.com
+ Copyright (C): 2013,2014 Carlo Capelli
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+*/
+CodeMirror.defineMode("prolog", function() {
+ return {
+ startState: function() {
+ return { in_comment:0 };
+ },
+ token: function(stream,state) {
+ var token_name;
+ if (state.in_comment) {
+ token_name = 'comment';
+ if (stream.match("*/"))
+ state.in_comment--;
+ else if (stream.match("/*"))
+ state.in_comment++;
+ else
+ stream.next();
+ } else if (stream.match("/*")) {
+ token_name = 'comment';
+ state.in_comment++;
+ } else if (stream.match(/[a-zàèéìòù][A-Za-z0-9_àèéìòù]*/)) // italian oriented
+ token_name = 'atom';
+ else if (stream.match(/\'(\\\'|[^\'])*\'/))
+ token_name = 'atom';
+ else if (stream.match(/\"(\\\"|[^\"])*\"/))
+ token_name = 'string';
+ else if (stream.match(/0'./))
+ token_name = 'string-2';
+ else if (stream.match(/[A-Z_][A-Za-z0-9_]*/))
+ token_name = 'variable-2';
+ else if (stream.match(/[0-9]+(\.[0-9]+)?/))
+ token_name = 'number';
+ else if (stream.match(/[\+\-\*\/\=\^<>~:\.\?@#$\\&{}`]+/))
+ token_name = 'operator';
+ else
+ if (stream.next() === '%') {
+ stream.skipToEnd();
+ token_name = 'comment';
+ }
+ return token_name;
+ }
+ };
+});