Skip to content

Abyss.nvim is a (Neo)Vim colorscheme inspired by Abyss theme in Visual Studio Code.

License

Notifications You must be signed in to change notification settings

barrientosvctor/abyss.nvim

Repository files navigation

abyss.nvim

Unofficial port for (Neo)Vim inspired by the Abyss theme from Visual Studio Code.

This is the latest version of the old abyss.vim, now supporting Vim.

abyss_nvim_video.mp4

⚡️ Requeriments

📦 Installation

You can use any package manager you like.

I highly recommend updating abyss.nvim when a release/tag comes out, since it is possible that there are development commits before that that can cause unexpected errors when using the colorscheme. To do this, make sure to specify a tag in your preferred package manager (if it supports it) before downloading the colorscheme.

Package manager Installation
packer.nvim
use {
    'barrientosvctor/abyss.nvim',
    run = function()
        local status, abyss = pcall(require, 'abyss')
        if not status then return end

        abyss.setup()
    end
}
lazy.nvim
{
    'barrientosvctor/abyss.nvim',
    lazy = false,
    priority = 1000,
    opts = {}
}
Vim-plug
Plug 'barrientosvctor/abyss.nvim'
Vundle.vim
Plugin 'barrientosvctor/abyss.nvim'
Vim's built-in package manager
mkdir -p ~/.vim/pack/colors/start
cd ~/.vim/pack/colors/start
git clone https://github.com/barrientosvctor/abyss.nvim.git

💻 Setup

Abyss.nvim has options to customize your colorscheme instance according to your preferences.

These are the available options for the colorscheme:

require('abyss').setup({
    italic_comments = true, -- Toggle italic comments
    italic = false, -- Toggle italic for function names, keywords, strings and booleans
    bold = false, -- Toggle bold for function names, keywords and booleans
    transparent_background = false, -- Toggle transparency on neovim background
    treesitter = true -- Enable treesitter highlighting. No need to configuration. Default value: (Neovim = true), (Vim = false)
    overrides = {} -- Override the default colorscheme highlight to a any else. Default value: nil
})

Vim Script with Lua

lua << EOF
require("abyss").setup {
    " your setup options
}
EOF

Overwriting highlights

You can be able to use all of nvim_set_hl() function properties to override the colorscheme colors.

local c = require('abyss.colors')

require('abyss').setup({
    overrides = {
        String = { fg = c.heavyyellow, bold = true },
        -- or:
        ['String'] = { fg = "#ffeebb", bold = true },
        -- ...rest of highlight overrides
    }
})

🔌 Plugins supported

🚀 Usage

Vim Script

colorscheme abyss

Lua

vim.cmd.colorscheme 'abyss'

Abyss.nvim also includes a lualine.nvim theme, you can use it setting up into lualine setup options:

require('lualine').setup {
    options = {
        theme = 'abyss'
    }
}

📝 Notes

  • If you have Bufferline.nvim installed in your dotfiles, bufferline should be loaded after setting up abyss.nvim or it will highlight incorrectly. I'll provide you examples about this using Packer.nvim and Lazy.nvim
Click to see Lazy.nvim example
  • Abyss.nvim config
{
    'barrientosvctor/abyss.nvim',
    lazy = false,
    priority = 1000,
    opts = {}
}
  • Bufferline config
{
    'akinsho/bufferline.nvim',
    lazy = true,
    event = "UIEnter",
    -- ...rest of your config
}
Click to see Packer.nvim example
  • Bufferline config
use {
    'akinsho/bufferline.nvim',
    after = 'abyss.nvim',
    -- ...rest of your config
}

👥 Contributing

Any issue or pull request is welcome. In this section, I will guide you to make your first contribution.

  • Before these instructions, it's recommended to before create an issue about your change to talk about it.

  • All branches must be based from develop branch. So, you need to create a new branch based on this one.

$ git switch develop
$ git checkout -b branch-name
  • Make sure to pull the latest commits from develop branch to your branch before make a commit.

  • All pull requests must go from your branch to develop branch.

Merging the pull request

Your pull request should pass all code reviews (if there is) to merge it to develop . These code reviews are GitHub workflows.

Also make sure you don't include any CHANGELOG.md in your pull request so you don't have conflicts with the original file in the main branch.

How should you write your commits?

Refer to release-please-action section.

Syntax highlight groups

If you want to contribute about wrong syntax highlighting on colorscheme. This section will help you to determine what highlight group is being applied to a specific piece of syntax. It'll output the highlight group for the value under the cursor.

Treesitter highlighting

Neovim has included a command with these characteristics. Just type: :Inspect.

Vim highlighting

Add this function to your vimrc:

function! SynStack()
  for i1 in synstack(line("."), col("."))
    let i2 = synIDtrans(i1)
    let n1 = synIDattr(i1, "name")
    let n2 = synIDattr(i2, "name")
    echo n1 "->" n2
  endfor
endfunction

map <F2> <cmd>call SynStack()<cr>

🤗 Acknowledgements