From 6d9831b2a5ecaa3e61071d19c31eb95662b483f4 Mon Sep 17 00:00:00 2001 From: kyazdani42 Date: Wed, 19 Feb 2020 17:57:36 +0100 Subject: [PATCH] color init in lua --- README.md | 3 +-- lua/lib/colors.lua | 59 ++++++++++++++++++++++++++++++++++++++++++++++ lua/tree.lua | 2 ++ plugin/tree.vim | 50 --------------------------------------- 4 files changed, 62 insertions(+), 52 deletions(-) create mode 100644 lua/lib/colors.lua diff --git a/README.md b/README.md index cdb21e49..7d73bf15 100644 --- a/README.md +++ b/README.md @@ -18,8 +18,6 @@ - [x] Mouse support ## TODO -- [ ] handle colorscheme better (right now its based on random global variables that might not be loaded at vim start) - - [ ] handle permissions properly (TODO: display error on Read access denied) - [ ] buffer / window should not disappear when only the tree is opened - [ ] buffer / window should always stay on the left and never change size (open a file with only the tree open to reproduce this bug) @@ -27,3 +25,4 @@ - [ ] handle symbolic links - [ ] quickly find file in the directory structure - [ ] update tree automatically on window change + diff --git a/lua/lib/colors.lua b/lua/lib/colors.lua new file mode 100644 index 00000000..ee1e3e92 --- /dev/null +++ b/lua/lib/colors.lua @@ -0,0 +1,59 @@ +local cmd = vim.api.nvim_command +local get = vim.api.nvim_get_var + +local colors = { + red = get('terminal_color_1') or 'red', + green = get('terminal_color_2') or 'green', + yellow = get('terminal_color_3') or 'yellow', + blue = get('terminal_color_4') or 'blue', + purple = get('terminal_color_5') or 'purple', + cyan = get('terminal_color_6') or 'cyan', + orange = get('terminal_color_11') or 'orange', + dark_red = get('terminal_color_9') or 'dark red', + lua = '#2947b1' +} + +local HIGHLIGHTS = { + FolderName = { gui = 'bold', fg = colors.blue }, + FolderIcon = { fg = colors.orange }, + + ExecFile = { gui = 'bold', fg = colors.green }, + SpecialFile = { gui = 'bold,underline', fg = colors.yellow }, + ImageFile = { gui = 'bold', fg = colors.blue }, + MarkdownFile = { fg = colors.purple }, + LicenseFile = { fg = colors.yellow }, + YamlFile = { fg = colors.yellow }, + TomlFile = { fg = colors.yellow }, + GitignoreFile = { fg = colors.yellow }, + JsonFile = { fg = colors.yellow }, + + LuaFile = { fg = colors.lua }, + PythonFile = { fg = colors.green }, + ShellFile = { fg = colors.green }, + JavascriptFile = { fg = colors.yellow }, + CFile = { fg = colors.blue }, + ReactFile = { fg = colors.cyan }, + HtmlFile = { fg = colors.orange }, + RustFile = { fg = colors.orange }, + VimFile = { fg = colors.green }, + TypescriptFile = { fg = colors.blue }, + + GitDirty = { fg = colors.dark_red }, + GitStaged = { fg = colors.green }, + GitMerge = { fg = colors.orange }, + GitRenamed = { fg = colors.purple }, + GitNew = { fg = colors.yellow }, + + EndOfBuffer = { fg = 'bg' } +} + +local function init_colors() + for k, d in pairs(HIGHLIGHTS) do + local gui = d.gui or 'NONE' + vim.api.nvim_command('hi def LuaTree'..k..' gui='..gui..' guifg='..d.fg) + end +end + +return { + init_colors = init_colors +} diff --git a/lua/tree.lua b/lua/tree.lua index 88fece73..f8e49f67 100644 --- a/lua/tree.lua +++ b/lua/tree.lua @@ -27,6 +27,8 @@ local git = require 'lib/git' local refresh_git = git.refresh_git local force_refresh_git = git.force_refresh_git +require 'lib/colors'.init_colors() + init_tree() local function toggle() diff --git a/plugin/tree.vim b/plugin/tree.vim index a55bee88..64887f51 100644 --- a/plugin/tree.vim +++ b/plugin/tree.vim @@ -7,56 +7,6 @@ let g:loaded_netrw = 1 let g:loaded_netrwPlugin = 1 " Disable netrw hi def link LuaTreePopup Normal -hi def LuaTreeEndOfBuffer guifg=bg - -if exists('g:terminal_color_0') - let s:bg = g:terminal_color_0 - let s:fg = g:terminal_color_7 - - let s:red = g:terminal_color_1 - let s:green = g:terminal_color_2 - let s:yellow = g:terminal_color_3 - let s:blue = g:terminal_color_4 - let s:purple = g:terminal_color_5 - let s:cyan = g:terminal_color_6 - let s:orange = g:terminal_color_11 - - let s:dark_red = g:terminal_color_9 - let s:visual_grey = g:terminal_color_8 - let s:comment_grey = g:terminal_color_15 - let s:luacolor = '#2947b1' - - execute 'hi def LuaTreeFolderName gui=bold guifg='.s:blue - execute 'hi def LuaTreeFolderIcon guifg='.s:orange - - execute 'hi def LuaTreeExecFile gui=bold guifg='.s:green - execute 'hi def LuaTreeSpecialFile gui=bold,underline guifg='.s:yellow - execute 'hi def LuaTreeImageFile gui=bold guifg='.s:purple - - execute 'hi def LuaTreeMarkdownFile guifg='.s:purple - execute 'hi def LuaTreeLicenseFile guifg='.s:yellow - execute 'hi def LuaTreeYamlFile guifg='.s:yellow - execute 'hi def LuaTreeTomlFile guifg='.s:yellow - execute 'hi def LuaTreeGitignoreFile guifg='.s:yellow - execute 'hi def LuaTreeJsonFile guifg='.s:yellow - - execute 'hi def LuaTreeLuaFile guifg='s:luacolor - execute 'hi def LuaTreePythonFile guifg='.s:green - execute 'hi def LuaTreeShellFile guifg='.s:green - execute 'hi def LuaTreeJavascriptFile guifg='.s:yellow - execute 'hi def LuaTreeCFile guifg='.s:blue - execute 'hi def LuaTreeReactFile guifg='.s:cyan - execute 'hi def LuaTreeHtmlFile guifg='.s:orange - execute 'hi def LuaTreeRustFile guifg='.s:orange - execute 'hi def LuaTreeVimFile guifg='.s:green - execute 'hi def LuaTreeTypescriptFile guifg='.s:blue - - execute 'hi def LuaTreeGitDirty guifg='.s:dark_red - execute 'hi def LuaTreeGitStaged guifg='.s:green - execute 'hi def LuaTreeGitMerge guifg='.s:orange - execute 'hi def LuaTreeGitRenamed guifg='.s:purple - execute 'hi def LuaTreeGitNew guifg='.s:yellow -endif au BufWritePost * lua require'tree'.refresh()