rrethy / base16-nvim Goto Github PK
View Code? Open in Web Editor NEWNeovim plugin for building a sync base16 colorscheme. Includes support for Treesitter and LSP highlight groups.
License: MIT License
Neovim plugin for building a sync base16 colorscheme. Includes support for Treesitter and LSP highlight groups.
License: MIT License
I am not using any kind of plugin manager and would like to manually use these. How can I do that?
The commit db39dbb overhauls a number of highlight groups, and to me changes the expected behavior of YAML highlighting (but perhaps the treesitter grammar is incorrect here!).
From current chriskempson/base16
's README.md:
This repo has been deprecated and has been moved to this repo. Development has moved to the base16-project org. We will be accepting PRs over there (for schemes, templates, and spec changes) and continue development of base16 led by the community.
Unfortunately, because no admins of this repo are around any more, we cannot transfer this repo and are limited to a hard fork. Eventually we plan to go through the PRs and issues of the original repos, but that may take a bit of time. If you'd like to expedite the process, please open a new PR or issue against the the new repo and link back to the original.
And there is a ton of new schemes added to the new base16-schemes repo that nvim-base16 is currently missing. We should probably add them!
Treesitter commit nvim-treesitter/nvim-treesitter@42ab95d removed support for legacy hightlight groups TS*. and so highlighting via this colorscheme is currently broken for treesitter groups.
Telescope and other plugins are missing the border, title in the results window, etc.
Errors and many common groups, which should be distinct, share the same color - base08
.
I think these should have a different color to easily tell apart from error:
Macro
Character
Identifier
Statement
TSCharacter
TSConstMacro
TSNamespace
TSVariable
TSVariableBuiltin
These also should be considered for a change:
Debug
Underlined
VisualNOS
WildMenu
DiffFile
TSException
The question is whether we use already used color for them like base08
- base0E
or one (or both) of these that look like and are not used at all: base06
or base07
.
Hi,
I found about with_config
function while searching the issues. Looks like this isn't documented in the README or help doc.
Can you consider adding it to the docs for visibility?
-- To disable highlights for supported plugin(s), call the `with_config` function **before** setting the colorscheme.
-- default options
require('base16-colorscheme').with_config({
telescope = true,
indentblankline = true,
notify = true,
ts_rainbow = true,
cmp = true,
illuminate = true,
})
Also, about accessing colors from colorscheme
-- You can get the colors **after** setting the colorscheme by -
local color = require('base16-colorscheme').colors.base0X -- (where X can be 0 - 9 or A - F)
Thanks
I'm an avid user of nvim-base16 and I recently started to use bufferline.nvim. I also automatically change the colorscheme of my desktop (incl. neovim) on sunrise and sunset. This amounts to reloading a lua file that looks like
vim.opt.background = light
vim.cmd([[colorscheme base16-atelier-forest-light]])
This works great for everything except the bufferline, which does not change to a base16 theme and instead stays the previous theme. I have tested with different themes, and only nvim-base16 exhibits this behaviour (i.e. gruvbox -> base16 fails to work, but base16 -> gruvbox works fine).
See akinsho/bufferline.nvim#490, which this issue supersedes.
There is currently no license specified, please consider providing one as otherwise no one but the author has any right to use, modify, distribute, etc.
indent-blankline changed their hightlight groups in v3. It would be great if nvim-base16 supported them for getting the old behavior back. It's currently possible to use IndentBlanklineChar
as it is already defined. Still would be nice to get the old colors back.
indent = {
char = '│',
tab_char = '│',
highlight = { "IndentBlanklineChar" },
},
I'm yet to find the proper way of solving this.
My problem is with a piece of text that's current CursorLine
and also highlighted with Search
group:
In the above screenshot, inside the red circle, it should say NewWorker
that's highlighted in yellow.
The highlight group of this is CocListLine
and Search
. And here is the styles for these two groups:
:hi Search
Search xxx ctermfg=0 ctermbg=11 guifg=#393939 guibg=#ffcc66
:hi CursorLine
CursorLine xxx cterm=underline guibg=#393939
:hi CocListLine
CocListLine xxx links to CursorLine
If I set a CocListLine
group explicitly, it works:
au ColorScheme * hi CocListLine cterm=underline guibg=Grey40
It looks like this:
i have the following configuration in nvim/lua/custom/plugins/init.lua
return {
-- use base16 colors in vim (along with terminal, tmux, etc.)
{
"nvim-base16",
config = function() {
local colorscheme = require('base16-colorscheme')
colorscheme.setup({
base00 = '#21201e', base01 = '#292929', base02 = '#383838', base03 = '#585858',
base04 = '#b6b8b8', base05 = '#d6d8d8', base06 = '#e6e8e8', base07 = '#fbffff',
base08 = '#bc404e', base09 = '#dc965f', base0A = '#fadc68', base0B = '#96be0e',
base0C = '#46bdb4', base0D = '#389ED5', base0E = '#b295f0', base0F = '#a16946',
})
}
}
}
I'm not seeing an colorscheme change, however. Is this how setup
should be called with in Neovim + Neochad?
Some plugins rely on the g:base16_gui0?
to work:
Original base16 repo: https://github.com/chriskempson/base16-vim/blob/master/colors/base16-3024.vim#L19
Can we expose here too? My lightline setup will be a bit complicated if I want to get the values in Lua and pass to vimscript.
Thanks for the awesome repo BTW :)
It would be great if themes in this repo would also set vim.o.background
, which is used by some plugins.
For example, https://github.com/nvim-tree/nvim-web-devicons, use this variable to select different colors for icons
One advantage of of the original base16 is that it's possible to use with terminals that don't support true color (for example mosh). This implementation enables termguicolors, which breaks mosh. Is there a hard dependency on termgui or can the theme use ctermfg/bg instead?
When launching nvim:
Error detected while processing /Users/osennyaya/.vim/plugged/nvim-base1
6/colors/base16-default-dark.vim:
line 2:
E5108: Error executing lua ...yaya/.vim/plugged/nvim-base16/lua/base16-c
olorscheme.lua:20: attempt to index local 'args' (a nil value)
NVIM v0.5.0
Build type: Release
LuaJIT 2.1.0-beta3
Compilation: clang -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1 -DNVIM_TS_HAS_SET_MATCH_LIMIT -O2 -DNDEBUG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=auto -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/tmp/neovim-20210702-97973-1wtbty6/neovim-0.5.0/build/config -I/tmp/neovim-20210702-97973-1wtbty6/neovim-0.5.0/src -I/opt/homebrew/include -I/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include -I/opt/homebrew/opt/gettext/include -I/tmp/neovim-20210702-97973-1wtbty6/neovim-0.5.0/build/src/nvim/auto -I/tmp/neovim-20210702-97973-1wtbty6/neovim-0.5.0/build/include
Compiled by [email protected]
Features: +acl +iconv +tui
Hi,
I noticed I'm not getting undercurls for Diagnostic warnings, but yellow underlines. I checked what's happening, and noticed that colorscheme defines DiagnosticUnderlineWarning
, while Neovim master changed it to be DiagnosticUnderlineWarn
. I think this is the only one that changed, other seems fine.
Adding just another link to DiagnosticUnderlineWarn
should solve the issue. Link to docs https://github.com/neovim/neovim/blob/e921e98ce38a33a824a8b4efb376a9901a8191d7/runtime/doc/diagnostic.txt#L228
I've been using this plugin for a while now and I'm very grateful for that. However I noticed some issues with the highlighting when tree-sitter is on. I am using neovim 0.8.1. There are those 3 that I have in mind (with screenshots, first with tree-sitter on then with tree-sitter off) :
For the moment I use this workaround for the first two issues (in case someone is interested :
vim.api.nvim_set_hl(0, "@tag", { link = "Identifier" })
vim.api.nvim_set_hl(0, "@type.qualifier", { link = "Keyword" })
I have not found a good workaround for the third one yet.
It would be nice if those things were handled by the colorscheme itself.
Thanks again for your work !
EDIT: I created a pull request that solves this issue (It might not be the best way to do it, I'm really no expert on that subject but I thought I would give it a try).
For the newbies to Packer, do the following to install and use this repo:
vim.cmd('colorscheme base16-everforest')
require('settings')
require('base16-colorscheme')
use {'RRethy/nvim-base16'}
:PackerCompile
:PackerClean
:PackerInstall
:PackerSync
Almost all base16 plugin have name prefixed by base16-
(refer to this repo). However the colorscheme name provided by this plugin do follow the norm leading to issue regarding interfacing with other software.
For instance, I use base16-shell which produces a file ~/.vimrc_background
. The file can be sourced directly in nvim to get a same colorsheme in nvim. However, as the colorscheme name in this plugin differ, so this lead to error.
" gray
highlight! CmpItemAbbrDeprecated guibg=NONE gui=strikethrough guifg=#808080
" blue
highlight! CmpItemAbbrMatch guibg=NONE guifg=#569CD6
highlight! CmpItemAbbrMatchFuzzy guibg=NONE guifg=#569CD6
" light blue
highlight! CmpItemKindVariable guibg=NONE guifg=#9CDCFE
highlight! CmpItemKindInterface guibg=NONE guifg=#9CDCFE
highlight! CmpItemKindText guibg=NONE guifg=#9CDCFE
" pink
highlight! CmpItemKindFunction guibg=NONE guifg=#C586C0
highlight! CmpItemKindMethod guibg=NONE guifg=#C586C0
" front
highlight! CmpItemKindKeyword guibg=NONE guifg=#D4D4D4
highlight! CmpItemKindProperty guibg=NONE guifg=#D4D4D4
highlight! CmpItemKindUnit guibg=NONE guifg=#D4D4D4
Is it possible to re-export the syntactic sugar for setting highlight groups in base16-colorscheme.lua
? This was a nice ability I was using to set additional highlight groups.
-- local colorscheme = require('colorscheme')
-- local hi = colorscheme.highlight
-- hi.Comment = { guifg='#ffffff', guibg='#000000', gui='italic', guisp=nil }
-- hi.LspDiagnosticsDefaultError = 'DiagnosticError' -- Link to another group
vs
local hi = setmetatable({}, { ...
Thank you for porting base16 to neovim.
This recent commit ffee7e0 causes some cosmetic issues on my telescope. The boarders are removed now.
Even later commit ca3ee83 did not fix the issue.
My setup:
colorscheme: base16_gruvbox-dark-hard
I ➜ nvim --version
NVIM v0.6.1
Build type: Release
LuaJIT 2.1.0-beta3
Compiled by linuxbrew@a1e553b903c7
Features: +acl +iconv +tui
See ":help feature-compile"
system vimrc file: "$VIM/sysinit.vim"
fall-back for $VIM: "
/home/linuxbrew/.linuxbrew/Cellar/neovim/0.6.1/share/nvim"
Run :checkhealth for more info
I ➜ echo $TERM
xterm-256color
I ➜ cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=20.04
DISTRIB_CODENAME=focal
DISTRIB_DESCRIPTION="Ubuntu 20.04.3 LTS"
I ➜ gnome-terminal --version
# GNOME Terminal 3.36.2 using VTE 0.60.3 +BIDI +GNUTLS +ICU +SYSTEMD
EDIT1:
Border fg and bg has the same colour.
:hi TelescopeBorder
TelescopeBorder xxx guifg=#1a1c1d guibg=#1a1c1d
I have a custom colorscheme that uses transparent
as its base00
color, but after ca3ee83 this no longer works since it now requires the color to be in hexadecimal. Are non-hexadecimal colors no longer supported or is this considered a bug?
After the recent updates, I started getting this warning when setting any color scheme from this plugin:
Error executing lua ...pack/packer/start/nvim-base16/lua/base16-colorscheme.lua:298: attempt to index field 'colorschemes' (a boolean value)
Hi, since the last commit (330819c) I've been getting the error:
attempt to index field 'highlight' (a nil value)
Due to the highlight
field no longer being accessible.
I was using this field to tweak some groups, mostly to remove background color, and other minor changes.
Could this field be made accessible again?
Getting the following error when launching nvim:
Error detected while processing ~/.config/nvim/init.lua:
E5113: Error while calling lua chunk: .../nvim/plugged/nvim-base16/lua/base16-colorscheme.lua:41: attempt to index global 'bit' (a nil
value)
Using nvim 0.5.0 on OpenBSD. Plugin installed via Plug 'RRethy/nvim-base16'
(vim-plug).
NVIM v0.5.0
Build type: Release
Lua 5.1
Compilation: /usr/obj/ports/neovim-0.5.0/bin/cc -O2 -pipe -g -DNDEBUG -Wall -Wextra -pedantic -Wno-unused-parameter -Wstrict-prototypes -std=gnu99 -Wshadow -Wconversion -Wmissing-prototypes -Wimplicit-fallthrough -Wvla -fstack-protector-strong -fno-common -fdiagnostics-color=always -DINCLUDE_GENERATED_DECLARATIONS -D_GNU_SOURCE -DNVIM_MSGPACK_HAS_FLOAT32 -DNVIM_UNIBI_HAS_VAR_FROM -DMIN_LOG_LEVEL=3 -I/usr/obj/ports/neovim-0.5.0/build-amd64/config -I/usr/obj/ports/neovim-0.5.0/neovim-0.5.0/src -I/usr/local/include -I/usr/obj/ports/neovim-0.5.0/build-amd64/deps/include -I/usr/obj/ports/neovim-0.5.0/build-amd64/src/nvim/auto -I/usr/obj/ports/neovim-0.5.0/build-amd64/include
Compiled by [email protected]
Thanks
Commit ca3ee83 broke telescope appearance for me:
minimal.lua
:
vim.cmd [[set runtimepath=$VIMRUNTIME]]
vim.cmd [[set packpath=/tmp/nvim/site]]
local package_root = '/tmp/nvim/site/pack'
local install_path = package_root .. '/packer/start/packer.nvim'
local function load_plugins()
require('packer').startup {
{
'wbthomason/packer.nvim',
{
'nvim-telescope/telescope.nvim',
'RRethy/nvim-base16',
requires = {
'nvim-lua/plenary.nvim',
},
},
-- ADD PLUGINS THAT ARE _NECESSARY_ FOR REPRODUCING THE ISSUE
},
config = {
package_root = package_root,
compile_path = install_path .. '/plugin/packer_compiled.lua',
display = { non_interactive = true },
},
}
end
_G.load_config = function()
vim.cmd('colorscheme base16-3024')
require('telescope').setup{}
end
if vim.fn.isdirectory(install_path) == 0 then
print("Installing Telescope and dependencies.")
vim.fn.system { 'git', 'clone', '--depth=1', 'https://github.com/wbthomason/packer.nvim', install_path }
end
load_plugins()
require('packer').sync()
vim.cmd [[autocmd User PackerComplete ++once echo "Ready!" | lua load_config()]]
This is how it looks like without base16:
motivation: i have some personal configuration that changes the colors of highlight groups based on g:terminal_color_*
which is setup to be called every time the ColorScheme
event is fired. calling setup
with colors is morally changing the colorscheme, but does not fire the ColorScheme
event, so if the colors change in that way (via PackerCompile
or loading a different colorscheme) the my code isn't executed.
there might be other users / plugins that rely on this behavior ¯\_(ツ)_/¯
Hi and thank you for providing this plugin!
I'm using chriskempson/base16-shell to set colors in the shell and then have other tools automatically pick them up.
Before switching to tree-sitter highlighting and this plugin, I was using chriskempson/base16-vim, which seems (or so I understand) to pick colors from the terminal using let s:cterm03 = "08"
...
I tried setting such colors using require('base16-colorscheme').setup
as documented but all colors turn gray. I tried setting
base03 = 08
, base03 = '08'
... but none work. RGB color codes such as base03='#a06949'
work as intended.
Hello, I really like this plugin but the startup time is the highest of all the ones that I use.
I had narrowed it down to the fact that all the pre-generated colorschemes that come with the plugin are being loaded. Personally I only use the setup function.
Would it be possible to have a global variable that disables their loading?
packer.nvim
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Config for nvim-base16 took 17.354075ms
Config for project.nvim took 14.708446ms
Config for nvim-lspconfig took 9.508393ms
Config for nvim-treesitter took 9.252348ms
Config for nvim-cmp took 8.996212ms
Config for lsp_signature.nvim took 7.825639ms
Config for gitsigns.nvim took 4.46996ms
Config for tmux.nvim took 4.246931ms
Config for trouble.nvim took 3.200527ms
Config for null-ls.nvim took 3.092508ms
Sequenced loading took 2.784325ms
Config for nvim-autopairs took 1.733642ms
Config for bufferline.nvim took 1.571235ms
Config for telescope.nvim took 1.231046ms
Config for packer.nvim took 1.145581ms
Config for focus.nvim took 0.995793ms
Config for zen-mode.nvim took 0.879829ms
Config for lualine.nvim took 0.625843ms
Config for Comment.nvim took 0.554153ms
Config for nvim-lightbulb took 0.445033ms
Config for nvim-dd took 0.28792ms
Defining lazy-load commands took 0.095843ms
Config for which-key.nvim took 0.066534ms
Defining lazy-load filetype autocommands took 0.058176ms
Sourcing ftdetect script at: /home/nimai/.local/share/nvim/site/pack/packer/opt/rest.nvim/ftdetect/http.vim took 0.038748ms
Defining lazy-load keymaps took 0.035731ms
Config for indent-o-matic took 0.022235ms
Defining packer_plugins took 0.006327ms
Config for registers.nvim took 0.002979ms
Luarocks path setup took 0.002476ms
try_loadstring definition took 0.000252ms
#76 introduced a crash when $TMUX
is not empty but $BASE16_THEME
is empty since M.colorschemes[vim.env.BASE16_THEME]
will be M.colorschemes[nil]
which crashes the metatable accessor.
Your project is incredible, however there are languages where the theme simply goes wrong or in the worst case some reserved words are not highlighted
Hey, I tried to set schemer-dark and medium colorschemes, but it says colorscheme not found.
Tried looking inside the repo folders, but no luck.
Is there any way to add it , and also I couldn't find it by googling. I dont know if I'm looking it the wrong way. Any advice?
I am moving from my old config to new one on Neovim wich support Lua, so I rewriting it enterily from scratch.
For some reason base16 theme looks bad, here is the video:
No idea how to fix it myself :(
Here is the config: https://github.com/pronvis/configs/tree/nvim_to_lua_cfg/nvim
They currently have base01
as guibg
which isn't the same as SignColumn
's guib
which is base00
. This gives the diff characters in the signcolumn a lighter background than the rest of the signcolumn.
It looks like this was introduced in 841a5e1. With this set, it's overriding the custom icons I have set for Error, Warning, etc. Is there a way to override these? Thanks!
Is it possible to set both a dark and a light theme with this? I.e. set bg=dark
and set bg=light
.
I've noticed its not really good when string (base0B
) and error (base08
) colors are used for https://github.com/p00f/nvim-ts-rainbow (a treesitter plugin, which I've recently added support for).
Strings span over whitespaces so its hard to tell where they end if braces around might have the same color.
Errors bring attention and should not be used lightly, but that's debatable.
I suggest using (currently unused) base06
and base07
. Though if there is a valid reason to avoid using these colors maybe we can simply reduce amount distinct levels.
Using the following treesitter configuration yields the following text on nvim launch, and the colorscheme doesn't apply properly.
Link to my neovim init.vim (note the treesitter config is commented): https://github.com/oryband/dotfiles/blob/d16cb3fd31c040bd83217fe71b8828187b78b9da/.config/nvim/init.vim#L426
lua <<EOF
require'nvim-treesitter.configs'.setup {
ensure_installed = "maintained",
-- Modules and its options go here
highlight = {
enable = true,
disable = {"clojure"},
},
incremental_selection = {
enable = true,
keymaps = {
init_selection = "gnn",
node_incremental = "grn",
scope_incremental = "grc",
node_decremental = "grm",
}
},
indent = {
enable = true,
},
rainbow = {
enable = true,
extended_mode = false,
max_file_lines = 4000,
}
}
require('base16-colorscheme').setup({
base00 = '#2d2d2d',
base01 = '#f2777a',
base02 = '#99cc99',
base03 = '#ffcc66',
base04 = '#6699cc',
base05 = '#cc99cc',
base06 = '#66cccc',
base07 = '#d3d0c8',
base08 = '#747369',
base09 = '#f2777a',
base0a = '#99cc99',
base0b = '#ffcc66',
base0c = '#6699cc',
base0d = '#cc99cc',
base0e = '#66cccc',
base0f = '#d3d0c8',
})
EOF
Directory xxx ctermfg=159 guifg=Cyan
ModeMsg xxx cterm=bold gui=bold
MoreMsg xxx ctermfg=121 gui=bold guifg=SeaGreen
Question xxx ctermfg=121 gui=bold guifg=Green
Conditional xxx links to Statement
Delimiter xxx links to Special
Function xxx links to Identifier
Include xxx links to PreProc
Keyword xxx links to Statement
Label xxx links to Statement
PreProc xxx ctermfg=81 guifg=#ff80ff
Repeat xxx links to Statement
Special xxx ctermfg=224 guifg=Orange
SpecialChar xxx links to Special
StorageClass xxx links to Type
String xxx links to Constant
Structure xxx links to Type
Tag xxx links to Special
Typedef xxx links to Type
Error detected while processing /home/ory/.config/nvim/init.vim:
line 435:
E5108: Error executing lua ...hare/nvim/plugged/nvim-base16/lua/base16-colorscheme.lua:26: Vim(highlight):E411: highlight group not found: gitcommitSummary
Hi,
I'm getting some weird behaviour whith python docstrings, depending on the indentation level and the white space within the docstring I get different coloring. See screenshots bellow.
Note: I'm using the base16-gruvbox-dark-hard colorscheme.
I expect the docstring to be all green regardless of the whitespace and indentation within.
I'm finding these templates a bit too colourful if we compare them to the original ones. Cycling through the various templates I noticed that neutral colours such as white are not very commonly used.
Take base16-nord for example:
In http://chriskempson.com/projects/base16/
In nvim with nvim-base16 with treesitter turned off:
In nvim with nvim-base16 with treesitter turned on:
And this is pretty much the same with all the schemes
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.