Added vim/sublime/emacs editor modes

This commit is contained in:
Gregory Schier 2017-01-24 14:18:11 -08:00
parent ae5651f01c
commit 64146a0392
26 changed files with 110 additions and 45 deletions

View File

@ -3,6 +3,7 @@ if (reboot) {
process.exit(0); process.exit(0);
} }
import fs from 'fs';
import raven from 'raven'; import raven from 'raven';
import request from 'request'; import request from 'request';
import path from 'path'; import path from 'path';
@ -507,7 +508,7 @@ function createWindow () {
accelerator: "CmdOrCtrl+?", accelerator: "CmdOrCtrl+?",
click: () => { click: () => {
trackEvent('App Menu', 'Help'); trackEvent('App Menu', 'Help');
shell.openExternal('https://insomnia.rest/documentation'); shell.openExternal('https://insomnia.rest/documentation/');
} }
} }
] ]
@ -530,6 +531,20 @@ function createWindow () {
click: function () { click: function () {
mainWindow.toggleDevTools(); mainWindow.toggleDevTools();
} }
}, {
label: 'Resize to Default',
click: function () {
mainWindow.setBounds({x: 100, y: 100, width: 1000, height: 480});
}
}, {
label: 'Take Screenshot',
click: function () {
mainWindow.capturePage(image => {
const buffer = image.toPNG();
const dir = app.getPath('desktop');
fs.writeFileSync(path.join(dir, `Screenshot-${new Date()}.png`), buffer);
});
}
}] }]
}); });
} }

View File

@ -16,7 +16,7 @@ export function init () {
parameters: [], parameters: [],
headers: [], headers: [],
authentication: {}, authentication: {},
metaSortKey: -1 * Date.now() metaSortKey: -1 * Date.now(),
}; };
} }

View File

