title: $:/plugins/tiddlywiki/codemirror/styles
tags: [[$:/tags/Stylesheet]]
module-type: codemirror-theme
name: tiddlywiki

\define set-fat-cursor-background-css(colour,colourA,colourB)
<$set name="backgroundColour" value=<<contrastcolour target:"""$colour$""" fallbackTarget:"""""" colourA:"""$colourA$""" colourB:"""$colourB$""">>>
.cm-s-tiddlywiki.cm-fat-cursor .CodeMirror-cursor { background: <<backgroundColour>>; }
.cm-s-tiddlywiki .cm-animate-fat-cursor { background-color: <<backgroundColour>>; }
</$set>
\end
\define set-fat-cursor-background-colours(palette)
<$macrocall $name="set-fat-cursor-background-css" colour={{$palette$##foreground}} colourA="#77ee77" colourB="#586e75"/>
\end
\define set-fat-cursor-background()
<$macrocall $name="set-fat-cursor-background-colours" palette={{$:/palette}}/>
\end
\define set-selection-background-css(colour,colourA,colourB,tiddlerEditorBackground)
<$wikify name="tiddlerEditorBackground" text={{{ [[$tiddlerEditorBackground$]lowercase[]] }}}>
<$set name="backgroundColour" value=<<contrastcolour target:"""$colour$""" fallbackTarget:"""""" colourA:"""$colourA$""" colourB:"""$colourB$""">>>
<$set name="backgroundColour" value={{{ [<backgroundColour>lowercase[]match<tiddlerEditorBackground>then[]] ~[<backgroundColour>] }}}>
.cm-s-tiddlywiki div.CodeMirror-selected { background: <<backgroundColour>>; color: <<colour foreground>>; }
.cm-s-tiddlywiki.CodeMirror ::selection { background: <<backgroundColour>>; color: <<colour foreground>>; }
.cm-s-tiddlywiki .CodeMirror-line::-moz-selection,  .CodeMirror-line > span::-moz-selection,  .CodeMirror-line > span > span::-moz-selection { background: <<backgroundColour>>; color: <<colour foreground>>; }
.cm-s-tiddlywiki .CodeMirror-line::selection,  .CodeMirror-line > span::selection,  .CodeMirror-line > span > span::selection { background: <<backgroundColour>>; color: <<colour foreground>>; }
</$set>
</$set>
</$wikify>
\end
\define set-selection-background-colours(palette)
<$macrocall $name="set-selection-background-css" colour={{$palette$##foreground}} colourA={{{ [{$palette$##selection-background}!match[]!prefix[<<]!suffix[>>]] ~#073642 }}} colourB={{{ [{$palette$##selection-background}!match[]!prefix[<<]!suffix[>>]] ~#eee8d5 }}} tiddlerEditorBackground={{$palette$##tiddler-editor-background}}/>
\end
\define set-selection-background()
<$macrocall $name="set-selection-background-colours" palette={{$:/palette}}/>
\end

\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock

/* Make the editor resize to fit its content */

.CodeMirror {
	height: auto;
	border: 1px solid <<colour tiddler-editor-border>>;
	line-height: 1.5;
	font-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};
	font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
}

.CodeMirror-scroll {
	overflow-x: auto;
	overflow-y: hidden;
}

.cm-s-tiddlywiki {
  color-profile: sRGB;
  rendering-intent: auto;
}

.cm-s-tiddlywiki.CodeMirror, .cm-s-tiddlywiki .CodeMirror-gutters { background-color: <<colour tiddler-editor-background>>; color: <<colour foreground>>; }
.cm-s-tiddlywiki .CodeMirror-gutters {background: <<colour tiddler-editor-background>>; border-right: 1px solid <<colour tiddler-editor-border>>;}
.cm-s-tiddlywiki .CodeMirror-linenumber {color: <<colour foreground>>;}
.cm-s-tiddlywiki .CodeMirror-cursor { border-left: 2px solid <<colour foreground>>; }
.cm-s-tiddlywiki span.cm-comment { color: #586e75; font-style:italic; font-weight:normal; }
.cm-s-tiddlywiki .CodeMirror-activeline-background, .cm-s-tiddlywiki .CodeMirror-activeline-gutter .CodeMirror-linenumber { background: rgba(127,127,127,0.2); }
.cm-s-tiddlywiki span.cm-matchhighlight { color: <<colour background>>; background-color: <<colour primary>>; font-weight: normal;}
.cm-s-tiddlywiki .CodeMirror-widget { text-shadow: none; }
.cm-s-tiddlywiki .CodeMirror-dialog { background: <<colour tiddler-background>>; }
.cm-s-tiddlywiki .cm-header { color: #586e75; }
.cm-s-tiddlywiki .cm-quote { color: #93a1a1; }
.cm-s-tiddlywiki .cm-keyword { color: #cb4b16; }
.cm-s-tiddlywiki .cm-atom { color: #d33682; }
.cm-s-tiddlywiki .cm-number { color: #d33682; }
.cm-s-tiddlywiki .cm-def { color: #2aa198; }
.cm-s-tiddlywiki .cm-variable { color: #839496; }
.cm-s-tiddlywiki .cm-variable-2 { color: #b58900; }
.cm-s-tiddlywiki .cm-variable-3, .cm-s-tiddlywiki .cm-type { color: #6c71c4; }
.cm-s-tiddlywiki .cm-property { color: #2aa198; }
.cm-s-tiddlywiki .cm-operator { color: #6c71c4; }
.cm-s-tiddlywiki .cm-comment { color: #586e75; font-style:italic; }
.cm-s-tiddlywiki .cm-string { color: #859900; }
.cm-s-tiddlywiki .cm-string-2 { color: #b58900; }
.cm-s-tiddlywiki .cm-meta { color: #859900; }
.cm-s-tiddlywiki .cm-qualifier { color: #b58900; }
.cm-s-tiddlywiki .cm-builtin { color: #d33682; }
.cm-s-tiddlywiki .cm-bracket { color: #cb4b16; }
.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }
.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }
.cm-s-tiddlywiki .cm-tag { color: #93a1a1; }
.cm-s-tiddlywiki .cm-attribute { color: #2aa198; }
.cm-s-tiddlywiki .cm-hr { color: transparent; border-top: 1px solid #586e75; display: block; }
.cm-s-tiddlywiki .cm-link { color: #93a1a1; cursor: pointer; }
.cm-s-tiddlywiki .cm-special { color: #6c71c4; }
.cm-s-tiddlywiki .cm-em { color: #999; text-decoration: underline; text-decoration-style: dotted; }
.cm-s-tiddlywiki .cm-error,
.cm-s-tiddlywiki .cm-invalidchar { color: #586e75; border-bottom: 1px dotted #dc322f; }
.cm-s-tiddlywiki .CodeMirror-matchingbracket { color: #859900; }
.cm-s-tiddlywiki .CodeMirror-nonmatchingbracket { color: #dc322f; }
.cm-s-tiddlywiki .cm-searching { background: rgba(243, 155, 53, .3); outline: 1px solid #F39B35; }
<<set-fat-cursor-background>>
<<set-selection-background>>
