From 9e3fc5e8e6aebe724ff4bb8d34dd515e9bf5faad Mon Sep 17 00:00:00 2001 From: Jonatan Heyman Date: Fri, 9 Feb 2024 15:15:39 +0100 Subject: [PATCH] Add Diff language mode --- src/editor/lang-heynote/heynote.grammar | 2 +- src/editor/lang-heynote/parser.js | 2 +- src/editor/languages.js | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/editor/lang-heynote/heynote.grammar b/src/editor/lang-heynote/heynote.grammar index 0a42bec..eabaf6d 100644 --- a/src/editor/lang-heynote/heynote.grammar +++ b/src/editor/lang-heynote/heynote.grammar @@ -11,7 +11,7 @@ NoteDelimiter { @tokens { noteDelimiterMark { "∞∞∞" } - NoteLanguage { "text" | "math" | "javascript" | "typescript" | "jsx" | "tsx" | "json" | "python" | "html" | "sql" | "markdown" | "java" | "php" | "css" | "xml" | "cpp" | "rust" | "csharp" | "ruby" | "shell" | "yaml" | "golang" | "clojure" | "erlang" | "lezer" | "toml" | "swift" | "kotlin" | "groovy" } + NoteLanguage { "text" | "math" | "javascript" | "typescript" | "jsx" | "tsx" | "json" | "python" | "html" | "sql" | "markdown" | "java" | "php" | "css" | "xml" | "cpp" | "rust" | "csharp" | "ruby" | "shell" | "yaml" | "golang" | "clojure" | "erlang" | "lezer" | "toml" | "swift" | "kotlin" | "groovy" | "diff" } Auto { "-a" } noteDelimiterEnter { "\n" } //NoteContent { String } diff --git a/src/editor/lang-heynote/parser.js b/src/editor/lang-heynote/parser.js index b242b68..6d7ed58 100644 --- a/src/editor/lang-heynote/parser.js +++ b/src/editor/lang-heynote/parser.js @@ -10,7 +10,7 @@ export const parser = LRParser.deserialize({ maxTerm: 10, skippedNodes: [0], repeatNodeCount: 1, - tokenData: ",p~RaYZ!W}!O!]#V#W!h#X#Y$U#Z#[$t#[#]%g#^#_%y#_#`'g#`#a(P#a#b(i#d#e)h#f#g*T#g#h*d#h#i+Y#l#m%m#m#n,X%&x%&y,_~!]OX~~!`P#T#U!c~!hOU~~!kR#`#a!t#d#e#i#g#h#o~!wP#c#d!z~!}P#^#_#Q~#TP#i#j#W~#ZP#f#g#^~#aP#X#Y#d~#iOT~~#lP#d#e#d~#rQ#[#]#x#g#h#d~#{P#T#U$O~$RP#f#g#i~$XP#f#g$[~$_P#`#a$b~$eP#T#U$h~$kP#b#c$n~$qP#Z#[#d~$wQ#c#d$[#f#g$}~%QP#c#d%T~%WP#c#d%Z~%^P#j#k%a~%dP#m#n#d~%jP#h#i%m~%pP#a#b%s~%vP#`#a#d~%|Q#T#U&S#g#h'W~&VP#j#k&Y~&]P#T#U&`~&ePT~#g#h&h~&kP#V#W&n~&qP#f#g&t~&wP#]#^&z~&}P#d#e'Q~'TP#h#i#d~'ZQ#c#d'a#l#m#d~'dP#b#c#d~'jP#c#d'm~'pP#h#i's~'vP#`#a'y~'|P#]#^'a~(SP#X#Y(V~(YP#n#o(]~(`P#X#Y(c~(fP#f#g#d~(lP#T#U(o~(rQ#f#g(x#h#i)b~({P#_#`)O~)RP#W#X)U~)XP#c#d)[~)_P#k#l'a~)eP#[#]#d~)kQ#[#]#i#m#n)q~)tP#h#i)w~)zP#[#])}~*QP#c#d'a~*WP#i#j*Z~*^Q#U#V%a#g#h'Q~*gR#[#]*p#e#f%s#k#l*|~*sP#X#Y*v~*yP#`#a%s~+PP#]#^+S~+VP#Y#Z'Q~+]S#X#Y+i#c#d%m#g#h+o#m#n+u~+lP#l#m'Q~+rP#l#m#d~+xP#d#e+{~,OP#X#Y,R~,UP#g#h&h~,[P#T#U%m~,bP%&x%&y,e~,hP%&x%&y,k~,pOY~", + tokenData: "-V~RbYZ!Z}!O!`#V#W!k#W#X$X#X#Y$k#Z#[%Z#[#]%|#^#_&`#_#`'|#`#a(f#a#b)O#d#e)}#f#g*j#g#h*y#h#i+o#l#m&S#m#n,n%&x%&y,t~!`OX~~!cP#T#U!f~!kOU~~!nR#`#a!w#d#e#l#g#h#r~!zP#c#d!}~#QP#^#_#T~#WP#i#j#Z~#^P#f#g#a~#dP#X#Y#g~#lOT~~#oP#d#e#g~#uQ#[#]#{#g#h#g~$OP#T#U$R~$UP#f#g#l~$[P#]#^$_~$bP#Y#Z$e~$hP#Y#Z#g~$nP#f#g$q~$tP#`#a$w~$zP#T#U$}~%QP#b#c%T~%WP#Z#[#g~%^Q#c#d$q#f#g%d~%gP#c#d%j~%mP#c#d%p~%sP#j#k%v~%yP#m#n#g~&PP#h#i&S~&VP#a#b&Y~&]P#`#a#g~&cQ#T#U&i#g#h'm~&lP#j#k&o~&rP#T#U&u~&zPT~#g#h&}~'QP#V#W'T~'WP#f#g'Z~'^P#]#^'a~'dP#d#e'g~'jP#h#i#g~'pQ#c#d'v#l#m#g~'yP#b#c#g~(PP#c#d(S~(VP#h#i(Y~(]P#`#a(`~(cP#]#^'v~(iP#X#Y(l~(oP#n#o(r~(uP#X#Y(x~({P#f#g#g~)RP#T#U)U~)XQ#f#g)_#h#i)w~)bP#_#`)e~)hP#W#X)k~)nP#c#d)q~)tP#k#l'v~)zP#[#]#g~*QQ#[#]#l#m#n*W~*ZP#h#i*^~*aP#[#]*d~*gP#c#d'v~*mP#i#j*p~*sQ#U#V%v#g#h'g~*|R#[#]+V#e#f&Y#k#l+c~+YP#X#Y+]~+`P#`#a&Y~+fP#]#^+i~+lP#Y#Z'g~+rS#X#Y,O#c#d&S#g#h,U#m#n,[~,RP#l#m'g~,XP#l#m#g~,_P#d#e,b~,eP#X#Y,h~,kP#g#h&}~,qP#T#U&S~,wP%&x%&y,z~,}P%&x%&y-Q~-VOY~", tokenizers: [0, noteContent], topRules: {"Document":[0,2]}, tokenPrec: 0 diff --git a/src/editor/languages.js b/src/editor/languages.js index 1ab10e9..336b0b7 100644 --- a/src/editor/languages.js +++ b/src/editor/languages.js @@ -24,6 +24,7 @@ import { toml } from "@codemirror/legacy-modes/mode/toml" import { swift } from "@codemirror/legacy-modes/mode/swift" import { kotlin } from "@codemirror/legacy-modes/mode/clike" import { groovy } from "@codemirror/legacy-modes/mode/groovy" +import { diff } from "@codemirror/legacy-modes/mode/diff"; import typescriptPlugin from "prettier/plugins/typescript.mjs" import babelPrettierPlugin from "prettier/plugins/babel.mjs" @@ -239,6 +240,12 @@ export const LANGUAGES = [ parser: StreamLanguage.define(groovy).parser, guesslang: "groovy", }), + new Language({ + token: "diff", + name: "Diff", + parser: StreamLanguage.define(diff).parser, + guesslang: null, + }), ]