@ -11,6 +11,7 @@ export function init () {
followRedirects: true, followRedirects: true,
editorFontSize: 12, editorFontSize: 12,
editorLineWrapping: true, editorLineWrapping: true,
editorKeyMap: 'default',
httpProxy: '', httpProxy: '',
httpsProxy: '', httpsProxy: '',
timeout: 0, timeout: 0,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 49 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

After

Width:  |  Height:  |  Size: 8.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

After

Width:  |  Height:  |  Size: 9.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 8.5 KiB

View File

@ -68,6 +68,7 @@ class RequestPane extends PureComponent {
environmentId, environmentId,
showPasswords, showPasswords,
editorFontSize, editorFontSize,
editorKeyMap,
editorLineWrapping, editorLineWrapping,
handleSend, handleSend,
forceRefreshCounter, forceRefreshCounter,
@ -189,6 +190,7 @@ class RequestPane extends PureComponent {
request={request} request={request}
onChange={updateRequestBody} onChange={updateRequestBody}
fontSize={editorFontSize} fontSize={editorFontSize}
keyMap={editorKeyMap}
lineWrapping={editorLineWrapping} lineWrapping={editorLineWrapping}
/> />
</TabPanel> </TabPanel>
@ -293,6 +295,7 @@ RequestPane.propTypes = {
useBulkHeaderEditor: PropTypes.bool.isRequired, useBulkHeaderEditor: PropTypes.bool.isRequired,
showPasswords: PropTypes.bool.isRequired, showPasswords: PropTypes.bool.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
editorLineWrapping: PropTypes.bool.isRequired, editorLineWrapping: PropTypes.bool.isRequired,
workspace: PropTypes.object.isRequired, workspace: PropTypes.object.isRequired,
environmentId: PropTypes.string.isRequired, environmentId: PropTypes.string.isRequired,

View File

@ -91,6 +91,7 @@ class ResponsePane extends Component {
loadStartTime, loadStartTime,
editorLineWrapping, editorLineWrapping,
editorFontSize, editorFontSize,
editorKeyMap,
filter, filter,
activeResponseId, activeResponseId,
showCookiesModal showCookiesModal
@ -230,6 +231,7 @@ class ResponsePane extends Component {
responseId={response._id} responseId={response._id}
editorLineWrapping={editorLineWrapping} editorLineWrapping={editorLineWrapping}
editorFontSize={editorFontSize} editorFontSize={editorFontSize}
editorKeyMap={editorKeyMap}
url={response.url} url={response.url}
/> />
</TabPanel> </TabPanel>
@ -268,6 +270,7 @@ ResponsePane.propTypes = {
previewMode: PropTypes.string.isRequired, previewMode: PropTypes.string.isRequired,
filter: PropTypes.string.isRequired, filter: PropTypes.string.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
editorLineWrapping: PropTypes.bool.isRequired, editorLineWrapping: PropTypes.bool.isRequired,
loadStartTime: PropTypes.number.isRequired, loadStartTime: PropTypes.number.isRequired,
activeResponseId: PropTypes.string.isRequired, activeResponseId: PropTypes.string.isRequired,

View File

@ -230,6 +230,7 @@ class Wrapper extends Component {
showPasswords={settings.showPasswords} showPasswords={settings.showPasswords}
useBulkHeaderEditor={settings.useBulkHeaderEditor} useBulkHeaderEditor={settings.useBulkHeaderEditor}
editorFontSize={settings.editorFontSize} editorFontSize={settings.editorFontSize}
editorKeyMap={settings.editorKeyMap}
editorLineWrapping={settings.editorLineWrapping} editorLineWrapping={settings.editorLineWrapping}
environmentId={activeEnvironment ? activeEnvironment._id : 'n/a'} environmentId={activeEnvironment ? activeEnvironment._id : 'n/a'}
workspace={activeWorkspace} workspace={activeWorkspace}
@ -257,6 +258,7 @@ class Wrapper extends Component {
ref={handleSetResponsePaneRef} ref={handleSetResponsePaneRef}
request={activeRequest} request={activeRequest}
editorFontSize={settings.editorFontSize} editorFontSize={settings.editorFontSize}
editorKeyMap={settings.editorKeyMap}
editorLineWrapping={settings.editorLineWrapping} editorLineWrapping={settings.editorLineWrapping}
previewMode={responsePreviewMode} previewMode={responsePreviewMode}
activeResponseId={activeResponseId} activeResponseId={activeResponseId}
@ -287,12 +289,14 @@ class Wrapper extends Component {
<EnvironmentEditModal <EnvironmentEditModal
ref={registerModal} ref={registerModal}
editorFontSize={settings.editorFontSize} editorFontSize={settings.editorFontSize}
editorKeyMap={settings.editorKeyMap}
onChange={models.requestGroup.update} onChange={models.requestGroup.update}
/> />
<GenerateCodeModal <GenerateCodeModal
ref={registerModal} ref={registerModal}
environmentId={activeEnvironment ? activeEnvironment._id : 'n/a'} environmentId={activeEnvironment ? activeEnvironment._id : 'n/a'}
editorFontSize={settings.editorFontSize} editorFontSize={settings.editorFontSize}
editorKeyMap={settings.editorKeyMap}
/> />
<SettingsModal <SettingsModal
ref={registerModal} ref={registerModal}
@ -314,6 +318,7 @@ class Wrapper extends Component {
ref={registerModal} ref={registerModal}
onChange={models.workspace.update} onChange={models.workspace.update}
editorFontSize={settings.editorFontSize} editorFontSize={settings.editorFontSize}
editorKeyMap={settings.editorKeyMap}
/> />
</div> </div>
) )

View File

@ -39,6 +39,9 @@ import 'codemirror/addon/display/placeholder';
import 'codemirror/addon/lint/lint'; import 'codemirror/addon/lint/lint';
import 'codemirror/addon/lint/json-lint'; import 'codemirror/addon/lint/json-lint';
import 'codemirror/addon/lint/lint.css'; import 'codemirror/addon/lint/lint.css';
import 'codemirror/keymap/vim';
import 'codemirror/keymap/emacs';
import 'codemirror/keymap/sublime';
import '../../css/components/editor.less'; import '../../css/components/editor.less';
import {showModal} from '../modals/index'; import {showModal} from '../modals/index';
import AlertModal from '../modals/AlertModal'; import AlertModal from '../modals/AlertModal';
@ -60,6 +63,7 @@ const BASE_CODEMIRROR_OPTIONS = {
autoCloseBrackets: true, autoCloseBrackets: true,
indentUnit: 4, indentUnit: 4,
indentWithTabs: true, indentWithTabs: true,
keyMap: 'default',
gutters: [ gutters: [
'CodeMirror-linenumbers', 'CodeMirror-linenumbers',
'CodeMirror-foldgutter', 'CodeMirror-foldgutter',
@ -222,7 +226,8 @@ class Editor extends Component {
readOnly, readOnly,
placeholder: this.props.placeholder || '', placeholder: this.props.placeholder || '',
mode: this.props.mode || 'text/plain', mode: this.props.mode || 'text/plain',
lineWrapping: !!this.props.lineWrapping, lineWrapping: this.props.lineWrapping,
keyMap: this.props.keyMap || 'default',
matchBrackets: !readOnly, matchBrackets: !readOnly,
lint: !readOnly lint: !readOnly
}; };
@ -437,6 +442,7 @@ class Editor extends Component {
Editor.propTypes = { Editor.propTypes = {
onChange: PropTypes.func, onChange: PropTypes.func,
onFocusChange: PropTypes.func, onFocusChange: PropTypes.func,
keyMap: PropTypes.string,
mode: PropTypes.string, mode: PropTypes.string,
placeholder: PropTypes.string, placeholder: PropTypes.string,
lineWrapping: PropTypes.bool, lineWrapping: PropTypes.bool,

View File

@ -22,12 +22,13 @@ class EnvironmentEditor extends Component {
} }
render () { render () {
const {environment, editorFontSize, ...props} = this.props; const {environment, editorFontSize, editorKeyMap, ...props} = this.props;
return ( return (
<Editor <Editor
ref={this._setEditorRef} ref={this._setEditorRef}
fontSize={editorFontSize} fontSize={editorFontSize}
keyMap={editorKeyMap}
onChange={this._handleChange} onChange={this._handleChange}
value={JSON.stringify(environment)} value={JSON.stringify(environment)}
autoPrettify={true} autoPrettify={true}
@ -42,6 +43,7 @@ EnvironmentEditor.propTypes = {
environment: PropTypes.object.isRequired, environment: PropTypes.object.isRequired,
didChange: PropTypes.func.isRequired, didChange: PropTypes.func.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
}; };
export default EnvironmentEditor; export default EnvironmentEditor;

View File

@ -35,7 +35,7 @@ class BodyEditor extends PureComponent {
}; };
render () { render () {
const {fontSize, lineWrapping, request} = this.props; const {keyMap, fontSize, lineWrapping, request} = this.props;
const fileName = request.body.fileName; const fileName = request.body.fileName;
const mimeType = request.body.mimeType; const mimeType = request.body.mimeType;
const isBodyEmpty = typeof mimeType !== 'string' && !request.body.text; const isBodyEmpty = typeof mimeType !== 'string' && !request.body.text;
@ -70,6 +70,7 @@ class BodyEditor extends PureComponent {
<RawEditor <RawEditor
key={`${request._id}::${contentType}`} key={`${request._id}::${contentType}`}
fontSize={fontSize} fontSize={fontSize}
keyMap={keyMap}
lineWrapping={lineWrapping} lineWrapping={lineWrapping}
contentType={contentType || 'text/plain'} contentType={contentType || 'text/plain'}
content={request.body.text || ''} content={request.body.text || ''}
@ -98,6 +99,7 @@ BodyEditor.propTypes = {
// Optional // Optional
fontSize: PropTypes.number, fontSize: PropTypes.number,
keyMap: PropTypes.string,
lineWrapping: PropTypes.bool lineWrapping: PropTypes.bool
}; };

View File

@ -7,6 +7,7 @@ class RawEditor extends Component {
contentType, contentType,
content, content,
fontSize, fontSize,
keyMap,
lineWrapping, lineWrapping,
onChange, onChange,
className className
@ -16,6 +17,7 @@ class RawEditor extends Component {
<Editor <Editor
manualPrettify={true} manualPrettify={true}
fontSize={fontSize} fontSize={fontSize}
keyMap={keyMap}
value={content} value={content}
className={className} className={className}
onChange={onChange} onChange={onChange}
@ -35,6 +37,7 @@ RawEditor.propTypes = {
// Optional // Optional
fontSize: PropTypes.number, fontSize: PropTypes.number,
keyMap: PropTypes.string,
lineWrapping: PropTypes.bool lineWrapping: PropTypes.bool
}; };

View File

@ -45,7 +45,7 @@ class EnvironmentEditModal extends Component {
} }
render () { render () {
const {editorFontSize, ...extraProps} = this.props; const {editorKeyMap, editorFontSize, ...extraProps} = this.props;
const {requestGroup, isValid} = this.state; const {requestGroup, isValid} = this.state;
return ( return (
@ -54,6 +54,7 @@ class EnvironmentEditModal extends Component {
<ModalBody noScroll={true}> <ModalBody noScroll={true}>
<EnvironmentEditor <EnvironmentEditor
editorFontSize={editorFontSize} editorFontSize={editorFontSize}
editorKeyMap={editorKeyMap}
ref={node => this._envEditor = node} ref={node => this._envEditor = node}
key={requestGroup ? requestGroup._id : 'n/a'} key={requestGroup ? requestGroup._id : 'n/a'}
environment={requestGroup ? requestGroup.environment : {}} environment={requestGroup ? requestGroup.environment : {}}
@ -77,6 +78,7 @@ class EnvironmentEditModal extends Component {
EnvironmentEditModal.propTypes = { EnvironmentEditModal.propTypes = {
onChange: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
}; };
export default EnvironmentEditModal; export default EnvironmentEditModal;

View File

@ -95,7 +95,7 @@ class GenerateCodeModal extends Component {
render () { render () {
const {cmd, target, client} = this.state; const {cmd, target, client} = this.state;
const {editorFontSize} = this.props; const {editorFontSize, editorKeyMap} = this.props;
const targets = availableTargets(); const targets = availableTargets();
@ -147,6 +147,7 @@ class GenerateCodeModal extends Component {
mode={MODE_MAP[target.key] || target.key} mode={MODE_MAP[target.key] || target.key}
ref={n => this._editor = n} ref={n => this._editor = n}
fontSize={editorFontSize} fontSize={editorFontSize}
keyMap={editorKeyMap}
lightTheme={true} lightTheme={true}
lineWrapping={true} lineWrapping={true}
value={cmd} value={cmd}
@ -168,6 +169,7 @@ class GenerateCodeModal extends Component {
GenerateCodeModal.propTypes = { GenerateCodeModal.propTypes = {
environmentId: PropTypes.string.isRequired, environmentId: PropTypes.string.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
}; };
export default GenerateCodeModal; export default GenerateCodeModal;

View File

@ -139,7 +139,7 @@ class WorkspaceEnvironmentsEditModal extends Component {
} }
render () { render () {
const {editorFontSize} = this.props; const {editorFontSize, editorKeyMap} = this.props;
const {subEnvironments, rootEnvironment, isValid, forceRefreshKey} = this.state; const {subEnvironments, rootEnvironment, isValid, forceRefreshKey} = this.state;
const activeEnvironment = this._getActiveEnvironment(); const activeEnvironment = this._getActiveEnvironment();
@ -201,6 +201,7 @@ class WorkspaceEnvironmentsEditModal extends Component {
<div className="env-modal__editor"> <div className="env-modal__editor">
<EnvironmentEditor <EnvironmentEditor
editorFontSize={editorFontSize} editorFontSize={editorFontSize}
editorKeyMap={editorKeyMap}
ref={n => this._envEditor = n} ref={n => this._envEditor = n}
key={`${forceRefreshKey}::${(activeEnvironment ? activeEnvironment._id : 'n/a')}`} key={`${forceRefreshKey}::${(activeEnvironment ? activeEnvironment._id : 'n/a')}`}
environment={activeEnvironment ? activeEnvironment.data : {}} environment={activeEnvironment ? activeEnvironment.data : {}}
@ -230,6 +231,7 @@ class WorkspaceEnvironmentsEditModal extends Component {
WorkspaceEnvironmentsEditModal.propTypes = { WorkspaceEnvironmentsEditModal.propTypes = {
onChange: PropTypes.func.isRequired, onChange: PropTypes.func.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
}; };
export default WorkspaceEnvironmentsEditModal; export default WorkspaceEnvironmentsEditModal;

View File

@ -51,20 +51,32 @@ const SettingsGeneral = ({settings, updateSetting}) => (
</div> </div>
<div className="form-control form-control--outlined pad-top-sm"> <div className="form-control form-control--outlined pad-top-sm">
<label>Request/Response Font Size (px) <label>Text Editor Font Size (px)
<input type="number" <input type="number"
min={8} min={8}
max={20} max={20}
value={settings.editorFontSize} defaultValue={settings.editorFontSize}
onChange={e => updateSetting('editorFontSize', parseInt(e.target.value, 10))}/> onChange={e => updateSetting('editorFontSize', parseInt(e.target.value, 10))}/>
</label> </label>
</div> </div>
<div className="form-control form-control--outlined pad-top-sm">
<label>Text Editor Key Map
<select defaultValue={settings.editorKeyMap}
onChange={e => updateSetting('editorKeyMap', e.target.value)}>
<option value="default">Default</option>
<option value="vim">Vim</option>
<option value="emacs">Emacs</option>
<option value="sublime">Sublime</option>
</select>
</label>
</div>
<div className="form-control form-control--outlined"> <div className="form-control form-control--outlined">
<label>Request Timeout (ms) (0 for no timeout) <label>Request Timeout (ms) (0 for no timeout)
<input type="number" <input type="number"
min={0} min={0}
value={settings.timeout} defaultValue={settings.timeout}
onChange={e => updateSetting('timeout', parseInt(e.target.value, 10))}/> onChange={e => updateSetting('timeout', parseInt(e.target.value, 10))}/>
</label> </label>
</div> </div>

View File

@ -65,6 +65,7 @@ class ResponseViewer extends Component {
contentType, contentType,
editorLineWrapping, editorLineWrapping,
editorFontSize, editorFontSize,
editorKeyMap,
updateFilter, updateFilter,
statusCode, statusCode,
body: base64Body, body: base64Body,
@ -156,6 +157,7 @@ class ResponseViewer extends Component {
readOnly={true} readOnly={true}
lineWrapping={editorLineWrapping} lineWrapping={editorLineWrapping}
fontSize={editorFontSize} fontSize={editorFontSize}
keyMap={editorKeyMap}
placeholder="..." placeholder="..."
/> />
); );
@ -176,6 +178,7 @@ ResponseViewer.propTypes = {
previewMode: PropTypes.string.isRequired, previewMode: PropTypes.string.isRequired,
filter: PropTypes.string.isRequired, filter: PropTypes.string.isRequired,
editorFontSize: PropTypes.number.isRequired, editorFontSize: PropTypes.number.isRequired,
editorKeyMap: PropTypes.string.isRequired,
editorLineWrapping: PropTypes.bool.isRequired, editorLineWrapping: PropTypes.bool.isRequired,
url: PropTypes.string.isRequired, url: PropTypes.string.isRequired,
bytes: PropTypes.number.isRequired, bytes: PropTypes.number.isRequired,

View File

@ -140,108 +140,113 @@
} }
/* Based on Sublime Text's Monokai theme */ /* Based on Sublime Text's Monokai theme */
.editor { .CodeMirror {
.cm-s-default.CodeMirror { color: var(--color-font);
color: var(--color-font);
}
.cm-s-default div.CodeMirror-selected { div.CodeMirror-selected {
background: @hl-md; background: @hl-md;
border-radius: 2px; border-radius: 2px;
} }
.cm-s-default .CodeMirror-gutters { .CodeMirror-gutters {
border-right: 0; border-right: 0;
} }
.cm-s-default .CodeMirror-guttermarker { .CodeMirror-guttermarker {
color: var(--color-font); color: var(--color-font);
} }
.cm-s-default .CodeMirror-guttermarker-subtle { .CodeMirror-guttermarker-subtle {
color: @hl-lg; color: @hl-lg;
} }
.cm-s-default .CodeMirror-linenumber { .CodeMirror-linenumber {
color: @hl; color: @hl;
} }
.cm-s-default .CodeMirror-cursor { .CodeMirror-cursor {
border-left: 1px solid var(--color-font); border-left: 1px solid var(--color-font);
} }
.cm-s-default span.cm-comment, .cm-animate-fat-cursor,
.cm-s-default span.cm-meta, &.cm-fat-cursor .CodeMirror-cursor {
.cm-s-default span.cm-qualifier { background-color: rgba(255, 139, 147, 0.5) !important;
border-bottom: 2px solid #d60000 !important;
box-sizing: border-box;
}
span.cm-comment,
span.cm-meta,
span.cm-qualifier {
color: var(--color-font); color: var(--color-font);
} }
.cm-s-default span.cm-atom { span.cm-atom {
color: var(--color-surprise); color: var(--color-surprise);
} }
.cm-s-default span.cm-number { span.cm-number {
color: var(--color-surprise); color: var(--color-surprise);
} }
.cm-s-default span.cm-keyword { span.cm-keyword {
color: var(--color-danger); color: var(--color-danger);
} }
.cm-s-default span.cm-builtin { span.cm-builtin {
color: var(--color-info); color: var(--color-info);
} }
.cm-s-default span.cm-string { span.cm-string {
color: var(--color-notice); color: var(--color-notice);
} }
.cm-s-default span.cm-property, .cm-s-default span.cm-attribute { span.cm-property, span.cm-attribute {
color: var(--color-success); color: var(--color-success);
} }
.cm-s-default span.cm-variable { span.cm-variable {
color: var(--color-font); color: var(--color-font);
} }
.cm-s-default span.cm-variable-2 { span.cm-variable-2 {
color: var(--color-info); color: var(--color-info);
} }
.cm-s-default span.cm-variable-3 { span.cm-variable-3 {
color: var(--color-info); color: var(--color-info);
} }
.cm-s-default span.cm-def { span.cm-def {
color: var(--color-warning); color: var(--color-warning);
} }
.cm-s-default span.cm-bracket { span.cm-bracket {
color: var(--color-font); color: var(--color-font);
} }
.cm-s-default span.cm-tag { span.cm-tag {
color: var(--color-danger); color: var(--color-danger);
} }
.cm-s-default span.cm-header { span.cm-header {
color: var(--color-surprise); color: var(--color-surprise);
} }
.cm-s-default span.cm-link { span.cm-link {
color: var(--color-surprise); color: var(--color-surprise);
} }
.cm-s-default span.cm-error { span.cm-error {
background: var(--color-danger); background: var(--color-danger);
color: var(--color-font-danger); color: var(--color-font-danger);
} }
.cm-s-default .CodeMirror-activeline-background { .CodeMirror-activeline-background {
background: @hl-md; background: @hl-md;
} }
.cm-s-default .CodeMirror-matchingbracket { .CodeMirror-matchingbracket {
text-decoration: underline; text-decoration: underline;
color: inherit !important; color: inherit !important;
} }

View File

@ -228,13 +228,11 @@
color: @hl; color: @hl;
.tag { .tag {
opacity: 1; // This might be too faint...
//opacity: @opacity-subtle;
} }
} }
& > .tag {
}
& > * { & > * {
height: 100%; height: 100%;
} }
@ -245,6 +243,7 @@
&.sidebar__item--active > button { &.sidebar__item--active > button {
color: var(--color-font); color: var(--color-font);
.tag { .tag {
opacity: 1; opacity: 1;
} }