mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-02 20:30:05 +08:00
chore(ui): update bundle indent-blankline.nvim
This commit is contained in:
parent
3da610a107
commit
2755d4e660
2
bundle/indent-blankline.nvim/LICENSE.md
vendored
2
bundle/indent-blankline.nvim/LICENSE.md
vendored
@ -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
|
||||
|
46
bundle/indent-blankline.nvim/README.md
vendored
46
bundle/indent-blankline.nvim/README.md
vendored
@ -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 {
|
||||
}
|
||||
```
|
||||
|
||||
<img width="900" src="https://user-images.githubusercontent.com/12900252/140518531-522aa67a-b377-498c-ad39-85113b2b56df.png" alt="Screenshot" />
|
||||
<img width="900" src="https://user-images.githubusercontent.com/12900252/188080732-5b7d98b9-3cb8-4789-b28d-67cad0bfbcde.png" alt="Screenshot" />
|
||||
|
||||
`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
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
|
||||
Author: Lukas Reineke <lukas.reineke@protonmail.com>
|
||||
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
|
||||
|
@ -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()
|
||||
|
@ -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
|
||||
|
@ -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()
|
||||
|
8
bundle/plugins.toml
vendored
8
bundle/plugins.toml
vendored
@ -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'
|
||||
|
Loading…
Reference in New Issue
Block a user