{"title":"$:/plugins/tiddlywiki/codemirror-mode-markdown","name":"CodeMirror Mode Markdown","description":"Markdown highlighting mode for CodeMirror","parent-plugin":"$:/plugins/tiddlywiki/codemirror","dependents":"$:/plugins/tiddlywiki/codemirror-mode-xml","list":"readme","version":"5.1.22","plugin-type":"plugin","type":"application/json","tiddlers":{"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js":{"text":"// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: http://codemirror.net/LICENSE\n!function(t){\"object\"==typeof exports&&\"object\"==typeof module?t(require(\"../../lib/codemirror\"),require(\"../xml/xml\"),require(\"../tw-meta\")):\"function\"==typeof define&&define.amd?define([\"../../lib/codemirror\",\"../xml/xml\",\"../meta\"],t):t(CodeMirror)}(function(t){\"use strict\";t.defineMode(\"markdown\",function(e,i){var n=t.getMode(e,\"text/html\"),r=\"null\"==n.name;void 0===i.highlightFormatting&&(i.highlightFormatting=!1),void 0===i.maxBlockquoteDepth&&(i.maxBlockquoteDepth=0),void 0===i.taskLists&&(i.taskLists=!1),void 0===i.strikethrough&&(i.strikethrough=!1),void 0===i.emoji&&(i.emoji=!1),void 0===i.fencedCodeBlockHighlighting&&(i.fencedCodeBlockHighlighting=!0),void 0===i.xml&&(i.xml=!0),void 0===i.tokenTypeOverrides&&(i.tokenTypeOverrides={});var a={header:\"header\",code:\"comment\",quote:\"quote\",list1:\"variable-2\",list2:\"variable-3\",list3:\"keyword\",hr:\"hr\",image:\"image\",imageAltText:\"image-alt-text\",imageMarker:\"image-marker\",formatting:\"formatting\",linkInline:\"link\",linkEmail:\"link\",linkText:\"link\",linkHref:\"string\",em:\"em\",strong:\"strong\",strikethrough:\"strikethrough\",emoji:\"builtin\"};for(var l in a)a.hasOwnProperty(l)&&i.tokenTypeOverrides[l]&&(a[l]=i.tokenTypeOverrides[l]);var o=/^([*\\-_])(?:\\s*\\1){2,}\\s*$/,h=/^(?:[*\\-+]|^[0-9]+([.)]))\\s+/,g=/^\\[(x| )\\](?=\\s)/i,s=i.allowAtxHeaderWithoutSpace?/^(#+)/:/^(#+)(?: |$)/,m=/^ *(?:\\={1,}|-{1,})\\s*$/,u=/^[^#!\\[\\]*_\\\\<>` \"'(~:]+/,f=/^(~~~+|```+)[ \\t]*([\\w+#-]*)[^\\n`]*$/,c=/^\\s*\\[[^\\]]+?\\]:.*$/,d=/[!\\\"#$%&\\'()*+,\\-\\.\\/:;<=>?@\\[\\\\\\]^_`{|}~—]/;function k(t,e,i){return e.f=e.inline=i,i(t,e)}function p(t,e,i){return e.f=e.block=i,i(t,e)}function x(t){return t.linkTitle=!1,t.linkHref=!1,t.linkText=!1,t.em=!1,t.strong=!1,t.strikethrough=!1,t.quote=0,t.indentedCode=!1,t.f==S&&(t.f=M,t.block=v),t.trailingSpace=0,t.trailingSpaceNewLine=!1,t.prevLine=t.thisLine,t.thisLine={stream:null},null}function v(n,r){var l,u=n.column()===r.indentation,d=!(l=r.prevLine.stream)||!/\\S/.test(l.string),p=r.indentedCode,x=r.prevLine.hr,v=!1!==r.list,S=(r.listStack[r.listStack.length-1]||0)+3;r.indentedCode=!1;var q=r.indentation;if(null===r.indentationDiff&&(r.indentationDiff=r.indentation,v)){for(r.em=!1,r.strong=!1,r.code=!1,r.strikethrough=!1,r.list=null;q<r.listStack[r.listStack.length-1];)r.listStack.pop(),r.listStack.length?r.indentation=r.listStack[r.listStack.length-1]:r.list=!1;!1!==r.list&&(r.indentationDiff=q-r.listStack[r.listStack.length-1])}var M=!(d||x||r.prevLine.header||v&&p||r.prevLine.fencedCodeEnd),F=(!1===r.list||x||d)&&r.indentation<=S&&n.match(o),b=null;if(r.indentationDiff>=4&&(p||r.prevLine.fencedCodeEnd||r.prevLine.header||d))return n.skipToEnd(),r.indentedCode=!0,a.code;if(n.eatSpace())return null;if(u&&r.indentation<=S&&(b=n.match(s))&&b[1].length<=6)return r.quote=0,r.header=b[1].length,r.thisLine.header=!0,i.highlightFormatting&&(r.formatting=\"header\"),r.f=r.inline,T(r);if(r.indentation<=S&&n.eat(\">\"))return r.quote=u?1:r.quote+1,i.highlightFormatting&&(r.formatting=\"quote\"),n.eatSpace(),T(r);if(!F&&!r.setext&&u&&r.indentation<=S&&(b=n.match(h))){var E=b[1]?\"ol\":\"ul\";return r.indentation=q+n.current().length,r.list=!0,r.quote=0,r.listStack.push(r.indentation),i.taskLists&&n.match(g,!1)&&(r.taskList=!0),r.f=r.inline,i.highlightFormatting&&(r.formatting=[\"list\",\"list-\"+E]),T(r)}return u&&r.indentation<=S&&(b=n.match(f,!0))?(r.quote=0,r.fencedEndRE=new RegExp(b[1]+\"+ *$\"),r.localMode=i.fencedCodeBlockHighlighting&&function(i){if(t.findModeByName){var n=t.findModeByName(i);n&&(i=n.mime||n.mimes[0])}var r=t.getMode(e,i);return\"null\"==r.name?null:r}(b[2]),r.localMode&&(r.localState=t.startState(r.localMode)),r.f=r.block=L,i.highlightFormatting&&(r.formatting=\"code-block\"),r.code=-1,T(r)):r.setext||!(M&&v||r.quote||!1!==r.list||r.code||F||c.test(n.string))&&(b=n.lookAhead(1))&&(b=b.match(m))?(r.setext?(r.header=r.setext,r.setext=0,n.skipToEnd(),i.highlightFormatting&&(r.formatting=\"header\")):(r.header=\"=\"==b[0].charAt(0)?1:2,r.setext=r.header),r.thisLine.header=!0,r.f=r.inline,T(r)):F?(n.skipToEnd(),r.hr=!0,r.thisLine.hr=!0,a.hr):\"[\"===n.peek()?k(n,r,w):k(n,r,r.inline)}function S(e,i){var a=n.token(e,i.htmlState);if(!r){var l=t.innerMode(n,i.htmlState);(\"xml\"==l.mode.name&&null===l.state.tagStart&&!l.state.context&&l.state.tokenize.isInText||i.md_inside&&e.current().indexOf(\">\")>-1)&&(i.f=M,i.block=v,i.htmlState=null)}return a}function L(t,e){var n,r=e.listStack[e.listStack.length-1]||0,l=e.indentation<r,o=r+3;return e.fencedEndRE&&e.indentation<=o&&(l||t.match(e.fencedEndRE))?(i.highlightFormatting&&(e.formatting=\"code-block\"),l||(n=T(e)),e.localMode=e.localState=null,e.block=v,e.f=M,e.fencedEndRE=null,e.code=0,e.thisLine.fencedCodeEnd=!0,l?p(t,e,e.block):n):e.localMode?e.localMode.token(t,e.localState):(t.skipToEnd(),a.code)}function T(t){var e=[];if(t.formatting){e.push(a.formatting),\"string\"==typeof t.formatting&&(t.formatting=[t.formatting]);for(var n=0;n<t.formatting.length;n++)e.push(a.formatting+\"-\"+t.formatting[n]),\"header\"===t.formatting[n]&&e.push(a.formatting+\"-\"+t.formatting[n]+\"-\"+t.header),\"quote\"===t.formatting[n]&&(!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.formatting+\"-\"+t.formatting[n]+\"-\"+t.quote):e.push(\"error\"))}if(t.taskOpen)return e.push(\"meta\"),e.length?e.join(\" \"):null;if(t.taskClosed)return e.push(\"property\"),e.length?e.join(\" \"):null;if(t.linkHref?e.push(a.linkHref,\"url\"):(t.strong&&e.push(a.strong),t.em&&e.push(a.em),t.strikethrough&&e.push(a.strikethrough),t.emoji&&e.push(a.emoji),t.linkText&&e.push(a.linkText),t.code&&e.push(a.code),t.image&&e.push(a.image),t.imageAltText&&e.push(a.imageAltText,\"link\"),t.imageMarker&&e.push(a.imageMarker)),t.header&&e.push(a.header,a.header+\"-\"+t.header),t.quote&&(e.push(a.quote),!i.maxBlockquoteDepth||i.maxBlockquoteDepth>=t.quote?e.push(a.quote+\"-\"+t.quote):e.push(a.quote+\"-\"+i.maxBlockquoteDepth)),!1!==t.list){var r=(t.listStack.length-1)%3;r?1===r?e.push(a.list2):e.push(a.list3):e.push(a.list1)}return t.trailingSpaceNewLine?e.push(\"trailing-space-new-line\"):t.trailingSpace&&e.push(\"trailing-space-\"+(t.trailingSpace%2?\"a\":\"b\")),e.length?e.join(\" \"):null}function q(t,e){if(t.match(u,!0))return T(e)}function M(e,r){var l=r.text(e,r);if(void 0!==l)return l;if(r.list)return r.list=null,T(r);if(r.taskList)return\" \"===e.match(g,!0)[1]?r.taskOpen=!0:r.taskClosed=!0,i.highlightFormatting&&(r.formatting=\"task\"),r.taskList=!1,T(r);if(r.taskOpen=!1,r.taskClosed=!1,r.header&&e.match(/^#+$/,!0))return i.highlightFormatting&&(r.formatting=\"header\"),T(r);var o=e.next();if(r.linkTitle){r.linkTitle=!1;var h=o;\"(\"===o&&(h=\")\");var s=\"^\\\\s*(?:[^\"+(h=(h+\"\").replace(/([.?*+^\\[\\]\\\\(){}|-])/g,\"\\\\$1\"))+\"\\\\\\\\]+|\\\\\\\\\\\\\\\\|\\\\\\\\.)\"+h;if(e.match(new RegExp(s),!0))return a.linkHref}if(\"`\"===o){var m=r.formatting;i.highlightFormatting&&(r.formatting=\"code\"),e.eatWhile(\"`\");var u=e.current().length;if(0!=r.code||r.quote&&1!=u){if(u==r.code){var f=T(r);return r.code=0,f}return r.formatting=m,T(r)}return r.code=u,T(r)}if(r.code)return T(r);if(\"\\\\\"===o&&(e.next(),i.highlightFormatting)){var c=T(r),k=a.formatting+\"-escape\";return c?c+\" \"+k:k}if(\"!\"===o&&e.match(/\\[[^\\]]*\\] ?(?:\\(|\\[)/,!1))return r.imageMarker=!0,r.image=!0,i.highlightFormatting&&(r.formatting=\"image\"),T(r);if(\"[\"===o&&r.imageMarker&&e.match(/[^\\]]*\\](\\(.*?\\)| ?\\[.*?\\])/,!1))return r.imageMarker=!1,r.imageAltText=!0,i.highlightFormatting&&(r.formatting=\"image\"),T(r);if(\"]\"===o&&r.imageAltText){i.highlightFormatting&&(r.formatting=\"image\");var c=T(r);return r.imageAltText=!1,r.image=!1,r.inline=r.f=b,c}if(\"[\"===o&&!r.image)return r.linkText=!0,i.highlightFormatting&&(r.formatting=\"link\"),T(r);if(\"]\"===o&&r.linkText){i.highlightFormatting&&(r.formatting=\"link\");var c=T(r);return r.linkText=!1,r.inline=r.f=e.match(/\\(.*?\\)| ?\\[.*?\\]/,!1)?b:M,c}if(\"<\"===o&&e.match(/^(https?|ftps?):\\/\\/(?:[^\\\\>]|\\\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting=\"link\"),(c=T(r))?c+=\" \":c=\"\",c+a.linkInline;if(\"<\"===o&&e.match(/^[^> \\\\]+@(?:[^\\\\>]|\\\\.)+>/,!1))return r.f=r.inline=F,i.highlightFormatting&&(r.formatting=\"link\"),(c=T(r))?c+=\" \":c=\"\",c+a.linkEmail;if(i.xml&&\"<\"===o&&e.match(/^(!--|[a-z][a-z0-9-]*(?:\\s+[a-z_:.\\-]+(?:\\s*=\\s*[^>]+)?)*\\s*>)/i,!1)){var x=e.string.indexOf(\">\",e.pos);if(-1!=x){var v=e.string.substring(e.start,x);/markdown\\s*=\\s*('|\"){0,1}1('|\"){0,1}/.test(v)&&(r.md_inside=!0)}return e.backUp(1),r.htmlState=t.startState(n),p(e,r,S)}if(i.xml&&\"<\"===o&&e.match(/^\\/\\w*?>/))return r.md_inside=!1,\"tag\";if(\"*\"===o||\"_\"===o){for(var L=1,q=1==e.pos?\" \":e.string.charAt(e.pos-2);L<3&&e.eat(o);)L++;var E=e.peek()||\" \",w=!/\\s/.test(E)&&(!d.test(E)||/\\s/.test(q)||d.test(q)),j=!/\\s/.test(q)&&(!d.test(q)||/\\s/.test(E)||d.test(E)),y=null,C=null;if(L%2&&(r.em||!w||\"*\"!==o&&j&&!d.test(q)?r.em!=o||!j||\"*\"!==o&&w&&!d.test(E)||(y=!1):y=!0),L>1&&(r.strong||!w||\"*\"!==o&&j&&!d.test(q)?r.strong!=o||!j||\"*\"!==o&&w&&!d.test(E)||(C=!1):C=!0),null!=C||null!=y){i.highlightFormatting&&(r.formatting=null==y?\"strong\":null==C?\"em\":\"strong em\"),!0===y&&(r.em=o),!0===C&&(r.strong=o);f=T(r);return!1===y&&(r.em=!1),!1===C&&(r.strong=!1),f}}else if(\" \"===o&&(e.eat(\"*\")||e.eat(\"_\"))){if(\" \"===e.peek())return T(r);e.backUp(1)}if(i.strikethrough)if(\"~\"===o&&e.eatWhile(o)){if(r.strikethrough){i.highlightFormatting&&(r.formatting=\"strikethrough\");f=T(r);return r.strikethrough=!1,f}if(e.match(/^[^\\s]/,!1))return r.strikethrough=!0,i.highlightFormatting&&(r.formatting=\"strikethrough\"),T(r)}else if(\" \"===o&&e.match(/^~~/,!0)){if(\" \"===e.peek())return T(r);e.backUp(2)}if(i.emoji&&\":\"===o&&e.match(/^[a-z_\\d+-]+:/)){r.emoji=!0,i.highlightFormatting&&(r.formatting=\"emoji\");var H=T(r);return r.emoji=!1,H}return\" \"===o&&(e.match(/ +$/,!1)?r.trailingSpace++:r.trailingSpace&&(r.trailingSpaceNewLine=!0)),T(r)}function F(t,e){if(\">\"===t.next()){e.f=e.inline=M,i.highlightFormatting&&(e.formatting=\"link\");var n=T(e);return n?n+=\" \":n=\"\",n+a.linkInline}return t.match(/^[^>]+/,!0),a.linkInline}function b(t,e){if(t.eatSpace())return null;var n,r=t.next();return\"(\"===r||\"[\"===r?(e.f=e.inline=(n=\"(\"===r?\")\":\"]\",function(t,e){var r=t.next();if(r===n){e.f=e.inline=M,i.highlightFormatting&&(e.formatting=\"link-string\");var a=T(e);return e.linkHref=!1,a}return t.match(E[n]),e.linkHref=!0,T(e)}),i.highlightFormatting&&(e.formatting=\"link-string\"),e.linkHref=!0,T(e)):\"error\"}var E={\")\":/^(?:[^\\\\\\(\\)]|\\\\.|\\((?:[^\\\\\\(\\)]|\\\\.)*\\))*?(?=\\))/,\"]\":/^(?:[^\\\\\\[\\]]|\\\\.|\\[(?:[^\\\\\\[\\]]|\\\\.)*\\])*?(?=\\])/};function w(t,e){return t.match(/^([^\\]\\\\]|\\\\.)*\\]:/,!1)?(e.f=j,t.next(),i.highlightFormatting&&(e.formatting=\"link\"),e.linkText=!0,T(e)):k(t,e,M)}function j(t,e){if(t.match(/^\\]:/,!0)){e.f=e.inline=y,i.highlightFormatting&&(e.formatting=\"link\");var n=T(e);return e.linkText=!1,n}return t.match(/^([^\\]\\\\]|\\\\.)+/,!0),a.linkText}function y(t,e){return t.eatSpace()?null:(t.match(/^[^\\s]+/,!0),void 0===t.peek()?e.linkTitle=!0:t.match(/^(?:\\s+(?:\"(?:[^\"\\\\]|\\\\\\\\|\\\\.)+\"|'(?:[^'\\\\]|\\\\\\\\|\\\\.)+'|\\((?:[^)\\\\]|\\\\\\\\|\\\\.)+\\)))?/,!0),e.f=e.inline=M,a.linkHref+\" url\")}var C={startState:function(){return{f:v,prevLine:{stream:null},thisLine:{stream:null},block:v,htmlState:null,indentation:0,inline:M,text:q,formatting:!1,linkText:!1,linkHref:!1,linkTitle:!1,code:0,em:!1,strong:!1,header:0,setext:0,hr:!1,taskList:!1,list:!1,listStack:[],quote:0,trailingSpace:0,trailingSpaceNewLine:!1,strikethrough:!1,emoji:!1,fencedEndRE:null}},copyState:function(e){return{f:e.f,prevLine:e.prevLine,thisLine:e.thisLine,block:e.block,htmlState:e.htmlState&&t.copyState(n,e.htmlState),indentation:e.indentation,localMode:e.localMode,localState:e.localMode?t.copyState(e.localMode,e.localState):null,inline:e.inline,text:e.text,formatting:!1,linkText:e.linkText,linkTitle:e.linkTitle,linkHref:e.linkHref,code:e.code,em:e.em,strong:e.strong,strikethrough:e.strikethrough,emoji:e.emoji,header:e.header,setext:e.setext,hr:e.hr,taskList:e.taskList,list:e.list,listStack:e.listStack.slice(0),quote:e.quote,indentedCode:e.indentedCode,trailingSpace:e.trailingSpace,trailingSpaceNewLine:e.trailingSpaceNewLine,md_inside:e.md_inside,fencedEndRE:e.fencedEndRE}},token:function(t,e){if(e.formatting=!1,t!=e.thisLine.stream){if(e.header=0,e.hr=!1,t.match(/^\\s*$/,!0))return x(e),null;if(e.prevLine=e.thisLine,e.thisLine={stream:t},e.taskList=!1,e.trailingSpace=0,e.trailingSpaceNewLine=!1,!e.localState&&(e.f=e.block,e.f!=S)){var i=t.match(/^\\s*/,!0)[0].replace(/\\t/g,\"    \").length;if(e.indentation=i,e.indentationDiff=null,i>0)return null}}return e.f(t,e)},innerMode:function(t){return t.block==S?{state:t.htmlState,mode:n}:t.localState?{state:t.localState,mode:t.localMode}:{state:t,mode:C}},indent:function(e,i,r){return e.block==S&&n.indent?n.indent(e.htmlState,i,r):e.localState&&e.localMode.indent?e.localMode.indent(e.localState,i,r):t.Pass},blankLine:x,getType:T,closeBrackets:\"()[]{}''\\\"\\\"``\",fold:\"markdown\"};return C},\"xml\"),t.defineMIME(\"text/markdown\",\"markdown\"),t.defineMIME(\"text/x-markdown\",\"markdown\")});\n","type":"application/javascript","title":"$:/plugins/tiddlywiki/codemirror/mode/markdown/markdown.js","module-type":"codemirror"},"$:/plugins/tiddlywiki/codemirror-mode-markdown/readme":{"title":"$:/plugins/tiddlywiki/codemirror-mode-markdown/readme","text":"This plugin adds Syntax Highlighting for Markdown tiddlers (text/x-markdown) to the [[CodeMirror|http://codemirror.net]] text editor. It needs the latest [[CodeMirror plugin|$:/plugins/tiddlywiki/codemirror]] to be installed\n\n"}}}