v0.0.1
This commit is contained in:
7
autoload/tui.vim
Normal file
7
autoload/tui.vim
Normal file
@ -0,0 +1,7 @@
|
||||
vim9script
|
||||
|
||||
export def Init(tui_home: string)
|
||||
tui#core#cached#Set("tui.home", tui_home)
|
||||
tui#core#layer#Init(expand(tui_home .. "/layers"))
|
||||
enddef
|
||||
|
83
autoload/tui/core/cached.vim
Normal file
83
autoload/tui/core/cached.vim
Normal file
@ -0,0 +1,83 @@
|
||||
vim9script
|
||||
|
||||
const CACHE_KEY_PATTERN = '\v^[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*$'
|
||||
|
||||
export def Has(key: string, advanced_key: bool = v:true): bool
|
||||
assert_true(!empty(key) && !empty(split(key)) && match(key, CACHE_KEY_PATTERN) != -1)
|
||||
|
||||
const tui_cached = get(g:, 'tui_cached', {})
|
||||
if !advanced_key
|
||||
return has_key(tui_cached, key)
|
||||
endif
|
||||
|
||||
var temp_keys = split(key, '\.')
|
||||
var real_key = temp_keys[-1]
|
||||
var real_dict = tui_cached
|
||||
var index = 0
|
||||
for sub_key in temp_keys
|
||||
if index < len(temp_keys) - 1
|
||||
if !has_key(real_dict, sub_key) || (type(real_dict[sub_key]) != type({}))
|
||||
return 0
|
||||
endif
|
||||
real_dict = real_dict[sub_key]
|
||||
endif
|
||||
index = index + 1
|
||||
endfor
|
||||
return has_key(real_dict, real_key)
|
||||
enddef
|
||||
|
||||
export def Get(key: string, default_value: any = v:none, advanced_key: bool = v:true): any
|
||||
assert_true(!empty(key) && !empty(split(key)) && match(key, CACHE_KEY_PATTERN) != -1)
|
||||
|
||||
const tui_cached = get(g:, 'tui_cached', {})
|
||||
if !advanced_key
|
||||
return has_key(tui_cached, key) ? tui_cached[key] : default_value
|
||||
endif
|
||||
|
||||
var temp_keys = split(key, '\.')
|
||||
var real_key = temp_keys[-1]
|
||||
var real_dict = tui_cached
|
||||
var index = 0
|
||||
for sub_key in temp_keys
|
||||
if index < len(temp_keys) - 1
|
||||
if !has_key(real_dict, sub_key) || (type(real_dict[sub_key]) != type({}))
|
||||
return default_value
|
||||
endif
|
||||
real_dict = real_dict[sub_key]
|
||||
endif
|
||||
index = index + 1
|
||||
endfor
|
||||
return has_key(real_dict, real_key) ? real_dict[real_key] : default_value
|
||||
enddef
|
||||
|
||||
export def Set(key: string, value: any, advanced_key: bool = v:true): any
|
||||
assert_true(!empty(key) && !empty(split(key)) && match(key, CACHE_KEY_PATTERN) != -1)
|
||||
|
||||
final tui_cached = get(g:, 'tui_cached', {})
|
||||
if !advanced_key
|
||||
tui_cached[key] = value
|
||||
return value
|
||||
endif
|
||||
|
||||
var temp_keys = split(key, '\.')
|
||||
var real_key = temp_keys[-1]
|
||||
var real_dict = tui_cached
|
||||
var index = 0
|
||||
for sub_key in temp_keys
|
||||
if index < len(temp_keys) - 1
|
||||
if !has_key(real_dict, sub_key)
|
||||
real_dict[sub_key] = {}
|
||||
endif
|
||||
real_dict = real_dict[sub_key]
|
||||
if type(real_dict) != type({})
|
||||
throw "tui-util-cached_Set: invalid key - [" .. key .. "]"
|
||||
endif
|
||||
endif
|
||||
index = index + 1
|
||||
endfor
|
||||
real_dict[real_key] = value
|
||||
final g:tui_cached = tui_cached
|
||||
|
||||
return value
|
||||
enddef
|
||||
|
39
autoload/tui/core/layer.vim
Normal file
39
autoload/tui/core/layer.vim
Normal file
@ -0,0 +1,39 @@
|
||||
vim9script
|
||||
|
||||
export def Init(layer_home: string = v:none)
|
||||
if !tui#core#cached#Has("tui.layer.home")
|
||||
var tui_layer_home = layer_home
|
||||
if empty(layer_home) || empty(split(layer_home))
|
||||
tui_layer_home = expand(tui#core#cached.Get("tui.home") .. "/layers")
|
||||
endif
|
||||
tui#core#cached#Set('tui.layer.home', tui_layer_home)
|
||||
|
||||
command! -nargs=1 -bar TuiLayer call tui#core#layer#Load(<q-args>)
|
||||
Load0(tui_layer_home)
|
||||
endif
|
||||
enddef
|
||||
|
||||
export def Load(layer_id: string)
|
||||
const tui_layer_home = tui#core#cached#Get("tui.layer.home")
|
||||
const layer_path = expand(tui_layer_home .. "/" .. substitute(layer_id, '\.', '/', 'g'))
|
||||
Load0(layer_path)
|
||||
enddef
|
||||
|
||||
def Load0(layer_path: string)
|
||||
if filereadable(layer_path)
|
||||
execute('source ' .. layer_path)
|
||||
elseif filereadable(layer_path .. '.vim')
|
||||
execute('source ' .. layer_path .. '.vim')
|
||||
elseif isdirectory(layer_path)
|
||||
if filereadable(expand(layer_path .. '/init.vim'))
|
||||
execute('source ' .. expand(layer_path .. '/init.vim'))
|
||||
else
|
||||
for sub_file in split(glob(layer_path .. "/*.vim"), '\n')
|
||||
if filereadable(sub_file)
|
||||
execute("source " .. sub_file)
|
||||
endif
|
||||
endfor
|
||||
endif
|
||||
endif
|
||||
enddef
|
||||
|
269
colors/molokai.vim
Normal file
269
colors/molokai.vim
Normal file
@ -0,0 +1,269 @@
|
||||
vim9script
|
||||
|
||||
# Vim color file
|
||||
#
|
||||
# Author: Tomas Restrepo <tomas@winterdom.com>
|
||||
# https://github.com/tomasr/molokai
|
||||
#
|
||||
# Note: Based on the Monokai theme for TextMate
|
||||
# by Wimer Hazenberg and its darker variant
|
||||
# by Hamish Stuart Macpherson
|
||||
#
|
||||
|
||||
# no guarantees for version 5.8 and below, but this makes it stop
|
||||
# complaining
|
||||
hi clear
|
||||
if exists("syntax_on")
|
||||
syntax reset
|
||||
endif
|
||||
|
||||
final g:colors_name = "molokai"
|
||||
final molokai_original = get(g:, 'molokai_original', 0)
|
||||
|
||||
hi Boolean guifg=#AE81FF
|
||||
hi Character guifg=#E6DB74
|
||||
hi Number guifg=#AE81FF
|
||||
hi String guifg=#E6DB74
|
||||
hi Conditional guifg=#F92672 gui=bold
|
||||
hi Constant guifg=#AE81FF gui=bold
|
||||
hi Cursor guifg=#000000 guibg=#F8F8F0
|
||||
hi iCursor guifg=#000000 guibg=#F8F8F0
|
||||
hi Debug guifg=#BCA3A3 gui=bold
|
||||
hi Define guifg=#66D9EF
|
||||
hi Delimiter guifg=#8F8F8F
|
||||
hi DiffAdd guibg=#13354A
|
||||
hi DiffChange guifg=#89807D guibg=#4C4745
|
||||
hi DiffDelete guifg=#960050 guibg=#1E0010
|
||||
hi DiffText guibg=#4C4745 gui=italic,bold
|
||||
|
||||
hi Directory guifg=#A6E22E gui=bold
|
||||
hi Error guifg=#E6DB74 guibg=#1E0010
|
||||
hi ErrorMsg guifg=#F92672 guibg=#232526 gui=bold
|
||||
hi Exception guifg=#A6E22E gui=bold
|
||||
hi Float guifg=#AE81FF
|
||||
hi FoldColumn guifg=#465457 guibg=#000000
|
||||
hi Folded guifg=#465457 guibg=#000000
|
||||
hi Function guifg=#A6E22E
|
||||
hi Identifier guifg=#FD971F
|
||||
hi Ignore guifg=#808080 guibg=bg
|
||||
hi IncSearch guifg=#C4BE89 guibg=#000000
|
||||
|
||||
hi Keyword guifg=#F92672 gui=bold
|
||||
hi Label guifg=#E6DB74 gui=none
|
||||
hi Macro guifg=#C4BE89 gui=italic
|
||||
hi SpecialKey guifg=#66D9EF gui=italic
|
||||
|
||||
hi MatchParen guifg=#000000 guibg=#FD971F gui=bold
|
||||
hi ModeMsg guifg=#E6DB74
|
||||
hi MoreMsg guifg=#E6DB74
|
||||
hi Operator guifg=#F92672
|
||||
|
||||
# complete menu
|
||||
hi Pmenu guifg=#66D9EF guibg=#000000
|
||||
hi PmenuSel guibg=#808080
|
||||
hi PmenuSbar guibg=#080808
|
||||
hi PmenuThumb guifg=#66D9EF
|
||||
|
||||
hi PreCondit guifg=#A6E22E gui=bold
|
||||
hi PreProc guifg=#A6E22E
|
||||
hi Question guifg=#66D9EF
|
||||
hi Repeat guifg=#F92672 gui=bold
|
||||
hi Search guifg=#000000 guibg=#FFE792
|
||||
# marks
|
||||
hi SignColumn guifg=#A6E22E guibg=#232526
|
||||
hi SpecialChar guifg=#F92672 gui=bold
|
||||
hi SpecialComment guifg=#7E8E91 gui=bold
|
||||
hi Special guifg=#66D9EF guibg=bg gui=italic
|
||||
if has("spell")
|
||||
hi SpellBad guisp=#FF0000 gui=undercurl
|
||||
hi SpellCap guisp=#7070F0 gui=undercurl
|
||||
hi SpellLocal guisp=#70F0F0 gui=undercurl
|
||||
hi SpellRare guisp=#FFFFFF gui=undercurl
|
||||
endif
|
||||
hi Statement guifg=#F92672 gui=bold
|
||||
hi StatusLine guifg=#455354 guibg=fg
|
||||
hi StatusLineNC guifg=#808080 guibg=#080808
|
||||
hi StorageClass guifg=#FD971F gui=italic
|
||||
hi Structure guifg=#66D9EF
|
||||
hi Tag guifg=#F92672 gui=italic
|
||||
hi Title guifg=#ef5939
|
||||
hi Todo guifg=#FFFFFF guibg=bg gui=bold
|
||||
|
||||
hi Typedef guifg=#66D9EF
|
||||
hi Type guifg=#66D9EF gui=none
|
||||
hi Underlined guifg=#808080 gui=underline
|
||||
|
||||
hi VertSplit guifg=#808080 guibg=#080808 gui=bold
|
||||
hi VisualNOS guibg=#403D3D
|
||||
hi Visual guibg=#403D3D
|
||||
hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold
|
||||
hi WildMenu guifg=#66D9EF guibg=#000000
|
||||
|
||||
hi TabLineFill guifg=#1B1D1E guibg=#1B1D1E
|
||||
hi TabLine guibg=#1B1D1E guifg=#808080 gui=none
|
||||
|
||||
if molokai_original == 1
|
||||
hi Normal guifg=#F8F8F2 guibg=#272822
|
||||
hi Comment guifg=#75715E
|
||||
hi CursorLine guibg=#3E3D32
|
||||
hi CursorLineNr guifg=#FD971F gui=none
|
||||
hi CursorColumn guibg=#3E3D32
|
||||
hi ColorColumn guibg=#3B3A32
|
||||
hi LineNr guifg=#BCBCBC guibg=#3B3A32
|
||||
hi NonText guifg=#75715E
|
||||
hi SpecialKey guifg=#75715E
|
||||
else
|
||||
hi Normal guifg=#F8F8F2 guibg=#1B1D1E
|
||||
hi Comment guifg=#7E8E91
|
||||
hi CursorLine guibg=#293739
|
||||
hi CursorLineNr guifg=#FD971F gui=none
|
||||
hi CursorColumn guibg=#293739
|
||||
hi ColorColumn guibg=#232526
|
||||
hi LineNr guifg=#465457 guibg=#232526
|
||||
hi NonText guifg=#465457
|
||||
hi SpecialKey guifg=#465457
|
||||
endif
|
||||
|
||||
#
|
||||
# Support for 256-color terminal
|
||||
#
|
||||
if str2nr(&t_Co) > 255
|
||||
if molokai_original == 1
|
||||
hi Normal ctermbg=234
|
||||
hi CursorLine ctermbg=235 cterm=none
|
||||
hi CursorLineNr ctermfg=208 cterm=none
|
||||
else
|
||||
hi Normal ctermfg=252 ctermbg=233
|
||||
hi CursorLine ctermbg=234 cterm=none
|
||||
hi CursorLineNr ctermfg=208 cterm=none
|
||||
endif
|
||||
hi Boolean ctermfg=135
|
||||
hi Character ctermfg=144
|
||||
hi Number ctermfg=135
|
||||
hi String ctermfg=144
|
||||
hi Conditional ctermfg=161 cterm=bold
|
||||
hi Constant ctermfg=135 cterm=bold
|
||||
hi Cursor ctermfg=16 ctermbg=253
|
||||
hi Debug ctermfg=225 cterm=bold
|
||||
hi Define ctermfg=81
|
||||
hi Delimiter ctermfg=241
|
||||
|
||||
hi DiffAdd ctermbg=24
|
||||
hi DiffChange ctermfg=181 ctermbg=239
|
||||
hi DiffDelete ctermfg=162 ctermbg=53
|
||||
hi DiffText ctermbg=102 cterm=bold
|
||||
|
||||
hi Directory ctermfg=118 cterm=bold
|
||||
hi Error ctermfg=219 ctermbg=89
|
||||
hi ErrorMsg ctermfg=199 ctermbg=16 cterm=bold
|
||||
hi Exception ctermfg=118 cterm=bold
|
||||
hi Float ctermfg=135
|
||||
hi FoldColumn ctermfg=67 ctermbg=16
|
||||
hi Folded ctermfg=67 ctermbg=16
|
||||
hi Function ctermfg=118
|
||||
hi Identifier ctermfg=208 cterm=none
|
||||
hi Ignore ctermfg=244 ctermbg=232
|
||||
hi IncSearch ctermfg=193 ctermbg=16
|
||||
|
||||
hi keyword ctermfg=161 cterm=bold
|
||||
hi Label ctermfg=229 cterm=none
|
||||
hi Macro ctermfg=193
|
||||
hi SpecialKey ctermfg=81
|
||||
|
||||
hi MatchParen ctermfg=233 ctermbg=208 cterm=bold
|
||||
hi ModeMsg ctermfg=229
|
||||
hi MoreMsg ctermfg=229
|
||||
hi Operator ctermfg=161
|
||||
|
||||
# complete menu
|
||||
hi Pmenu ctermfg=81 ctermbg=16
|
||||
hi PmenuSel ctermfg=255 ctermbg=242
|
||||
hi PmenuSbar ctermbg=232
|
||||
hi PmenuThumb ctermfg=81
|
||||
|
||||
hi PreCondit ctermfg=118 cterm=bold
|
||||
hi PreProc ctermfg=118
|
||||
hi Question ctermfg=81
|
||||
hi Repeat ctermfg=161 cterm=bold
|
||||
hi Search ctermfg=0 ctermbg=222 cterm=NONE
|
||||
|
||||
# marks column
|
||||
hi SignColumn ctermfg=118 ctermbg=235
|
||||
hi SpecialChar ctermfg=161 cterm=bold
|
||||
hi SpecialComment ctermfg=245 cterm=bold
|
||||
hi Special ctermfg=81
|
||||
if has("spell")
|
||||
hi SpellBad ctermbg=52
|
||||
hi SpellCap ctermbg=17
|
||||
hi SpellLocal ctermbg=17
|
||||
hi SpellRare ctermfg=none ctermbg=none cterm=reverse
|
||||
endif
|
||||
hi Statement ctermfg=161 cterm=bold
|
||||
hi StatusLine ctermfg=238 ctermbg=253
|
||||
hi StatusLineNC ctermfg=244 ctermbg=232
|
||||
hi StorageClass ctermfg=208
|
||||
hi Structure ctermfg=81
|
||||
hi Tag ctermfg=161
|
||||
hi Title ctermfg=166
|
||||
hi Todo ctermfg=231 ctermbg=232 cterm=bold
|
||||
|
||||
hi Typedef ctermfg=81
|
||||
hi Type ctermfg=81 cterm=none
|
||||
hi Underlined ctermfg=244 cterm=underline
|
||||
|
||||
hi VertSplit ctermfg=244 ctermbg=232 cterm=bold
|
||||
hi VisualNOS ctermbg=238
|
||||
hi Visual ctermbg=235
|
||||
hi WarningMsg ctermfg=231 ctermbg=238 cterm=bold
|
||||
hi WildMenu ctermfg=81 ctermbg=16
|
||||
|
||||
hi Comment ctermfg=59
|
||||
hi CursorColumn ctermbg=236
|
||||
hi ColorColumn ctermbg=236
|
||||
hi LineNr ctermfg=250 ctermbg=236
|
||||
hi NonText ctermfg=59
|
||||
|
||||
hi SpecialKey ctermfg=59
|
||||
|
||||
if exists("g:rehash256") && g:rehash256 == 1
|
||||
hi Normal ctermfg=252 ctermbg=234
|
||||
hi CursorLine ctermbg=236 cterm=none
|
||||
hi CursorLineNr ctermfg=208 cterm=none
|
||||
|
||||
hi Boolean ctermfg=141
|
||||
hi Character ctermfg=222
|
||||
hi Number ctermfg=141
|
||||
hi String ctermfg=222
|
||||
hi Conditional ctermfg=197 cterm=bold
|
||||
hi Constant ctermfg=141 cterm=bold
|
||||
|
||||
hi DiffDelete ctermfg=125 ctermbg=233
|
||||
|
||||
hi Directory ctermfg=154 cterm=bold
|
||||
hi Error ctermfg=222 ctermbg=233
|
||||
hi Exception ctermfg=154 cterm=bold
|
||||
hi Float ctermfg=141
|
||||
hi Function ctermfg=154
|
||||
hi Identifier ctermfg=208
|
||||
|
||||
hi Keyword ctermfg=197 cterm=bold
|
||||
hi Operator ctermfg=197
|
||||
hi PreCondit ctermfg=154 cterm=bold
|
||||
hi PreProc ctermfg=154
|
||||
hi Repeat ctermfg=197 cterm=bold
|
||||
|
||||
hi Statement ctermfg=197 cterm=bold
|
||||
hi Tag ctermfg=197
|
||||
hi Title ctermfg=203
|
||||
hi Visual ctermbg=238
|
||||
|
||||
hi Comment ctermfg=244
|
||||
hi LineNr ctermfg=239 ctermbg=235
|
||||
hi NonText ctermfg=239
|
||||
hi SpecialKey ctermfg=239
|
||||
endif
|
||||
endif
|
||||
|
||||
# Must be at the end, because of ctermbg=234 bug.
|
||||
# https://groups.google.com/forum/#!msg/vim_dev/afPqwAFNdrU/nqh6tOM87QUJ
|
||||
set background=dark
|
3
layers/base/init.vim
Normal file
3
layers/base/init.vim
Normal file
@ -0,0 +1,3 @@
|
||||
vim9script
|
||||
|
||||
TuiLayer base.options
|
52
layers/base/options.vim
Normal file
52
layers/base/options.vim
Normal file
@ -0,0 +1,52 @@
|
||||
vim9script
|
||||
|
||||
# ******************** line number ********************
|
||||
set number
|
||||
set relativenumber
|
||||
# set numberwidth=2
|
||||
|
||||
# ******************** tab size ********************
|
||||
set tabstop=4
|
||||
set softtabstop=4
|
||||
set shiftwidth=4
|
||||
set expandtab
|
||||
|
||||
# ******************** encoding ********************
|
||||
set encoding=utf-8
|
||||
set termencoding=utf-8
|
||||
set fileencodings="utf-8,gb2312,gbk,ucs-bom,cp936,latin-1"
|
||||
|
||||
## ******************** blank chars ********************
|
||||
set list
|
||||
set listchars=space:·
|
||||
|
||||
## ******************** backup ********************
|
||||
set nobackup
|
||||
set nowritebackup
|
||||
set noswapfile
|
||||
|
||||
## ******************** search ********************
|
||||
set hlsearch
|
||||
set ignorecase
|
||||
set noincsearch
|
||||
|
||||
## ******************** filetype ********************
|
||||
filetype on
|
||||
filetype plugin on
|
||||
filetype indent on
|
||||
|
||||
# ******************** colorscheme ********************
|
||||
set t_Co=256
|
||||
set termguicolors
|
||||
syntax on
|
||||
colorscheme molokai
|
||||
set cursorline
|
||||
|
||||
## ******************** others ********************
|
||||
set nocompatible
|
||||
set nowrap
|
||||
set wildmenu
|
||||
set clipboard+=unnamed
|
||||
set conceallevel=0
|
||||
set mouse=a
|
||||
|
5
layers/init.vim
Normal file
5
layers/init.vim
Normal file
@ -0,0 +1,5 @@
|
||||
vim9script
|
||||
|
||||
TuiLayer base
|
||||
|
||||
# TuiLayer plug
|
Reference in New Issue
Block a user