mirror of
https://github.com/neovim/neovim.git
synced 2024-12-23 20:55:18 -07:00
feat(defaults): limit syntax cost on CmdwinEnter #15401
Add a new default autocommand to limit syntax highlighting synchronization in the command window. This refactors the nvim_terminal autocommand out of main() and into a new init_default_autocmds() function, which is now part of the startup process and can be further extended with more default autocommands down the road. ref #6289 #6399
This commit is contained in:
parent
6751d6254b
commit
622a36b1f1
@ -1140,6 +1140,11 @@ Thus you can resize the command-line window, but not others.
|
|||||||
The |getcmdwintype()| function returns the type of the command-line being
|
The |getcmdwintype()| function returns the type of the command-line being
|
||||||
edited as described in |cmdwin-char|.
|
edited as described in |cmdwin-char|.
|
||||||
|
|
||||||
|
Nvim defines this default CmdWinEnter autocmd in the "nvim_cmdwin" group: >
|
||||||
|
autocmd CmdWinEnter [:>] exe 'syntax sync minlines=1 maxlines='..&cmdwinheight
|
||||||
|
<
|
||||||
|
You can disable this in your config with "autocmd! nvim_cmdwin". |default-autocmds|
|
||||||
|
|
||||||
|
|
||||||
AUTOCOMMANDS
|
AUTOCOMMANDS
|
||||||
|
|
||||||
|
@ -406,7 +406,11 @@ accordingly. Vim proceeds in this order:
|
|||||||
Nvim started with |--embed| waits for the UI to connect before
|
Nvim started with |--embed| waits for the UI to connect before
|
||||||
proceeding to load user configuration.
|
proceeding to load user configuration.
|
||||||
|
|
||||||
4. Load user config (execute Ex commands from files, environment, …).
|
4. Setup default mappings and autocommands.
|
||||||
|
Default mappings |default-mappings| and autocommands |default-autocmds|
|
||||||
|
are created.
|
||||||
|
|
||||||
|
5. Load user config (execute Ex commands from files, environment, …).
|
||||||
$VIMINIT environment variable is read as one Ex command line (separate
|
$VIMINIT environment variable is read as one Ex command line (separate
|
||||||
multiple commands with '|' or <NL>).
|
multiple commands with '|' or <NL>).
|
||||||
*config* *init.vim* *init.lua* *vimrc* *exrc*
|
*config* *init.vim* *init.lua* *vimrc* *exrc*
|
||||||
@ -450,7 +454,7 @@ accordingly. Vim proceeds in this order:
|
|||||||
- The file ".nvimrc"
|
- The file ".nvimrc"
|
||||||
- The file ".exrc"
|
- The file ".exrc"
|
||||||
|
|
||||||
5. Enable filetype and indent plugins.
|
6. Enable filetype and indent plugins.
|
||||||
This does the same as the commands: >
|
This does the same as the commands: >
|
||||||
:runtime! filetype.vim
|
:runtime! filetype.vim
|
||||||
:runtime! ftplugin.vim
|
:runtime! ftplugin.vim
|
||||||
@ -458,13 +462,13 @@ accordingly. Vim proceeds in this order:
|
|||||||
< Skipped if ":filetype … off" was called or if the "-u NONE" command
|
< Skipped if ":filetype … off" was called or if the "-u NONE" command
|
||||||
line argument was given.
|
line argument was given.
|
||||||
|
|
||||||
6. Enable syntax highlighting.
|
7. Enable syntax highlighting.
|
||||||
This does the same as the command: >
|
This does the same as the command: >
|
||||||
:runtime! syntax/syntax.vim
|
:runtime! syntax/syntax.vim
|
||||||
< Skipped if ":syntax off" was called or if the "-u NONE" command
|
< Skipped if ":syntax off" was called or if the "-u NONE" command
|
||||||
line argument was given.
|
line argument was given.
|
||||||
|
|
||||||
7. Load the plugin scripts. *load-plugins*
|
8. Load the plugin scripts. *load-plugins*
|
||||||
This does the same as the command: >
|
This does the same as the command: >
|
||||||
:runtime! plugin/**/*.vim
|
:runtime! plugin/**/*.vim
|
||||||
:runtime! plugin/**/*.lua
|
:runtime! plugin/**/*.lua
|
||||||
@ -494,26 +498,26 @@ accordingly. Vim proceeds in this order:
|
|||||||
if packages have been found, but that should not add a directory
|
if packages have been found, but that should not add a directory
|
||||||
ending in "after".
|
ending in "after".
|
||||||
|
|
||||||
8. Set 'shellpipe' and 'shellredir'
|
9. Set 'shellpipe' and 'shellredir'
|
||||||
The 'shellpipe' and 'shellredir' options are set according to the
|
The 'shellpipe' and 'shellredir' options are set according to the
|
||||||
value of the 'shell' option, unless they have been set before.
|
value of the 'shell' option, unless they have been set before.
|
||||||
This means that Vim will figure out the values of 'shellpipe' and
|
This means that Vim will figure out the values of 'shellpipe' and
|
||||||
'shellredir' for you, unless you have set them yourself.
|
'shellredir' for you, unless you have set them yourself.
|
||||||
|
|
||||||
9. Set 'updatecount' to zero, if "-n" command argument used
|
10. Set 'updatecount' to zero, if "-n" command argument used
|
||||||
|
|
||||||
10. Set binary options
|
11. Set binary options
|
||||||
If the "-b" flag was given to Vim, the options for binary editing will
|
If the "-b" flag was given to Vim, the options for binary editing will
|
||||||
be set now. See |-b|.
|
be set now. See |-b|.
|
||||||
|
|
||||||
11. Read the ShaDa file
|
12. Read the ShaDa file
|
||||||
See |shada-file|.
|
See |shada-file|.
|
||||||
|
|
||||||
12. Read the quickfix file
|
13. Read the quickfix file
|
||||||
If the "-q" flag was given to Vim, the quickfix file is read. If this
|
If the "-q" flag was given to Vim, the quickfix file is read. If this
|
||||||
fails, Vim exits.
|
fails, Vim exits.
|
||||||
|
|
||||||
13. Open all windows
|
14. Open all windows
|
||||||
When the |-o| flag was given, windows will be opened (but not
|
When the |-o| flag was given, windows will be opened (but not
|
||||||
displayed yet).
|
displayed yet).
|
||||||
When the |-p| flag was given, tab pages will be created (but not
|
When the |-p| flag was given, tab pages will be created (but not
|
||||||
@ -523,7 +527,7 @@ accordingly. Vim proceeds in this order:
|
|||||||
Buffers for all windows will be loaded, without triggering |BufAdd|
|
Buffers for all windows will be loaded, without triggering |BufAdd|
|
||||||
autocommands.
|
autocommands.
|
||||||
|
|
||||||
14. Execute startup commands
|
15. Execute startup commands
|
||||||
If a "-t" flag was given to Vim, the tag is jumped to.
|
If a "-t" flag was given to Vim, the tag is jumped to.
|
||||||
The commands given with the |-c| and |+cmd| arguments are executed.
|
The commands given with the |-c| and |+cmd| arguments are executed.
|
||||||
If the 'insertmode' option is set, Insert mode is entered.
|
If the 'insertmode' option is set, Insert mode is entered.
|
||||||
|
@ -76,12 +76,27 @@ the differences.
|
|||||||
- |g:vimsyn_embed| defaults to "l" to enable Lua highlighting
|
- |g:vimsyn_embed| defaults to "l" to enable Lua highlighting
|
||||||
|
|
||||||
|
|
||||||
Default Mappings: *default-mappings*
|
Default Mappings ~
|
||||||
|
*default-mappings*
|
||||||
|
>
|
||||||
|
nnoremap Y y$
|
||||||
|
nnoremap <C-L> <Cmd>nohlsearch<Bar>diffupdate<CR><C-L>
|
||||||
|
inoremap <C-U> <C-G>u<C-U>
|
||||||
|
inoremap <C-W> <C-G>u<C-W>
|
||||||
|
<
|
||||||
|
Default Autocommands ~
|
||||||
|
*default-autocmds*
|
||||||
|
Default autocommands exist in the following groups. Use ":autocmd! {group}" to
|
||||||
|
remove them and ":autocmd {group}" to see how they're defined.
|
||||||
|
|
||||||
nnoremap Y y$
|
nvim_terminal:
|
||||||
nnoremap <C-L> <Cmd>nohlsearch<Bar>diffupdate<CR><C-L>
|
- BufReadCmd: New files with a name matching
|
||||||
inoremap <C-U> <C-G>u<C-U>
|
`term://(.{-}//(\d+:)?)?\zs.*` are treated as terminal
|
||||||
inoremap <C-W> <C-G>u<C-W>
|
buffers. |terminal-start|
|
||||||
|
|
||||||
|
nvim_cmdwin:
|
||||||
|
- CmdWinEnter: Synchronize syntax highlighting within the command
|
||||||
|
window.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
3. New Features *nvim-features*
|
3. New Features *nvim-features*
|
||||||
|
@ -8,6 +8,7 @@
|
|||||||
#include "nvim/ui.h"
|
#include "nvim/ui.h"
|
||||||
#include "nvim/aucmd.h"
|
#include "nvim/aucmd.h"
|
||||||
#include "nvim/eval.h"
|
#include "nvim/eval.h"
|
||||||
|
#include "nvim/ex_docmd.h"
|
||||||
#include "nvim/ex_getln.h"
|
#include "nvim/ex_getln.h"
|
||||||
#include "nvim/buffer.h"
|
#include "nvim/buffer.h"
|
||||||
|
|
||||||
@ -35,6 +36,30 @@ void do_autocmd_uienter(uint64_t chanid, bool attached)
|
|||||||
recursive = false;
|
recursive = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void init_default_autocmds(void)
|
||||||
|
{
|
||||||
|
// open terminals when opening files that start with term://
|
||||||
|
#define PROTO "term://"
|
||||||
|
do_cmdline_cmd("augroup nvim_terminal");
|
||||||
|
do_cmdline_cmd("autocmd!");
|
||||||
|
do_cmdline_cmd("autocmd BufReadCmd " PROTO "* ++nested "
|
||||||
|
"if !exists('b:term_title')|call termopen("
|
||||||
|
// Capture the command string
|
||||||
|
"matchstr(expand(\"<amatch>\"), "
|
||||||
|
"'\\c\\m" PROTO "\\%(.\\{-}//\\%(\\d\\+:\\)\\?\\)\\?\\zs.*'), "
|
||||||
|
// capture the working directory
|
||||||
|
"{'cwd': expand(get(matchlist(expand(\"<amatch>\"), "
|
||||||
|
"'\\c\\m" PROTO "\\(.\\{-}\\)//'), 1, ''))})"
|
||||||
|
"|endif");
|
||||||
|
do_cmdline_cmd("augroup END");
|
||||||
|
#undef PROTO
|
||||||
|
|
||||||
|
// limit syntax synchronization in the command window
|
||||||
|
do_cmdline_cmd("augroup nvim_cmdwin");
|
||||||
|
do_cmdline_cmd("autocmd! CmdWinEnter [:>] exe 'syntax sync minlines=1 maxlines='..&cmdwinheight");
|
||||||
|
do_cmdline_cmd("augroup END");
|
||||||
|
}
|
||||||
|
|
||||||
static void focusgained_event(void **argv)
|
static void focusgained_event(void **argv)
|
||||||
{
|
{
|
||||||
bool *gainedp = argv[0];
|
bool *gainedp = argv[0];
|
||||||
|
@ -309,9 +309,6 @@ int main(int argc, char **argv)
|
|||||||
init_highlight(true, false); // Default highlight groups.
|
init_highlight(true, false); // Default highlight groups.
|
||||||
TIME_MSG("init highlight");
|
TIME_MSG("init highlight");
|
||||||
|
|
||||||
init_default_mappings(); // Default mappings.
|
|
||||||
TIME_MSG("init default mappings");
|
|
||||||
|
|
||||||
// Set the break level after the terminal is initialized.
|
// Set the break level after the terminal is initialized.
|
||||||
debug_break_level = params.use_debug_break_level;
|
debug_break_level = params.use_debug_break_level;
|
||||||
|
|
||||||
@ -340,21 +337,11 @@ int main(int argc, char **argv)
|
|||||||
TIME_MSG("initialized screen early for UI");
|
TIME_MSG("initialized screen early for UI");
|
||||||
}
|
}
|
||||||
|
|
||||||
// open terminals when opening files that start with term://
|
init_default_mappings(); // Default mappings.
|
||||||
#define PROTO "term://"
|
TIME_MSG("init default mappings");
|
||||||
do_cmdline_cmd("augroup nvim_terminal");
|
|
||||||
do_cmdline_cmd("autocmd!");
|
init_default_autocmds();
|
||||||
do_cmdline_cmd("autocmd BufReadCmd " PROTO "* nested "
|
TIME_MSG("init default autocommands");
|
||||||
":if !exists('b:term_title')|call termopen( "
|
|
||||||
// Capture the command string
|
|
||||||
"matchstr(expand(\"<amatch>\"), "
|
|
||||||
"'\\c\\m" PROTO "\\%(.\\{-}//\\%(\\d\\+:\\)\\?\\)\\?\\zs.*'), "
|
|
||||||
// capture the working directory
|
|
||||||
"{'cwd': expand(get(matchlist(expand(\"<amatch>\"), "
|
|
||||||
"'\\c\\m" PROTO "\\(.\\{-}\\)//'), 1, ''))})"
|
|
||||||
"|endif");
|
|
||||||
do_cmdline_cmd("augroup END");
|
|
||||||
#undef PROTO
|
|
||||||
|
|
||||||
// Reset 'loadplugins' for "-u NONE" before "--cmd" arguments.
|
// Reset 'loadplugins' for "-u NONE" before "--cmd" arguments.
|
||||||
// Allows for setting 'loadplugins' there.
|
// Allows for setting 'loadplugins' there.
|
||||||
|
Loading…
Reference in New Issue
Block a user