diff -pruN 2.0.0-2/.github/ISSUE_TEMPLATE/bug_report.md 3.6.1-1/.github/ISSUE_TEMPLATE/bug_report.md
--- 2.0.0-2/.github/ISSUE_TEMPLATE/bug_report.md	1970-01-01 00:00:00.000000000 +0000
+++ 3.6.1-1/.github/ISSUE_TEMPLATE/bug_report.md	2023-12-10 23:21:34.000000000 +0000
@@ -0,0 +1,29 @@
+---
+name: Bug report
+about: Create a report to help us improve
+title: ''
+labels: ''
+assignees: ''
+
+---
+
+*Read this before posting and then delete this.*
+
+Before posting, make sure that the issue is not a problem with your terminal emulator or other Vim environment.
+If Gruvbox has highlight groups that are not being rendered correctly in one specific environment, the issue is with the environment.
+However, if Gruvbox has highlight groups with rules that look wrong in every environment, the problem is with Gruvbox.
+If you are not sure, try to use a different environment and/or check the relevant highlight group rules using the `:hi` command.
+
+Additionally, if colors look wrong only after running `gruvbox_256palette.sh`, Gruvbox is likely at fault.
+
+If you decide to post your issue here, please include the relevant information:
+  - Your Vim version
+  - The name and version of any terminal emulator(s) or graphical environment(s) where you recreated the issue
+  - Whether you are running `gruvbox_256palette.sh`
+  - Information on any other relevant external color configuration, such as a terminal emulator theme
+  - A minimal .vimrc
+
+A minimal .vimrc is narrowed down to just the lines that recreate the issue.
+Remove all plugins and settings from your .vimrc and then add them back until you can recreate the issue.
+Doing this makes it much, much more likely that someone else can solve your issue.
+You may even come upon a solution to your issue by following this procedure.
diff -pruN 2.0.0-2/CHANGELOG.md 3.6.1-1/CHANGELOG.md
--- 2.0.0-2/CHANGELOG.md	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/CHANGELOG.md	2023-12-10 23:21:34.000000000 +0000
@@ -1,117 +1,126 @@
-# Change Log
+# Changelog
 
-## [Unreleased](https://github.com/morhetz/gruvbox/tree/HEAD)
+## [Unreleased](https://github.com/gruvbox-community/gruvbox/tree/HEAD)
 
-[Full Changelog](https://github.com/morhetz/gruvbox/compare/v1.3.5...HEAD)
-
-**Fixed bugs:**
-
-- Lighter background on terminal [\#8](https://github.com/morhetz/gruvbox/issues/8)
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v2.2.0...HEAD)
 
 **Closed issues:**
 
-- Installation issue. [\#54](https://github.com/morhetz/gruvbox/issues/54)
-
-- Italic font in terminal\(urxvt\) [\#49](https://github.com/morhetz/gruvbox/issues/49)
-
-- Unable to log in when sourcing the palette shellscript [\#48](https://github.com/morhetz/gruvbox/issues/48)
-
-- How can i modify multiple comment scheme [\#46](https://github.com/morhetz/gruvbox/issues/46)
-
-- Remove comment highlight in iterm [\#44](https://github.com/morhetz/gruvbox/issues/44)
-
-- Comments looking strange withing tmux [\#43](https://github.com/morhetz/gruvbox/issues/43)
-
-- comments are reverse-video in xterm [\#41](https://github.com/morhetz/gruvbox/issues/41)
-
-- What font are you using in the screenshots? [\#39](https://github.com/morhetz/gruvbox/issues/39)
-
-- vim-signature crashes when I use gruvbox [\#38](https://github.com/morhetz/gruvbox/issues/38)
-
-- Color of statusbar in inactive windows [\#37](https://github.com/morhetz/gruvbox/issues/37)
-
-- Go method and struct highlighting missing [\#36](https://github.com/morhetz/gruvbox/issues/36)
-
-- gruvbox\_256palette.sh doesn't work for Konsole [\#35](https://github.com/morhetz/gruvbox/issues/35)
-
-- Contrast in jekyll markdown files [\#33](https://github.com/morhetz/gruvbox/issues/33)
-
-- Pentadactyl Gruvbox Theme [\#32](https://github.com/morhetz/gruvbox/issues/32)
-
-- make vertsplit better [\#31](https://github.com/morhetz/gruvbox/issues/31)
-
-- Console support. [\#30](https://github.com/morhetz/gruvbox/issues/30)
-
-- How can I change the background color? [\#29](https://github.com/morhetz/gruvbox/issues/29)
-
-- Some words are not bold [\#28](https://github.com/morhetz/gruvbox/issues/28)
+- gruvbox gruvbox\_sign\_column [\#133](https://github.com/gruvbox-community/gruvbox/issues/133)
 
-- Terminal theme on base gruvbox [\#25](https://github.com/morhetz/gruvbox/issues/25)
+## [v2.2.0](https://github.com/gruvbox-community/gruvbox/tree/v2.2.0) (2020-05-03)
 
-- Markdown has inverted colors when using \* [\#24](https://github.com/morhetz/gruvbox/issues/24)
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v2.1.0...v2.2.0)
 
-- how install it on mac osx [\#23](https://github.com/morhetz/gruvbox/issues/23)
-
-- Comments color for Terminal Vim [\#22](https://github.com/morhetz/gruvbox/issues/22)
-
-- Move palette files to gruvbox-generalized [\#20](https://github.com/morhetz/gruvbox/issues/20)
-
-- Maybe add Gruvbox Airline theme? [\#19](https://github.com/morhetz/gruvbox/issues/19)
+**Closed issues:**
 
-- For Sublime text [\#18](https://github.com/morhetz/gruvbox/issues/18)
+- Lightline with gruvbox [\#125](https://github.com/gruvbox-community/gruvbox/issues/125)
+- Cursor over highlight off in Vimr [\#121](https://github.com/gruvbox-community/gruvbox/issues/121)
+- `Last Modified` date of `gruvbox.vim` still says ` 12 Aug 2017` [\#119](https://github.com/gruvbox-community/gruvbox/issues/119)
+- Cursorline highlighting destroys syntax highlighting in Windows command prompt [\#117](https://github.com/gruvbox-community/gruvbox/issues/117)
+- How can I make the GUI version look like the terminal version+notermguicolors? [\#116](https://github.com/gruvbox-community/gruvbox/issues/116)
+- CSS properties get different colors [\#114](https://github.com/gruvbox-community/gruvbox/issues/114)
+- Light mode is different from the sample picture  [\#112](https://github.com/gruvbox-community/gruvbox/issues/112)
+- Weird highlight with easymotion [\#111](https://github.com/gruvbox-community/gruvbox/issues/111)
+- Switch terminal color codes of aqua and neutral blue [\#109](https://github.com/gruvbox-community/gruvbox/issues/109)
+- Digraph characters are hard to see [\#106](https://github.com/gruvbox-community/gruvbox/issues/106)
+- Python Function highlighting once declared. [\#105](https://github.com/gruvbox-community/gruvbox/issues/105)
+- XML looks silly since dd4114fdb4 [\#103](https://github.com/gruvbox-community/gruvbox/issues/103)
+- gruvbox is interfering with Typescript indent [\#102](https://github.com/gruvbox-community/gruvbox/issues/102)
+- Light mode in gvim shows numbers in \#C7F1FB until reload [\#100](https://github.com/gruvbox-community/gruvbox/issues/100)
+- vim\_did\_enter is not available in older versions [\#99](https://github.com/gruvbox-community/gruvbox/issues/99)
+- Modify XML Colors [\#96](https://github.com/gruvbox-community/gruvbox/issues/96)
+- Override specific colors [\#68](https://github.com/gruvbox-community/gruvbox/issues/68)
+- Hard to read y/n questions on dark b/g [\#66](https://github.com/gruvbox-community/gruvbox/issues/66)
+- Cannot see cursor in insert mode [\#65](https://github.com/gruvbox-community/gruvbox/issues/65)
+- Flag to Indicate Gruvbox Loaded [\#64](https://github.com/gruvbox-community/gruvbox/issues/64)
+- Support changing background [\#62](https://github.com/gruvbox-community/gruvbox/issues/62)
+- Faded aqua \(\#427b58\) and neutral blue \(\#458588\) have same terminal colors [\#60](https://github.com/gruvbox-community/gruvbox/issues/60)
+- gruvbox golang [\#56](https://github.com/gruvbox-community/gruvbox/issues/56)
+- Can't define color palette solely in Xresources with g:gruvbox\_termcolors = 16 [\#50](https://github.com/gruvbox-community/gruvbox/issues/50)
+- 256 are used when inside tmux instead of truecolor [\#48](https://github.com/gruvbox-community/gruvbox/issues/48)
+- Scrolling breaks gruvbox  [\#49](https://github.com/gruvbox-community/gruvbox/issues/49)
+- Some lines's background is discolored [\#43](https://github.com/gruvbox-community/gruvbox/issues/43)
+- "Buffers" in top bar is grey  [\#39](https://github.com/gruvbox-community/gruvbox/issues/39)
+- A suggestion for error foreground color [\#38](https://github.com/gruvbox-community/gruvbox/issues/38)
+- Fish integration [\#37](https://github.com/gruvbox-community/gruvbox/issues/37)
+- GruvBox red is displaying kinda orange [\#34](https://github.com/gruvbox-community/gruvbox/issues/34)
+- Unable to configure colors for vim-sneak plugin [\#33](https://github.com/gruvbox-community/gruvbox/issues/33)
+- Gruvbox is broken in neovim [\#31](https://github.com/gruvbox-community/gruvbox/issues/31)
+- Regular status line looks a little off... [\#29](https://github.com/gruvbox-community/gruvbox/issues/29)
+- update release [\#27](https://github.com/gruvbox-community/gruvbox/issues/27)
+- Airline theme breaks with transparent vim windows. [\#20](https://github.com/gruvbox-community/gruvbox/issues/20)
+- C++ comment highlighting [\#22](https://github.com/gruvbox-community/gruvbox/issues/22)
+- ^ and \_ highlighted as red [\#19](https://github.com/gruvbox-community/gruvbox/issues/19)
+- update airline theme for new command mode [\#17](https://github.com/gruvbox-community/gruvbox/issues/17)
+- rust syntax [\#14](https://github.com/gruvbox-community/gruvbox/issues/14)
+- Support for the fzf.vim [\#15](https://github.com/gruvbox-community/gruvbox/issues/15)
+- support golang Syntax ? [\#10](https://github.com/gruvbox-community/gruvbox/issues/10)
+- Colors not vivid [\#9](https://github.com/gruvbox-community/gruvbox/issues/9)
+- Add airline\_term section in order to correctly color Terminal buffer's statusline [\#6](https://github.com/gruvbox-community/gruvbox/issues/6)
+- ALE not displaying errors when using gruvbox [\#5](https://github.com/gruvbox-community/gruvbox/issues/5)
 
 **Merged pull requests:**
 
-- Fix the 256 palette script failed login issue [\#53](https://github.com/morhetz/gruvbox/pull/53) ([jonasmalacofilho](https://github.com/jonasmalacofilho))
-
-- add minimal coloring for gitcommit highlighting [\#52](https://github.com/morhetz/gruvbox/pull/52) ([daniely](https://github.com/daniely))
-
-- For terminals, turn off italics by default. [\#47](https://github.com/morhetz/gruvbox/pull/47) ([ryanmjacobs](https://github.com/ryanmjacobs))
-
-- Change color of vertical/horizontal seperators between split windows [\#45](https://github.com/morhetz/gruvbox/pull/45) ([deshtop](https://github.com/deshtop))
-
-- Improve gruvbox with C code [\#34](https://github.com/morhetz/gruvbox/pull/34) ([gladiac](https://github.com/gladiac))
-
-- Fix for linux console [\#27](https://github.com/morhetz/gruvbox/pull/27) ([vyp](https://github.com/vyp))
+- Remove gitgutter settings [\#132](https://github.com/gruvbox-community/gruvbox/pull/132) ([ndreas](https://github.com/ndreas))
+- lightline: Fix normal.warning readability [\#131](https://github.com/gruvbox-community/gruvbox/pull/131) ([polyzen](https://github.com/polyzen))
+- add support for CocHighlightText in coc.nvim [\#127](https://github.com/gruvbox-community/gruvbox/pull/127) ([phphong](https://github.com/phphong))
+- Add highlight support for coc.nvim [\#124](https://github.com/gruvbox-community/gruvbox/pull/124) ([RicardoMing](https://github.com/RicardoMing))
+- Highlight keywords for vim-javascript [\#123](https://github.com/gruvbox-community/gruvbox/pull/123) ([gbrlsnchs](https://github.com/gbrlsnchs))
+- Add highlight for ALE virtual text. [\#122](https://github.com/gruvbox-community/gruvbox/pull/122) ([kristijanhusak](https://github.com/kristijanhusak))
+- Fix Airline for Terminal mode [\#120](https://github.com/gruvbox-community/gruvbox/pull/120) ([phddoom](https://github.com/phddoom))
+- Fix "Illegal variable name: a:color" issues vim 8.1+ [\#115](https://github.com/gruvbox-community/gruvbox/pull/115) ([eddyg](https://github.com/eddyg))
+- Change SpecialKey group color [\#113](https://github.com/gruvbox-community/gruvbox/pull/113) ([bronzehedwick](https://github.com/bronzehedwick))
+- Add colors for fzf status line [\#110](https://github.com/gruvbox-community/gruvbox/pull/110) ([efnull](https://github.com/efnull))
+- Add C\# groups from vim runtime files [\#95](https://github.com/gruvbox-community/gruvbox/pull/95) ([nickspoons](https://github.com/nickspoons))
 
-- Colors for plugin vimshell.vim [\#21](https://github.com/morhetz/gruvbox/pull/21) ([joelmo](https://github.com/joelmo))
+## [v2.1.0](https://github.com/gruvbox-community/gruvbox/tree/v2.1.0) (2019-05-28)
 
-## [v1.3.5](https://github.com/morhetz/gruvbox/tree/v1.3.5) (2014-03-19)
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v2.0.0...v2.1.0)
 
-[Full Changelog](https://github.com/morhetz/gruvbox/compare/v0.0.8...v1.3.5)
-
-**Implemented enhancements:**
-
-- Better selection colors [\#15](https://github.com/morhetz/gruvbox/issues/15)
-
-- When hlsearch is on, the cursor inverts the search color and not visible [\#2](https://github.com/morhetz/gruvbox/issues/2)
-
-**Fixed bugs:**
-
-- Problem with changing between dark and light on 256 color terminal [\#7](https://github.com/morhetz/gruvbox/issues/7)
+**Closed issues:**
 
-- IndentGuides coloring doesn't show up [\#1](https://github.com/morhetz/gruvbox/issues/1)
+- Highlight for spelling errors is switched? [\#28](https://github.com/gruvbox-community/gruvbox/issues/28)
+- Haskell highlighting is broken [\#24](https://github.com/gruvbox-community/gruvbox/issues/24)
+- Font/Typeface in readme -- link broken [\#7](https://github.com/gruvbox-community/gruvbox/issues/7)
 
-**Closed issues:**
+**Merged pull requests:**
 
-- Requesting rxvt-unicode theme [\#17](https://github.com/morhetz/gruvbox/issues/17)
+- fbterm support for palette script [\#92](https://github.com/gruvbox-community/gruvbox/pull/92) ([rbong](https://github.com/rbong))
+- improve readability for lighline's middle section [\#91](https://github.com/gruvbox-community/gruvbox/pull/91) ([rbong](https://github.com/rbong))
+- Modified HTML colors for easier reading [\#90](https://github.com/gruvbox-community/gruvbox/pull/90) ([rbong](https://github.com/rbong))
+- Update URL for Fira Mono [\#89](https://github.com/gruvbox-community/gruvbox/pull/89) ([rbong](https://github.com/rbong))
+- Spelling: Switch capital/bad word colors [\#88](https://github.com/gruvbox-community/gruvbox/pull/88) ([rbong](https://github.com/rbong))
+- Fix the Haskell colors against haskell-vim. [\#87](https://github.com/gruvbox-community/gruvbox/pull/87) ([rbong](https://github.com/rbong))
+- JS styling improvements [\#86](https://github.com/gruvbox-community/gruvbox/pull/86) ([rbong](https://github.com/rbong))
+- Adding mail specific highlighting [\#85](https://github.com/gruvbox-community/gruvbox/pull/85) ([rbong](https://github.com/rbong))
+- Added color for QuickFixLine \(matches Error\) [\#84](https://github.com/gruvbox-community/gruvbox/pull/84) ([rbong](https://github.com/rbong))
+- Add tabline\_sel option to costumize selected tab foreground color [\#83](https://github.com/gruvbox-community/gruvbox/pull/83) ([rbong](https://github.com/rbong))
+- Link pangloss jsFuncCall to GruvboxBlue. [\#82](https://github.com/gruvbox-community/gruvbox/pull/82) ([rbong](https://github.com/rbong))
+- Treat C++ operators like C operators [\#81](https://github.com/gruvbox-community/gruvbox/pull/81) ([rbong](https://github.com/rbong))
+- fix $TERM check for tmux:  [\#79](https://github.com/gruvbox-community/gruvbox/pull/79) ([rbong](https://github.com/rbong))
+- Docs: Add license [\#78](https://github.com/gruvbox-community/gruvbox/pull/78) ([rbong](https://github.com/rbong))
+- Add support for MaxMEllon/vim-jsx-pretty [\#77](https://github.com/gruvbox-community/gruvbox/pull/77) ([rbong](https://github.com/rbong))
+- Airline: replace CursorLine color by StatusLineNC [\#76](https://github.com/gruvbox-community/gruvbox/pull/76) ([rbong](https://github.com/rbong))
+-  Customizable hlsearch highlight color \(similar to hls\_cursor setting\) [\#73](https://github.com/gruvbox-community/gruvbox/pull/73) ([rbong](https://github.com/rbong))
+- Set terminal colors in Vim with termguicolors [\#70](https://github.com/gruvbox-community/gruvbox/pull/70) ([rbong](https://github.com/rbong))
 
-- gruvbox\_256palette.sh gets reset \(gnome-terminal on Ubuntu\) [\#13](https://github.com/morhetz/gruvbox/issues/13)
+## [v2.0.0](https://github.com/gruvbox-community/gruvbox/tree/v2.0.0) (2015-09-04)
 
-- Powerline colors [\#12](https://github.com/morhetz/gruvbox/issues/12)
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v1.9.3...v2.0.0)
 
-- Info necessary for making a port of this colorscheme [\#10](https://github.com/morhetz/gruvbox/issues/10)
+## [v1.9.3](https://github.com/gruvbox-community/gruvbox/tree/v1.9.3) (2015-09-02)
 
-**Merged pull requests:**
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v1.3.5...v1.9.3)
 
-- Fix GNU screen detection for \*-bce [\#16](https://github.com/morhetz/gruvbox/pull/16) ([blueyed](https://github.com/blueyed))
+## [v1.3.5](https://github.com/gruvbox-community/gruvbox/tree/v1.3.5) (2014-03-19)
 
-- Added iTerm2 dark theme [\#11](https://github.com/morhetz/gruvbox/pull/11) ([Greduan](https://github.com/Greduan))
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/v0.0.8...v1.3.5)
 
-- Fix typo in Readme [\#5](https://github.com/morhetz/gruvbox/pull/5) ([ViViDboarder](https://github.com/ViViDboarder))
+## [v0.0.8](https://github.com/gruvbox-community/gruvbox/tree/v0.0.8) (2012-12-08)
 
-## [v0.0.8](https://github.com/morhetz/gruvbox/tree/v0.0.8) (2012-12-08)
+[Full Changelog](https://github.com/gruvbox-community/gruvbox/compare/bb16902f688648f85df9a6aa01986297b8cd9af4...v0.0.8)
 
 
 
-\* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
\ No newline at end of file
+\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
diff -pruN 2.0.0-2/LICENSE.md 3.6.1-1/LICENSE.md
--- 2.0.0-2/LICENSE.md	1970-01-01 00:00:00.000000000 +0000
+++ 3.6.1-1/LICENSE.md	2023-12-10 23:21:34.000000000 +0000
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2018 Pavel Pertsev
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff -pruN 2.0.0-2/README.md 3.6.1-1/README.md
--- 2.0.0-2/README.md	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/README.md	2023-12-10 23:21:34.000000000 +0000
@@ -1,4 +1,4 @@
-<p align="center"><img src="https://imgrush.com/h0EfiWAdb4Ke.svg"></p>
+<p align="center"><img src="https://raw.githubusercontent.com/wiki/gruvbox-community/gruvbox/images/gruvbox.svg?sanitize=true"></p>
 
 gruvbox is heavily inspired by [badwolf][], [jellybeans][] and [solarized][].
 
@@ -8,19 +8,24 @@ Designed as a bright theme with pastel '
    [jellybeans]: https://github.com/nanotech/jellybeans.vim
    [solarized]: http://ethanschoonover.com/solarized
 
+This is a community fork of gruvbox, created to merge recent pull requests and fix recent issues.
+
+If you would like to help gruvbox community edition, please consider becoming a maintainer.
+See [this issue](https://github.com/gruvbox-community/gruvbox/issues/93) for more details.
+
 Attention
 ---------
 
-1. [Read this first](https://github.com/morhetz/gruvbox/wiki/Terminal-specific)
+1. [Read this first](https://github.com/gruvbox-community/gruvbox/wiki/Terminal-specific)
 2. Typeface from gallery is [Fantasque Sans Mono](https://github.com/belluzj/fantasque-sans)
-3. Typeface from screenshots below is [Fira Mono](http://www.carrois.com/fira-4-1/)
+3. Typeface from screenshots below is [Fira Mono](https://mozilla.github.io/Fira/)
 
 Screenshots
 -----------
 
 Refer [Gallery][] for more syntax-specific screenshots.
 
-   [Gallery]: https://github.com/morhetz/gruvbox/wiki/Gallery
+   [Gallery]: https://github.com/gruvbox-community/gruvbox/wiki/Gallery
 
 ### Dark mode
 
@@ -39,18 +44,18 @@ Palette
 
 ### Dark mode
 
-![Palette Dark](http://i.imgur.com/wa666xg.png)
+![Palette Dark](https://raw.githubusercontent.com/wiki/gruvbox-community/gruvbox/images/gruvbox_palette_dark.png)
 
 ### Light mode
 
-![Palette Light](http://i.imgur.com/49qKyYW.png)
+![Palette Light](https://raw.githubusercontent.com/wiki/gruvbox-community/gruvbox/images/gruvbox_palette_light.png)
 
 Contrast options
 ----------------
 
 Refer [wiki section][] for contrast configuration and other options.
 
-   [wiki section]: https://github.com/morhetz/gruvbox/wiki/Configuration#ggruvbox_contrast_dark
+   [wiki section]: https://github.com/gruvbox-community/gruvbox/wiki/Configuration#ggruvbox_contrast_dark
 
 ![Contrast Options](http://i.imgur.com/5MSbe6T.png)
 
@@ -59,48 +64,54 @@ Documentation
 
 Please check [wiki][] for installation details, terminal-specific setup, troubleshooting, configuration options and others.
 
-   [wiki]: https://github.com/morhetz/gruvbox/wiki
+   [wiki]: https://github.com/gruvbox-community/gruvbox/wiki
 
 Features
 --------
 
 * Lots of style-customization options (contrast, color invertion, italics usage etc.)
-* Extended filetype highlighting: Html, Xml, Vim (and ES6 with [yajs.vim](https://github.com/othree/yajs.vim)), Clojure, C, Python, JavaScript, CoffeeScript, Ruby, Objective-C, Go, Lua, MoonScript, Java, Markdown, Haskell
-* Supported plugins: [EasyMotion][], [vim-sneak][], [Indent Guides][], [indentLine][], [Rainbow Parentheses][], [Airline][], [GitGutter][], [Signify][], [ShowMarks][], [Signature][], [Syntastic][], [CtrlP][], [Startify][]
+* Extended filetype highlighting: Html, Xml, Vim, Clojure, C, Python, JavaScript, TypeScript, JSX via [vim-jsx-pretty][], PureScript, CoffeeScript, Ruby, Objective-C, Go, Lua, MoonScript, Java, Markdown, Haskell, Elixir, C#, Rust via [rust.vim][]
+* Supported plugins: [EasyMotion][], [vim-sneak][], [Indent Guides][], [indentLine][], [Rainbow Parentheses][], [Airline][], [Lightline][], [GitGutter][], [Signify][], [ShowMarks][], [Signature][], [Syntastic][], [Ale][], [CtrlP][], [fzf][], [Startify][], [NERDTree][], [Dirvish][]
 
+   [vim-jsx-pretty]: https://github.com/MaxMEllon/vim-jsx-pretty
+   [rust.vim]: https://github.com/rust-lang/rust.vim
    [EasyMotion]: https://github.com/Lokaltog/vim-easymotion
    [vim-sneak]: https://github.com/justinmk/vim-sneak
    [Indent Guides]: https://github.com/nathanaelkane/vim-indent-guides
    [indentLine]: https://github.com/Yggdroot/indentLine
    [Rainbow Parentheses]: https://github.com/kien/rainbow_parentheses.vim
    [Airline]: https://github.com/bling/vim-airline
+   [Lightline]: https://github.com/itchyny/lightline.vim
    [GitGutter]: https://github.com/airblade/vim-gitgutter
    [Signify]: https://github.com/mhinz/vim-signify
    [ShowMarks]: http://www.vim.org/scripts/script.php?script_id=152
    [Signature]: https://github.com/kshenoy/vim-signature
    [Syntastic]: https://github.com/scrooloose/syntastic
+   [Ale]: https://github.com/w0rp/ale
    [CtrlP]: https://github.com/kien/ctrlp.vim
+   [fzf]: https://github.com/junegunn/fzf.vim
    [Startify]: https://github.com/mhinz/vim-startify
+   [NERDTree]: https://github.com/scrooloose/nerdtree
+   [Dirvish]: https://github.com/justinmk/vim-dirvish
 
 Contributions
 -------------
 
 See [gruvbox-contrib][] repo for contributions, ports and extras.
 
-[gruvbox-contrib]: https://github.com/morhetz/gruvbox-contrib
+[gruvbox-contrib]: https://github.com/gruvbox-community/gruvbox-contrib
 
 ToDo
 ----
 
-* Filetype syntax highlighting (R, TeX, Swift, Erlang and I'm still dissatisfied with CSS)
-* Plugin support (MiniBufExplorer, Tagbar, Netrw, VimPLug)
-* Lightline theme
+* Filetype syntax highlighting (R, TeX, Swift, Erlang)
+* Plugin support (Tagbar, VimPlug)
 
 Self-Promotion
 --------------
 
 If you like gruvbox follow the repository on
-[GitHub](https://github.com/morhetz/gruvbox) and vote for it on
+[GitHub](https://github.com/gruvbox-community/gruvbox) and vote for it on
 [vim.org](http://www.vim.org/scripts/script.php?script_id=4349).
 
 License
diff -pruN 2.0.0-2/autoload/airline/themes/gruvbox.vim 3.6.1-1/autoload/airline/themes/gruvbox.vim
--- 2.0.0-2/autoload/airline/themes/gruvbox.vim	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/autoload/airline/themes/gruvbox.vim	2023-12-10 23:21:34.000000000 +0000
@@ -2,8 +2,7 @@
 " File: gruvbox.vim
 " Description: Retro groove color scheme for Airline
 " Author: morhetz <morhetz@gmail.com>
-" Source: https://github.com/morhetz/gruvbox
-" Last Modified: 22 Aug 2014
+" Source: https://github.com/gruvbox-community/gruvbox
 " -----------------------------------------------------------------------------
 
 let g:airline#themes#gruvbox#palette = {}
@@ -13,39 +12,68 @@ function! airline#themes#gruvbox#refresh
   let M0 = airline#themes#get_highlight('Identifier')
   let accents_group = airline#themes#get_highlight('Special')
   let modified_group = [M0[0], '', M0[2], '', '']
-  let warning_group = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
+  let warning_group = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['Question', 'fg'])
+  let error_group = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['WarningMsg', 'fg'])
 
-  let s:N1 = airline#themes#get_highlight2(['Normal', 'bg'], ['StatusLineNC', 'bg'])
-  let s:N2 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['StatusLineNC', 'fg'])
-  let s:N3 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['CursorLine', 'bg'])
+  let s:N1 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['StatusLineNC', 'bg'])
+  let s:N2 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['Pmenu', 'bg'])
+  let s:N3 = airline#themes#get_highlight2(['StatusLineNC', 'bg'], ['StatusLineNC', 'fg'])
   let g:airline#themes#gruvbox#palette.normal = airline#themes#generate_color_map(s:N1, s:N2, s:N3)
   let g:airline#themes#gruvbox#palette.normal_modified = { 'airline_c': modified_group }
   let g:airline#themes#gruvbox#palette.normal.airline_warning = warning_group
   let g:airline#themes#gruvbox#palette.normal_modified.airline_warning = warning_group
+  let g:airline#themes#gruvbox#palette.normal.airline_error = error_group
+  let g:airline#themes#gruvbox#palette.normal_modified.airline_error = error_group
+  let g:airline#themes#gruvbox#palette.normal.airline_term = s:N3
+  let g:airline#themes#gruvbox#palette.normal_modified.airline_term = s:N3
 
-  let s:I1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Identifier', 'fg'])
+  let s:I1 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['Identifier', 'fg'])
   let s:I2 = s:N2
-  let s:I3 = airline#themes#get_highlight2(['Normal', 'fg'], ['StatusLineNC', 'fg'])
+  let s:I3 = airline#themes#get_highlight2(['GruvboxFg1', 'fg'], ['Pmenu', 'bg'])
   let g:airline#themes#gruvbox#palette.insert = airline#themes#generate_color_map(s:I1, s:I2, s:I3)
   let g:airline#themes#gruvbox#palette.insert_modified = g:airline#themes#gruvbox#palette.normal_modified
   let g:airline#themes#gruvbox#palette.insert.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
   let g:airline#themes#gruvbox#palette.insert_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+  let g:airline#themes#gruvbox#palette.insert.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+  let g:airline#themes#gruvbox#palette.insert_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+  let g:airline#themes#gruvbox#palette.insert.airline_term = g:airline#themes#gruvbox#palette.normal.airline_term
+  let g:airline#themes#gruvbox#palette.insert_modified.airline_term = g:airline#themes#gruvbox#palette.normal_modified.airline_term
 
-  let s:R1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Structure', 'fg'])
+  let s:R1 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['Structure', 'fg'])
   let s:R2 = s:I2
   let s:R3 = s:I3
   let g:airline#themes#gruvbox#palette.replace = airline#themes#generate_color_map(s:R1, s:R2, s:R3)
   let g:airline#themes#gruvbox#palette.replace_modified = g:airline#themes#gruvbox#palette.normal_modified
   let g:airline#themes#gruvbox#palette.replace.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
   let g:airline#themes#gruvbox#palette.replace_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+  let g:airline#themes#gruvbox#palette.replace.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+  let g:airline#themes#gruvbox#palette.replace_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+  let g:airline#themes#gruvbox#palette.replace.airline_term = g:airline#themes#gruvbox#palette.normal.airline_term
+  let g:airline#themes#gruvbox#palette.replace_modified.airline_term = g:airline#themes#gruvbox#palette.normal_modified.airline_term
 
-  let s:V1 = airline#themes#get_highlight2(['Normal', 'bg'], ['Question', 'fg'])
+  let s:V1 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['Question', 'fg'])
   let s:V2 = s:N2
-  let s:V3 = airline#themes#get_highlight2(['Normal', 'bg'], ['TabLine', 'fg'])
+  let s:V3 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['TabLine', 'fg'])
   let g:airline#themes#gruvbox#palette.visual = airline#themes#generate_color_map(s:V1, s:V2, s:V3)
   let g:airline#themes#gruvbox#palette.visual_modified = { 'airline_c': [ s:V3[0], '', s:V3[2], '', '' ] }
   let g:airline#themes#gruvbox#palette.visual.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
   let g:airline#themes#gruvbox#palette.visual_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+  let g:airline#themes#gruvbox#palette.visual.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+  let g:airline#themes#gruvbox#palette.visual_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+  let g:airline#themes#gruvbox#palette.visual.airline_term = g:airline#themes#gruvbox#palette.normal.airline_term
+  let g:airline#themes#gruvbox#palette.visual_modified.airline_term =  g:airline#themes#gruvbox#palette.normal_modified.airline_term
+
+  let s:C1 = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['GruvboxGreen', 'fg'])
+  let s:C2 = s:I2
+  let s:C3 = s:I3
+  let g:airline#themes#gruvbox#palette.commandline = airline#themes#generate_color_map(s:C1, s:C2, s:C3)
+  let g:airline#themes#gruvbox#palette.commandline_modified = g:airline#themes#gruvbox#palette.normal_modified
+  let g:airline#themes#gruvbox#palette.commandline.airline_warning = g:airline#themes#gruvbox#palette.normal.airline_warning
+  let g:airline#themes#gruvbox#palette.commandline_modified.airline_warning = g:airline#themes#gruvbox#palette.normal_modified.airline_warning
+  let g:airline#themes#gruvbox#palette.commandline.airline_error = g:airline#themes#gruvbox#palette.normal.airline_error
+  let g:airline#themes#gruvbox#palette.commandline_modified.airline_error = g:airline#themes#gruvbox#palette.normal_modified.airline_error
+  let g:airline#themes#gruvbox#palette.commandline.airline_term = g:airline#themes#gruvbox#palette.normal.airline_term
+  let g:airline#themes#gruvbox#palette.commandline_modified.airline_term = g:airline#themes#gruvbox#palette.normal.airline_term
 
   let s:IA = airline#themes#get_highlight2(['TabLine', 'fg'], ['CursorLine', 'bg'])
   let g:airline#themes#gruvbox#palette.inactive = airline#themes#generate_color_map(s:IA, s:IA, s:IA)
@@ -53,11 +81,13 @@ function! airline#themes#gruvbox#refresh
 
   let g:airline#themes#gruvbox#palette.accents = { 'red': accents_group }
 
-  let s:TF = airline#themes#get_highlight2(['Normal', 'bg'], ['Normal', 'bg'])
+  let s:TF = airline#themes#get_highlight2(['GruvboxBg0', 'fg'], ['GruvboxBg0', 'fg'])
   let g:airline#themes#gruvbox#palette.tabline = {
     \ 'airline_tab':  s:N2,
     \ 'airline_tabsel':  s:N1,
     \ 'airline_tabtype':  s:V1,
+    \ 'airline_tablabel':  s:V1,
+    \ 'airline_tablabel_right':  s:V1,
     \ 'airline_tabfill':  s:TF,
     \ 'airline_tabhid':  s:IA,
     \ 'airline_tabmod':  s:I1
diff -pruN 2.0.0-2/autoload/gruvbox.vim 3.6.1-1/autoload/gruvbox.vim
--- 2.0.0-2/autoload/gruvbox.vim	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/autoload/gruvbox.vim	2023-12-10 23:21:34.000000000 +0000
@@ -2,8 +2,7 @@
 " File: gruvbox.vim
 " Description: Retro groove color scheme for Vim
 " Author: morhetz <morhetz@gmail.com>
-" Source: https://github.com/morhetz/gruvbox
-" Last Modified: 09 Apr 2014
+" Source: https://github.com/gruvbox-community/gruvbox
 " -----------------------------------------------------------------------------
 
 function! gruvbox#invert_signs_toggle()
diff -pruN 2.0.0-2/autoload/lightline/colorscheme/gruvbox.vim 3.6.1-1/autoload/lightline/colorscheme/gruvbox.vim
--- 2.0.0-2/autoload/lightline/colorscheme/gruvbox.vim	1970-01-01 00:00:00.000000000 +0000
+++ 3.6.1-1/autoload/lightline/colorscheme/gruvbox.vim	2023-12-10 23:21:34.000000000 +0000
@@ -0,0 +1,57 @@
+" -----------------------------------------------------------------------------
+" File: gruvbox.vim
+" Description: Gruvbox colorscheme for Lightline (itchyny/lightline.vim)
+" Author: gmoe <me@griffinmoe.com>
+" Source: https://github.com/gruvbox-community/gruvbox
+" -----------------------------------------------------------------------------
+
+function! s:getGruvColor(group)
+  let guiColor = synIDattr(hlID(a:group), 'fg', 'gui')
+  let termColor = synIDattr(hlID(a:group), 'fg', 'cterm')
+  return [guiColor, termColor]
+endfunction
+
+if exists('g:lightline')
+
+  let s:bg0  = s:getGruvColor('GruvboxBg0')
+  let s:bg1  = s:getGruvColor('GruvboxBg1')
+  let s:bg2  = s:getGruvColor('GruvboxBg2')
+  let s:bg4  = s:getGruvColor('GruvboxBg4')
+  let s:fg1  = s:getGruvColor('GruvboxFg1')
+  let s:fg4  = s:getGruvColor('GruvboxFg4')
+
+  let s:yellow = s:getGruvColor('GruvboxYellow')
+  let s:blue   = s:getGruvColor('GruvboxBlue')
+  let s:aqua   = s:getGruvColor('GruvboxAqua')
+  let s:orange = s:getGruvColor('GruvboxOrange')
+  let s:red = s:getGruvColor('GruvboxRed')
+  let s:green = s:getGruvColor('GruvboxGreen')
+
+  let s:p = {'normal':{}, 'inactive':{}, 'insert':{}, 'replace':{}, 'visual':{}, 'tabline':{}, 'terminal':{}}
+  let s:p.normal.left = [[s:bg0, s:fg4, 'bold'], [s:fg4, s:bg2]]
+  let s:p.normal.right = [[s:bg0, s:fg4], [s:fg4, s:bg2]]
+  let s:p.normal.middle = [[s:fg4, s:bg1]]
+  let s:p.inactive.right = [[s:bg4, s:bg1], [s:bg4, s:bg1]]
+  let s:p.inactive.left =  [[s:bg4, s:bg1], [s:bg4, s:bg1]]
+  let s:p.inactive.middle = [[s:bg4, s:bg1]]
+  let s:p.insert.left = [[s:bg0, s:blue, 'bold'], [s:fg1, s:bg2]]
+  let s:p.insert.right = [[s:bg0, s:blue], [s:fg1, s:bg2]]
+  let s:p.insert.middle = [[s:fg4, s:bg1]]
+  let s:p.terminal.left = [[s:bg0, s:green, 'bold'], [s:fg1, s:bg2]]
+  let s:p.terminal.right = [[s:bg0, s:green], [s:fg1, s:bg2]]
+  let s:p.terminal.middle = [[s:fg4, s:bg1]]
+  let s:p.replace.left = [[s:bg0, s:aqua, 'bold'], [s:fg1, s:bg2]]
+  let s:p.replace.right = [[s:bg0, s:aqua], [s:fg1, s:bg2]]
+  let s:p.replace.middle = [[s:fg4, s:bg1]]
+  let s:p.visual.left = [[s:bg0, s:orange, 'bold'], [s:bg0, s:bg4]]
+  let s:p.visual.right = [[s:bg0, s:orange], [s:bg0, s:bg4]]
+  let s:p.visual.middle = [[s:fg4, s:bg1]]
+  let s:p.tabline.left = [[s:fg4, s:bg2]]
+  let s:p.tabline.tabsel = [[s:bg0, s:fg4]]
+  let s:p.tabline.middle = [[s:bg0, s:bg4]]
+  let s:p.tabline.right = [[s:bg0, s:orange]]
+  let s:p.normal.error = [[s:bg0, s:red]]
+  let s:p.normal.warning = [[s:bg0, s:yellow]]
+
+  let g:lightline#colorscheme#gruvbox#palette = lightline#colorscheme#flatten(s:p)
+endif
diff -pruN 2.0.0-2/colors/gruvbox.vim 3.6.1-1/colors/gruvbox.vim
--- 2.0.0-2/colors/gruvbox.vim	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/colors/gruvbox.vim	2023-12-10 23:21:34.000000000 +0000
@@ -1,24 +1,25 @@
+scriptencoding utf-8
+
 " -----------------------------------------------------------------------------
 " File: gruvbox.vim
 " Description: Retro groove color scheme for Vim
 " Author: morhetz <morhetz@gmail.com>
-" Source: https://github.com/morhetz/gruvbox
-" Last Modified: 01 Sep 2015
+" Source: https://github.com/gruvbox-community/gruvbox
 " -----------------------------------------------------------------------------
 
 " Supporting code -------------------------------------------------------------
 " Initialisation: {{{
 
-if version > 580
+if v:version > 580
   hi clear
-  if exists("syntax_on")
+  if exists('syntax_on')
     syntax reset
   endif
 endif
 
 let g:colors_name='gruvbox'
 
-if !has('gui_running') && &t_Co != 256
+if !(has('termguicolors') && &termguicolors) && !has('gui_running') && &t_Co != 256
   finish
 endif
 
@@ -29,7 +30,7 @@ if !exists('g:gruvbox_bold')
   let g:gruvbox_bold=1
 endif
 if !exists('g:gruvbox_italic')
-  if has('gui_running') || $TERM_ITALICS == 'true'
+  if has('gui_running') || $TERM_ITALICS ==# 'true'
     let g:gruvbox_italic=1
   else
     let g:gruvbox_italic=0
@@ -65,9 +66,7 @@ if !exists('g:gruvbox_invert_indent_guid
   let g:gruvbox_invert_indent_guides=0
 endif
 
-if !exists('g:gruvbox_contrast')
-  let g:gruvbox_contrast='medium'
-else
+if exists('g:gruvbox_contrast')
   echo 'g:gruvbox_contrast is deprecated; use g:gruvbox_contrast_light and g:gruvbox_contrast_dark instead'
 endif
 
@@ -79,59 +78,111 @@ if !exists('g:gruvbox_contrast_light')
   let g:gruvbox_contrast_light='medium'
 endif
 
-let s:is_dark=(&background == 'dark')
+if !exists('g:gruvbox_legacy_language_groups')
+  let g:gruvbox_legacy_language_groups=0
+endif
+
+if !exists('g:gruvbox_treesitter')
+  let g:gruvbox_treesitter=has('nvim-0.7.3')
+endif
+
+let s:is_dark=(&background ==# 'dark')
+
+" }}}
+" Palette Utility Functions: {{{
+
+function! s:Color(name, default, ...)
+  " color already set, validate option
+  if has_key(s:gb, a:name)
+    let l:color = s:gb[a:name]
+
+    if type(l:color) == type('')
+      " gui color only
+      let s:gb[a:name] = copy(a:default)
+      let s:gb[a:name][0] = l:color
+      return 1
+    elseif type(l:color) == type(0)
+      " terminal color only
+      let s:gb[a:name] = copy(a:default)
+      let s:gb[a:name][1] = l:color
+      return 1
+    elseif type(l:color) == type([])
+          \ && len(l:color) == 2
+          \ && type(l:color[0]) == type('')
+          \ && type(l:color[1]) == type(0)
+      " gui and terminal color
+      return 1
+    else
+      " invalid value
+      echo a:name 'is invalid, usage: let g:gruvbox_colors.color = (["#ffffff", 255]|"#ffffff"|255)'
+      return 0
+    endif
+
+  endif
+
+  " set default option
+  let s:gb[a:name] = a:default
+  return 1
+endfunction
 
 " }}}
 " Palette: {{{
 
-" setup palette dictionary
-let s:gb = {}
-
-" fill it with absolute colors
-let s:gb.dark0_hard  = ['#1d2021', 234]     " 29-32-33
-let s:gb.dark0       = ['#282828', 235]     " 40-40-40
-let s:gb.dark0_soft  = ['#32302f', 236]     " 50-48-47
-let s:gb.dark1       = ['#3c3836', 237]     " 60-56-54
-let s:gb.dark2       = ['#504945', 239]     " 80-73-69
-let s:gb.dark3       = ['#665c54', 241]     " 102-92-84
-let s:gb.dark4       = ['#7c6f64', 243]     " 124-111-100
-let s:gb.dark4_256   = ['#7c6f64', 243]     " 124-111-100
-
-let s:gb.gray_245    = ['#928374', 245]     " 146-131-116
-let s:gb.gray_244    = ['#928374', 244]     " 146-131-116
-
-let s:gb.light0_hard = ['#f9f5d7', 230]     " 249-245-215
-let s:gb.light0      = ['#fdf4c1', 229]     " 253-244-193
-let s:gb.light0_soft = ['#f2e5bc', 228]     " 242-229-188
-let s:gb.light1      = ['#ebdbb2', 223]     " 235-219-178
-let s:gb.light2      = ['#d5c4a1', 250]     " 213-196-161
-let s:gb.light3      = ['#bdae93', 248]     " 189-174-147
-let s:gb.light4      = ['#a89984', 246]     " 168-153-132
-let s:gb.light4_256  = ['#a89984', 246]     " 168-153-132
-
-let s:gb.bright_red     = ['#fb4934', 167]     " 251-73-52
-let s:gb.bright_green   = ['#b8bb26', 142]     " 184-187-38
-let s:gb.bright_yellow  = ['#fabd2f', 214]     " 250-189-47
-let s:gb.bright_blue    = ['#83a598', 109]     " 131-165-152
-let s:gb.bright_purple  = ['#d3869b', 175]     " 211-134-155
-let s:gb.bright_aqua    = ['#8ec07c', 108]     " 142-192-124
-let s:gb.bright_orange  = ['#fe8019', 208]     " 254-128-25
-
-let s:gb.neutral_red    = ['#cc241d', 124]     " 204-36-29
-let s:gb.neutral_green  = ['#98971a', 106]     " 152-151-26
-let s:gb.neutral_yellow = ['#d79921', 172]     " 215-153-33
-let s:gb.neutral_blue   = ['#458588', 66]      " 69-133-136
-let s:gb.neutral_purple = ['#b16286', 132]     " 177-98-134
-let s:gb.neutral_aqua   = ['#689d6a', 72]      " 104-157-106
-let s:gb.neutral_orange = ['#d65d0e', 166]     " 214-93-14
-
-let s:gb.faded_red      = ['#9d0006', 88]      " 157-0-6
-let s:gb.faded_green    = ['#79740e', 100]     " 121-116-14
-let s:gb.faded_yellow   = ['#b57614', 136]     " 181-118-20
-let s:gb.faded_blue     = ['#076678', 24]      " 7-102-120
-let s:gb.faded_purple   = ['#8f3f71', 96]      " 143-63-113
-let s:gb.faded_aqua     = ['#427b58', 66]      " 66-123-88
-let s:gb.faded_orange   = ['#af3a03', 130]     " 175-58-3
+" get the global gruvbox palette options, if any
+let g:gruvbox_colors = get(g:, 'gruvbox_colors', {})
+" initialize the script palette
+let s:gb = copy(g:gruvbox_colors)
+let g:current_gruvbox_colors = s:gb
+
+" set palette default colors
+call s:Color('dark0_hard',  ['#1d2021', 234])     " 29-32-33
+call s:Color('dark0',       ['#282828', 235])     " 40-40-40
+call s:Color('dark0_soft',  ['#32302f', 236])     " 50-48-47
+call s:Color('dark1',       ['#3c3836', 237])     " 60-56-54
+call s:Color('dark2',       ['#504945', 239])     " 80-73-69
+call s:Color('dark3',       ['#665c54', 241])     " 102-92-84
+call s:Color('dark4',       ['#7c6f64', 243])     " 124-111-100
+call s:Color('dark4_256',   ['#7c6f64', 243])     " 124-111-100
+
+call s:Color('gray_245',    ['#928374', 245])     " 146-131-116
+call s:Color('gray_244',    ['#928374', 244])     " 146-131-116
+
+call s:Color('light0_hard', ['#f9f5d7', 230])     " 249-245-215
+call s:Color('light0',      ['#fbf1c7', 229])     " 253-244-193
+call s:Color('light0_soft', ['#f2e5bc', 228])     " 242-229-188
+call s:Color('light1',      ['#ebdbb2', 223])     " 235-219-178
+call s:Color('light2',      ['#d5c4a1', 250])     " 213-196-161
+call s:Color('light3',      ['#bdae93', 248])     " 189-174-147
+call s:Color('light4',      ['#a89984', 246])     " 168-153-132
+call s:Color('light4_256',  ['#a89984', 246])     " 168-153-132
+
+call s:Color('bright_red',     ['#fb4934', 167])     " 251-73-52
+call s:Color('bright_green',   ['#b8bb26', 142])     " 184-187-38
+call s:Color('bright_yellow',  ['#fabd2f', 214])     " 250-189-47
+call s:Color('bright_blue',    ['#83a598', 109])     " 131-165-152
+call s:Color('bright_purple',  ['#d3869b', 175])     " 211-134-155
+call s:Color('bright_aqua',    ['#8ec07c', 108])     " 142-192-124
+call s:Color('bright_orange',  ['#fe8019', 208])     " 254-128-25
+
+call s:Color('neutral_red',    ['#cc241d', 124])     " 204-36-29
+call s:Color('neutral_green',  ['#98971a', 106])     " 152-151-26
+call s:Color('neutral_yellow', ['#d79921', 172])     " 215-153-33
+call s:Color('neutral_blue',   ['#458588', 66])      " 69-133-136
+call s:Color('neutral_purple', ['#b16286', 132])     " 177-98-134
+call s:Color('neutral_aqua',   ['#689d6a', 72])      " 104-157-106
+call s:Color('neutral_orange', ['#d65d0e', 166])     " 214-93-14
+
+call s:Color('faded_red',      ['#9d0006', 88])      " 157-0-6
+call s:Color('faded_green',    ['#79740e', 100])     " 121-116-14
+call s:Color('faded_yellow',   ['#b57614', 136])     " 181-118-20
+call s:Color('faded_blue',     ['#076678', 24])      " 7-102-120
+call s:Color('faded_purple',   ['#8f3f71', 96])      " 143-63-113
+call s:Color('faded_aqua',     ['#427b58', 65])      " 66-123-88
+call s:Color('faded_orange',   ['#af3a03', 130])     " 175-58-3
+
+call s:Color('none', ['NONE','NONE'])
+call s:Color('NONE', ['NONE','NONE'])
+call s:Color('None', ['NONE','NONE'])
 
 " }}}
 " Setup Emphasis: {{{
@@ -164,19 +215,23 @@ endif
 " }}}
 " Setup Colors: {{{
 
+let s:vim_bg = ['bg', 'bg']
+let s:vim_fg = ['fg', 'fg']
+let s:none = ['NONE', 'NONE']
+
 " determine relative colors
 if s:is_dark
-  let s:bg0  = s:gb.dark0
-  if g:gruvbox_contrast_dark == 'soft'
-    let s:bg0  = s:gb.dark0_soft
-  elseif g:gruvbox_contrast_dark == 'hard'
-    let s:bg0  = s:gb.dark0_hard
+  let s:bg0 = s:gb.dark0
+  if g:gruvbox_contrast_dark ==# 'soft'
+    let s:bg0 = s:gb.dark0_soft
+  elseif g:gruvbox_contrast_dark ==# 'hard'
+    let s:bg0 = s:gb.dark0_hard
   endif
 
-  let s:bg1  = s:gb.dark1
-  let s:bg2  = s:gb.dark2
-  let s:bg3  = s:gb.dark3
-  let s:bg4  = s:gb.dark4
+  let s:bg1 = s:gb.dark1
+  let s:bg2 = s:gb.dark2
+  let s:bg3 = s:gb.dark3
+  let s:bg4 = s:gb.dark4
 
   let s:gray = s:gb.gray_245
 
@@ -196,17 +251,17 @@ if s:is_dark
   let s:aqua   = s:gb.bright_aqua
   let s:orange = s:gb.bright_orange
 else
-  let s:bg0  = s:gb.light0
-  if g:gruvbox_contrast_light == 'soft'
-    let s:bg0  = s:gb.light0_soft
-  elseif g:gruvbox_contrast_light == 'hard'
-    let s:bg0  = s:gb.light0_hard
+  let s:bg0 = s:gb.light0
+  if g:gruvbox_contrast_light ==# 'soft'
+    let s:bg0 = s:gb.light0_soft
+  elseif g:gruvbox_contrast_light ==# 'hard'
+    let s:bg0 = s:gb.light0_hard
   endif
 
-  let s:bg1  = s:gb.light1
-  let s:bg2  = s:gb.light2
-  let s:bg3  = s:gb.light3
-  let s:bg4  = s:gb.light4
+  let s:bg1 = s:gb.light1
+  let s:bg2 = s:gb.light2
+  let s:bg3 = s:gb.light3
+  let s:bg4 = s:gb.light4
 
   let s:gray = s:gb.gray_244
 
@@ -242,59 +297,124 @@ if g:gruvbox_termcolors == 16
 endif
 
 " save current relative colors back to palette dictionary
-let s:gb.bg0 = s:bg0
-let s:gb.bg1 = s:bg1
-let s:gb.bg2 = s:bg2
-let s:gb.bg3 = s:bg3
-let s:gb.bg4 = s:bg4
-
-let s:gb.gray = s:gray
-
-let s:gb.fg0 = s:fg0
-let s:gb.fg1 = s:fg1
-let s:gb.fg2 = s:fg2
-let s:gb.fg3 = s:fg3
-let s:gb.fg4 = s:fg4
-
-let s:gb.fg4_256 = s:fg4_256
-
-let s:gb.red    = s:red
-let s:gb.green  = s:green
-let s:gb.yellow = s:yellow
-let s:gb.blue   = s:blue
-let s:gb.purple = s:purple
-let s:gb.aqua   = s:aqua
-let s:gb.orange = s:orange
+call s:Color('bg0', s:bg0)
+call s:Color('bg1', s:bg1)
+call s:Color('bg2', s:bg2)
+call s:Color('bg3', s:bg3)
+call s:Color('bg4', s:bg4)
+
+call s:Color('gray', s:gray)
+
+call s:Color('fg0', s:fg0)
+call s:Color('fg1', s:fg1)
+call s:Color('fg2', s:fg2)
+call s:Color('fg3', s:fg3)
+call s:Color('fg4', s:fg4)
+
+call s:Color('fg4_256', s:fg4_256)
+
+call s:Color('red',    s:red)
+call s:Color('green',  s:green)
+call s:Color('yellow', s:yellow)
+call s:Color('blue',   s:blue)
+call s:Color('purple', s:purple)
+call s:Color('aqua',   s:aqua)
+call s:Color('orange', s:orange)
+
+" }}}
+" Setup Terminal Colors For Neovim: {{{
+
+if has('nvim')
+  let g:terminal_color_0 = s:gb.bg0[0]
+  let g:terminal_color_8 = s:gb.gray[0]
+
+  let g:terminal_color_1 = s:gb.neutral_red[0]
+  let g:terminal_color_9 = s:gb.red[0]
+
+  let g:terminal_color_2 = s:gb.neutral_green[0]
+  let g:terminal_color_10 = s:gb.green[0]
+
+  let g:terminal_color_3 = s:gb.neutral_yellow[0]
+  let g:terminal_color_11 = s:gb.yellow[0]
+
+  let g:terminal_color_4 = s:gb.neutral_blue[0]
+  let g:terminal_color_12 = s:gb.blue[0]
+
+  let g:terminal_color_5 = s:gb.neutral_purple[0]
+  let g:terminal_color_13 = s:gb.purple[0]
+
+  let g:terminal_color_6 = s:gb.neutral_aqua[0]
+  let g:terminal_color_14 = s:gb.aqua[0]
+
+  let g:terminal_color_7 = s:gb.fg4[0]
+  let g:terminal_color_15 = s:gb.fg1[0]
+endif
 
 " }}}
+" Setup Terminal Colors For Vim with termguicolors: {{{
+
+if exists('*term_setansicolors')
+  let g:terminal_ansi_colors = repeat([0], 16)
+
+  let g:terminal_ansi_colors[0] = s:gb.bg0[0]
+  let g:terminal_ansi_colors[8] = s:gb.gray[0]
+
+  let g:terminal_ansi_colors[1] = s:gb.neutral_red[0]
+  let g:terminal_ansi_colors[9] = s:gb.red[0]
+
+  let g:terminal_ansi_colors[2] = s:gb.neutral_green[0]
+  let g:terminal_ansi_colors[10] = s:gb.green[0]
+
+  let g:terminal_ansi_colors[3] = s:gb.neutral_yellow[0]
+  let g:terminal_ansi_colors[11] = s:gb.yellow[0]
 
+  let g:terminal_ansi_colors[4] = s:gb.neutral_blue[0]
+  let g:terminal_ansi_colors[12] = s:gb.blue[0]
+
+  let g:terminal_ansi_colors[5] = s:gb.neutral_purple[0]
+  let g:terminal_ansi_colors[13] = s:gb.purple[0]
+
+  let g:terminal_ansi_colors[6] = s:gb.neutral_aqua[0]
+  let g:terminal_ansi_colors[14] = s:gb.aqua[0]
+
+  let g:terminal_ansi_colors[7] = s:gb.fg4[0]
+  let g:terminal_ansi_colors[15] = s:gb.fg1[0]
+endif
+
+" }}}
 " Overload Setting: {{{
 
-let s:hls_cursor = s:orange
+let s:hls_cursor = s:gb.orange
 if exists('g:gruvbox_hls_cursor')
   let s:hls_cursor = get(s:gb, g:gruvbox_hls_cursor)
 endif
 
-let s:number_column = s:bg4
-let s:sign_column = s:bg1
+let s:hls_highlight = s:gb.yellow
+if exists('g:gruvbox_hls_highlight')
+  let s:hls_highlight = get(s:gb, g:gruvbox_hls_highlight)
+endif
 
-if exists('g:gitgutter_override_sign_column_highlight') &&
-      \ g:gitgutter_override_sign_column_highlight == 1
-  let s:sign_column = s:number_column
-else
-  let g:gitgutter_override_sign_column_highlight = 0
+let s:number_column = s:none
+if exists('g:gruvbox_number_column')
+  let s:number_column = get(s:gb, g:gruvbox_number_column)
+endif
 
-  if exists('g:gruvbox_sign_column')
-    let s:sign_column = get(s:gb, g:gruvbox_sign_column)
-  endif
+let s:sign_column = s:gb.bg1
+if exists('g:gruvbox_sign_column')
+  let s:sign_column = get(s:gb, g:gruvbox_sign_column)
 endif
 
-let s:color_column = s:bg1
+let s:color_column = s:gb.bg1
 if exists('g:gruvbox_color_column')
   let s:color_column = get(s:gb, g:gruvbox_color_column)
 endif
 
-let s:vert_split = s:bg2
+let s:cursorline = s:gb.bg1
+if exists('g:gruvbox_cursorline')
+  let s:cursorline = get(s:gb, g:gruvbox_cursorline)
+endif
+
+let s:vert_split = s:gb.bg0
 if exists('g:gruvbox_vert_split')
   let s:vert_split = get(s:gb, g:gruvbox_vert_split)
 endif
@@ -320,6 +440,11 @@ if exists('g:gruvbox_invert_tabline')
   endif
 endif
 
+let s:tabline_sel = s:gb.green
+if exists('g:gruvbox_tabline_sel')
+  let s:tabline_sel = get(s:gb, g:gruvbox_tabline_sel)
+endif
+
 let s:italicize_comments = s:italic
 if exists('g:gruvbox_italicize_comments')
   if g:gruvbox_italicize_comments == 0
@@ -334,6 +459,13 @@ if exists('g:gruvbox_italicize_strings')
   endif
 endif
 
+let s:italicize_operators = ''
+if exists('g:gruvbox_italicize_operators')
+  if g:gruvbox_italicize_operators == 1
+    let s:italicize_operators = s:italic
+  endif
+endif
+
 " }}}
 " Highlighting Function: {{{
 
@@ -341,305 +473,536 @@ function! s:HL(group, fg, ...)
   " Arguments: group, guifg, guibg, gui, guisp
 
   " foreground
-  if type(a:fg) == 3
-    let fg = a:fg
-  elseif type(a:fg) == 1 && strlen(a:fg)
-    let fg = [a:fg, a:fg]
-  else
-    let fg = ['NONE', 'NONE']
-  endif
+  let fg = a:fg
 
   " background
-  if a:0 >= 1 && type(a:1) == 3
+  if a:0 >= 1
     let bg = a:1
-  elseif a:0 >= 1 && type(a:1) == 1 && strlen(a:1)
-    let bg = [a:1, a:1]
   else
-    let bg = ['NONE', 'NONE']
+    let bg = s:none
   endif
 
   " emphasis
   if a:0 >= 2 && strlen(a:2)
-    let emstr = a:2[:-2]
+    let emstr = a:2
   else
-    let emstr  = 'NONE'
+    let emstr = 'NONE,'
   endif
 
   " special fallback
-  if a:0 >= 3 && type(a:3) == 3
-    if g:gruvbox_guisp_fallback != 'NONE'
+  if a:0 >= 3
+    if g:gruvbox_guisp_fallback !=# 'NONE'
       let fg = a:3
     endif
 
-    if g:gruvbox_guisp_fallback == 'bg'
-      " bg fallback mode should invert higlighting
-      if emstr == 'NONE'
-        let emstr = 'inverse'
-      else
-        let emstr .= ',inverse'
-      endif
+    " bg fallback mode should invert higlighting
+    if g:gruvbox_guisp_fallback ==# 'bg'
+      let emstr .= 'inverse,'
     endif
   endif
 
-  let histring = ['hi', a:group,
+  let histring = [ 'hi', a:group,
         \ 'guifg=' . fg[0], 'ctermfg=' . fg[1],
         \ 'guibg=' . bg[0], 'ctermbg=' . bg[1],
-        \ 'gui=' . emstr, 'cterm=' . emstr
+        \ 'gui=' . emstr[:-2], 'cterm=' . emstr[:-2]
         \ ]
 
   " special
   if a:0 >= 3
-    if type(a:3) == 3
-      let specl = a:3[0]
-    elseif type(a:3) == 1 && strlen(a:3)
-      let specl = a:3
-    else
-      let specl = 'NONE'
-    endif
-
-    call add(histring, 'guisp=' . specl)
+    call add(histring, 'guisp=' . a:3[0])
   endif
 
   execute join(histring, ' ')
 endfunction
 
 " }}}
+" Gruvbox Hi Groups: {{{
+
+" memoize common hi groups
+call s:HL('GruvboxFg0', s:gb.fg0)
+call s:HL('GruvboxFg1', s:gb.fg1)
+call s:HL('GruvboxFg2', s:gb.fg2)
+call s:HL('GruvboxFg3', s:gb.fg3)
+call s:HL('GruvboxFg4', s:gb.fg4)
+call s:HL('GruvboxGray', s:gb.gray)
+call s:HL('GruvboxBg0', s:gb.bg0)
+call s:HL('GruvboxBg1', s:gb.bg1)
+call s:HL('GruvboxBg2', s:gb.bg2)
+call s:HL('GruvboxBg3', s:gb.bg3)
+call s:HL('GruvboxBg4', s:gb.bg4)
+
+call s:HL('GruvboxRed', s:gb.red)
+call s:HL('GruvboxRedBold', s:gb.red, s:none, s:bold)
+call s:HL('GruvboxGreen', s:gb.green)
+call s:HL('GruvboxGreenBold', s:gb.green, s:none, s:bold)
+call s:HL('GruvboxYellow', s:gb.yellow)
+call s:HL('GruvboxYellowBold', s:gb.yellow, s:none, s:bold)
+call s:HL('GruvboxBlue', s:gb.blue)
+call s:HL('GruvboxBlueBold', s:gb.blue, s:none, s:bold)
+call s:HL('GruvboxPurple', s:gb.purple)
+call s:HL('GruvboxPurpleBold', s:gb.purple, s:none, s:bold)
+call s:HL('GruvboxAqua', s:gb.aqua)
+call s:HL('GruvboxAquaBold', s:gb.aqua, s:none, s:bold)
+call s:HL('GruvboxOrange', s:gb.orange)
+call s:HL('GruvboxOrangeBold', s:gb.orange, s:none, s:bold)
+
+call s:HL('GruvboxRedSign', s:gb.red, s:sign_column, s:invert_signs)
+call s:HL('GruvboxGreenSign', s:gb.green, s:sign_column, s:invert_signs)
+call s:HL('GruvboxYellowSign', s:gb.yellow, s:sign_column, s:invert_signs)
+call s:HL('GruvboxBlueSign', s:gb.blue, s:sign_column, s:invert_signs)
+call s:HL('GruvboxPurpleSign', s:gb.purple, s:sign_column, s:invert_signs)
+call s:HL('GruvboxAquaSign', s:gb.aqua, s:sign_column, s:invert_signs)
+call s:HL('GruvboxOrangeSign', s:gb.orange, s:sign_column, s:invert_signs)
+
+call s:HL('GruvboxRedUnderline', s:none, s:none, s:undercurl, s:gb.red)
+call s:HL('GruvboxGreenUnderline', s:none, s:none, s:undercurl, s:gb.green)
+call s:HL('GruvboxYellowUnderline', s:none, s:none, s:undercurl, s:gb.yellow)
+call s:HL('GruvboxBlueUnderline', s:none, s:none, s:undercurl, s:gb.blue)
+call s:HL('GruvboxPurpleUnderline', s:none, s:none, s:undercurl, s:gb.purple)
+call s:HL('GruvboxAquaUnderline', s:none, s:none, s:undercurl, s:gb.aqua)
+call s:HL('GruvboxOrangeUnderline', s:none, s:none, s:undercurl, s:gb.orange)
+
+" }}}
 
 " Vanilla colorscheme ---------------------------------------------------------
 " General UI: {{{
 
 " Normal text
-call s:HL('Normal', s:fg1, s:bg0)
+call s:HL('Normal', s:gb.fg1, s:gb.bg0)
 
 " Correct background (see issue #7):
 " --- Problem with changing between dark and light on 256 color terminal
 " --- https://github.com/morhetz/gruvbox/issues/7
-if s:is_dark
-  set background=dark
+if exists('v:vim_did_enter')
+  let g:gruvbox_vim_did_enter = v:vim_did_enter
 else
-  set background=light
+  augroup GruvboxVimEnter
+    au!
+    autocmd VimEnter * let g:gruvbox_vim_did_enter = 1
+  augroup End
+endif
+if get(g:, 'gruvbox_vim_did_enter', 0)
+  if s:is_dark
+    set background=dark
+  else
+    set background=light
+  endif
 endif
 
-if version >= 700
+if v:version >= 700
   " Screen line that the cursor is
-  call s:HL('CursorLine',   'NONE', s:bg1)
+  call s:HL('CursorLine', s:none, s:cursorline)
   " Screen column that the cursor is
-  call s:HL('CursorColumn', 'NONE', s:bg1)
+  hi! link CursorColumn CursorLine
 
   " Tab pages line filler
-  call s:HL('TabLineFill', s:bg4, 'bg', s:invert_tabline)
+  call s:HL('TabLineFill', s:gb.bg4, s:gb.bg1, s:invert_tabline)
   " Active tab page label
-  call s:HL('TabLineSel', 'bg', s:bg4, s:bold . s:invert_tabline)
+  call s:HL('TabLineSel', s:tabline_sel, s:gb.bg1, s:invert_tabline)
   " Not active tab page label
-  call s:HL('TabLine', s:bg4, 'bg', s:invert_tabline)
+  hi! link TabLine TabLineFill
 
   " Match paired bracket under the cursor
-  call s:HL('MatchParen', 'NONE', s:bg3, s:bold)
+  call s:HL('MatchParen', s:none, s:gb.bg3, s:bold)
 endif
 
-if version >= 703
+if v:version >= 703
   " Highlighted screen columns
-  call s:HL('ColorColumn',  'NONE', s:color_column)
+  call s:HL('ColorColumn', s:none, s:color_column)
 
   " Concealed element: \lambda → λ
-  call s:HL('Conceal', s:blue, 'NONE')
+  call s:HL('Conceal', s:gb.blue, s:none)
 
   " Line number of CursorLine
-  call s:HL('CursorLineNr', s:yellow, s:bg1)
+  call s:HL('CursorLineNr', s:gb.yellow, s:cursorline)
 endif
 
-call s:HL('NonText',    s:bg2)
-call s:HL('SpecialKey', s:bg2)
+hi! link NonText GruvboxBg2
+hi! link SpecialKey GruvboxFg4
 
-call s:HL('Visual',    'NONE',  s:bg3, s:invert_selection)
-call s:HL('VisualNOS', 'NONE',  s:bg3, s:invert_selection)
+call s:HL('Visual', s:none, s:gb.bg3, s:invert_selection)
+hi! link VisualNOS Visual
 
-call s:HL('Search',    s:bg0, s:yellow)
-call s:HL('IncSearch', s:bg0, s:hls_cursor)
+call s:HL('Search', s:hls_highlight, s:gb.bg0, s:inverse)
+call s:HL('IncSearch', s:hls_cursor, s:gb.bg0, s:inverse)
 
-call s:HL('Underlined', s:blue, 'NONE', s:underline)
+call s:HL('QuickFixLine', s:gb.bg0, s:gb.yellow, s:bold)
 
-call s:HL('StatusLine',   s:bg4, s:bg0, s:bold . s:inverse)
-call s:HL('StatusLineNC', s:bg2, s:fg4, s:bold . s:inverse)
+call s:HL('Underlined', s:fg3, s:none, s:underline)
+
+call s:HL('StatusLine', s:gb.bg2, s:gb.fg1, s:inverse)
+call s:HL('StatusLineNC', s:gb.bg1, s:gb.fg4, s:inverse)
 
 " The column separating vertically split windows
-call s:HL('VertSplit', s:fg4, s:vert_split)
+call s:HL('VertSplit', s:gb.bg3, s:vert_split)
 
 " Current match in wildmenu completion
-call s:HL('WildMenu', s:blue, s:bg2, s:bold)
+call s:HL('WildMenu', s:gb.blue, s:gb.bg2, s:bold)
 
 " Directory names, special names in listing
-call s:HL('Directory', s:green, 'NONE', s:bold)
+hi! link Directory GruvboxGreenBold
 
 " Titles for output from :set all, :autocmd, etc.
-call s:HL('Title', s:green, 'NONE', s:bold)
+hi! link Title GruvboxGreenBold
 
 " Error messages on the command line
-call s:HL('ErrorMsg',   'bg', s:red, s:bold)
+call s:HL('ErrorMsg',s:gb.bg0, s:gb.red, s:bold)
 " More prompt: -- More --
-call s:HL('MoreMsg',    s:yellow, 'NONE', s:bold)
+hi! link MoreMsg GruvboxYellowBold
 " Current mode message: -- INSERT --
-call s:HL('ModeMsg',    s:yellow, 'NONE', s:bold)
+hi! link ModeMsg GruvboxYellowBold
 " 'Press enter' prompt and yes/no questions
-call s:HL('Question',   s:orange, 'NONE', s:bold)
+hi! link Question GruvboxOrangeBold
 " Warning messages
-call s:HL('WarningMsg', s:red, 'NONE', s:bold)
+hi! link WarningMsg GruvboxRedBold
 
 " }}}
 " Gutter: {{{
 
 " Line number for :number and :# commands
-call s:HL('LineNr', s:number_column)
+call s:HL('LineNr', s:gb.bg4, s:number_column)
 
 " Column where signs are displayed
-call s:HL('SignColumn', 'NONE', s:sign_column)
+call s:HL('SignColumn', s:none, s:sign_column)
 
 " Line used for closed folds
-call s:HL('Folded', s:gray, s:bg1, s:italic)
+call s:HL('Folded', s:gb.gray, s:gb.bg1, s:italic)
 " Column where folds are displayed
-call s:HL('FoldColumn', s:gray, s:bg1)
+call s:HL('FoldColumn', s:gb.gray, s:gb.bg1)
 
 " }}}
 " Cursor: {{{
 
 " Character under cursor
-call s:HL('Cursor', 'NONE', 'NONE', s:inverse)
+call s:HL('Cursor', s:none, s:none, s:inverse)
 " Visual mode cursor, selection
-call s:HL('vCursor', 'NONE', 'NONE', s:inverse)
+hi! link vCursor Cursor
 " Input moder cursor
-call s:HL('iCursor', 'NONE', 'NONE', s:inverse)
+hi! link iCursor Cursor
 " Language mapping cursor
-call s:HL('lCursor', 'NONE', 'NONE', s:inverse)
+hi! link lCursor Cursor
 
 " }}}
 " Syntax Highlighting: {{{
 
+" Special characters and variables
 if g:gruvbox_improved_strings == 0
-  call s:HL('Special', s:orange)
+  hi! link Special GruvboxOrange
 else
-  call s:HL('Special', s:bg1, s:orange, s:italic)
+  call s:HL('Special', s:gb.orange, s:gb.bg1, s:italicize_strings)
 endif
 
-call s:HL('Comment', s:gray, 'NONE', s:italicize_comments)
-call s:HL('Todo', 'fg', 'bg', s:bold . s:italic)
-call s:HL('Error', s:red, 'bg', s:bold . s:inverse)
+" Default comment color
+call s:HL('Comment', s:gb.gray, s:none, s:italicize_comments)
+" Comment message "TODO" keywords
+call s:HL('Todo', s:vim_fg, s:none, s:bold . s:italic)
+" Comment message "ERROR" keywords
+call s:HL('Error', s:gb.red, s:none, s:bold . s:inverse)
+
+" Link text
+call s:HL('Link', s:gb.purple, s:none, s:underline)
+" Heading text
+hi! link H1 GruvboxGreenBold
+hi! link H2 GruvboxGreenBold
+hi! link H3 GruvboxGreen
+hi! link H4 GruvboxGreen
+hi! link H5 GruvboxGreen
+hi! link H6 GruvboxGreen
+" Example code in comments
+hi! link CodeBlock GruvboxAqua
+" Quote text
+hi! link Quote GruvboxFg3
+" Normal text
+hi! link Text GruvboxFg1
 
 " Generic statement
-call s:HL('Statement',   s:red)
-" if, then, else, endif, swicth, etc.
-call s:HL('Conditional', s:red)
+hi! link Statement GruvboxRed
+" if, then, else, endif, switch, etc.
+hi! link Conditional GruvboxRed
 " for, do, while, etc.
-call s:HL('Repeat',      s:red)
+hi! link Repeat GruvboxRed
 " case, default, etc.
-call s:HL('Label',       s:red)
+hi! link Label GruvboxRed
 " try, catch, throw
-call s:HL('Exception',   s:red)
+hi! link Exception GruvboxRed
 " sizeof, "+", "*", etc.
-hi! link Operator Normal
+call s:HL('Operator', s:gb.orange, s:none, s:italicize_operators)
+" Punctuation
+hi! link Punctuation GruvboxBlue
+hi! link Delimiter Punctuation
+hi! link Bracket Punctuation
+hi! link Noise Punctuation
 " Any other keyword
-call s:HL('Keyword',     s:red)
+hi! link Keyword GruvboxRed
 
 " Variable name
-call s:HL('Identifier', s:blue)
+if g:gruvbox_legacy_language_groups
+  hi! link Identifier GruvboxFg1
+else
+  hi! link Identifier GruvboxBlue
+endif
+" Field/attribute names
+hi! link Field GruvboxAqua
+" Tag names
+hi! link Tag GruvboxGreen
 " Function name
-call s:HL('Function',   s:green, 'NONE', s:bold)
+hi! link Function GruvboxGreenBold
 
 " Generic preprocessor
-call s:HL('PreProc',   s:aqua)
+hi! link PreProc GruvboxAqua
 " Preprocessor #include
-call s:HL('Include',   s:aqua)
+hi! link Include GruvboxAqua
 " Preprocessor #define
-call s:HL('Define',    s:aqua)
+hi! link Define GruvboxAqua
 " Same as Define
-call s:HL('Macro',     s:aqua)
+hi! link Macro GruvboxAqua
 " Preprocessor #if, #else, #endif, etc.
-call s:HL('PreCondit', s:aqua)
+hi! link PreCondit GruvboxAqua
 
 " Generic constant
-call s:HL('Constant',  s:purple)
+hi! link Constant GruvboxPurple
 " Character constant: 'c', '/n'
-call s:HL('Character', s:purple)
+hi! link Character GruvboxPurple
 " String constant: "this is a string"
 if g:gruvbox_improved_strings == 0
-  call s:HL('String',  s:green, 'NONE', s:italicize_strings)
+  call s:HL('String', s:gb.green, s:none, s:italicize_strings)
 else
-  call s:HL('String',  s:bg1, s:fg1, s:italicize_strings)
+  call s:HL('String', s:gb.fg1, s:gb.bg1, s:italicize_strings)
 endif
 " Boolean constant: TRUE, false
-call s:HL('Boolean',   s:purple)
+hi! link Boolean GruvboxPurple
 " Number constant: 234, 0xff
-call s:HL('Number',    s:purple)
+hi! link Number GruvboxPurple
 " Floating point constant: 2.3e10
-call s:HL('Float',     s:purple)
+hi! link Float GruvboxPurple
 
 " Generic type
-call s:HL('Type', s:yellow)
-" static, register, volatile, etc
-call s:HL('StorageClass', s:orange)
-" struct, union, enum, etc.
-call s:HL('Structure', s:aqua)
-" typedef
-call s:HL('Typedef', s:yellow)
+hi! link Type GruvboxYellow
+if g:gruvbox_legacy_language_groups
+  " Generic type
+  hi! link StorageClass GruvboxOrange
+  " struct, union, enum, etc.
+  hi! link Structure GruvboxAqua
+  " typedef
+  hi! link Typedef GruvboxYellow
+else
+  hi! link StorageClass GruvboxYellow
+  hi! link Structure GruvboxYellow
+  hi! link Typedef GruvboxYellow
+endif
 
 " }}}
 " Completion Menu: {{{
 
-if version >= 700
+if v:version >= 700
   " Popup menu: normal item
-  call s:HL('Pmenu', s:fg1, s:bg2)
+  call s:HL('Pmenu', s:gb.fg1, s:gb.bg2)
   " Popup menu: selected item
-  call s:HL('PmenuSel', s:bg2, s:blue, s:bold)
+  call s:HL('PmenuSel', s:gb.bg2, s:gb.blue, s:bold)
   " Popup menu: scrollbar
-  call s:HL('PmenuSbar', 'NONE', s:bg2)
+  call s:HL('PmenuSbar', s:none, s:gb.bg2)
   " Popup menu: scrollbar thumb
-  call s:HL('PmenuThumb', 'NONE', s:bg4)
+  call s:HL('PmenuThumb', s:none, s:gb.bg4)
 endif
 
 " }}}
 " Diffs: {{{
 
-call s:HL('DiffDelete', s:red, s:bg0, s:inverse)
-call s:HL('DiffAdd',    s:green, s:bg0, s:inverse)
-"call s:HL('DiffChange', s:bg0, s:blue)
-"call s:HL('DiffText',   s:bg0, s:yellow)
+call s:HL('DiffDelete', s:gb.red, s:gb.bg0, s:inverse)
+call s:HL('DiffAdd',    s:gb.green, s:gb.bg0, s:inverse)
+"call s:HL('DiffChange', s:gb.bg0, s:gb.blue)
+"call s:HL('DiffText',   s:gb.bg0, s:gb.yellow)
 
 " Alternative setting
-call s:HL('DiffChange', s:aqua, s:bg0, s:inverse)
-call s:HL('DiffText',   s:yellow, s:bg0, s:inverse)
+call s:HL('DiffChange', s:gb.aqua, s:gb.bg0, s:inverse)
+call s:HL('DiffText',   s:gb.yellow, s:gb.bg0, s:inverse)
 
 " }}}
 " Spelling: {{{
 
-if has("spell")
+if has('spell')
   " Not capitalised word, or compile warnings
   if g:gruvbox_improved_warnings == 0
-    call s:HL('SpellCap',   'NONE', 'NONE', s:undercurl, s:red)
+    hi! link SpellCap GruvboxBlueUnderline
   else
-    call s:HL('SpellCap',   s:green, 'NONE', s:bold . s:italic)
+    call s:HL('SpellCap', s:gb.green, s:none, s:bold . s:italic)
   endif
   " Not recognized word
-  call s:HL('SpellBad',   'NONE', 'NONE', s:undercurl, s:blue)
+  hi! link SpellBad GruvboxRedUnderline
   " Wrong spelling for selected region
-  call s:HL('SpellLocal', 'NONE', 'NONE', s:undercurl, s:aqua)
+  hi! link SpellLocal GruvboxAquaUnderline
   " Rare word
-  call s:HL('SpellRare',  'NONE', 'NONE', s:undercurl, s:purple)
+  hi! link SpellRare GruvboxPurpleUnderline
+endif
+
+" }}}
+" LSP: {{{
+
+if has('nvim')
+  hi! link DiagnosticError GruvboxRed
+  hi! link DiagnosticSignError GruvboxRedSign
+  hi! link DiagnosticUnderlineError GruvboxRedUnderline
+
+  hi! link DiagnosticWarn GruvboxYellow
+  hi! link DiagnosticSignWarn GruvboxYellowSign
+  hi! link DiagnosticUnderlineWarn GruvboxYellowUnderline
+
+  hi! link DiagnosticInfo GruvboxBlue
+  hi! link DiagnosticSignInfo GruvboxBlueSign
+  hi! link DiagnosticUnderlineInfo GruvboxBlueUnderline
+
+  hi! link DiagnosticHint GruvboxAqua
+  hi! link DiagnosticSignHint GruvboxAquaSign
+  hi! link DiagnosticUnderlineHint GruvboxAquaUnderline
+
+  hi! link LspReferenceText GruvboxYellowBold
+  hi! link LspReferenceRead GruvboxYellowBold
+  hi! link LspReferenceWrite GruvboxOrangeBold
+
+  hi! link LspCodeLens GruvboxGray
+
+  " Backward Compatibilty prior to (https://github.com/neovim/neovim/pull/15585)
+  hi! link LspDiagnosticsDefaultError GruvboxRed
+  hi! link LspDiagnosticsSignError GruvboxRedSign
+  hi! link LspDiagnosticsUnderlineError GruvboxRedUnderline
+
+  hi! link LspDiagnosticsDefaultWarning GruvboxYellow
+  hi! link LspDiagnosticsSignWarning GruvboxYellowSign
+  hi! link LspDiagnosticsUnderlineWarning GruvboxYellowUnderline
+
+  hi! link LspDiagnosticsDefaultInformation GruvboxBlue
+  hi! link LspDiagnosticsSignInformation GruvboxBlueSign
+  hi! link LspDiagnosticsUnderlineInformation GruvboxBlueUnderline
+
+  hi! link LspDiagnosticsDefaultHint GruvboxAqua
+  hi! link LspDiagnosticsSignHint GruvboxAquaSign
+  hi! link LspDiagnosticsUnderlineHint GruvboxAquaUnderline
+endif
+
+" LSP highlighting
+if g:gruvbox_treesitter
+  hi! link @lsp.type.member Function
+  hi! link @lsp.type.property Field
+  hi! link @lsp.typemod.variable.defaultLibrary @variable.builtin
+endif
+
+" }}}
+" Treesitter: {{{
+
+if g:gruvbox_treesitter
+  hi! link @comment Comment
+  hi! link @error Error
+  hi! link @none NONE
+  hi! link @preproc PreProc
+  hi! link @define Define
+  hi! link @operator Operator
+
+  hi! link @punctuation Punctuation
+  hi! link @punctuation.delimiter Delimiter
+  hi! link @punctuation.bracket Bracket
+  "hi! link @punctuation.special Special
+
+  hi! link @string String
+  "hi! link @string.regex String
+  hi! link @string.escape Special
+  "hi! link @string.special Special
+
+  hi! link @character Character
+  hi! link @character.special Special
+
+  hi! link @boolean Boolean
+  hi! link @number Number
+  hi! link @float Float
+
+  hi! link @function Function
+  "hi! link @function.builtin Special
+  "hi! link @function.call Special
+  hi! link @function.macro Macro
+
+  hi! link @method Function
+  hi! link @method.call Function
+
+  hi! link @constructor Function
+  hi! link @parameter Identifier
+
+  hi! link @keyword Keyword
+  "hi! link @keyword.function Function
+  "hi! link @keyword.operator Operator
+  "hi! link @keyword.return Special
+
+  hi! link @conditional Conditional
+  hi! link @conditional.ternary Operator
+  hi! link @repeat Repeat
+  hi! link @debug Debug
+  hi! link @label Label
+  " Fix JSON fields appearing as labels (supposed to be "case", "default", etc.)
+  hi! link @label.json Field
+  hi! link @include Include
+  hi! link @exception Exception
+
+  hi! link @type Type
+  "hi! link @type.builtin Type
+  "hi! link @type.qualifier Type
+  hi! link @type.definition Typedef
+
+  hi! link @storageclass StorageClass
+  hi! link @attribute PreProc
+  hi! link @field Field
+  hi! link @property Field
+
+  hi! link @variable Identifier
+  hi! link @variable.builtin Special
+
+  hi! link @constant Constant
+  "hi! link @constant.builtin Special
+  hi! link @constant.macro Macro
+
+  hi! link @namespace Include
+  "hi! link @symbol Identifier
+
+  hi! link @text Text
+  hi! link @text.strong Bold
+  hi! link @text.emphasis Bold
+  hi! link @text.underline Underlined
+  hi! link @text.strike Strikethrough
+  hi! link @text.title Title
+  hi! link @text.literal String
+  hi! link @text.uri Link
+  hi! link @text.math Special
+  hi! link @text.environment PreProc
+  hi! link @text.environment.name Delimiter
+  hi! link @text.reference Identifier
+
+  hi! link @text.todo Todo
+  hi! link @text.note SpecialComment
+  hi! link @text.danger Error
+  hi! link @text.warning WarningMsg
+
+  hi! link @tag Tag
+  hi! link @tag.attribute Field
+  hi! link @tag.delimiter Delimiter
 endif
 
 " }}}
 
 " Plugin specific -------------------------------------------------------------
+" Fugitive: {{{
+
+hi! link fugitiveHash GruvboxBlue
+
+" }}}
 " EasyMotion: {{{
 
-hi! link EasyMotionTarget Search
-hi! link EasyMotionShade Comment
+hi! link EasyMotionTarget GruvboxRedBold
+hi! link EasyMotionTarget2First GruvboxYellowBold
+hi! link EasyMotionTarget2Second GruvboxOrangeBold
+hi! link EasyMotionShade GruvboxGray
 
 " }}}
 " Sneak: {{{
 
-hi! link SneakPluginTarget Search
-hi! link SneakStreakTarget Search
-call s:HL('SneakStreakMask', s:yellow, s:yellow)
-hi! link SneakStreakStatusLine Search
+hi! link Sneak Search
+hi! link SneakLabel Search
 
 " }}}
 " Indent Guides: {{{
@@ -650,11 +1013,11 @@ endif
 
 if g:indent_guides_auto_colors == 0
   if g:gruvbox_invert_indent_guides == 0
-    call s:HL('IndentGuidesOdd', 'bg', s:bg2)
-    call s:HL('IndentGuidesEven', 'bg', s:bg1)
+    call s:HL('IndentGuidesOdd', s:vim_bg, s:gb.bg2)
+    call s:HL('IndentGuidesEven', s:vim_bg, s:gb.bg1)
   else
-    call s:HL('IndentGuidesOdd', 'bg', s:bg2, s:inverse)
-    call s:HL('IndentGuidesEven', 'bg', s:bg3, s:inverse)
+    call s:HL('IndentGuidesOdd', s:vim_bg, s:gb.bg2, s:inverse)
+    call s:HL('IndentGuidesEven', s:vim_bg, s:gb.bg3, s:inverse)
   endif
 endif
 
@@ -662,10 +1025,10 @@ endif
 " IndentLine: {{{
 
 if !exists('g:indentLine_color_term')
-  let g:indentLine_color_term = s:bg2[1]
+  let g:indentLine_color_term = s:gb.bg2[1]
 endif
 if !exists('g:indentLine_color_gui')
-  let g:indentLine_color_gui = s:bg2[0]
+  let g:indentLine_color_gui = s:gb.bg2[0]
 endif
 
 " }}}
@@ -698,501 +1061,1305 @@ let g:niji_light_colours = g:rbpt_colorp
 "}}}
 " GitGutter: {{{
 
-call s:HL('GitGutterAdd', s:green, s:sign_column, s:invert_signs)
-call s:HL('GitGutterChange', s:aqua, s:sign_column, s:invert_signs)
-call s:HL('GitGutterDelete', s:red, s:sign_column, s:invert_signs)
-call s:HL('GitGutterChangeDelete', s:aqua, s:sign_column, s:invert_signs)
+hi! link GitGutterAdd GruvboxGreenSign
+hi! link GitGutterChange GruvboxAquaSign
+hi! link GitGutterDelete GruvboxRedSign
+hi! link GitGutterChangeDelete GruvboxAquaSign
 
 " }}}
 " GitCommit: "{{{
 
-call s:HL('gitcommitSelectedFile', s:green)
-call s:HL('gitcommitDiscardedFile', s:red)
+hi! link gitcommitSelectedFile GruvboxGreen
+hi! link gitcommitDiscardedFile GruvboxRed
 
 " }}}
 " Signify: {{{
 
-call s:HL('SignifySignAdd', s:green, s:sign_column, s:invert_signs)
-call s:HL('SignifySignChange ', s:aqua, s:sign_column, s:invert_signs)
-call s:HL('SignifySignDelete', s:red, s:sign_column, s:invert_signs)
+hi! link SignifySignAdd GruvboxGreenSign
+hi! link SignifySignChange GruvboxAquaSign
+hi! link SignifySignDelete GruvboxRedSign
+
+" }}}
+" gitsigns.nvim {{{
+
+hi! link GitSignsAdd GruvboxGreenSign
+hi! link GitSignsChange GruvboxOrangeSign
+hi! link GitSignsDelete GruvboxRedSign
 
 " }}}
 " Syntastic: {{{
 
-call s:HL('SyntasticError', 'NONE', 'NONE', s:undercurl, s:red)
-call s:HL('SyntasticWarning', 'NONE', 'NONE', s:undercurl, s:yellow)
+hi! link SyntasticError GruvboxRedUnderline
+hi! link SyntasticWarning GruvboxYellowUnderline
 
-call s:HL('SyntasticErrorSign', s:red, s:sign_column, s:invert_signs)
-call s:HL('SyntasticWarningSign', s:yellow, s:sign_column, s:invert_signs)
+hi! link SyntasticErrorSign GruvboxRedSign
+hi! link SyntasticWarningSign GruvboxYellowSign
 
 " }}}
-" Signature: {{{
+" Termdebug: {{{
 
-call s:HL('SignatureMarkerText', s:purple, s:sign_column, s:invert_signs)
-call s:HL('SignatureMarkText', s:blue, s:sign_column, s:invert_signs)
+call s:HL('debugPC', s:none, s:gb.faded_blue)
+hi! link debugBreakpoint GruvboxRedSign
 
-let g:SignatureMarkerTextHL='"SignatureMarkerText"'
-let g:SignatureMarkTextHL='"SignatureMarkText"'
+" }}}
+" Signature: {{{
+
+hi! link SignatureMarkText   GruvboxBlueSign
+hi! link SignatureMarkerText GruvboxPurpleSign
 
 " }}}
 " ShowMarks: {{{
 
-call s:HL('ShowMarksHLl', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLu', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLo', s:blue, s:sign_column, s:invert_signs)
-call s:HL('ShowMarksHLm', s:blue, s:sign_column, s:invert_signs)
+hi! link ShowMarksHLl GruvboxBlueSign
+hi! link ShowMarksHLu GruvboxBlueSign
+hi! link ShowMarksHLo GruvboxBlueSign
+hi! link ShowMarksHLm GruvboxBlueSign
 
 " }}}
 " CtrlP: {{{
 
-call s:HL('CtrlPMatch', s:yellow)
-call s:HL('CtrlPNoEntries', s:red)
-call s:HL('CtrlPPrtBase', s:bg2)
-call s:HL('CtrlPPrtCursor', s:blue)
-call s:HL('CtrlPLinePre', s:bg2)
-
-call s:HL('CtrlPMode1', s:blue, s:bg2, s:bold)
-call s:HL('CtrlPMode2', s:bg0, s:blue, s:bold)
-call s:HL('CtrlPStats', s:fg4, s:bg2, s:bold)
+hi! link CtrlPMatch GruvboxYellow
+hi! link CtrlPNoEntries GruvboxRed
+hi! link CtrlPPrtBase GruvboxBg2
+hi! link CtrlPPrtCursor GruvboxBlue
+hi! link CtrlPLinePre GruvboxBg2
+
+call s:HL('CtrlPMode1', s:gb.blue, s:gb.bg2, s:bold)
+call s:HL('CtrlPMode2', s:gb.bg0, s:gb.blue, s:bold)
+call s:HL('CtrlPStats', s:gb.fg4, s:gb.bg2, s:bold)
+
+" }}}
+" FZF: {{{
+
+let g:fzf_colors = {
+      \ 'fg':      ['fg', 'GruvboxFg1'],
+      \ 'bg':      ['fg', 'GruvboxBg0'],
+      \ 'hl':      ['fg', 'GruvboxYellow'],
+      \ 'fg+':     ['fg', 'GruvboxFg1'],
+      \ 'bg+':     ['fg', 'GruvboxBg1'],
+      \ 'hl+':     ['fg', 'GruvboxYellow'],
+      \ 'info':    ['fg', 'GruvboxBlue'],
+      \ 'prompt':  ['fg', 'GruvboxFg4'],
+      \ 'pointer': ['fg', 'GruvboxBlue'],
+      \ 'marker':  ['fg', 'GruvboxOrange'],
+      \ 'spinner': ['fg', 'GruvboxYellow'],
+      \ 'header':  ['fg', 'GruvboxBg3']
+      \ }
+
+call s:HL('Fzf1', s:gb.blue, s:gb.bg1)
+call s:HL('Fzf2', s:gb.orange, s:gb.bg1)
+call s:HL('Fzf3', s:gb.fg4, s:gb.bg1)
 
 " }}}
 " Startify: {{{
 
-call s:HL('StartifyBracket', s:fg3)
-call s:HL('StartifyFile', s:fg0)
-call s:HL('StartifyNumber', s:blue)
-call s:HL('StartifyPath', s:gray)
-call s:HL('StartifySlash', s:gray)
-call s:HL('StartifySection', s:yellow)
-call s:HL('StartifySpecial', s:bg2)
-call s:HL('StartifyHeader', s:orange)
-call s:HL('StartifyFooter', s:bg2)
+hi! link StartifyBracket GruvboxFg3
+hi! link StartifyFile GruvboxFg1
+hi! link StartifyNumber GruvboxBlue
+hi! link StartifyPath GruvboxGray
+hi! link StartifySlash GruvboxGray
+hi! link StartifySection GruvboxYellow
+hi! link StartifySpecial GruvboxBg2
+hi! link StartifyHeader GruvboxOrange
+hi! link StartifyFooter GruvboxBg2
 
 " }}}
 " Vimshell: {{{
 
 let g:vimshell_escape_colors = [
-  \ s:bg4[0], s:red[0], s:green[0], s:yellow[0],
-  \ s:blue[0], s:purple[0], s:aqua[0], s:fg4[0],
-  \ s:bg0[0], s:red[0], s:green[0], s:orange[0],
-  \ s:blue[0], s:purple[0], s:aqua[0], s:fg0[0]
+  \ s:gb.bg4[0], s:gb.red[0], s:gb.green[0], s:gb.yellow[0],
+  \ s:gb.blue[0], s:gb.purple[0], s:gb.aqua[0], s:gb.fg4[0],
+  \ s:gb.bg0[0], s:gb.red[0], s:gb.green[0], s:gb.orange[0],
+  \ s:gb.blue[0], s:gb.purple[0], s:gb.aqua[0], s:gb.fg0[0]
   \ ]
 
 " }}}
+" BufTabLine: {{{
 
-" Filetype specific -----------------------------------------------------------
-" Diff: {{{
+call s:HL('BufTabLineCurrent', s:gb.bg0, s:gb.fg4)
+call s:HL('BufTabLineActive', s:gb.fg4, s:gb.bg2)
+call s:HL('BufTabLineHidden', s:gb.bg4, s:gb.bg1)
+call s:HL('BufTabLineFill', s:gb.bg0, s:gb.bg0)
+
+" }}}
+" Asynchronous Lint Engine: {{{
+
+hi! link ALEError GruvboxRedUnderline
+hi! link ALEWarning GruvboxYellowUnderline
+hi! link ALEInfo GruvboxBlueUnderline
+
+hi! link ALEErrorSign GruvboxRedSign
+hi! link ALEWarningSign GruvboxYellowSign
+hi! link ALEInfoSign GruvboxBlueSign
+
+hi! link ALEVirtualTextError GruvboxRed
+hi! link ALEVirtualTextWarning GruvboxYellow
+hi! link ALEVirtualTextInfo GruvboxBlue
+
+" }}}
+" Dirvish: {{{
+
+hi! link DirvishPathTail GruvboxAqua
+hi! link DirvishArg GruvboxYellow
+
+" }}}
+" Netrw: {{{
+
+hi! link netrwDir GruvboxAqua
+hi! link netrwClassify GruvboxAqua
+hi! link netrwLink GruvboxGray
+hi! link netrwSymLink GruvboxFg1
+hi! link netrwExe GruvboxYellow
+hi! link netrwComment GruvboxGray
+hi! link netrwList GruvboxBlue
+hi! link netrwHelpCmd GruvboxAqua
+hi! link netrwCmdSep GruvboxFg3
+hi! link netrwVersion GruvboxGreen
+
+" }}}
+" NERDTree: {{{
+
+hi! link NERDTreeDir GruvboxAqua
+hi! link NERDTreeDirSlash GruvboxAqua
+
+hi! link NERDTreeOpenable GruvboxOrange
+hi! link NERDTreeClosable GruvboxOrange
+
+hi! link NERDTreeFile GruvboxFg1
+hi! link NERDTreeExecFile GruvboxYellow
+
+hi! link NERDTreeUp GruvboxGray
+hi! link NERDTreeCWD GruvboxGreen
+hi! link NERDTreeHelp GruvboxFg1
+
+hi! link NERDTreeToggleOn GruvboxGreen
+hi! link NERDTreeToggleOff GruvboxRed
+
+" }}}
+" Vim Multiple Cursors: {{{
+
+call s:HL('multiple_cursors_cursor', s:none, s:none, s:inverse)
+call s:HL('multiple_cursors_visual', s:none, s:gb.bg2)
+
+" }}}
+" coc.nvim: {{{
+
+hi! link CocErrorSign GruvboxRedSign
+hi! link CocWarningSign GruvboxOrangeSign
+hi! link CocInfoSign GruvboxBlueSign
+hi! link CocHintSign GruvboxAquaSign
+hi! link CocErrorFloat GruvboxRed
+hi! link CocWarningFloat GruvboxOrange
+hi! link CocInfoFloat GruvboxBlue
+hi! link CocHintFloat GruvboxAqua
+hi! link CocDiagnosticsError GruvboxRed
+hi! link CocDiagnosticsWarning GruvboxOrange
+hi! link CocDiagnosticsInfo GruvboxBlue
+hi! link CocDiagnosticsHint GruvboxAqua
+
+hi! link CocSelectedText GruvboxRed
+hi! link CocCodeLens GruvboxGray
+hi! link CocSearch GruvboxAqua
+
+hi! link CocErrorHighlight GruvboxRedUnderline
+hi! link CocWarningHighlight GruvboxOrangeUnderline
+hi! link CocInfoHighlight GruvboxBlueUnderline
+hi! link CocHintHighlight GruvboxAquaUnderline
+
+" }}}
+" Telescope.nvim: {{{
+
+hi! link TelescopeNormal GruvboxFg1
+hi! link TelescopeSelection GruvboxOrangeBold
+hi! link TelescopeSelectionCaret GruvboxRed
+hi! link TelescopeMultiSelection GruvboxGray
+hi! link TelescopeBorder TelescopeNormal
+hi! link TelescopePromptBorder TelescopeNormal
+hi! link TelescopeResultsBorder TelescopeNormal
+hi! link TelescopePreviewBorder TelescopeNormal
+hi! link TelescopeMatching GruvboxBlue
+hi! link TelescopePromptPrefix GruvboxRed
+hi! link TelescopePrompt TelescopeNormal
+
+" }}}
+" nvim-cmp: {{{
+
+hi! link CmpItemAbbr GruvboxFg0
+hi! link CmpItemAbbrDeprecated GruvboxFg1
+hi! link CmpItemAbbrMatch GruvboxBlueBold
+hi! link CmpItemAbbrMatchFuzzy GruvboxBlueUnderline
+hi! link CmpItemMenu GruvboxGray
+hi! link CmpItemKindText GruvboxOrange
+hi! link CmpItemKindMethod GruvboxBlue
+hi! link CmpItemKindFunction GruvboxBlue
+hi! link CmpItemKindConstructor GruvboxYellow
+hi! link CmpItemKindField GruvboxBlue
+hi! link CmpItemKindClass GruvboxYellow
+hi! link CmpItemKindInterface GruvboxYellow
+hi! link CmpItemKindModule GruvboxBlue
+hi! link CmpItemKindProperty GruvboxBlue
+hi! link CmpItemKindValue GruvboxOrange
+hi! link CmpItemKindEnum GruvboxYellow
+hi! link CmpItemKindKeyword GruvboxPurple
+hi! link CmpItemKindSnippet GruvboxGreen
+hi! link CmpItemKindFile GruvboxBlue
+hi! link CmpItemKindEnumMember GruvBoxAqua
+hi! link CmpItemKindConstant GruvboxOrange
+hi! link CmpItemKindStruct GruvboxYellow
+hi! link CmpItemKindTypeParameter GruvboxYellow
 
-call s:HL('diffAdded', s:green)
-call s:HL('diffRemoved', s:red)
-call s:HL('diffChanged', s:aqua)
+"}}}
+" Dashboard: {{{
 
-call s:HL('diffFile', s:orange)
-call s:HL('diffNewFile', s:yellow)
+hi! link DashboardHeader GruvboxYellowBold
+hi! link DashboardCenter GruvboxGreen
+hi! link DashboardCenterIcon GruvboxAqua
+hi! link DashboardShortCut GruvboxBlue
+hi! link DashboardFooter GruvboxPurple
 
-call s:HL('diffLine', s:blue)
+" }}}
+
+" Filetype specific -----------------------------------------------------------
+" C: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link cOperator GruvboxPurple
+  hi! link cppOperator GruvboxPurple
+  hi! link cStructure GruvboxOrange
+endif
 
 " }}}
-" Html: {{{
+" C#: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link csBraces GruvboxFg1
+  hi! link csEndColon GruvboxFg1
+  hi! link csLogicSymbols GruvboxFg1
+  hi! link csParens GruvboxFg3
+  hi! link csOpSymbols GruvboxFg3
+  hi! link csInterpolationDelimiter GruvboxFg3
+  hi! link csInterpolationAlignDel GruvboxAquaBold
+  hi! link csInterpolationFormat GruvboxAqua
+  hi! link csInterpolationFormatDel GruvboxAquaBold
+else
+  hi! link csBraces Bracket
+  hi! link csEndColon Punctuation
+  hi! link csParens Bracket
+
+  hi! link csLogicSymbols Operator
+  hi! link csOpSymbols Operator
+  hi! link csStorage Keyword
+  hi! link csUnspecifiedStatement Statement
+
+  hi! link csInterpolationAlignDel Punctuation
+  hi! link csInterpolationDelimiter Punctuation
+  hi! link csInterpolationFormatDel Punctuation
+  hi! link csInterpolationFormat Special
+endif
 
-call s:HL('htmlTag', s:blue)
-call s:HL('htmlEndTag', s:blue)
+" }}}
+" Clojure: {{{
 
-call s:HL('htmlTagName', s:aqua, 'NONE', s:bold)
-call s:HL('htmlArg', s:aqua)
+if g:gruvbox_legacy_language_groups
+  hi! link clojureKeyword GruvboxBlue
+  hi! link clojureCond GruvboxOrange
+  hi! link clojureSpecial GruvboxOrange
+  hi! link clojureDefine GruvboxOrange
+
+  hi! link clojureFunc GruvboxYellow
+  hi! link clojureRepeat GruvboxYellow
+  hi! link clojureCharacter GruvboxAqua
+  hi! link clojureStringEscape GruvboxAqua
+  hi! link clojureException GruvboxRed
+
+  hi! link clojureRegexp GruvboxAqua
+  hi! link clojureRegexpEscape GruvboxAqua
+  call s:HL('clojureRegexpCharClass', s:gb.fg3, s:none, s:bold)
+  hi! link clojureRegexpMod clojureRegexpCharClass
+  hi! link clojureRegexpQuantifier clojureRegexpCharClass
+
+  hi! link clojureParen GruvboxFg3
+  hi! link clojureAnonArg GruvboxYellow
+  hi! link clojureVariable GruvboxBlue
+  hi! link clojureMacro GruvboxOrange
+
+  hi! link clojureMeta GruvboxYellow
+  hi! link clojureDeref GruvboxYellow
+  hi! link clojureQuote GruvboxYellow
+  hi! link clojureUnquote GruvboxYellow
+else
+  hi! link clojureStringEscape Special
+endif
 
-call s:HL('htmlScriptTag', s:purple)
-call s:HL('htmlTagN', s:fg1)
-call s:HL('htmlSpecialTagName', s:aqua, 'NONE', s:bold)
+" }}}
+" CoffeeScript: {{{
 
-call s:HL('htmlLink', s:fg4, 'NONE', s:underline)
+if g:gruvbox_legacy_language_groups
+  hi! link coffeeExtendedOp GruvboxFg3
+  hi! link coffeeSpecialOp GruvboxFg3
+  hi! link coffeeCurly GruvboxOrange
+  hi! link coffeeParen GruvboxFg3
+  hi! link coffeeBracket GruvboxOrange
+else
+  hi! link coffeeBracket Bracket
+  hi! link coffeeCurly Bracket
+  hi! link coffeeExtendedOp Operator
+  hi! link coffeeObjAssign Field
+  hi! link coffeeObject Field
+  hi! link coffeeParen Bracket
+  hi! link coffeeSpecialOp Operator
+endif
 
-call s:HL('htmlSpecialChar', s:orange)
+" }}}
+" CSS: {{{
 
-call s:HL('htmlBold', 'fg', 'bg', s:bold)
-call s:HL('htmlBoldUnderline', 'fg', 'bg', s:bold . s:underline)
-call s:HL('htmlBoldItalic', 'fg', 'bg', s:bold . s:italic)
-call s:HL('htmlBoldUnderlineItalic', 'fg', 'bg', s:bold . s:underline . s:italic)
+if g:gruvbox_legacy_language_groups
+  hi! link cssBraces GruvboxBlue
+  hi! link cssFunctionName GruvboxYellow
+  hi! link cssIdentifier GruvboxOrange
+  hi! link cssClassName GruvboxGreen
+  hi! link cssColor GruvboxBlue
+  hi! link cssSelectorOp GruvboxBlue
+  hi! link cssSelectorOp2 GruvboxBlue
+  hi! link cssImportant GruvboxGreen
+  hi! link cssVendor GruvboxFg1
+
+  hi! link cssTextProp GruvboxAqua
+  hi! link cssAnimationProp GruvboxAqua
+  hi! link cssUIProp GruvboxYellow
+  hi! link cssTransformProp GruvboxAqua
+  hi! link cssTransitionProp GruvboxAqua
+  hi! link cssPrintProp GruvboxAqua
+  hi! link cssPositioningProp GruvboxYellow
+  hi! link cssBoxProp GruvboxAqua
+  hi! link cssFontDescriptorProp GruvboxAqua
+  hi! link cssFlexibleBoxProp GruvboxAqua
+  hi! link cssBorderOutlineProp GruvboxAqua
+  hi! link cssBackgroundProp GruvboxAqua
+  hi! link cssMarginProp GruvboxAqua
+  hi! link cssListProp GruvboxAqua
+  hi! link cssTableProp GruvboxAqua
+  hi! link cssFontProp GruvboxAqua
+  hi! link cssPaddingProp GruvboxAqua
+  hi! link cssDimensionProp GruvboxAqua
+  hi! link cssRenderProp GruvboxAqua
+  hi! link cssColorProp GruvboxAqua
+  hi! link cssGeneratedContentProp GruvboxAqua
+else
+  hi! link cssClassName Tag
+  hi! link cssClassNameDot Operator
+  hi! link cssFunctionName Special
+  hi! link cssFunctionComma Special
+  hi! link cssIdentifier Identifier
+  hi! link cssImportant Keyword
+  hi! link cssPseudoClassId Tag
+
+  hi! link cssAttrComma Punctuation
+  hi! link cssAtRule Punctuation
+  hi! link cssBraces Punctuation
+  hi! link cssSelectorOp2 Punctuation
+  hi! link cssSelectorOp Punctuation
 
-call s:HL('htmlUnderline', 'fg', 'bg', s:underline)
-call s:HL('htmlUnderlineItalic', 'fg', 'bg', s:underline . s:italic)
-call s:HL('htmlItalic', 'fg', 'bg', s:italic)
+  hi! link cssProp Field
+  hi! link cssVendor Field
+endif
 
 " }}}
-" Xml: {{{
+" Diff: {{{
+
+hi! link diffAdded GruvboxGreen
+hi! link diffRemoved GruvboxRed
+hi! link diffChanged GruvboxAqua
+
+hi! link diffFile GruvboxOrange
+hi! link diffNewFile GruvboxYellow
 
-call s:HL('xmlTag', s:blue)
-call s:HL('xmlEndTag', s:blue)
-call s:HL('xmlTagName', s:blue)
-call s:HL('xmlEqual', s:blue)
-call s:HL('docbkKeyword', s:aqua, 'NONE', s:bold)
-
-call s:HL('xmlDocTypeDecl', s:gray)
-call s:HL('xmlDocTypeKeyword', s:purple)
-call s:HL('xmlCdataStart', s:gray)
-call s:HL('xmlCdataCdata', s:purple)
-call s:HL('dtdFunction', s:gray)
-call s:HL('dtdTagName', s:purple)
-
-call s:HL('xmlAttrib', s:aqua)
-call s:HL('xmlProcessingDelim', s:gray)
-call s:HL('dtdParamEntityPunct', s:gray)
-call s:HL('dtdParamEntityDPunct', s:gray)
-call s:HL('xmlAttribPunct', s:gray)
+hi! link diffLine GruvboxBlue
 
-call s:HL('xmlEntity', s:orange)
-call s:HL('xmlEntityPunct', s:orange)
 " }}}
-" Vim: {{{
+" Elixir: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link elixirDocString Comment
 
-call s:HL('vimCommentTitle', s:fg4_256, 'NONE', s:bold . s:italicize_comments)
+  hi! link elixirStringDelimiter GruvboxGreen
+  hi! link elixirInterpolationDelimiter GruvboxAqua
 
-call s:HL('vimNotation', s:orange)
-call s:HL('vimBracket', s:orange)
-call s:HL('vimMapModKey', s:orange)
-call s:HL('vimFuncSID', s:fg3)
-call s:HL('vimSetSep', s:fg3)
-call s:HL('vimSep', s:fg3)
-call s:HL('vimContinue', s:fg3)
+  hi! link elixirModuleDeclaration GruvboxYellow
+else
+  hi! link elixirDocString Comment
+
+  hi! link elixirStringDelimiter String
+  hi! link elixirInterpolationDelimiter Punctuation
+
+  hi! link elixirModuleDeclaration TypeDef
+endif
 
 " }}}
-" Clojure: {{{
+" Go: {{{
 
-call s:HL('clojureKeyword', s:blue)
-call s:HL('clojureCond', s:orange)
-call s:HL('clojureSpecial', s:orange)
-call s:HL('clojureDefine', s:orange)
-
-call s:HL('clojureFunc', s:yellow)
-call s:HL('clojureRepeat', s:yellow)
-call s:HL('clojureCharacter', s:aqua)
-call s:HL('clojureStringEscape', s:aqua)
-call s:HL('clojureException', s:red)
-
-call s:HL('clojureRegexp', s:aqua)
-call s:HL('clojureRegexpEscape', s:aqua)
-call s:HL('clojureRegexpCharClass', s:fg3, 'NONE', s:bold)
-call s:HL('clojureRegexpMod', s:fg3, 'NONE', s:bold)
-call s:HL('clojureRegexpQuantifier', s:fg3, 'NONE', s:bold)
-
-call s:HL('clojureParen', s:fg3)
-call s:HL('clojureAnonArg', s:yellow)
-call s:HL('clojureVariable', s:blue)
-call s:HL('clojureMacro', s:orange)
-
-call s:HL('clojureMeta', s:yellow)
-call s:HL('clojureDeref', s:yellow)
-call s:HL('clojureQuote', s:yellow)
-call s:HL('clojureUnquote', s:yellow)
+if g:gruvbox_legacy_language_groups
+  hi! link goDirective GruvboxAqua
+  hi! link goConstants GruvboxPurple
+  hi! link goDeclaration GruvboxRed
+  hi! link goDeclType GruvboxBlue
+  hi! link goBuiltins GruvboxOrange
+else
+  hi! link goConst StorageClass
+  hi! link goImport Include
+  hi! link goParen Bracket
+endif
 
 " }}}
-" C: {{{
+" Haskell: {{{
 
-call s:HL('cOperator', s:purple)
-call s:HL('cStructure', s:orange)
+if g:gruvbox_legacy_language_groups
+  hi! link haskellType GruvboxBlue
+  hi! link haskellIdentifier GruvboxAqua
+  hi! link haskellSeparator GruvboxFg4
+  hi! link haskellDelimiter GruvboxOrange
+  hi! link haskellOperators GruvboxPurple
+
+  hi! link haskellBacktick GruvboxOrange
+  hi! link haskellStatement GruvboxPurple
+  hi! link haskellConditional GruvboxPurple
+
+  hi! link haskellLet GruvboxRed
+  hi! link haskellDefault GruvboxRed
+  hi! link haskellWhere GruvboxRed
+  hi! link haskellBottom GruvboxRedBold
+  hi! link haskellImportKeywords GruvboxPurpleBold
+  hi! link haskellDeclKeyword GruvboxOrange
+  hi! link haskellDecl GruvboxOrange
+  hi! link haskellDeriving GruvboxPurple
+  hi! link haskellAssocType GruvboxAqua
+
+  hi! link haskellNumber GruvboxAqua
+  hi! link haskellPragma GruvboxRedBold
+
+  hi! link haskellTH GruvboxAquaBold
+  hi! link haskellForeignKeywords GruvboxGreen
+  hi! link haskellKeyword GruvboxRed
+  hi! link haskellFloat GruvboxAqua
+  hi! link haskellInfix GruvboxPurple
+  hi! link haskellQuote GruvboxGreenBold
+  hi! link haskellShebang GruvboxYellowBold
+  hi! link haskellLiquid GruvboxPurpleBold
+  hi! link haskellQuasiQuoted GruvboxBlueBold
+  hi! link haskellRecursiveDo GruvboxPurple
+  hi! link haskellQuotedType GruvboxRed
+  hi! link haskellPreProc GruvboxFg4
+  hi! link haskellTypeRoles GruvboxRedBold
+  hi! link haskellTypeForall GruvboxRed
+  hi! link haskellPatternKeyword GruvboxBlue
+else
+  hi! link haskellChar Character
+  hi! link haskellFloat Float
+  hi! link haskellNumber Number
+  hi! link haskellTH Boolean
+
+  hi! link haskellBottom Keyword
+  hi! link haskellDecl Keyword
+  hi! link haskellDeclKeyword Keyword
+  hi! link haskellDefault Keyword
+  hi! link haskellDeriveKeyword Keyword
+  hi! link haskellInfix Keyword
+  hi! link haskellKeyword Keyword
+  hi! link haskellLet Keyword
+  hi! link haskellPatternKeyword Keyword
+  hi! link haskellRecursiveDo Keyword
+  hi! link haskellTypeRoles Keyword
+  hi! link haskellWhere Keyword
+
+  hi! link haskellAssocType Type
+  hi! link haskellBacktick Special
+  hi! link haskellConditional Keyword
+  hi! link haskellDelimiter Delimiter
+  hi! link haskellForall Operator
+  hi! link haskellForeignKeywords Include
+  hi! link haskellIdentifier Identifier
+  hi! link haskellImportKeywords Include
+  hi! link haskellLiquid Comment
+  hi! link haskellOperators Operator
+  hi! link haskellPragma PreProc
+  hi! link haskellPreProc PreProc
+  hi! link haskellQuasiQuoted String
+  hi! link haskellQuotedType Type
+  hi! link haskellQuote String
+  hi! link haskellSeparator Punctuation
+  hi! link haskellShebang Comment
+  hi! link haskellType Type
+endif
 
 " }}}
-" Python: {{{
+" Html: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link htmlTag GruvboxAquaBold
+  hi! link htmlEndTag GruvboxAquaBold
+
+  hi! link htmlTagName GruvboxBlue
+  hi! link htmlArg GruvboxOrange
+
+  hi! link htmlTagN GruvboxFg1
+  hi! link htmlSpecialTagName GruvboxBlue
+
+  hi! link htmlSpecialChar GruvboxRed
+else
+  hi! link htmlTag Punctuation
+  hi! link htmlEndTag Punctuation
+
+  hi! link htmlTagName Tag
+  hi! link htmlArg Field
 
-call s:HL('pythonBuiltin', s:orange)
-call s:HL('pythonBuiltinObj', s:orange)
-call s:HL('pythonBuiltinFunc', s:orange)
-call s:HL('pythonFunction', s:aqua)
-call s:HL('pythonDecorator', s:red)
-call s:HL('pythonInclude', s:blue)
-call s:HL('pythonImport', s:blue)
-call s:HL('pythonRun', s:blue)
-call s:HL('pythonCoding', s:blue)
-call s:HL('pythonOperator', s:red)
-call s:HL('pythonExceptions', s:purple)
-call s:HL('pythonBoolean', s:purple)
-call s:HL('pythonDot', s:fg3)
+  hi! link htmlTagN Normal
+  hi! link htmlSpecialTagName Special
+
+  hi! link htmlSpecialChar Special
+endif
+
+call s:HL('htmlLink', s:gb.fg4, s:none, s:underline)
+
+call s:HL('htmlBold', s:vim_fg, s:vim_bg, s:bold)
+call s:HL('htmlBoldUnderline', s:vim_fg, s:vim_bg, s:bold . s:underline)
+call s:HL('htmlBoldItalic', s:vim_fg, s:vim_bg, s:bold . s:italic)
+call s:HL('htmlBoldUnderlineItalic', s:vim_fg, s:vim_bg, s:bold . s:underline . s:italic)
+
+call s:HL('htmlUnderline', s:vim_fg, s:vim_bg, s:underline)
+call s:HL('htmlUnderlineItalic', s:vim_fg, s:vim_bg, s:underline . s:italic)
+call s:HL('htmlItalic', s:vim_fg, s:vim_bg, s:italic)
 
 " }}}
-" CSS: {{{
+" Java: {{{
 
-call s:HL('cssBraces', s:blue)
-call s:HL('cssFunctionName', s:yellow)
-call s:HL('cssIdentifier', s:orange)
-call s:HL('cssClassName', s:green)
-call s:HL('cssColor', s:blue)
-call s:HL('cssSelectorOp', s:blue)
-call s:HL('cssSelectorOp2', s:blue)
-call s:HL('cssImportant', s:green)
-call s:HL('cssVendor', s:fg1)
-
-call s:HL('cssTextProp', s:aqua)
-call s:HL('cssAnimationProp', s:aqua)
-call s:HL('cssUIProp', s:yellow)
-call s:HL('cssTransformProp', s:aqua)
-call s:HL('cssTransitionProp', s:aqua)
-call s:HL('cssPrintProp', s:aqua)
-call s:HL('cssPositioningProp', s:yellow)
-call s:HL('cssBoxProp', s:aqua)
-call s:HL('cssFontDescriptorProp', s:aqua)
-call s:HL('cssFlexibleBoxProp', s:aqua)
-call s:HL('cssBorderOutlineProp', s:aqua)
-call s:HL('cssBackgroundProp', s:aqua)
-call s:HL('cssMarginProp', s:aqua)
-call s:HL('cssListProp', s:aqua)
-call s:HL('cssTableProp', s:aqua)
-call s:HL('cssFontProp', s:aqua)
-call s:HL('cssPaddingProp', s:aqua)
-call s:HL('cssDimensionProp', s:aqua)
-call s:HL('cssRenderProp', s:aqua)
-call s:HL('cssColorProp', s:aqua)
-call s:HL('cssGeneratedContentProp', s:aqua)
-
-" }}}
-" JavaScript: {{{
-
-call s:HL('javaScriptBraces', s:fg1)
-call s:HL('javaScriptFunction', s:aqua)
-call s:HL('javaScriptIdentifier', s:red)
-call s:HL('javaScriptMember', s:blue)
-call s:HL('javaScriptNumber', s:purple)
-call s:HL('javaScriptNull', s:purple)
-call s:HL('javaScriptParens', s:fg3)
+if g:gruvbox_legacy_language_groups
+  hi! link javaAnnotation GruvboxBlue
+  hi! link javaDocTags GruvboxAqua
+  hi! link javaCommentTitle vimCommentTitle
+  hi! link javaParen GruvboxFg3
+  hi! link javaParen1 GruvboxFg3
+  hi! link javaParen2 GruvboxFg3
+  hi! link javaParen3 GruvboxFg3
+  hi! link javaParen4 GruvboxFg3
+  hi! link javaParen5 GruvboxFg3
+  hi! link javaOperator GruvboxOrange
+
+  hi! link javaVarArg GruvboxGreen
+else
+  hi! link javaParen Bracket
+  hi! link javaParen1 javaParen
+  hi! link javaParen2 javaParen
+  hi! link javaParen3 javaParen
+  hi! link javaParen4 javaParen
+  hi! link javaParen5 javaParen
+
+  hi! link javaDocTags Keyword
+  hi! link javaDocParam Type
+
+  hi! link javaOperator Operator
+endif
 
 " }}}
-" YAJS: {{{
+" Javascript: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link javaScriptBraces GruvboxFg1
+  hi! link javaScriptFunction GruvboxAqua
+  hi! link javaScriptIdentifier GruvboxRed
+  hi! link javaScriptMember GruvboxBlue
+  hi! link javaScriptNumber GruvboxPurple
+  hi! link javaScriptNull GruvboxPurple
+  hi! link javaScriptParens GruvboxFg3
+else
+  hi! link javaScriptBraces Bracket
+endif
 
-call s:HL('javascriptImport', s:aqua)
-call s:HL('javascriptExport', s:aqua)
-call s:HL('javascriptClassKeyword', s:aqua)
-call s:HL('javascriptClassExtends', s:aqua)
-call s:HL('javascriptDefault', s:aqua)
-
-call s:HL('javascriptClassName', s:yellow)
-call s:HL('javascriptClassSuperName', s:yellow)
-call s:HL('javascriptGlobal', s:yellow)
-
-call s:HL('javascriptEndColons', s:fg1)
-call s:HL('javascriptFuncArg', s:fg1)
-call s:HL('javascriptGlobalMethod', s:fg1)
-call s:HL('javascriptNodeGlobal', s:fg1)
-
-" call s:HL('javascriptVariable', s:orange)
-call s:HL('javascriptVariable', s:red)
-" call s:HL('javascriptIdentifier', s:orange)
-" call s:HL('javascriptClassSuper', s:orange)
-call s:HL('javascriptIdentifier', s:orange)
-call s:HL('javascriptClassSuper', s:orange)
-
-" call s:HL('javascriptFuncKeyword', s:orange)
-" call s:HL('javascriptAsyncFunc', s:orange)
-call s:HL('javascriptFuncKeyword', s:aqua)
-call s:HL('javascriptAsyncFunc', s:aqua)
-call s:HL('javascriptClassStatic', s:orange)
-
-call s:HL('javascriptOperator', s:red)
-call s:HL('javascriptForOperator', s:red)
-call s:HL('javascriptYield', s:red)
-call s:HL('javascriptExceptions', s:red)
-call s:HL('javascriptMessage', s:red)
-
-call s:HL('javascriptTemplateSB', s:aqua)
-call s:HL('javascriptTemplateSubstitution', s:fg1)
-
-" call s:HL('javascriptLabel', s:blue)
-" call s:HL('javascriptObjectLabel', s:blue)
-" call s:HL('javascriptPropertyName', s:blue)
-call s:HL('javascriptLabel', s:fg1)
-call s:HL('javascriptObjectLabel', s:fg1)
-call s:HL('javascriptPropertyName', s:fg1)
-
-call s:HL('javascriptLogicSymbols', s:fg1)
-call s:HL('javascriptArrowFunc', s:fg1)
-
-call s:HL('javascriptDocParamName', s:fg4)
-call s:HL('javascriptDocTags', s:fg4)
-call s:HL('javascriptDocNotation', s:fg4)
-call s:HL('javascriptDocParamType', s:fg4)
-call s:HL('javascriptDocNamedParamType', s:fg4)
+" }}}
+" Json: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link jsonKeyword GruvboxGreen
+  hi! link jsonQuote GruvboxGreen
+  hi! link jsonBraces GruvboxFg1
+  hi! link jsonString GruvboxFg1
+else
+  hi! link jsonBraces Punctuation
+  hi! link jsonKeyword Field
+  hi! link jsonKeywordMatch Punctuation
+  hi! link jsonQuote String
+  hi! link jsonString String
+endif
 
 " }}}
-" CoffeeScript: {{{
+" JSX: maxmellon/vim-jsx-pretty: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link jsxTagName GruvboxAqua
+  hi! link jsxComponentName GruvboxGreen
+  hi! link jsxCloseString GruvboxFg4
+  hi! link jsxAttrib GruvboxYellow
+  hi! link jsxEqual GruvboxAqua
+else
+  hi! link jsxAttrib Field
+  hi! link jsxBraces Special
+  hi! link jsxComponentName Type
+  hi! link jsxEqual Operator
+  hi! link jsxTagName Tag
+
+  hi! link jsxClosePunct Punctuation
+  hi! link jsxCloseString Punctuation
+  hi! link jsxOpenPunct Punctuation
+endif
 
-call s:HL('coffeeExtendedOp', s:fg3)
-call s:HL('coffeeSpecialOp', s:fg3)
-call s:HL('coffeeCurly', s:orange)
-call s:HL('coffeeParen', s:fg3)
-call s:HL('coffeeBracket', s:orange)
+"}}}
+" Lua: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link luaIn GruvboxRed
+  hi! link luaFunction GruvboxAqua
+  hi! link luaTable GruvboxOrange
+else
+  hi! link luaBraces Bracket
+  hi! link luaComma Punctuation
+  hi! link luaFuncKeyword Keyword
+  hi! link luaParen Bracket
+  hi! link luaStringLongTag Special
+  hi! link luaTable Bracket
+endif
 
 " }}}
-" Ruby: {{{
+" Mail: {{{
+
+" Override some defaults defined by mail.vim
+" mail quoted text
+hi! link mailQuoted1 GruvBoxAqua
+hi! link mailQuoted2 GruvBoxPurple
+hi! link mailQuoted3 GruvBoxYellow
+hi! link mailQuoted4 GruvBoxGreen
+hi! link mailQuoted5 GruvBoxRed
+hi! link mailQuoted6 GruvBoxOrange
 
-call s:HL('rubyStringDelimiter', s:green)
-call s:HL('rubyInterpolationDelimiter', s:aqua)
+hi! link mailSignature Comment
 
 " }}}
-" ObjectiveC: {{{
+" Markdown: {{{
 
-call s:HL('objcTypeModifier', s:red)
-call s:HL('objcDirective', s:blue)
+call s:HL('markdownItalic', s:fg3, s:none, s:italic)
+call s:HL('markdownBold', s:fg3, s:none, s:bold)
+call s:HL('markdownBoldItalic', s:fg3, s:none, s:bold . s:italic)
+
+if g:gruvbox_legacy_language_groups
+  hi! link markdownH1 GruvboxGreenBold
+  hi! link markdownH2 GruvboxGreenBold
+  hi! link markdownH3 GruvboxYellowBold
+  hi! link markdownH4 GruvboxYellowBold
+  hi! link markdownH5 GruvboxYellow
+  hi! link markdownH6 GruvboxYellow
+
+  hi! link markdownCode GruvboxAqua
+  hi! link markdownCodeBlock GruvboxAqua
+  hi! link markdownCodeDelimiter GruvboxAqua
+
+  hi! link markdownBlockquote GruvboxGray
+  hi! link markdownListMarker GruvboxGray
+  hi! link markdownOrderedListMarker GruvboxGray
+  hi! link markdownRule GruvboxGray
+  hi! link markdownHeadingRule GruvboxGray
+
+  hi! link markdownUrlDelimiter GruvboxFg3
+  hi! link markdownLinkDelimiter GruvboxFg3
+  hi! link markdownLinkTextDelimiter GruvboxFg3
+
+  hi! link markdownHeadingDelimiter GruvboxOrange
+  hi! link markdownUrl GruvboxPurple
+  hi! link markdownUrlTitleDelimiter GruvboxGreen
+
+  call s:HL('markdownLinkText', s:gray, s:none, s:underline)
+  hi! link markdownIdDeclaration markdownLinkText
+else
+  hi! link markdownH1 H1
+  hi! link markdownH2 H2
+  hi! link markdownH3 H3
+  hi! link markdownH4 H4
+  hi! link markdownH5 H5
+  hi! link markdownH6 H6
+  hi! link markdownHeadingDelimiter GruvboxGreen
+
+  hi! link markdownCode CodeBlock
+  hi! link markdownCodeBlock CodeBlock
+  hi! link markdownCodeDelimiter Punctuation
+
+  hi! link markdownBlockquote Quote
+  hi! link markdownListMarker Punctuation
+  hi! link markdownOrderedListMarker Punctuation
+  hi! link markdownRule Punctuation
+  hi! link markdownHeadingRule Punctuation
+
+  hi! link markdownUrlDelimiter Punctuation
+  hi! link markdownLinkDelimiter Punctuation
+  hi! link markdownLinkTextDelimiter Punctuation
+
+  hi! link markdownUrl Link
+  hi! link markdownUrlTitleDelimiter Punctuation
+
+  hi! link markdownLinkText Identifier
+  hi! link markdownIdDeclaration Identifier
+
+  if g:gruvbox_treesitter
+    hi link @text.title.1.marker.markdown Special
+    hi link @text.title.2.marker.markdown Special
+    hi link @text.title.3.marker.markdown Special
+    hi link @text.title.4.marker.markdown Special
+    hi link @text.title.5.marker.markdown Special
+  endif
+endif
 
 " }}}
-" Go: {{{
+" MoonScript: {{{
 
-call s:HL('goDirective', s:aqua)
-call s:HL('goConstants', s:purple)
-call s:HL('goDeclaration', s:red)
-call s:HL('goDeclType', s:blue)
-call s:HL('goBuiltins', s:orange)
+if g:gruvbox_legacy_language_groups
+  hi! link moonSpecialOp GruvboxFg3
+  hi! link moonExtendedOp GruvboxFg3
+  hi! link moonFunction GruvboxFg3
+  hi! link moonObject GruvboxYellow
+else
+  hi! link moonFunction Punctuation
+  hi! link moonLuaFunc Function
+  hi! link moonObjAssign Field
+endif
 
 " }}}
-" Lua: {{{
+" ObjectiveC: {{{
 
-call s:HL('luaIn', s:red)
-call s:HL('luaFunction', s:aqua)
-call s:HL('luaTable', s:orange)
+if g:gruvbox_legacy_language_groups
+  hi! link objcTypeModifier GruvboxRed
+  hi! link objcDirective GruvboxBlue
+else
+  hi! link objcDirective Keyword
+  hi! link objcObjDef Keyword
+  hi! link objcPropertyAttribute Field
+  hi! link objcTypeModifier GruvboxRed
+endif
 
 " }}}
-" MoonScript: {{{
+" Ocaml: {{{
 
-call s:HL('moonSpecialOp', s:fg3)
-call s:HL('moonExtendedOp', s:fg3)
-call s:HL('moonFunction', s:fg3)
-call s:HL('moonObject', s:yellow)
+if g:gruvbox_legacy_language_groups
+  hi! link ocamlOperator GruvboxFg1
+  hi! link ocamlKeyChar GruvboxOrange
+  hi! link ocamlArrow GruvboxOrange
+  hi! link ocamlInfixOpKeyword GruvboxRed
+  hi! link ocamlConstructor GruvboxOrange
+else
+  hi! link ocamlArrow Operator
+  hi! link ocamlConstructor Type
+  hi! link ocamlInfixOpKeyword Keyword
+  hi! link ocamlKeyChar Operator
+  hi! link ocamlOperator Operator
+endif
 
 " }}}
-" Java: {{{
+" PanglossJS: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link jsClassKeyword GruvboxAqua
+  hi! link jsExtendsKeyword GruvboxAqua
+  hi! link jsExportDefault GruvboxAqua
+  hi! link jsTemplateBraces GruvboxAqua
+  hi! link jsGlobalNodeObjects GruvboxBlue
+  hi! link jsGlobalObjects GruvboxBlue
+  hi! link jsObjectKey GruvboxGreenBold
+  hi! link jsFunction GruvboxAqua
+  hi! link jsFuncCall GruvboxBlue
+  hi! link jsFuncParens GruvboxFg3
+  hi! link jsParens GruvboxFg3
+  hi! link jsNull GruvboxPurple
+  hi! link jsUndefined GruvboxPurple
+  hi! link jsClassDefinition GruvboxYellow
+  hi! link jsOperatorKeyword GruvboxRed
+else
+  hi! link jsArrowFunction Punctuation
+  hi! link jsDocParam Field
+  hi! link jsDocTags Keyword
+  hi! link jsNull Special
+  hi! link jsObjectKey Field
+  hi! link jsObjectProp Field
+endif
 
-call s:HL('javaAnnotation', s:blue)
-call s:HL('javaDocTags', s:aqua)
-hi! link javaCommentTitle vimCommentTitle
-call s:HL('javaParen', s:fg3)
-call s:HL('javaParen1', s:fg3)
-call s:HL('javaParen2', s:fg3)
-call s:HL('javaParen3', s:fg3)
-call s:HL('javaParen4', s:fg3)
-call s:HL('javaParen5', s:fg3)
-call s:HL('javaOperator', s:orange)
+" }}}
+" PureScript: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link purescriptModuleKeyword GruvboxAqua
+  hi! link purescriptModuleName GruvboxFg1
+  hi! link purescriptWhere GruvboxAqua
+  hi! link purescriptDelimiter GruvboxFg4
+  hi! link purescriptType GruvboxFg1
+  hi! link purescriptImportKeyword GruvboxAqua
+  hi! link purescriptHidingKeyword GruvboxAqua
+  hi! link purescriptAsKeyword GruvboxAqua
+  hi! link purescriptStructure GruvboxAqua
+  hi! link purescriptOperator GruvboxBlue
+
+  hi! link purescriptTypeVar GruvboxFg1
+  hi! link purescriptConstructor GruvboxFg1
+  hi! link purescriptFunction GruvboxFg1
+  hi! link purescriptConditional GruvboxOrange
+  hi! link purescriptBacktick GruvboxOrange
+else
+  hi! link purescriptImportKeyword Include
+  hi! link purescriptModuleName Identifier
+endif
 
-call s:HL('javaVarArg', s:green)
+" }}}
+" Python: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link pythonBuiltin GruvboxOrange
+  hi! link pythonBuiltinObj GruvboxOrange
+  hi! link pythonBuiltinFunc GruvboxOrange
+  hi! link pythonFunction GruvboxAqua
+  hi! link pythonDecorator GruvboxRed
+  hi! link pythonInclude GruvboxBlue
+  hi! link pythonImport GruvboxBlue
+  hi! link pythonRun GruvboxBlue
+  hi! link pythonCoding GruvboxBlue
+  hi! link pythonOperator GruvboxRed
+  hi! link pythonException GruvboxRed
+  hi! link pythonExceptions GruvboxPurple
+  hi! link pythonBoolean GruvboxPurple
+  hi! link pythonDot GruvboxFg3
+  hi! link pythonConditional GruvboxRed
+  hi! link pythonRepeat GruvboxRed
+  hi! link pythonDottedName GruvboxGreenBold
+else
+  hi! link pythonDecorator Operator
+  hi! link pythonDot Operator
+endif
 
 " }}}
-" Elixir: {{{
+" Ruby: {{{
 
-hi! link elixirDocString Comment
+if g:gruvbox_legacy_language_groups
+  hi! link rubyStringDelimiter GruvboxGreen
+  hi! link rubyInterpolationDelimiter GruvboxAqua
+  hi! link rubyDefinedOperator rubyKeyword
+else
+  hi! link rubyDefinedOperator Keyword
+  hi! link rubyInterpolationDelimiter Macro
+  hi! link rubyStringDelimiter String
+endif
 
-call s:HL('elixirStringDelimiter', s:green)
-call s:HL('elixirInterpolationDelimiter', s:aqua)
+" }}}
+" Rust: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link rustSigil GruvboxOrange
+  hi! link rustEscape GruvboxAqua
+  hi! link rustStringContinuation GruvboxAqua
+  hi! link rustEnum GruvboxAqua
+  hi! link rustStructure GruvboxAqua
+  hi! link rustModPathSep GruvboxFg2
+  hi! link rustCommentLineDoc Comment
+  hi! link rustDefault GruvboxAqua
+else
+  hi! link rustFoldBraces Bracket
+  hi! link rustSelf Special
+  hi! link rustSigil Operator
+endif
 
 " }}}
 " Scala: {{{
 
-" NB: scala vim syntax file is kinda horrible
-call s:HL('scalaNameDefinition', s:fg1)
-call s:HL('scalaCaseFollowing', s:fg1)
-call s:HL('scalaCapitalWord', s:fg1)
-call s:HL('scalaTypeExtension', s:fg1)
-
-call s:HL('scalaKeyword', s:red)
-call s:HL('scalaKeywordModifier', s:red)
+if g:gruvbox_legacy_language_groups
+  " NB: scala vim syntax file is kinda horrible
+  hi! link scalaNameDefinition GruvboxFg1
+  hi! link scalaCaseFollowing GruvboxFg1
+  hi! link scalaCapitalWord GruvboxFg1
+  hi! link scalaTypeExtension GruvboxFg1
+
+  hi! link scalaKeyword GruvboxRed
+  hi! link scalaKeywordModifier GruvboxRed
 
-call s:HL('scalaSpecial', s:aqua)
-call s:HL('scalaOperator', s:fg1)
+  hi! link scalaSpecial GruvboxAqua
+  hi! link scalaOperator GruvboxFg1
 
-call s:HL('scalaTypeDeclaration', s:yellow)
-call s:HL('scalaTypeTypePostDeclaration', s:yellow)
+  hi! link scalaTypeDeclaration GruvboxYellow
+  hi! link scalaTypeTypePostDeclaration GruvboxYellow
 
-call s:HL('scalaInstanceDeclaration', s:fg1)
-call s:HL('scalaInterpolation', s:aqua)
+  hi! link scalaInstanceDeclaration GruvboxFg1
+  hi! link scalaInterpolation GruvboxAqua
+else
+  hi! link scalaCommentAnnotation Keyword
+  hi! link scalaCommentCodeBlock CodeBlock
+  hi! link scalaDocLinks Link
+  hi! link scalaMultilineComment Comment
+  hi! link scalaParamAnnotationValue Field
+  hi! link scalaParameterAnnotation Keyword
+  hi! link scalaShebang Comment
+  hi! link scalaTrailingComment Comment
+
+  hi! link scalaFString String
+  hi! link scalaFInterpolation Operator
+  hi! link scalaInterpolationBoundary Operator
+  hi! link scalaInterpolationBrackets String
+  hi! link scalaInterpolation Operator
+  hi! link scalaIString String
+  hi! link scalaString String
+  hi! link scalaTripleFString String
+  hi! link scalaTripleIString Operator
+  hi! link scalaTripleIString String
+  hi! link scalaTripleString String
+
+  hi! link scalaCapitalWord Type
+  hi! link scalaInstanceDeclaration Type
+  hi! link scalaTypeAnnotation Identifier
+  hi! link scalaTypeAnnotationParameter Special
+  hi! link scalaTypeDeclaration TypeDef
+  hi! link scalaTypeExtension Identifier
+  hi! link scalaTypeOperator Identifier
+  hi! link scalaTypePostExtension Operator
+  hi! link scalaTypeTypeExtension Identifier
+  hi! link scalaTypeTypePostDeclaration TypeDef
+  hi! link scalaTypeTypePostExtension Operator
+
+  hi! link scalaCaseFollowing Identifier
+  hi! link scalaExternal Include
+  hi! link scalaNameDefinition Identifier
+  hi! link scalaSquareBracketsBrackets Identifier
+  hi! link scalaSquareBrackets Identifier
+
+  hi! link scalaKeyword Keyword
+  hi! link scalaKeywordModifier Keyword
+
+  hi! link scalaAnnotation Special
+  hi! link scalaOperator Operator
+  hi! link scalaSpecial Special
+
+  hi! link scalaEscapedChar Special
+  hi! link scalaNumber Number
+endif
+
+" }}}
+" TypeScript: {{{
+
+if g:gruvbox_legacy_language_groups
+  hi! link typescriptReserved GruvboxAqua
+  hi! link typescriptLabel GruvboxAqua
+  hi! link typescriptFuncKeyword GruvboxAqua
+  hi! link typescriptIdentifier GruvboxOrange
+  hi! link typescriptBraces GruvboxFg1
+  hi! link typescriptEndColons GruvboxFg1
+  hi! link typescriptDOMObjects GruvboxFg1
+  hi! link typescriptAjaxMethods GruvboxFg1
+  hi! link typescriptLogicSymbols GruvboxFg1
+  hi! link typescriptDocSeeTag Comment
+  hi! link typescriptDocParam Comment
+  hi! link typescriptDocTags vimCommentTitle
+  hi! link typescriptGlobalObjects GruvboxFg1
+  hi! link typescriptParens GruvboxFg3
+  hi! link typescriptOpSymbols GruvboxFg3
+  hi! link typescriptHtmlElemProperties GruvboxFg1
+  hi! link typescriptNull GruvboxPurple
+  hi! link typescriptInterpolationDelimiter GruvboxAqua
+else
+  hi! link typescriptAssign Operator
+  hi! link typescriptBinaryOp Operator
+  hi! link typescriptCastKeyword Keyword
+  hi! link typescriptDocNotation Keyword
+  hi! link typescriptDocParam Field
+  hi! link typescriptDocTags Keyword
+  hi! link typescriptExport Include
+  hi! link typescriptImport Include
+  hi! link typescriptInterfaceName TypeDef
+  hi! link typescriptKeywordOp Operator
+  hi! link typescriptMember Field
+  hi! link typescriptObjectLabel Field
+  hi! link typescriptTernary Operator
+  hi! link typescriptVariable Type
+
+  hi! link typescriptAssign Punctuation
+  hi! link typescriptBraces Punctuation
+  hi! link typescriptEndColons Punctuation
+  hi! link typescriptObjectColon Punctuation
+  hi! link typescriptParens Punctuation
+  hi! link typescriptTypeAnnotation Punctuation
+endif
 
 " }}}
-" Markdown: {{{
-
-call s:HL('markdownItalic', s:fg3, 'NONE', s:italic)
+" Vim: {{{
 
-call s:HL('markdownH1', s:green, 'NONE', s:bold)
-call s:HL('markdownH2', s:green, 'NONE', s:bold)
-call s:HL('markdownH3', s:yellow, 'NONE', s:bold)
-call s:HL('markdownH4', s:yellow, 'NONE', s:bold)
-call s:HL('markdownH5', s:yellow)
-call s:HL('markdownH6', s:yellow)
-
-call s:HL('markdownCode', s:aqua)
-call s:HL('markdownCodeBlock', s:aqua)
-call s:HL('markdownCodeDelimiter', s:aqua)
-
-call s:HL('markdownBlockquote', s:gray)
-call s:HL('markdownListMarker', s:gray)
-call s:HL('markdownOrderedListMarker', s:gray)
-call s:HL('markdownRule', s:gray)
-call s:HL('markdownHeadingRule', s:gray)
-
-call s:HL('markdownUrlDelimiter', s:fg3)
-call s:HL('markdownLinkDelimiter', s:fg3)
-call s:HL('markdownLinkTextDelimiter', s:fg3)
-
-call s:HL('markdownHeadingDelimiter', s:orange)
-call s:HL('markdownUrl', s:purple)
-call s:HL('markdownUrlTitleDelimiter', s:green)
+call s:HL('vimCommentTitle', s:gb.fg4_256, s:none, s:bold . s:italicize_comments)
 
-call s:HL('markdownLinkText', s:gray, 'NONE', s:underline)
-call s:HL('markdownIdDeclaration', s:gray, 'NONE', s:underline)
+if g:gruvbox_legacy_language_groups
+  hi! link vimNotation GruvboxOrange
+  hi! link vimBracket GruvboxOrange
+  hi! link vimMapModKey GruvboxOrange
+  hi! link vimFuncSID GruvboxFg3
+  hi! link vimSetSep GruvboxFg3
+  hi! link vimSep GruvboxFg3
+  hi! link vimContinue GruvboxFg3
+else
+  hi! link vimCommand Keyword
+  hi! link vimMapModKey Special
+  hi! link vimNotation Special
+  hi! link vimOption Special
+  hi! link vimSet Normal
+  hi! link vimUsrCmd Macro
+  hi! link vimVar Variable
+
+  " Vim syntax is unable to highlight some punctuation at all.
+  " Make punctuation closer to the default white instead of the default color.
+
+  " hi! link vimBracket Punctuation
+  " hi! link vimContinue Punctuation
+  " hi! link vimEcho Punctuation
+  " hi! link vimFuncBody Punctuation
+  " hi! link vimOperParen Punctuation
+  " hi! link vimParenSep Punctuation
+  " hi! link vimSep Punctuation
+  " hi! link vimSetSep Punctuation
+
+  hi! link vimBracket GruvboxFg3
+  hi! link vimContinue GruvboxFg3
+  hi! link vimEcho GruvboxFg3
+  hi! link vimOperParen GruvboxFg3
+  hi! link vimParenSep GruvboxFg3
+  hi! link vimSep GruvboxFg3
+  hi! link vimSetSep GruvboxFg3
+
+  " Vim syntax is unable to highlight complete user functions calls/definitions.
+  " Make these appear the same as variables instead of the default color.
+
+  " hi! link vimFunction Function
+  " hi! link vimFuncSID Function
+  " hi! link vimUserFunc Function
+
+  hi! link vimFunction Variable
+  hi! link vimFuncSID Variable
+  hi! link vimUserFunc Variable
+endif
 
 " }}}
-" Haskell: {{{
+" Xml: {{{
 
-" call s:HL('haskellType', s:yellow)
-" call s:HL('haskellOperators', s:orange)
-" call s:HL('haskellConditional', s:aqua)
-" call s:HL('haskellLet', s:orange)
-"
-call s:HL('haskellType', s:fg1)
-call s:HL('haskellIdentifier', s:fg1)
-call s:HL('haskellSeparator', s:fg1)
-call s:HL('haskellDelimiter', s:fg4)
-call s:HL('haskellOperators', s:blue)
-"
-call s:HL('haskellBacktick', s:orange)
-call s:HL('haskellStatement', s:orange)
-call s:HL('haskellConditional', s:orange)
-
-call s:HL('haskellLet', s:aqua)
-call s:HL('haskellDefault', s:aqua)
-call s:HL('haskellWhere', s:aqua)
-call s:HL('haskellBottom', s:aqua)
-call s:HL('haskellBlockKeywords', s:aqua)
-call s:HL('haskellImportKeywords', s:aqua)
-call s:HL('haskellDeclKeyword', s:aqua)
-call s:HL('haskellDeriving', s:aqua)
-call s:HL('haskellAssocType', s:aqua)
+if g:gruvbox_legacy_language_groups
+  hi! link xmlTag GruvboxAquaBold
+  hi! link xmlEndTag GruvboxAquaBold
+  hi! link xmlTagName GruvboxBlue
+  hi! link xmlEqual GruvboxBlue
+  hi! link docbkKeyword GruvboxAquaBold
+
+  hi! link xmlDocTypeDecl GruvboxGray
+  hi! link xmlDocTypeKeyword GruvboxPurple
+  hi! link xmlCdataStart GruvboxGray
+  hi! link xmlCdataCdata GruvboxPurple
+  hi! link dtdFunction GruvboxGray
+  hi! link dtdTagName GruvboxPurple
+
+  hi! link xmlAttrib GruvboxOrange
+  hi! link xmlProcessingDelim GruvboxGray
+  hi! link dtdParamEntityPunct GruvboxGray
+  hi! link dtdParamEntityDPunct GruvboxGray
+  hi! link xmlAttribPunct GruvboxGray
 
-call s:HL('haskellNumber', s:purple)
-call s:HL('haskellPragma', s:purple)
+  hi! link xmlEntity GruvboxRed
+  hi! link xmlEntityPunct GruvboxRed
+else
+  hi! link xmlTag Punctuation
+  hi! link xmlEndTag Punctuation
+  hi! link xmlTagName Tag
+  hi! link xmlEqual Operator
+
+  hi! link xmlDocType Field
+  hi! link xmlDocTypeDecl Punctuation
+  hi! link xmlDocTypeKeyword Special
+
+  hi! link xmlCdataStart Punctuation
+  hi! link xmlCdataEnd Punctuation
+  hi! link xmlCdataCdata Special
+  hi! link xmlCdata String
+
+  hi! link xmlAttrib Field
+  hi! link xmlProcessingDelim Punctuation
+  hi! link xmlAttribPunct Punctuation
+
+  hi! link xmlEntity Special
+  hi! link xmlEntityPunct Special
+
+  hi! link dtdAttrType Type
+  hi! link dtdCard Operator
+  hi! link dtdEnum Constant
+  hi! link dtdFunction Punctuation
+  hi! link dtdParamEntityDPunct Punctuation
+  hi! link dtdParamEntityPunct Punctuation
+  hi! link dtdString String
+  hi! link dtdTag Field
+  hi! link dtdTagName Special
 
-call s:HL('haskellString', s:green)
-call s:HL('haskellChar', s:green)
+  hi! link docbkKeyword Tag
+  call s:HL('docbkTitle', s:vim_fg, s:vim_bg, s:bold)
+endif
 
 " }}}
-" Json: {{{
+" YAJS: {{{
 
-call s:HL('jsonKeyword', s:green)
-call s:HL('jsonQuote', s:green)
-call s:HL('jsonBraces', s:fg1)
-call s:HL('jsonString', s:fg1)
+if g:gruvbox_legacy_language_groups
+  hi! link javascriptImport GruvboxAqua
+  hi! link javascriptExport GruvboxAqua
+  hi! link javascriptClassKeyword GruvboxAqua
+  hi! link javascriptClassExtends GruvboxAqua
+  hi! link javascriptDefault GruvboxAqua
+
+  hi! link javascriptClassName GruvboxYellow
+  hi! link javascriptClassSuperName GruvboxYellow
+  hi! link javascriptGlobal GruvboxYellow
+
+  hi! link javascriptEndColons GruvboxFg1
+  hi! link javascriptFuncArg GruvboxFg1
+  hi! link javascriptGlobalMethod GruvboxFg1
+  hi! link javascriptNodeGlobal GruvboxFg1
+  hi! link javascriptBOMWindowProp GruvboxFg1
+  hi! link javascriptArrayMethod GruvboxFg1
+  hi! link javascriptArrayStaticMethod GruvboxFg1
+  hi! link javascriptCacheMethod GruvboxFg1
+  hi! link javascriptDateMethod GruvboxFg1
+  hi! link javascriptMathStaticMethod GruvboxFg1
+
+  " hi! link javascriptProp GruvboxFg1
+  hi! link javascriptURLUtilsProp GruvboxFg1
+  hi! link javascriptBOMNavigatorProp GruvboxFg1
+  hi! link javascriptDOMDocMethod GruvboxFg1
+  hi! link javascriptDOMDocProp GruvboxFg1
+  hi! link javascriptBOMLocationMethod GruvboxFg1
+  hi! link javascriptBOMWindowMethod GruvboxFg1
+  hi! link javascriptStringMethod GruvboxFg1
+
+  hi! link javascriptVariable GruvboxOrange
+  " hi! link javascriptVariable GruvboxRed
+  " hi! link javascriptIdentifier GruvboxOrange
+  " hi! link javascriptClassSuper GruvboxOrange
+  hi! link javascriptIdentifier GruvboxOrange
+  hi! link javascriptClassSuper GruvboxOrange
+
+  " hi! link javascriptFuncKeyword GruvboxOrange
+  " hi! link javascriptAsyncFunc GruvboxOrange
+  hi! link javascriptFuncKeyword GruvboxAqua
+  hi! link javascriptAsyncFunc GruvboxAqua
+  hi! link javascriptClassStatic GruvboxOrange
+
+  hi! link javascriptOperator GruvboxRed
+  hi! link javascriptForOperator GruvboxRed
+  hi! link javascriptYield GruvboxRed
+  hi! link javascriptExceptions GruvboxRed
+  hi! link javascriptMessage GruvboxRed
+
+  hi! link javascriptTemplateSB GruvboxAqua
+  hi! link javascriptTemplateSubstitution GruvboxFg1
+
+  " hi! link javascriptLabel GruvboxBlue
+  " hi! link javascriptObjectLabel GruvboxBlue
+  " hi! link javascriptPropertyName GruvboxBlue
+  hi! link javascriptLabel GruvboxFg1
+  hi! link javascriptObjectLabel GruvboxFg1
+  hi! link javascriptPropertyName GruvboxFg1
+
+  hi! link javascriptLogicSymbols GruvboxFg1
+  hi! link javascriptArrowFunc GruvboxYellow
+
+  hi! link javascriptDocParamName GruvboxFg4
+  hi! link javascriptDocTags GruvboxFg4
+  hi! link javascriptDocNotation GruvboxFg4
+  hi! link javascriptDocParamType GruvboxFg4
+  hi! link javascriptDocNamedParamType GruvboxFg4
+
+  hi! link javascriptBrackets GruvboxFg1
+  hi! link javascriptDOMElemAttrs GruvboxFg1
+  hi! link javascriptDOMEventMethod GruvboxFg1
+  hi! link javascriptDOMNodeMethod GruvboxFg1
+  hi! link javascriptDOMStorageMethod GruvboxFg1
+  hi! link javascriptHeadersMethod GruvboxFg1
 
-" }}}
+  hi! link javascriptAsyncFuncKeyword GruvboxRed
+  hi! link javascriptAwaitFuncKeyword GruvboxRed
+else
+  hi! link javascriptEndColons Punctuation
+  hi! link javascriptDocParam Identifier
+  hi! link javascriptDocNotation Keyword
+  hi! link javascriptDocParamName Field
+  hi! link javascriptDocParamType Type
+  hi! link javascriptDocTags Keyword
+  hi! link javascriptDocName Field
+  hi! link javascriptParens Bracket
+  hi! link javascriptBraces Bracket
+  hi! link javascriptBrackets Bracket
+  hi! link javascriptFuncArg Identifier
+  hi! link javascriptArrowFuncArg Identifier
+  hi! link javascriptArrowFunc Punctuation
+  hi! link javascriptVariable StorageClass
+  hi! link javascriptLabel Field
+  hi! link javascriptGlobal Special
+  hi! link javascriptOperator Operator
+  hi! link javascriptOpSymbol Operator
+  hi! link javascriptOpSymbols Operator
+  hi! link javascriptDotNotation Punctuation
+  hi! link javascriptComma Punctuation
+  hi! link javascriptObjectLabelColon Punctuation
+  hi! link javascriptNull Constant
+  hi! link javascriptIdentifierName Identifier
+  hi! link javascriptMethod Function
+  hi! link javascriptNumber Number
+  hi! link javascriptTemplateSubstitution Punctuation
+  hi! link javascriptParenObjectLiteral Bracket
+  hi! link javascriptParenTagLiteral Bracket
+
+  hi! link javascriptProp Field
+  hi! link javascriptBOMHistoryProp javascriptProp
+  hi! link javascriptBOMLocationProp javascriptProp
+  hi! link javascriptBOMNavigatorProp javascriptProp
+  hi! link javascriptBOMNetworkProp javascriptProp
+  hi! link javascriptBOMWindowProp javascriptProp
+  hi! link javascriptBroadcastProp javascriptProp
+  hi! link javascriptCryptoProp javascriptProp
+  hi! link javascriptDataViewProp javascriptProp
+  hi! link javascriptDOMDocProp javascriptProp
+  hi! link javascriptDOMEventProp javascriptProp
+  hi! link javascriptDOMFormProp javascriptProp
+  hi! link javascriptDOMNodeProp javascriptProp
+  hi! link javascriptDOMStorageProp javascriptProp
+  hi! link javascriptEncodingProp javascriptProp
+  hi! link javascriptES6MapProp javascriptProp
+  hi! link javascriptES6SetProp javascriptProp
+  hi! link javascriptFileReaderProp javascriptProp
+  hi! link javascriptMathStaticProp javascriptProp
+  hi! link javascriptNumberStaticProp javascriptProp
+  hi! link javascriptPaymentAddressProp javascriptProp
+  hi! link javascriptPaymentProp javascriptProp
+  hi! link javascriptPaymentResponseProp javascriptProp
+  hi! link javascriptPaymentShippingOptionProp javascriptProp
+  hi! link javascriptRegExpProp javascriptProp
+  hi! link javascriptRegExpStaticProp javascriptProp
+  hi! link javascriptRequestProp javascriptProp
+  hi! link javascriptResponseProp javascriptProp
+  hi! link javascriptServiceWorkerProp javascriptProp
+  hi! link javascriptSymbolProp javascriptProp
+  hi! link javascriptSymbolStaticProp javascriptProp
+  hi! link javascriptTypedArrayStaticProp javascriptProp
+  hi! link javascriptURLUtilsProp javascriptProp
+  hi! link javascriptXHRProp javascriptProp
+endif
 
+" }}}
 
 " Functions -------------------------------------------------------------------
 " Search Highlighting Cursor {{{
 
 function! GruvboxHlsShowCursor()
   call s:HL('Cursor', s:bg0, s:hls_cursor)
-  call s:HL('vCursor', s:bg0, s:hls_cursor)
-  call s:HL('iCursor', s:bg0, s:hls_cursor)
-  call s:HL('lCursor', s:bg0, s:hls_cursor)
 endfunction
 
 function! GruvboxHlsHideCursor()
-  call s:HL('Cursor', 'NONE', 'NONE', s:inverse)
-  call s:HL('vCursor', 'NONE', 'NONE', s:inverse)
-  call s:HL('iCursor', 'NONE', 'NONE', s:inverse)
-  call s:HL('lCursor', 'NONE', 'NONE', s:inverse)
+  call s:HL('Cursor', s:none, s:none, s:inverse)
 endfunction
 
 " }}}
diff -pruN 2.0.0-2/debian/changelog 3.6.1-1/debian/changelog
--- 2.0.0-2/debian/changelog	2023-07-22 09:36:05.000000000 +0000
+++ 3.6.1-1/debian/changelog	2025-02-21 18:08:48.000000000 +0000
@@ -1,3 +1,12 @@
+vim-gruvbox (3.6.1-1) unstable; urgency=medium
+
+  * Switch to maintained gruvbox-community fork
+  * New upstream version 3.6.1
+  * Update my mail address in d/control
+  * Update S-V to 4.7.0 (no changes needed)
+
+ -- Matthias Geiger <werdahias@debian.org>  Fri, 21 Feb 2025 19:08:48 +0100
+
 vim-gruvbox (2.0.0-2) unstable; urgency=medium
 
   * Source-only upload. 
diff -pruN 2.0.0-2/debian/control 3.6.1-1/debian/control
--- 2.0.0-2/debian/control	2023-07-22 09:34:56.000000000 +0000
+++ 3.6.1-1/debian/control	2025-02-21 18:08:24.000000000 +0000
@@ -2,13 +2,13 @@ Source: vim-gruvbox
 Section: editors
 Priority: optional
 Maintainer: Debian Vim Maintainers <team+vim@tracker.debian.org>
-Uploaders: Matthias Geiger <matthias.geiger1024@tutanota.de>
+Uploaders: Matthias Geiger <werdahias@debian.org>
 Rules-Requires-Root: no
 Build-Depends:
  debhelper-compat (= 13),
  dh-sequence-vim-addon,
-Standards-Version: 4.6.2
-Homepage: https://github.com/morhetz/gruvbox
+Standards-Version: 4.7.0
+Homepage: https://github.com/gruvbox-community/gruvbox
 Vcs-Browser: https://salsa.debian.org/vim-team/vim-gruvbox
 Vcs-Git: https://salsa.debian.org/vim-team/vim-gruvbox.git
 
diff -pruN 2.0.0-2/debian/copyright 3.6.1-1/debian/copyright
--- 2.0.0-2/debian/copyright	2023-07-22 09:34:56.000000000 +0000
+++ 3.6.1-1/debian/copyright	2025-02-21 18:05:26.000000000 +0000
@@ -1,5 +1,5 @@
 Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
-Source: https://github.com/morhetz/gruvbox
+Source: https://github.com/gruvbox-community/gruvbox 
 Upstream-Name: gruvbox
 Upstream-Contact: Pavel Pertsev <morhetz@gmail.com>
 
diff -pruN 2.0.0-2/debian/upstream/metadata 3.6.1-1/debian/upstream/metadata
--- 2.0.0-2/debian/upstream/metadata	2023-07-22 09:34:56.000000000 +0000
+++ 3.6.1-1/debian/upstream/metadata	2025-02-21 18:06:19.000000000 +0000
@@ -1,6 +1,6 @@
-Bug-Database: https://github.com/morhetz/gruvbox/issues
-Bug-Submit: https://github.com/morhetz/gruvbox/issues/new
-Changelog: https://github.com/morhetz/gruvbox/blob/master/CHANGELOG.md
-Documentation: https://github.com/morhetz/gruvbox/wiki
-Repository-Browse: https://github.com/morhetz/gruvbox
-Repository: https://github.com/morhetz/gruvbox.git
+Bug-Database: https://github.com/gruvbox-community/gruvbox/issues
+Bug-Submit: https://github.com/gruvbox-community/gruvbox/issues/new
+Changelog: https://github.com/gruvbox-community/gruvbox/blob/master/CHANGELOG.md
+Documentation: https://github.com/gruvbox-community/gruvbox/wiki
+Repository-Browse: https://github.com/gruvbox-community/gruvbox
+Repository: https://github.com/gruvbox-community/gruvbox.git
diff -pruN 2.0.0-2/debian/watch 3.6.1-1/debian/watch
--- 2.0.0-2/debian/watch	2023-07-22 09:34:56.000000000 +0000
+++ 3.6.1-1/debian/watch	2025-02-21 18:04:51.000000000 +0000
@@ -1,2 +1,2 @@
 version=4
-https://github.com/morhetz/gruvbox/tags  .*/v?([\d.]*)@ARCHIVE_EXT@
+https://github.com/gruvbox-community/gruvbox/tags  .*/v?([\d.]*)@ARCHIVE_EXT@
diff -pruN 2.0.0-2/gruvbox_256palette.sh 3.6.1-1/gruvbox_256palette.sh
--- 2.0.0-2/gruvbox_256palette.sh	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/gruvbox_256palette.sh	2023-12-10 23:21:34.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-if [ "${TERM%%-*}" = "screen" ]; then
+if [ "${TERM%%-*}" = "screen" ] || [ "${TERM%%-*}" = "tmux" ]; then
   if [ -n "$TMUX" ]; then
     printf "\033Ptmux;\033\033]4;236;rgb:32/30/2f\007\033\\"
     printf "\033Ptmux;\033\033]4;234;rgb:1d/20/21\007\033\\"
@@ -36,7 +36,7 @@ if [ "${TERM%%-*}" = "screen" ]; then
     printf "\033Ptmux;\033\033]4;136;rgb:b5/76/14\007\033\\"
     printf "\033Ptmux;\033\033]4;24;rgb:07/66/78\007\033\\"
     printf "\033Ptmux;\033\033]4;96;rgb:8f/3f/71\007\033\\"
-    printf "\033Ptmux;\033\033]4;66;rgb:42/7b/58\007\033\\"
+    printf "\033Ptmux;\033\033]4;65;rgb:42/7b/58\007\033\\"
     printf "\033Ptmux;\033\033]4;130;rgb:af/3a/03\007\033\\"
   else
     printf "\033P\033]4;236;rgb:32/30/2f\007\033\\"
@@ -73,10 +73,48 @@ if [ "${TERM%%-*}" = "screen" ]; then
     printf "\033P\033]4;136;rgb:b5/76/14\007\033\\"
     printf "\033P\033]4;24;rgb:07/66/78\007\033\\"
     printf "\033P\033]4;96;rgb:8f/3f/71\007\033\\"
-    printf "\033P\033]4;66;rgb:42/7b/58\007\033\\"
+    printf "\033P\033]4;65;rgb:42/7b/58\007\033\\"
     printf "\033P\033]4;130;rgb:af/3a/03\007\033\\"
   fi
 
+elif [ "$TERM" = "fbterm" ]; then
+  printf "\033[3;236;50;48;47}"
+  printf "\033[3;234;29;32;33}"
+
+  printf "\033[3;235;40;40;40}"
+  printf "\033[3;237;60;56;54}"
+  printf "\033[3;239;80;73;69}"
+  printf "\033[3;241;102;92;84}"
+  printf "\033[3;243;124;111;100}"
+
+  printf "\033[3;244;146;131;116}"
+  printf "\033[3;245;146;131;116}"
+
+  printf "\033[3;228;242;229;188}"
+  printf "\033[3;230;249;245;215}"
+
+  printf "\033[3;229;253;244;193}"
+  printf "\033[3;223;235;219;178}"
+  printf "\033[3;250;213;196;161}"
+  printf "\033[3;248;189;174;147}"
+  printf "\033[3;246;168;153;132}"
+
+  printf "\033[3;167;251;73;52}"
+  printf "\033[3;142;184;187;38}"
+  printf "\033[3;214;250;189;47}"
+  printf "\033[3;109;131;165;152}"
+  printf "\033[3;175;211;134;155}"
+  printf "\033[3;108;142;192;124}"
+  printf "\033[3;208;254;128;25}"
+
+  printf "\033[3;88;157;0;6}"
+  printf "\033[3;100;121;116;14}"
+  printf "\033[3;136;181;118;20}"
+  printf "\033[3;24;7;102;120}"
+  printf "\033[3;96;143;63;113}"
+  printf "\033[3;65;66;123;88}"
+  printf "\033[3;130;175;58;3}"
+
 elif [ "$TERM" != "linux" ] && [ "$TERM" != "vt100" ] && [ "$TERM" != "vt220" ]; then
 
   printf "\033]4;236;rgb:32/30/2f\033\\"
@@ -113,6 +151,6 @@ elif [ "$TERM" != "linux" ] && [ "$TERM"
   printf "\033]4;136;rgb:b5/76/14\033\\"
   printf "\033]4;24;rgb:07/66/78\033\\"
   printf "\033]4;96;rgb:8f/3f/71\033\\"
-  printf "\033]4;66;rgb:42/7b/58\033\\"
+  printf "\033]4;65;rgb:42/7b/58\033\\"
   printf "\033]4;130;rgb:af/3a/03\033\\"
 fi
diff -pruN 2.0.0-2/gruvbox_256palette_osx.sh 3.6.1-1/gruvbox_256palette_osx.sh
--- 2.0.0-2/gruvbox_256palette_osx.sh	2015-09-04 17:53:53.000000000 +0000
+++ 3.6.1-1/gruvbox_256palette_osx.sh	2023-12-10 23:21:34.000000000 +0000
@@ -1,6 +1,6 @@
 #!/bin/sh
 
-if [ "${TERM%%-*}" = "screen" ]; then
+if [ "${TERM%%-*}" = "screen" ] || [ "${TERM%%-*}" = "tmux" ]; then
   if [ -n "$TMUX" ]; then
     printf "\033Ptmux;\033\033]4;236;rgb:26/24/23\007\033\\"
     printf "\033Ptmux;\033\033]4;234;rgb:16/18/19\007\033\\"
@@ -36,7 +36,7 @@ if [ "${TERM%%-*}" = "screen" ]; then
     printf "\033Ptmux;\033\033]4;136;rgb:a5/63/11\007\033\\"
     printf "\033Ptmux;\033\033]4;24;rgb:0e/53/65\007\033\\"
     printf "\033Ptmux;\033\033]4;96;rgb:7b/2b/5e\007\033\\"
-    printf "\033Ptmux;\033\033]4;66;rgb:35/6a/46\007\033\\"
+    printf "\033Ptmux;\033\033]4;65;rgb:35/6a/46\007\033\\"
     printf "\033Ptmux;\033\033]4;130;rgb:9d/28/07\007\033\\"
   else
     printf "\033P\033]4;236;rgb:26/24/23\007\033\\"
@@ -73,7 +73,7 @@ if [ "${TERM%%-*}" = "screen" ]; then
     printf "\033P\033]4;136;rgb:a5/63/11\007\033\\"
     printf "\033P\033]4;24;rgb:0e/53/65\007\033\\"
     printf "\033P\033]4;96;rgb:7b/2b/5e\007\033\\"
-    printf "\033P\033]4;66;rgb:35/6a/46\007\033\\"
+    printf "\033P\033]4;65;rgb:35/6a/46\007\033\\"
     printf "\033P\033]4;130;rgb:9d/28/07\007\033\\"
   fi
 else
@@ -111,6 +111,6 @@ else
   printf "\033]4;136;rgb:a5/63/11\033\\"
   printf "\033]4;24;rgb:0e/53/65\033\\"
   printf "\033]4;96;rgb:7b/2b/5e\033\\"
-  printf "\033]4;66;rgb:35/6a/46\033\\"
+  printf "\033]4;65;rgb:35/6a/46\033\\"
   printf "\033]4;130;rgb:9d/28/07\033\\"
 fi
diff -pruN 2.0.0-2/package.json 3.6.1-1/package.json
--- 2.0.0-2/package.json	1970-01-01 00:00:00.000000000 +0000
+++ 3.6.1-1/package.json	2023-12-10 23:21:34.000000000 +0000
@@ -0,0 +1,10 @@
+{
+  "name": "gruvbox",
+  "version": "2.0.0",
+  "repository": "git@github.com:gruvbox-community/gruvbox.git",
+  "author": "gruvbox-community",
+  "license": "MIT",
+  "vim": {
+    "opt": true
+  }
+}
