Определение цветной переменной в энергии

Когда, например, делая систему цветов, как можно определить # 40ffff как "UglyColor" (т.е. как переменную)?

Возможный / не возможный?

5
задан Rook 14 March 2010 в 22:32
поделиться

1 ответ

Это невозможно со встроенным синтаксисом. Однако это можно сделать, если вы создадите свой собственный синтаксис:

let UglyColor = '#40ffff'
let Greenish  = '#00dd00'
let MyStyle   = 'bold'
exe 'hi Keyword gui=' . MyStyle . ' guifg=' . UglyColor
exe 'hi Comment guifg=' . Greenish

Затем вы могли бы пойти дальше, создав словарь:

let UglyColor = '#40ffff'
let Greenish  = '#00dd00'
let ColourAssignment = {}
let ColourAssignment['Keyword'] = {"GUIFG": UglyColor, "GUI": "Bold"}
let ColourAssignment['Comment'] = {"GUIFG": Greenish}

А затем обработать его примерно так:

for key in keys(ColourAssignment)
    let s:colours = ColourAssignment[key]
    if has_key(s:colours, 'GUI')
        let gui = s:colours['GUI']
    else
        let gui='NONE'
    endif
    if has_key(s:colours, 'GUIFG')
        let guifg = s:colours['GUIFG']
    else
        let guifg='NONE'
    endif
    if has_key(s:colours, 'GUIBG')
        let guibg = s:colours['GUIBG']
    else
        let guibg='NONE'
    endif
    if key =~ '^\k*$'
        execute "hi ".key." term=".term." cterm=".cterm." gui=".gui." ctermfg=".ctermfg." guifg=".guifg." ctermbg=".ctermbg." guibg=".guibg." guisp=".guisp
    endif

Вот как my Цветовая схема Bandit работает (с немного большей логикой для автоматической генерации цветов cterm, светлых цветов фона и файла синтаксиса, чтобы цветовая схема выделялась самим). Не стесняйтесь взглянуть на это и украсть функции и формат для своей собственной цветовой схемы.

6
ответ дан 14 December 2019 в 13:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: