Module: Rvim::Highlights
- Defined in:
- lib/rvim/highlights.rb
Defined Under Namespace
Classes: Attr
Constant Summary collapse
- COLOR_CODES =
{ 'black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37, 'darkblue' => 34, 'darkred' => 31, 'darkgreen' => 32, 'darkyellow' => 33, 'darkmagenta' => 35, 'darkcyan' => 36, 'darkgray' => 90, 'darkgrey' => 90, 'gray' => 37, 'grey' => 37, 'lightgray' => 37, 'lightgrey' => 37, 'default' => 39, 'none' => 39, }.freeze
- DEFAULT_THEME =
{ 'Normal' => Attr.new, 'Comment' => Attr.new(fg: 'cyan'), 'String' => Attr.new(fg: 'green'), 'Number' => Attr.new(fg: 'red'), 'Keyword' => Attr.new(fg: 'magenta'), 'Constant' => Attr.new(fg: 'blue'), 'Identifier' => Attr.new(fg: 'yellow'), 'Statement' => Attr.new(fg: 'magenta'), 'Type' => Attr.new(fg: 'blue'), 'Special' => Attr.new(fg: 'yellow'), 'PreProc' => Attr.new(fg: 'magenta'), 'Symbol' => Attr.new(fg: 'yellow'), 'Title' => Attr.new(fg: 'magenta', bold: true), 'Bold' => Attr.new(bold: true), 'Italic' => Attr.new(italic: true), 'Link' => Attr.new(fg: 'cyan', underline: true), 'LineNr' => Attr.new(fg: 'darkgray'), 'CursorLineNr' => Attr.new(fg: 'yellow', bold: true), 'StatusLine' => Attr.new(reverse: true), 'Folded' => Attr.new(fg: 'darkgray'), 'DiffAdd' => Attr.new(bg: 'green'), 'DiffDelete' => Attr.new(bg: 'red'), 'DiffChange' => Attr.new(bg: 'yellow'), 'DiffText' => Attr.new(bg: 'red', bold: true), 'Search' => Attr.new(reverse: true), 'IncSearch' => Attr.new(reverse: true), 'Visual' => Attr.new(reverse: true), 'Error' => Attr.new(fg: 'red', bold: true), 'Todo' => Attr.new(fg: 'yellow', bold: true), 'NonText' => Attr.new(fg: 'darkgray'), 'SpellBad' => Attr.new(fg: 'red'), 'ColorColumn' => Attr.new(bg: 'darkred'), 'CursorColumn' => Attr.new(bg: 'darkgray'), }.freeze
Class Method Summary collapse
- .ansi_prefix(name) ⇒ Object
- .ansi_suffix(name) ⇒ Object
- .clear(name) ⇒ Object
- .get(name) ⇒ Object
- .groups ⇒ Object
- .reset_to_defaults! ⇒ Object
- .set(name, fg: nil, bg: nil, bold: nil, italic: nil, underline: nil, reverse: nil) ⇒ Object
- .wrap(name, text) ⇒ Object
Class Method Details
.ansi_prefix(name) ⇒ Object
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/rvim/highlights.rb', line 81 def ansi_prefix(name) attr = get(name) or return '' parts = +'' parts << "\e[1m" if attr.bold parts << "\e[3m" if attr.italic parts << "\e[4m" if attr.underline parts << "\e[7m" if attr.reverse if attr.fg code = COLOR_CODES[attr.fg.to_s.downcase] || 39 parts << "\e[#{code}m" end if attr.bg fg_code = COLOR_CODES[attr.bg.to_s.downcase] || 49 # Background = fg_code + 10 for the basic 8/16 set bg_code = fg_code >= 90 ? fg_code + 10 : fg_code + 10 parts << "\e[#{bg_code}m" end parts end |
.ansi_suffix(name) ⇒ Object
102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/rvim/highlights.rb', line 102 def ansi_suffix(name) attr = get(name) or return '' parts = +'' parts << "\e[39m" if attr.fg parts << "\e[49m" if attr.bg parts << "\e[22m" if attr.bold parts << "\e[23m" if attr.italic parts << "\e[24m" if attr.underline parts << "\e[27m" if attr.reverse parts end |
.clear(name) ⇒ Object
73 74 75 |
# File 'lib/rvim/highlights.rb', line 73 def clear(name) groups[name.to_s] = Attr.new end |
.get(name) ⇒ Object
69 70 71 |
# File 'lib/rvim/highlights.rb', line 69 def get(name) groups[name.to_s] end |
.groups ⇒ Object
53 54 55 |
# File 'lib/rvim/highlights.rb', line 53 def groups @groups ||= DEFAULT_THEME.transform_values(&:dup) end |
.reset_to_defaults! ⇒ Object
77 78 79 |
# File 'lib/rvim/highlights.rb', line 77 def reset_to_defaults! @groups = DEFAULT_THEME.transform_values(&:dup) end |
.set(name, fg: nil, bg: nil, bold: nil, italic: nil, underline: nil, reverse: nil) ⇒ Object
57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/rvim/highlights.rb', line 57 def set(name, fg: nil, bg: nil, bold: nil, italic: nil, underline: nil, reverse: nil) cur = groups[name] || Attr.new groups[name] = Attr.new( fg: fg.nil? ? cur.fg : fg, bg: bg.nil? ? cur.bg : bg, bold: bold.nil? ? cur.bold : bold, italic: italic.nil? ? cur.italic : italic, underline: underline.nil? ? cur.underline : underline, reverse: reverse.nil? ? cur.reverse : reverse, ) end |
.wrap(name, text) ⇒ Object
115 116 117 |
# File 'lib/rvim/highlights.rb', line 115 def wrap(name, text) "#{ansi_prefix(name)}#{text}#{ansi_suffix(name)}" end |