diff --git a/bundle/indent-blankline.nvim/LICENSE.md b/bundle/indent-blankline.nvim/LICENSE.md
index f38dc2923..7074561a7 100644
--- a/bundle/indent-blankline.nvim/LICENSE.md
+++ b/bundle/indent-blankline.nvim/LICENSE.md
@@ -1,6 +1,6 @@
The MIT Licence
-Copyright (c) 2021 Lukas Reineke
+Copyright (c) 2022 Lukas Reineke
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/bundle/indent-blankline.nvim/README.md b/bundle/indent-blankline.nvim/README.md
index 18875a418..a139e0d07 100644
--- a/bundle/indent-blankline.nvim/README.md
+++ b/bundle/indent-blankline.nvim/README.md
@@ -2,7 +2,7 @@
This plugin adds indentation guides to all lines (including empty lines).
-It uses Neovims virtual text feature and **no conceal**
+It uses Neovim's virtual text feature and **no conceal**
This plugin requires Neovim 0.5 or higher. It makes use of Neovim only
features so it will not work in Vim.
@@ -13,28 +13,22 @@ branch `version-1`
Use your favourite plugin manager to install.
-#### Example with Packer
-
-[wbthomason/packer.nvim](https://github.com/wbthomason/packer.nvim)
+For [lazy.nvim](https://github.com/folke/lazy.nvim):
```lua
--- init.lua
-require("packer").startup(
- function()
- use "lukas-reineke/indent-blankline.nvim"
- end
-)
+{ "lukas-reineke/indent-blankline.nvim" },
```
-#### Example with Plug
+For [packer.nvim](https://github.com/wbthomason/packer.nvim):
-[junegunn/vim-plug](https://github.com/junegunn/vim-plug)
+```lua
+use "lukas-reineke/indent-blankline.nvim"
+```
+
+For [vim-plug](https://github.com/junegunn/vim-plug):
```vim
-" init.vim
-call plug#begin('~/.vim/plugged')
Plug 'lukas-reineke/indent-blankline.nvim'
-call plug#end()
```
## Setup
@@ -50,7 +44,7 @@ require("indent_blankline").setup {
}
```
-Please see `:help indent_blankline.txt`for more details and all possible values.
+Please see `:help indent_blankline.txt` for more details and all possible values.
A lot of [Yggdroot/indentLine](https://github.com/Yggdroot/indentLine) options should work out of the box.
@@ -62,7 +56,7 @@ All screenshots use [my custom onedark color scheme](https://github.com/lukas-re
```lua
vim.opt.list = true
-vim.opt.listchars:append("eol:↴")
+vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
show_end_of_line = true,
@@ -75,8 +69,8 @@ require("indent_blankline").setup {
```lua
vim.opt.list = true
-vim.opt.listchars:append("space:⋅")
-vim.opt.listchars:append("eol:↴")
+vim.opt.listchars:append "space:⋅"
+vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
show_end_of_line = true,
@@ -98,8 +92,8 @@ vim.cmd [[highlight IndentBlanklineIndent5 guifg=#61AFEF gui=nocombine]]
vim.cmd [[highlight IndentBlanklineIndent6 guifg=#C678DD gui=nocombine]]
vim.opt.list = true
-vim.opt.listchars:append("space:⋅")
-vim.opt.listchars:append("eol:↴")
+vim.opt.listchars:append "space:⋅"
+vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
space_char_blankline = " ",
@@ -143,8 +137,8 @@ require("indent_blankline").setup {
```lua
vim.opt.list = true
-vim.opt.listchars:append("space:⋅")
-vim.opt.listchars:append("eol:↴")
+vim.opt.listchars:append "space:⋅"
+vim.opt.listchars:append "eol:↴"
require("indent_blankline").setup {
space_char_blankline = " ",
@@ -153,7 +147,11 @@ require("indent_blankline").setup {
}
```
-
+
+
+`show_current_context_start` uses underline, so to achieve the best result you
+might need to tweak the underline position. In Kitty terminal for example you
+can do that with [modify_font](https://sw.kovidgoyal.net/kitty/conf/#opt-kitty.modify_font)
## Thanks
diff --git a/bundle/indent-blankline.nvim/doc/indent_blankline.txt b/bundle/indent-blankline.nvim/doc/indent_blankline.txt
index 42f814107..b1ff7744b 100644
--- a/bundle/indent-blankline.nvim/doc/indent_blankline.txt
+++ b/bundle/indent-blankline.nvim/doc/indent_blankline.txt
@@ -2,7 +2,7 @@
Author: Lukas Reineke
-Version: 2.17.0
+Version: 2.20.6
==============================================================================
CONTENTS *indent-blankline*
@@ -12,15 +12,14 @@ CONTENTS *indent-blankline*
3. Setup |indent-blankline-setup|
4. Variables |indent-blankline-variables|
5. Commands |indent-blankline-commands|
- 6. Changelog |indent-blankline-changelog|
- 7. License |indent-blankline-license|
+ 6. License |indent-blankline-license|
==============================================================================
1. INTRODUCTION *indent-blankline-introduction*
This plugin adds indentation guides to all lines (including empty lines).
-It uses Neovims virtual text feature and **no conceal**
+It uses Neovim's virtual text feature and **no conceal**
This plugin requires Neovim 0.5 or higher. It makes use of Neovim only
features so it will not work in Vim.
@@ -78,6 +77,18 @@ IndentBlanklineContextChar *hl-IndentBlanklineContextChar*
highlight IndentBlanklineContextChar guifg=#00FF00 gui=nocombine
+------------------------------------------------------------------------------
+IndentBlanklineContextSpaceChar *hl-IndentBlanklineContextSpaceChar*
+
+ Highlight of space characters one indent level of the current context.
+ Only used when |g:indent_blankline_show_current_context| is active
+
+ Default: takes guifg color from 'Label' ~
+
+ Example: >
+
+ highlight IndentBlanklineContextSpaceChar guifg=#00FF00 gui=nocombine
+
------------------------------------------------------------------------------
IndentBlanklineContextStart *hl-IndentBlanklineContextStart*
@@ -94,11 +105,13 @@ IndentBlanklineContextStart *hl-IndentBlanklineContextStart*
------------------------------------------------------------------------------
+Note: Define your highlight group after setting colorscheme or your colorscheme will clear your highlight group
+
When defining the highlight group, it is important to set |nocombine| as a
gui option. This is to make sure the character does not inherit gui options
from the underlying text, like italic or bold.
-Highlight groups get reset on |ColorScheme| autocommand, *if* both fg and bg
+Highlight groups get reset on |ColorScheme| autocommand, if both fg and bg
are empty.
The set more than one highlight group that changes based on indentation level,
@@ -126,7 +139,7 @@ Example: >
==============================================================================
4. VARIABLES *indent-blankline-variables*
-All variables can be set gobally |g:var|, per tab |t:var|, or per buffer |b:var|
+All variables can be set globally |g:var|, per tab |t:var|, or per buffer |b:var|
------------------------------------------------------------------------------
g:indent_blankline_char *g:indent_blankline_char*
@@ -190,7 +203,6 @@ g:indent_blankline_char_list_blankline *g:indent_blankline_char_list_blankline*
let g:indent_blankline_char_list_blankline = ['|', '¦', '┆', '┊']
------------------------------------------------------------------------------
-
g:indent_blankline_char_highlight_list *g:indent_blankline_char_highlight_list*
Specifies the list of character highlights for each indentation level.
@@ -215,7 +227,6 @@ g:indent_blankline_space_char_blankline *g:indent_blankline_space_char_blankline
let g:indent_blankline_space_char_blankline = ' '
------------------------------------------------------------------------------
-
g:indent_blankline_space_char_highlight_list *g:indent_blankline_space_char_highlight_list*
Specifies the list of space character highlights for each indentation
@@ -229,7 +240,6 @@ g:indent_blankline_space_char_highlight_list *g:indent_blankline_space_char_high
let g:indent_blankline_space_char_highlight_list = ['Error', 'Function']
------------------------------------------------------------------------------
-
g:indent_blankline_space_char_blankline_highlight_list *g:indent_blankline_space_char_blankline_highlight_list*
Specifies the list of space character highlights for each indentation
@@ -341,7 +351,7 @@ g:indent_blankline_enabled *g:indent_blankline_enabled*
Also set by |g:indentLine_enabled|
Note: the buffer version of this variable overwrites all other
- enabled/disalbed checks.
+ enabled/disabled checks.
Default: v:true ~
@@ -409,6 +419,7 @@ g:indent_blankline_buftype_exclude *g:indent_blankline_buftype_exclude*
"terminal", ~
"nofile", ~
"quickfix", ~
+ "prompt", ~
] ~
Example: >
@@ -451,7 +462,9 @@ g:indent_blankline_show_current_context *g:indent_blankline_show_current_context
When on, use treesitter to determine the current context. Then show the
indent character in a different highlight.
- Requires treesitter
+
+ Note: Requires https://github.com/nvim-treesitter/nvim-treesitter to be
+ installed
Note: With this option enabled, the plugin refreshes on |CursorMoved|,
which might be slower
@@ -469,6 +482,9 @@ g:indent_blankline_show_current_context_start *g:indent_blankline_show_current_c
line of the current context.
By default this will underline.
+ Note: Requires https://github.com/nvim-treesitter/nvim-treesitter to be
+ installed
+
Note: You need to have set |gui-colors| and it depends on your terminal
emulator if this works as expected.
If you are using kitty and tmux, take a look at this article to
@@ -562,6 +578,28 @@ g:indent_blankline_context_highlight_list *g:indent_blankline_context_highlight_
let g:indent_blankline_context_highlight_list = ['Error', 'Warning']
+------------------------------------------------------------------------------
+g:indent_blankline_char_priority *g:indent_blankline_char_priority*
+
+ Specifies the |extmarks| priority for chars.
+
+ Default: 1 ~
+
+ Example: >
+
+ let g:indent_blankline_char_priority = 50
+
+------------------------------------------------------------------------------
+g:indent_blankline_context_start_priority *g:indent_blankline_context_start_priority*
+
+ Specifies the |extmarks| priority for the context start.
+
+ Default: 10000 ~
+
+ Example: >
+
+ let g:indent_blankline_context_start_priority = 50
+
------------------------------------------------------------------------------
g:indent_blankline_context_patterns *g:indent_blankline_context_patterns*
@@ -591,12 +629,33 @@ g:indent_blankline_context_patterns *g:indent_blankline_context_patterns*
"element", ~
"table", ~
"tuple", ~
+ "do_block", ~
+ "Block", ~
+ "InitList", ~
+ "FnCallArguments", ~
+ "IfStatement", ~
+ "ContainerDecl", ~
+ "SwitchExpr", ~
+ "IfExpr", ~
+ "ParamDeclList", ~
] ~
Example: >
let g:indent_blankline_context_patterns = ['^if']
+------------------------------------------------------------------------------
+g:indent_blankline_use_treesitter_scope *g:indent_blankline_use_treesitter_scope*
+
+ Instead of using |g:indent_blankline_context_patterns|, use the current
+ scope defined by nvim-treesitter as the context.
+
+ Default: false ~
+
+ Example: >
+
+ let g:indent_blankline_use_treesitter_scope = true
+
------------------------------------------------------------------------------
g:indent_blankline_context_pattern_highlight *g:indent_blankline_context_pattern_highlight*
@@ -636,17 +695,6 @@ g:indent_blankline_disable_warning_message *g:indent_blankline_disable_warning_m
let g:indent_blankline_disable_warning_message = v:true
-------------------------------------------------------------------------------
-g:indent_blankline_debug *g:indent_blankline_debug*
-
- Turns on error logging.
-
- Default: v:false ~
-
- Example: >
-
- let g:indent_blankline_debug = v:true
-
==============================================================================
5. COMMANDS *indent-blankline-commands*
@@ -666,7 +714,7 @@ g:indent_blankline_debug *g:indent_blankline_debug*
4. |CompleteChanged| *
5. |BufWinEnter| *
6. |Filetype| *
- 7. |OptionSet| shiftwidth,tabstop,expandtab
+ 7. |OptionSet| list,listchars,shiftwidth,tabstop,expandtab
Example: >
@@ -712,251 +760,12 @@ g:indent_blankline_debug *g:indent_blankline_debug*
With bang (IndentBlanklineToggle!) toggles globally
==============================================================================
- 6. CHANGELOG *indent-blankline-changelog*
-
-2.17.0
- Update defaults for |g:indent_blankline_buftype_exclude|
-
-2.16.0
- Add `man` to |g:indent_blankline_filetype_exclude|
- Stylua update
-
-2.15.1
- Fix for nvim 0.5.1
-
-2.15.0
- * Add |g:indent_blankline_context_char_blankline| and
- |g:indent_blankline_context_char_list_blankline| options
-
-2.14.0
- * Add |g:indent_blankline_char_blankline| and
- |g:indent_blankline_char_list_blankline| options
-
-2.13.0
- * Support both the concatenated string, as well as the individual |filetypes|
- in |g:indent_blankline_filetype_exclude| when a buffer has multiple filetypes
-
-2.12.1
- * Add ext mark priority
-
-2.12.0
- * Remove old vimscript functions
- * Better default values for |g:indent_blankline_context_patterns| and
- |g:indent_blankline_filetype_exclude|
-
-2.11.0
- * Add |g:indent_blankline_show_current_context_start_on_current_line|
-
-2.10.6
- * Update example setup in the readme and docs
-
-2.10.5
- * Run refresh without autocmds
- * Check that the window is valid before returning to it after refresh
-
-2.10.4
- * Remove `nocombine` from |hl-IndentBlanklineContextStart| again..
-
-2.10.3
- * Fix context start highlight column for files indent with tab
- * Fix context start highlight on lines with no indent
-
-2.10.2
- * Apply context start highlight after indentation
-
-2.10.1
- * Remove `nocombine` from |hl-IndentBlanklineContextStart|
-
-2.10.0
- * Add |g:indent_blankline_show_current_context_start|
- * Add |hl-IndentBlanklineContextStart|
-
-2.9.3
- * Fix indent cache for scrolling
- * Fix documentation tags
-
-2.9.2
- * Fix refresh argument types for 0.5
-
-2.9.1
- * Fix horizontal scroll update
-
-2.9.0
- * Add |g:indent_blankline_context_char|
- * Add |g:indent_blankline_context_char_list|
-
-2.8.0
- * Add |IndentBlanklineRefreshScroll|
-
-2.7.0
- * Add support for 0 width |g:indent_blankline_char|
-
-2.6.4
- * Remove memo from `find_indent`, it made the performance worse
-
-2.6.3
- * Fix issue when calling setup more than once
-
-2.6.2
- * Memoize the find indent function
- * Run init on VimEnter to initialize indents in all open windows
- * Run init on plugin load to work with lazy loading
-
-2.6.1
- * Wait until buffer is loaded before doing anything
-
-2.6.0
- * Add |g:indent_blankline_context_pattern_highlight|
-
-2.5.7
- * Update the README to not overwrite all listchars
- * Handle listchars without a tab character
-
-2.5.6
- * Fix trailing space for blanklines
-
-2.5.5
- * Fix typo in readme
- * Fix initialization of |g:indent_blankline_space_char_blankline_highlight_list|
- * Refactor `find_indent`
-
-2.5.4
- * Fix wrong indent for empty lines with only extra
-
-2.5.3
- * Remove old reference to `indent_blankline_space_char`
-
-2.5.2
- * Fix background highlight example
-
-2.5.1
- * Only load treesitter libs if needed
-
-2.5.0
- * Add |g:indent_blankline_max_indent_increase|
-
-2.4.0
- * Remove `indent_blankline_respect_list`
- * Add |g:indent_blankline_disable_with_nolist|
-
-2.3.0
- * Add |g:indent_blankline_respect_list| option
-
-2.2.2
- * Remove old vimscript code
-
-2.2.1
- * Fix first indent on a line with whitespace less than the current shift
- width
-
-2.2.0
- * Correctly display listchars under the indent guides
- Huge thanks to @Daxtorim
- * Remove options:
- `indent_blankline_space_char` - listchars is used to get the correct space
- character
-
-2.1.4
- * Fix race condition in `is_indent_blankline_enabled`
-
-2.1.3
- * Refresh on |CompleteChanged|
-
-2.1.2
- * Fix lazy loading
-
-2.1.1
- * Fix bug were setup function is not run
-
-2.1.0
- * Added setup function
- * Added buffer variables
- * Fix horizontal scroll
-
-2.0.1
- * Fix typo in docs
-
-2.0.0
- * Complete lua rewrite
- * Drop support for Neovim 0.4
- * Trigger on `TextChanged`, `TextChangedI` and `WinScrolled`
- * Removed IndentGuide dependency
- * Removed commands
- - IndentBlanklineEnableAll
- - IndentBlanklineDisableAll
- - IndentBlanklineToggleAll
- * Added Bang for commands
- - IndentBlanklineRefresh
- - IndentBlanklineEnable
- - IndentBlanklineDisable
- - IndentBlanklineToggle
- * New options:
- |g:indent_blankline_char_highlight_list|
- |g:indent_blankline_space_char_highlight_list|
- |g:indent_blankline_show_end_of_line|
- |g:indent_blankline_show_foldtext|
- |g:indent_blankline_show_current_context|
- |g:indent_blankline_context_highlight_list|
- |g:indent_blankline_context_patterns|
- |g:indent_blankline_viewport_buffer|
- |g:indent_blankline_disable_warning_message|
- * Remove options:
- `indent_blankline_extra_indent_level`
-
-1.4.1
- * Fix windows working directory bug
-
-1.4.0
- * Don't create jumps in embedded nvim instance
- * Restore cursor and close buffer after every search
- * Only clear the namespace on disable if it exists
-
-1.3.2
- * Call indentexpr with `silent!` to not exit early on errors
-
-1.3.1
- * Moved more of init function in the try/catch block
-
-1.3.0
- * Error logs have more context
- * More error logs
- * Added `g:indent_blankline_debug` option to only display the errors logs
- when needed
-
-1.2.2
- * Apply `indent_blankline_indent_level` after
- `indent_blankline_extra_indent_level`
-
-1.2.1
- * Fixed out of range bug with `g:indent_blankline_extra_indent_level`
-
-1.2.0
- * Added `g:indent_blankline_extra_indent_level` option.
-
-1.1.0
- * Don't throw errors when `rpcnotify` fails. Just print the error message and
- try again next time.
-
-1.0.3
- * Fixed wrong help tag
-
-1.0.2
-* Fixed wrong variable reference form `indentLine_bufTypeExclude`
- to `indent_blankline_buftype_exclude`
-
-1.0.1
- * Fixed typo in docs
-
-1.0.0
- * First release
-
-==============================================================================
- 7. LICENSE *indent-blankline-license*
+ 6. LICENSE *indent-blankline-license*
The MIT Licence
http://www.opensource.org/licenses/mit-license.php
-Copyright (c) 2021 Lukas Reineke
+Copyright (c) 2023 Lukas Reineke
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
diff --git a/bundle/indent-blankline.nvim/lua/indent_blankline/init.lua b/bundle/indent-blankline.nvim/lua/indent_blankline/init.lua
index 5234667fb..e2c262546 100644
--- a/bundle/indent-blankline.nvim/lua/indent_blankline/init.lua
+++ b/bundle/indent-blankline.nvim/lua/indent_blankline/init.lua
@@ -5,6 +5,7 @@ local char_highlight = "IndentBlanklineChar"
local space_char_highlight = "IndentBlanklineSpaceChar"
local space_char_blankline_highlight = "IndentBlanklineSpaceCharBlankline"
local context_highlight = "IndentBlanklineContextChar"
+local context_space_char_highlight = "IndentBlanklineContextSpaceChar"
M.init = function()
if not vim.g.indent_blankline_namespace then
@@ -25,43 +26,26 @@ M.setup = function(options)
vim.g.indent_blankline_char = o(options.char, vim.g.indent_blankline_char, vim.g.indentLine_char, "│")
vim.g.indent_blankline_char_blankline = o(options.char_blankline, vim.g.indent_blankline_char_blankline)
- vim.g.indent_blankline_char_list = o(
- options.char_list,
- vim.g.indent_blankline_char_list,
- vim.g.indentLine_char_list
- )
- vim.g.indent_blankline_char_list_blankline = o(
- options.char_list_blankline,
- vim.g.indent_blankline_char_list_blankline
- )
- vim.g.indent_blankline_context_char = o(
- options.context_char,
- vim.g.indent_blankline_context_char,
- vim.g.indent_blankline_char
- )
+ vim.g.indent_blankline_char_list =
+ o(options.char_list, vim.g.indent_blankline_char_list, vim.g.indentLine_char_list)
+ vim.g.indent_blankline_char_list_blankline =
+ o(options.char_list_blankline, vim.g.indent_blankline_char_list_blankline)
+ vim.g.indent_blankline_context_char =
+ o(options.context_char, vim.g.indent_blankline_context_char, vim.g.indent_blankline_char)
vim.g.indent_blankline_context_char_blankline = o(
options.context_char_blankline,
vim.g.indent_blankline_context_char_blankline,
vim.g.indent_blankline_char_blankline
)
vim.g.indent_blankline_context_char_list = o(options.context_char_list, vim.g.indent_blankline_context_char_list)
- vim.g.indent_blankline_context_char_list_blankline = o(
- options.context_char_list_blankline,
- vim.g.indent_blankline_context_char_list
- )
- vim.g.indent_blankline_char_highlight_list = o(
- options.char_highlight_list,
- vim.g.indent_blankline_char_highlight_list
- )
- vim.g.indent_blankline_space_char_highlight_list = o(
- options.space_char_highlight_list,
- vim.g.indent_blankline_space_char_highlight_list
- )
- vim.g.indent_blankline_space_char_blankline = o(
- options.space_char_blankline,
- vim.g.indent_blankline_space_char_blankline,
- " "
- )
+ vim.g.indent_blankline_context_char_list_blankline =
+ o(options.context_char_list_blankline, vim.g.indent_blankline_context_char_list)
+ vim.g.indent_blankline_char_highlight_list =
+ o(options.char_highlight_list, vim.g.indent_blankline_char_highlight_list)
+ vim.g.indent_blankline_space_char_highlight_list =
+ o(options.space_char_highlight_list, vim.g.indent_blankline_space_char_highlight_list)
+ vim.g.indent_blankline_space_char_blankline =
+ o(options.space_char_blankline, vim.g.indent_blankline_space_char_blankline, " ")
vim.g.indent_blankline_space_char_blankline_highlight_list = o(
options.space_char_blankline_highlight_list,
vim.g.indent_blankline_space_char_blankline_highlight_list,
@@ -70,11 +54,8 @@ M.setup = function(options)
)
vim.g.indent_blankline_indent_level = o(options.indent_level, vim.g.indent_blankline_indent_level, 20)
vim.g.indent_blankline_enabled = o(options.enabled, vim.g.indent_blankline_enabled, true)
- vim.g.indent_blankline_disable_with_nolist = o(
- options.disable_with_nolist,
- vim.g.indent_blankline_disable_with_nolist,
- false
- )
+ vim.g.indent_blankline_disable_with_nolist =
+ o(options.disable_with_nolist, vim.g.indent_blankline_disable_with_nolist, false)
vim.g.indent_blankline_filetype = o(options.filetype, vim.g.indent_blankline_filetype, vim.g.indentLine_fileType)
vim.g.indent_blankline_filetype_exclude = o(
options.filetype_exclude,
@@ -82,16 +63,13 @@ M.setup = function(options)
vim.g.indentLine_fileTypeExclude,
{ "lspinfo", "packer", "checkhealth", "help", "man", "" }
)
- vim.g.indent_blankline_bufname_exclude = o(
- options.bufname_exclude,
- vim.g.indent_blankline_bufname_exclude,
- vim.g.indentLine_bufNameExclude
- )
+ vim.g.indent_blankline_bufname_exclude =
+ o(options.bufname_exclude, vim.g.indent_blankline_bufname_exclude, vim.g.indentLine_bufNameExclude)
vim.g.indent_blankline_buftype_exclude = o(
options.buftype_exclude,
vim.g.indent_blankline_buftype_exclude,
vim.g.indentLine_bufTypeExclude,
- { "terminal", "nofile", "quickfix" }
+ { "terminal", "nofile", "quickfix", "prompt" }
)
vim.g.indent_blankline_viewport_buffer = o(options.viewport_buffer, vim.g.indent_blankline_viewport_buffer, 10)
vim.g.indent_blankline_use_treesitter = o(options.use_treesitter, vim.g.indent_blankline_use_treesitter, false)
@@ -101,41 +79,26 @@ M.setup = function(options)
options.indent_level,
vim.g.indent_blankline_indent_level
)
- vim.g.indent_blankline_show_first_indent_level = o(
- options.show_first_indent_level,
- vim.g.indent_blankline_show_first_indent_level,
- true
- )
- vim.g.indent_blankline_show_trailing_blankline_indent = o(
- options.show_trailing_blankline_indent,
- vim.g.indent_blankline_show_trailing_blankline_indent,
- true
- )
- vim.g.indent_blankline_show_end_of_line = o(
- options.show_end_of_line,
- vim.g.indent_blankline_show_end_of_line,
- false
- )
+ vim.g.indent_blankline_show_first_indent_level =
+ o(options.show_first_indent_level, vim.g.indent_blankline_show_first_indent_level, true)
+ vim.g.indent_blankline_show_trailing_blankline_indent =
+ o(options.show_trailing_blankline_indent, vim.g.indent_blankline_show_trailing_blankline_indent, true)
+ vim.g.indent_blankline_show_end_of_line =
+ o(options.show_end_of_line, vim.g.indent_blankline_show_end_of_line, false)
vim.g.indent_blankline_show_foldtext = o(options.show_foldtext, vim.g.indent_blankline_show_foldtext, true)
- vim.g.indent_blankline_show_current_context = o(
- options.show_current_context,
- vim.g.indent_blankline_show_current_context,
- false
- )
- vim.g.indent_blankline_show_current_context_start = o(
- options.show_current_context_start,
- vim.g.indent_blankline_show_current_context_start,
- false
- )
+ vim.g.indent_blankline_show_current_context =
+ o(options.show_current_context, vim.g.indent_blankline_show_current_context, false)
+ vim.g.indent_blankline_show_current_context_start =
+ o(options.show_current_context_start, vim.g.indent_blankline_show_current_context_start, false)
+ vim.g.indent_blankline_use_treesitter_scope =
+ o(options.use_treesitter_scope, vim.g.indent_blankline_use_treesitter_scope, false)
vim.g.indent_blankline_show_current_context_start_on_current_line = o(
options.show_current_context_start_on_current_line,
vim.g.indent_blankline_show_current_context_start_on_current_line,
true
)
- vim.g.indent_blankline_context_highlight_list = o(
- options.context_highlight_list,
- vim.g.indent_blankline_context_highlight_list
- )
+ vim.g.indent_blankline_context_highlight_list =
+ o(options.context_highlight_list, vim.g.indent_blankline_context_highlight_list)
vim.g.indent_blankline_context_patterns = o(options.context_patterns, vim.g.indent_blankline_context_patterns, {
"class",
"^func",
@@ -146,6 +109,7 @@ M.setup = function(options)
"with",
"try",
"except",
+ "match",
"arguments",
"argument_list",
"object",
@@ -153,25 +117,31 @@ M.setup = function(options)
"element",
"table",
"tuple",
+ "do_block",
+ "Block",
+ "InitList",
+ "FnCallArguments",
+ "IfStatement",
+ "ContainerDecl",
+ "SwitchExpr",
+ "IfExpr",
+ "ParamDeclList",
})
- vim.g.indent_blankline_context_pattern_highlight = o(
- options.context_pattern_highlight,
- vim.g.indent_blankline_context_pattern_highlight
- )
+ vim.g.indent_blankline_context_pattern_highlight =
+ o(options.context_pattern_highlight, vim.g.indent_blankline_context_pattern_highlight)
vim.g.indent_blankline_strict_tabs = o(options.strict_tabs, vim.g.indent_blankline_strict_tabs, false)
- vim.g.indent_blankline_disable_warning_message = o(
- options.disable_warning_message,
- vim.g.indent_blankline_disable_warning_message,
- false
- )
- vim.g.indent_blankline_debug = o(options.debug, vim.g.indent_blankline_debug, false)
+ vim.g.indent_blankline_disable_warning_message =
+ o(options.disable_warning_message, vim.g.indent_blankline_disable_warning_message, false)
+ vim.g.indent_blankline_char_priority = o(options.char_priority, vim.g.indent_blankline_char_priority, 1)
+ vim.g.indent_blankline_context_start_priority =
+ o(options.context_start_priority, vim.g.indent_blankline_context_start_priority, 10000)
if vim.g.indent_blankline_show_current_context then
vim.cmd [[
augroup IndentBlanklineContextAutogroup
autocmd!
- autocmd CursorMoved * IndentBlanklineRefresh
+ autocmd CursorMoved,CursorMovedI * IndentBlanklineRefresh
augroup END
]]
end
@@ -277,6 +247,8 @@ local refresh = function(scroll)
local space_char_highlight_list = v "indent_blankline_space_char_highlight_list" or {}
local space_char_blankline_highlight_list = v "indent_blankline_space_char_blankline_highlight_list" or {}
local space_char_blankline = v "indent_blankline_space_char_blankline"
+ local char_priority = v "indent_blankline_char_priority"
+ local context_start_priority = v "indent_blankline_context_start_priority"
local list_chars
local no_tab_character = false
@@ -321,6 +293,11 @@ local refresh = function(scroll)
local ts_indent
if v "indent_blankline_use_treesitter" then
local ts_query_status, ts_query = pcall(require, "nvim-treesitter.query")
+ if not ts_query_status then
+ vim.schedule_wrap(function()
+ utils.error_handler("nvim-treesitter not found. Treesitter indent will not work", vim.log.levels.WARN)
+ end)()
+ end
local ts_indent_status
ts_indent_status, ts_indent = pcall(require, "nvim-treesitter.indent")
use_ts_indent = ts_query_status and ts_indent_status and ts_query.has_indents(vim.bo.filetype)
@@ -340,9 +317,8 @@ local refresh = function(scroll)
local show_current_context_start = v "indent_blankline_show_current_context_start"
local show_current_context_start_on_current_line = v "indent_blankline_show_current_context_start_on_current_line"
if v "indent_blankline_show_current_context" then
- context_status, context_start, context_end, context_pattern = utils.get_current_context(
- v "indent_blankline_context_patterns"
- )
+ context_status, context_start, context_end, context_pattern =
+ utils.get_current_context(v "indent_blankline_context_patterns", v "indent_blankline_use_treesitter_scope")
end
local get_virtual_text =
@@ -351,11 +327,8 @@ local refresh = function(scroll)
local current_left_offset = left_offset
local local_max_indent_level = math.min(max_indent_level, prev_indent + max_indent_increase)
local indent_char = utils._if(blankline and char_blankline, char_blankline, char)
- local context_indent_char = utils._if(
- blankline and context_char_blankline,
- context_char_blankline,
- context_char
- )
+ local context_indent_char =
+ utils._if(blankline and context_char_blankline, context_char_blankline, context_char)
local indent_char_list = utils._if(blankline and #char_list_blankline > 0, char_list_blankline, char_list)
local context_indent_char_list = utils._if(
blankline and #context_char_list_blankline > 0,
@@ -432,7 +405,11 @@ local refresh = function(scroll)
utils._if(
blankline,
utils.get_from_list(space_char_blankline_highlight_list, i, space_char_blankline_highlight),
- utils.get_from_list(space_char_highlight_list, i, space_char_highlight)
+ utils.get_from_list(
+ space_char_highlight_list,
+ i,
+ utils._if(context, context_space_char_highlight, space_char_highlight)
+ )
),
})
end
@@ -503,6 +480,12 @@ local refresh = function(scroll)
and show_current_context_start
and (show_current_context_start_on_current_line or lnum ~= context_start)
then
+ if
+ not vim.api.nvim_buf_is_loaded(bufnr)
+ or not vim.api.nvim_buf_get_var(bufnr, "__indent_blankline_active")
+ then
+ return
+ end
xpcall(
vim.api.nvim_buf_set_extmark,
utils.error_handler,
@@ -513,7 +496,7 @@ local refresh = function(scroll)
{
end_col = #lines[i],
hl_group = "IndentBlanklineContextStart",
- priority = 10000,
+ priority = context_start_priority,
}
)
end
@@ -536,6 +519,12 @@ local refresh = function(scroll)
max_indent_level,
{}
)
+ if
+ not vim.api.nvim_buf_is_loaded(bufnr)
+ or not vim.api.nvim_buf_get_var(bufnr, "__indent_blankline_active")
+ then
+ return
+ end
xpcall(
vim.api.nvim_buf_set_extmark,
utils.error_handler,
@@ -543,7 +532,12 @@ local refresh = function(scroll)
vim.g.indent_blankline_namespace,
i - 1 + offset,
0,
- { virt_text = virtual_text, virt_text_pos = "overlay", hl_mode = "combine", priority = 1 }
+ {
+ virt_text = virtual_text,
+ virt_text_pos = "overlay",
+ hl_mode = "combine",
+ priority = char_priority,
+ }
)
end)()
return async:close()
@@ -552,13 +546,8 @@ local refresh = function(scroll)
local indent, extra
local virtual_string = {}
if not blankline then
- indent, extra, virtual_string = utils.find_indent(
- whitespace,
- only_whitespace,
- shiftwidth,
- strict_tabs,
- list_chars
- )
+ indent, extra, virtual_string =
+ utils.find_indent(whitespace, only_whitespace, shiftwidth, strict_tabs, list_chars)
elseif empty_line_counter > 0 then
empty_line_counter = empty_line_counter - 1
indent = next_indent
@@ -575,13 +564,8 @@ local refresh = function(scroll)
end
local j_whitespace = string.match(lines[j], "^%s+")
local j_only_whitespace = j_whitespace == lines[j]
- indent, extra, _ = utils.find_indent(
- j_whitespace,
- j_only_whitespace,
- shiftwidth,
- strict_tabs,
- list_chars
- )
+ indent, extra, _ =
+ utils.find_indent(j_whitespace, j_only_whitespace, shiftwidth, strict_tabs, list_chars)
end
next_indent = indent
next_extra = extra
@@ -598,6 +582,12 @@ local refresh = function(scroll)
and (show_current_context_start_on_current_line or lnum ~= context_start)
then
vim.schedule_wrap(function()
+ if
+ not vim.api.nvim_buf_is_loaded(bufnr)
+ or not vim.api.nvim_buf_get_var(bufnr, "__indent_blankline_active")
+ then
+ return
+ end
xpcall(
vim.api.nvim_buf_set_extmark,
utils.error_handler,
@@ -608,7 +598,7 @@ local refresh = function(scroll)
{
end_col = #lines[i],
hl_group = "IndentBlanklineContextStart",
- priority = 10000,
+ priority = context_start_priority,
}
)
end)()
@@ -633,6 +623,12 @@ local refresh = function(scroll)
virtual_string
)
vim.schedule_wrap(function()
+ if
+ not vim.api.nvim_buf_is_loaded(bufnr)
+ or not vim.api.nvim_buf_get_var(bufnr, "__indent_blankline_active")
+ then
+ return
+ end
xpcall(
vim.api.nvim_buf_set_extmark,
utils.error_handler,
@@ -640,7 +636,12 @@ local refresh = function(scroll)
vim.g.indent_blankline_namespace,
i - 1 + offset,
0,
- { virt_text = virtual_text, virt_text_pos = "overlay", hl_mode = "combine", priority = 1 }
+ {
+ virt_text = virtual_text,
+ virt_text_pos = "overlay",
+ hl_mode = "combine",
+ priority = char_priority,
+ }
)
end)()
return async:close()
diff --git a/bundle/indent-blankline.nvim/lua/indent_blankline/utils.lua b/bundle/indent-blankline.nvim/lua/indent_blankline/utils.lua
index 268f4c868..e21a5c901 100644
--- a/bundle/indent-blankline.nvim/lua/indent_blankline/utils.lua
+++ b/bundle/indent-blankline.nvim/lua/indent_blankline/utils.lua
@@ -38,12 +38,16 @@ M.memo = setmetatable({
end,
})
-M.error_handler = function(err)
- if vim.g.indent_blankline_debug then
- vim.cmd "echohl Error"
- vim.cmd('echomsg "' .. err .. '"')
- vim.cmd "echohl None"
+M.error_handler = function(err, level)
+ if err:match "Invalid buffer id.*" then
+ return
end
+ if not pcall(require, "notify") then
+ err = string.format("indent-blankline: %s", err)
+ end
+ vim.notify_once(err, level or vim.log.levels.DEBUG, {
+ title = "indent-blankline",
+ })
end
M.is_indent_blankline_enabled = M.memo(
@@ -182,10 +186,29 @@ M.find_indent = function(whitespace, only_whitespace, shiftwidth, strict_tabs, l
return indent + math.floor(spaces / shiftwidth), table.maxn(virtual_string) % shiftwidth ~= 0, virtual_string
end
-M.get_current_context = function(type_patterns)
- local ts_utils = require "nvim-treesitter.ts_utils"
+M.get_current_context = function(type_patterns, use_treesitter_scope)
+ local ts_utils_status, ts_utils = pcall(require, "nvim-treesitter.ts_utils")
+ if not ts_utils_status then
+ vim.schedule_wrap(function()
+ M.error_handler("nvim-treesitter not found. Context will not work", vim.log.levels.WARN)
+ end)()
+ return false
+ end
+ local locals = require "nvim-treesitter.locals"
local cursor_node = ts_utils.get_node_at_cursor()
+ if use_treesitter_scope then
+ local current_scope = locals.containing_scope(cursor_node, 0)
+ if not current_scope then
+ return false
+ end
+ local node_start, _, node_end, _ = current_scope:range()
+ if node_start == node_end then
+ return false
+ end
+ return true, node_start + 1, node_end + 1, current_scope:type()
+ end
+
while cursor_node do
local node_type = cursor_node:type()
for _, rgx in ipairs(type_patterns) do
diff --git a/bundle/indent-blankline.nvim/plugin/indent_blankline.vim b/bundle/indent-blankline.nvim/plugin/indent_blankline.vim
index d9a934bef..203d140a5 100644
--- a/bundle/indent-blankline.nvim/plugin/indent_blankline.vim
+++ b/bundle/indent-blankline.nvim/plugin/indent_blankline.vim
@@ -32,7 +32,7 @@ lua require("indent_blankline").init()
augroup IndentBlanklineAutogroup
autocmd!
- autocmd OptionSet list,shiftwidth,tabstop,expandtab IndentBlanklineRefresh
+ autocmd OptionSet list,listchars,shiftwidth,tabstop,expandtab IndentBlanklineRefresh
autocmd FileChangedShellPost,TextChanged,TextChangedI,CompleteChanged,BufWinEnter,Filetype * IndentBlanklineRefresh
autocmd WinScrolled * IndentBlanklineRefreshScroll
autocmd ColorScheme * lua require("indent_blankline.utils").reset_highlights()
diff --git a/bundle/plugins.toml b/bundle/plugins.toml
index 42c231d65..bfda70fce 100644
--- a/bundle/plugins.toml
+++ b/bundle/plugins.toml
@@ -16,3 +16,11 @@
username = 'rakr'
repo = 'vim-one'
commit = '187f5c85b682c1933f8780d4d419c55d26a82e24'
+
+[[repos]]
+ # https://github.com/lukas-reineke/indent-blankline.nvim/tree/7075d7861f7a6bbf0de0298c83f8a13195e6ec01
+ url = 'https://github.com/'
+ directory = 'indent-blankline.nvim'
+ username = 'lukas-reineke'
+ repo = 'indent-blankline.nvim'
+ commit = '7075d7861f7a6bbf0de0298c83f8a13195e6ec01'