All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
5.4.0 - 2024-11-25
- Issue with calling the API functions without some optional fields crashing.
5.3.2 - 2024-11-17
- The
CompileDebugError
command, which prints debug information about the error under the current line (along with a matching API function).
5.3.1 - 2024-10-30
- Documentation for minimum supported version of Neovim.
5.3.0 - 2024-10-13
- The behavior of the
q
mapping within the compilation buffer; instead of running<CMD>q<CR>
and possibly quitting Neovim, it now runs<CMD>bdelete<CR>
, which won't close out the entire editor. - No longer outputs additional lines created by the process once interrupted/exited.
5.2.0 - 2024-08-27
- The
CompilationFinished
autocmd (a pattern ofUser
) which triggers when the compilation is finished.
5.1.0 - 2024-08-25
- A highlight of the error's locus when jumping to it, along with the
error_locus_highlight
option to configure if the highlight should occur, and for how long. - The
priority
key for error matchers, and a default priority for the defaultclang_include
matcher. - The
:FirstError
command, which jumps to the Nth error based on the count (defaulting to 1).
5.0.2 - 2024-08-25
- Issue with completion when using
nvim-cmp
.
- The order of the docs.
5.0.1 - 2024-08-24
- Issue with ANSI color sequences not being highlighted correctly by
baleia
.
5.0.0 - 2024-08-23
- The ability to use compile-mode features in any buffer with the
compilation
filetype; this means you can save command outputs in a file and reopen it to go through errors and the like. - The
use_diagnostics
configuration option, which will cause Neovim diagnostics to be used instead of opening the compilation buffer to show errors. - (Breaking) The
error_threshold
configuration option, which determines what level of errors are considered when jumping/moving between errors (i.e. using:NextError
,:CompileNextError
, etc.). This defaults tocompile_mode.level.WARNING
, which means thatINFO
level errors are no longer considered by default. You can set this option tocompile_mode.level.INFO
to revert to the old behavior.
- (Breaking) The behavior when opening a window for compilation; instead of staying in the compilation buffer's window, compiling will now remain in the window where it originally happened. (You should note this in case you have an
autocmd
that does this behavior manually - it will now have the opposite effect in some cases, so you will likely want to remove it).
- (Breaking) The
setup
function has now been completely removed. Instead, configuration should use thevim.g.compile_mode
object, which can be given the typeCompileModeOpts
.
4.2.0 - 2024-08-23
- The
:NextErrorFollow
command, which previews the error under the cursor in the compilation buffer in another window. - The ability to use
:silent
on commands which haven't been able to use it so far.
4.1.1 - 2024-08-22
- Incorrect warnings about the
environment
configuration option.
4.1.0 - 2024-08-18
- Custom completion for
:Compile
and the compilation input which uses Vim's:!
completion.
4.0.1 - 2024-08-17
- Issue with compilation buffer name on Windows which resulted in "-1 is not a valid buffer id" errors.
- Passing
hidden_output
as a string now works as documented. - Suggested commands in config type annotations.
- Several incorrect/missing warnings for configuration checks.
4.0.0 - 2024-08-15
- Healthchecks; you can now troubleshoot the plugin using
:checkhealth compile-mode
. - The ability to configure the plugin using the
vim.g.compile_mode
table. - A new type annotation for the configuration options -
CompileModeOpts
- The plugin's logs are now also placed in
compile-mode.nvim.log
in users'data
directory (usually something like~/.local/share/nvim
). - The ability to use command modifiers such as
:vert
and:tab
with:NextError
,:PrevError
,:CurrentError
, and:CompileGotoError
. These modifiers affect the way windows are opened when jumping to errors, if a new window must be created.
- The
setup
function is now deprecated. Instead, configuration should use thevim.g.compile_mode
object, which can be given the typeCompileModeOpts
. - The splitting behavior for jumping to errors; the new behavior mimics the way the Emacs mode works - use the current window, unless that window is the compilation buffer, in which case use another existing window or create a split if none exists - but enables the usage of commands like
:vertical
and other modifiers to determine the manner in which splits occur. - Several of the type annotations have been changed to include a
CompileMode
prefix, such as:Error
->CompileModeError
level
->CompileModeLevel
RegexpMatcher
->CompileModeRegexpMatcher
- The (mostly undocumented)
same_window_errors
option.
3.0.1 - 2024-07-08
- Issue with duplicate tags in docs.
3.0.0 - 2024-07-07
- The ability to use
:tab
on:Compile
and:Recompile
. - The ability to use a count with
NextError
andPrevError
. - Jumping to errors now respects "Entering directory" and "Leaving directory" messages from make to determine what directory a file might be in
- The
CompileNextError
andCompilePrevError
commands, which quickly scroll to an error without opening its locus (i.e. source file). - The
CompileNextFile
andCompilePrevFile
commands, which act similarly to the two mentioned above but skip any errors within the current error's file. - Several new API functions which are used to implement those commands.
- The
auto_jump_to_first_error
option, which makes compiling jump to the first error as soon as it is available. - (Breaking) The
ask_about_save
option, which makes compiling ask about saving each unsaved buffer before running a command. This option is now the default, but it can be disabled by setting it tofalse
. - (Breaking) The
ask_to_interrupt
option, which makes compiling ask to interrupt a previously running command instead of stopping it instantly. This option is now the default, but it can be disabled by setting it tofalse
. - The
environment
option, which configures additional environment variables that each compilation command should inherit.- Also, add the
clear_environment
option, which modifies the behavior ofenvironment
to no longer merge with the existing environment.
- Also, add the
- The
baleia_setup
option, which will enable support for automatic highlighting of ANSI escape codes when set totrue
. It can be set to a table of options to pass to thebaleia.setup
call. - Proper logs for segmentation faults and command termination
- Several new keymaps within the compilation buffer
- ...including an override of
gf
andCTRL-W_f
that respects "Entering directory" and "Leaving directory" messages, as noted above for jumping to errors
- ...including an override of
- Instead of printing the Emacs-style "-*- ... -*-" at the top of the
compilation buffer (which does nothing in Vim), a Vim modeline is printed
that modifies the
filetype
andpath
options in the same way that the original Emacs mode does. - (Breaking) The
compilation_hidden_output
option has been renamed tohidden_output
. - (Breaking) The dependency on baleia.nvim is now optional, and can be
enabled with the
baleia_setup
option. This means that by default, ANSI escape codes in the output of commands will not be highlighted.
- (Breaking) The
no_baleia_support
andbaleia_options
options. As baleia.nvim is no longer depended upon by default, if you want to enable support for it within compile-mode you should use thebaleia_setup
option. - (Breaking) The
error_highlights
option. Instead, customize the highlights defined by this plugin using Vim's regular:highlight
command (see the docs).
- Bug with parsing of error levels that caused some of the defaults of
error_regexp_table
not to function properly. - Bugs with partial output being printed to the compilation buffer, because of
a mishandling of partial lines returned from
jobstart()
.
2.8.0 - 2024-05-22
- The
CurrentError
command, which acts as a way to jump back to the error you were working after a bit of iteration. - The
QuickfixErrors
command, which sends compilation errors to the quickfix list and opens the quickfix window. - Several new API functions which are used to implement those commands.
- The documentation process; the docs themselves are no longer created from the README, which creates better, more readable docs and a cleaner, simpler README.
2.7.1 - 2024-05-21
- The behavior of certain unique characters in the name of the compilation buffer. Specifically, this fixes an issue with the default buffer name - see here.
2.7.0 - 2024-05-20
- Changed the
buftype
of the compilation buffer to"nofile"
.
- Moved the compilation buffer commands out of an
autocmd
to resolve some weird issues with it - Make
count
argument ofcompile()
andrecompile()
optional
2.6.1 - 2024-02-27
- Table-of-contents in the docs
2.6.0 - 2024-02-27
- The behavior of the
PrevError
command and relevant API functions; it no longer jumps to the earliest error instead of one before the current one
- The ability to use
:hide
on the compilation commands to hide the compilation buffer
2.5.0 - 2023-12-23
- The
buftype
of the compilation buffer toacwrite
, to disable accidental writing of the buffer (see this issue)
2.4.0 - 2023-12-14
- The default window behavior for jumping to errors (see this issue)
- The
same_window_errors
option, which overrides the new default window behavior and opens errors in the current window
2.3.1 - 2023-12-03
- Auto-scrolling behavior not working when not focused on the buffer
2.3.0 - 2023-12-01
- Auto-scrolling behavior for the compilation buffer
2.2.0 - 2023-11-28
- The
recompile_no_fail
option, which causes:Recompile
not to fail without a previous command but instead to call:Compile
2.1.1 - 2023-11-24
- Error when interrupting a command ("buffer not modifiable...")
2.1.0 - 2023-11-24
- The
:CompileInterrupt
command, which allows canceling the currently running compilation
2.0.2 - 2023-11-24
- The current error (used for
:NextError
and:PrevError
) not resetting when compilation restarts
2.0.1 - 2023-11-24
- Error when calling
:NextError
after the last error or calling:PrevError
before the first error
2.0.0 - 2023-11-20
- Error logic like in Emacs' Compilation Mode
- An error-regex table which defines errors and how they are highlighted
- The error-regex table can be altered using
setup()
and theerror_regexp_table
option
- The error-regex table can be altered using
- A
CompileGotoError
command within the compilation buffer that jumps to that error's file, row, and column- If the error's file is not found within the current path, the user is prompted to enter the directory to search within
- The errors can be specified to have different levels (error, warning,
info), and are highlighted accordingly
- The colors for errors can be customized using
setup()
and theerror_highlights
option, - The colors for errors default to using Neovim's current color theme
- The colors for errors can be customized using
- The
NextError
andPrevError
commands, which can be used (along with matching API functions) to jump between parsed errors
- An error-regex table which defines errors and how they are highlighted
- A
debug
option forsetup()
that prints additional information, useful for development - Running
:Compile
and:Recompile
with a!
(bang) runs the command synchronously - Running
:Compile
and:Recompile
with a count (i.e.:[N]Compile
) creates the compilation buffer using:[N]split
(see this issue)
- (Breaking) The
setup
function is now mandatory, as it sets up several key features of the error logic
- Running a compilation command while another one is in process kills the
original process using
jobstop
, and reports this interruption in the compilation buffer
1.0.6 - 2023-11-01
- The behavior of the compilation buffer
- It now always shows up as
nomodified
- It no longer tries to call
nvim_api_delete_buf
with an invalid buffer
- It now always shows up as
- Error with trying to call "Compilation" command
- Spelling in README
1.0.5 - 2023-10-31
:vert
having the opposite effect on commands and API functions
1.0.4 - 2023-10-29
- Documentation and README is updated to include
buffer_name
as an option.
1.0.3 - 2023-10-29
- The ability to use
:aboveleft
,:belowright
,:topleft
and:botright
with the:Compile
and:Recompile
commands- Also the ability to pass
smods.split
to the API functions
- Also the ability to pass
- Configuration option for the compilation buffer name (
buffer_name
)
1.0.2 - 2023-10-29
- The compilation buffer is no longer modifiable by default
- The ability to use
:silent
with the:Compile
and:Recompile
commands- Also the ability to pass
smods.silent
to the API functions
- Also the ability to pass
1.0.1 - 2023-10-27
- Usage of the previously used current working directory when using
recompile
or:Recompile
- The
split_vertically
configuration option; use:vert
instead
- This CHANGELOG file
- The ability to use
:vert
with the:Compile
and:Recompile
commands- Also the ability to pass the
smods
field (andsmods.vertical
) to the API functions
- Also the ability to pass the