@import "syntax-variables"; @import "ui-variables"; // Cursor style // ========================= .cursor-base () { border: none; background: none; opacity: 0.5; } .underline-cursor(@bottom-width: 0.2em) { .cursor-base(); border-bottom-width: @bottom-width; border-bottom-style: solid; border-bottom-color: @syntax-cursor-color; } atom-text-editor.vim-mode-plus.normal-mode, atom-text-editor.vim-mode-plus.visual-mode, atom-text-editor.vim-mode-plus.operator-pending-mode, atom-text-editor.vim-mode-plus.insert-mode.replace { &.is-focused, &.vim-mode-plus-input-focused, &.vim-mode-plus-search-input-focused { .cursor { .cursor-base(); background-color: @syntax-cursor-color; // block-cursor } } &.vim-mode-plus-input-focused.hide-cursor { .cursor { opacity: 0; } .cursors.blink-off .cursor { opacity: 0; } } } atom-text-editor.vim-mode-plus.operator-pending-mode { &.is-focused, &.vim-mode-plus-search-input-focused { .cursor { .underline-cursor(0.6em); } .cursors.blink-off .cursor { opacity: 0; } } } atom-text-editor.vim-mode-plus.insert-mode.replace { &.is-focused { .cursor { .underline-cursor(0.3em); opacity: 0.8; } } } // vim-mode-plus-input-focused for surround, f, F, t, T, r etc. atom-text-editor.vim-mode-plus.normal-mode, atom-text-editor.vim-mode-plus.visual-mode, atom-text-editor.vim-mode-plus.operator-pending-mode, { &.vim-mode-plus-input-focused { .cursor { .underline-cursor(); } } } atom-text-editor.vim-mode-plus-input-char-waiting { &.is-focused { .cursor { .underline-cursor(); } } } // Flash ranges e.g. flashing yanked range. // ========================= .flash-animation (@animation-name, @color) { @keyframes @animation-name { from { background-color: @color; } to { background-color: transparent; } } } .flash (@animation-name; @duration) { animation-name: @animation-name; animation-duration: @duration; animation-iteration-count: 1; } @flash-base-color: contrast(@syntax-background-color, darken(@syntax-selection-color, 3%), lighten(@syntax-selection-color, 3%)); @flash-search-color: fadeout(darken(@syntax-selection-flash-color, 10%), 20%); @flash-added-color: fadeout(darken(@syntax-color-added, 10%), 50%); @flash-removed-color: fadeout(@syntax-color-removed, 50%); // flashOnOperate .flash-animation(flash-operator, @flash-base-color); .flash-animation(flash-operator-occurrence, @flash-added-color); .flash-animation(flash-operator-remove-occurrence, @flash-removed-color); // flashOnUndoRedo .flash-animation(flash-undo-redo, @flash-base-color); .flash-animation(flash-undo-redo-multiple-changes, @flash-added-color); .flash-animation(flash-undo-redo-multiple-deletes, @flash-removed-color); // flashOnSearch .flash-animation(flash-search, @flash-search-color); .flash-animation(flash-screen, @flash-base-color); atom-text-editor .vim-mode-plus-flash { // flashOnOperate &.operator .region { .flash(flash-operator, 0.5s); } &.operator-long .region { .flash(flash-operator, 0.8s); } &.operator-occurrence .region { .flash(flash-operator-occurrence, 0.8s); } &.operator-remove-occurrence .region { .flash(flash-operator-remove-occurrence, 0.8s); } // flashOnUndoRedo &.undo-redo .region { .flash(flash-undo-redo, 0.5s); } &.undo-redo-multiple-changes .region { .flash(flash-undo-redo-multiple-changes, 0.5s); } &.undo-redo-multiple-deletes .region { .flash(flash-undo-redo-multiple-deletes, 0.5s); } // flashOnSearch &.search .region { .flash(flash-search, 1.0s); z-index: 1; } &.screen .region { .flash(flash-screen, 0.3s); } // demo-mode pkg integration to stop flash while demo-mode's hover is active &.operator-demo .region { background: @flash-base-color; } &.operator-long-demo .region { background: @flash-base-color; } &.operator-occurrence-demo .region { background: @flash-added-color; } &.operator-remove-occurrence-demo .region { background: @flash-removed-color; } &.undo-redo-demo .region { background: @flash-base-color; } &.undo-redo-multiple-changes-demo .region { background: @flash-added-color; } &.undo-redo-multiple-deletes-demo .region { background: @flash-removed-color; } } // Hover Counter // ========================= .vim-mode-plus-hover { display: block; color: @text-color-highlight; background-color: @base-background-color; border-radius: @component-border-radius; box-shadow: 0 0 1px @syntax-text-color; margin-top: -3.0em; margin-left: -0.3em; padding-left: 0.2em; padding-right: 0.2em; text-align: center; &.first { background-color: @background-color-info; } &.last { background-color: @background-color-error; } } atom-text-editor[mini].vim-mode-plus-input { background-color: inherit; font-weight: normal; color: @text-color; line-height: 1.28; cursor: default; white-space: nowrap; padding-left: 10px; height: 0px !important; width: 0px !important; overflow: hidden !important; border: none !important; padding: 0 !important; display: block !important; position: fixed !important; top: -10px !important; left: -10px !important; } // Search // ========================= // input .vim-mode-plus-search-container { display: flex; > div { padding: @component-padding/2 @component-padding; border: none; } .editor-container { width: 100%; } } atom-text-editor[mini].vim-mode-plus-search { border: none; color: @text-color; cursor: default; &.is-focused { box-shadow: none; } &::before { font-size: 1.2em; padding-right: 0.5em; content: "/"; } &.backwards::before { content: "?"; } } @search-match-base: @syntax-result-marker-color; @search-match: hsla(hue(@search-match-base), saturation(@search-match-base), lightness(@search-match-base), 0.4); @search-match-first: fadeout(@syntax-color-renamed, 60%); @search-match-last: fadeout(@syntax-color-removed, 60%); @search-match-border-current: hsla(hue(@search-match-base), saturation(@search-match-base), lightness(@search-match-base), 1.0); @search-match-border-first: syntax-color-renamed; @search-match-border-last: syntax-color-removed; atom-text-editor:not(.silent) { .vim-mode-plus-search-match { .region { background-color: @search-match; } &.first .region { background-color: @search-match-first; } &.last .region { background-color: @search-match-last; } } } @keyframes flash-find-char { from { border-color: @syntax-color-function; } to { border-color: transparent; } } // highlight .round-box { box-sizing: border-box; border-radius: @component-border-radius; } atom-text-editor { .vim-mode-plus-search-match { .region { .round-box(); border: 2px solid transparent; transition: border-color 0.2s; } &.current .region { border-color: @search-match-border-current; transition-duration: 0.1s; } &.first.current .region { border-color: search-match-border-first; } &.last.current .region { border-color: @search-match-border-last; } } .vim-mode-plus-highlight-search .region { .round-box(); border: 1px solid fadeout(@syntax-text-color, 70%); background-color: @syntax-selection-color; } .vim-mode-plus-persistent-selection .region { background-color: @syntax-selection-color; } .vim-mode-plus-target-range .region { background-color: @syntax-selection-color; } .vim-mode-plus-occurrence-base .region { box-sizing: border-box; border-bottom-width: 2px; border-bottom-style: dotted; z-index: 1; border-color: @syntax-color-modified; } .vim-mode-plus-find-char { .region { box-sizing: border-box; border-width: 0px; border-bottom-width: 2px; border-style: solid; } &.pre-confirm .region { border-color: @syntax-color-modified; &.current { border-bottom-width: 5px; } } &.post-confirm .region { .flash(flash-find-char, 2.0s); &.long { animation-duration: 4.0s; } } } } // Maximize Pane // ========================= atom-workspace.vim-mode-plus--pane-maximized { atom-dock.left { display: none; } atom-dock.right { display: none; } atom-dock.bottom { display: none; } atom-pane-container { position: relative; atom-pane-axis:not(.vim-mode-plus--active-pane-axis) { display: none; } atom-pane { .item-views { background: @syntax-background-color !important; } display: none; &.vim-mode-plus--active-pane { display: flex; position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 100; } } } &.vim-mode-plus--hide-tab-bar { .tab-bar { display: none; } } &.vim-mode-plus--hide-status-bar { .status-bar { display: none; } } &.vim-mode-plus--pane-centered { atom-text-editor:not(.mini) { margin-left: 20%; atom-text-editor { // Some package embed another text-editor into normal text-editor by using block decoration. // But we don't want this editor in editor centered again. // E.g. git-diff-details, inline-git-diff margin-left: 0%; } } } } // SelectList Highlight matched text // ========================= .vim-mode-plus-select-list .list-group .character-match { color: @text-color-highlight; font-weight: bold; } .demo-mode-container { .kind { color: @text-color-selected; } }