Releases: doom-neovim/doom-nvim
v4.1.0
v4.1.0 Mason.nvim, exposing more config, profiler
Doom nvim's first minor release since v4.0.0. This release comes with lots of improvements.
New Github Organisation
Doom-nvim is now contained within the doom-neovim github organisation. @NTBBloodbath has stepped back from maintaining this project but may still help out with the odd task. Thanks for the work you've done so far @NTBBloodbath.
Mason.nvim
We've switched over to mason.nvim and now null-ls sources will also be automatically installed! This is indicated in the status line which can be clicked to bring up the null-ls menu.
More config options for languages
All language modules are now fully configurable by accessing the settings
field of the module.
-- config.lua
local csharp_settings = doom.langs.c_sharp.settings
print(csharp_settings.lsp_name) -- "omnisharp"
csharp_settings.lsp_name = "omnisharp_mono"
print(csharp_settings.formatting_package) -- "csharpier"
csharp_settings.formatting_package = nil -- Do not install csharpier mason.nvim package
csharp_settings.formatting_provider = "builtins.formatting.uncrustify" -- Use globally installed uncrustify binary
Inspect the source of the language modules to see which settings can be tweaked (not all langs have an LSP or a formatting provider). The next release will focus on documentation of all doom-nvim modules and you will be able to see these options using :h doom.langs.c_sharp
or via a website.
Profiler
A new command :DoomProfile
has been added that can help diagnose issues with slow startup times. This profiling only watches the internals of doom-nvim and does not profile packages. For that you'll need to check :PackerProfile
. The profiler defers almost all computation until you run :DoomProfile
so the increase in start up time is trivial. We will use this to continue to make doom-nvim faster. (Side note it can also be a useful trace when debugging issues).
Minor tweaks and improvements
- Using the profiler we were able to identify that Neorg was not being lazy-loaded correctly. This has been resolved and that should improve startup time by 100ms. The next step will be to auto install and configure DAPs for applicable languages.
<leader>.
Browse files keybind is now working correctly.<leader>cs
Browse document symbols keybind is now working correctly.- Added an option to ignore gcc/clang warning messages.
- Add
doom.core.treesitter.settings.show_compiler_warning_message = false
inconfig.lua
- Add
- Errors during language startup are now more descriptive and human readable.
What's Changed
- fix(langs,vue): Reconfigured to use single LSP instance.
- feat(core): Added
:DoomProfile
command to profile/trace internal startup time. - tweak(modules,neorg): Lazy-load neorg (-100ms on startup)
- feat(modules, linter): Show null-ls source in error.
- fix(modules,telescope): Fix
<leader>cs
symbols view - feat(modules,lsp): Cleaner completion menu
- fix(modules,telescope): Fixed filebrowser
<leader>.
not opening files. - feat(core,treesitter): Add option to opt out of gcc/clang warning message
- feat(core,langs): Improved error messaging with null-ls package install failures.
- feat(langs): Add
lsp_config
option to configure lsp provider. - fix(comments): Update plugin call convention by @Fryuni in #404
- fix(dashboard): Fix shortcuts shown on dashboard by @Fryuni in #403
- Fixed backup dirs & added doom-nvim installed check by @Coloursplash in #401
- feat(auto_install): Switch from nvim-lsp-installer to mason.nvim + various other improvements. by @connorgmeehan in #405
New Contributors
- @Coloursplash made their first contribution in #401
Full Changelog: v4.0.5...v4.1.0
v4.0.5
This release adds support for neovim v0.8! Due to breaking changes to treesitter you might not be able to run :PackerSync
. In this case try running :DoomNuke all
(to re-install packer plugins + delete compiled.lua) and then restarting neovim.
Features
- c3f3f03 feat(core): Add
:DoomNuke
command to re-install all plugins.- Can write
:DoomNuke all|plugins|cache
all
Delete packer plugins (re-install on next launch) +packer_compiled.lua
plugins
Delete packer plugins (re-install on next launch)cache
Deletepacker_compiled.lua
- Can write
- 7d90b56 feat,chore(core): Support nvim-0.8, update packer pinned dependencies, add fallback dependencies for 0.7
- 84009cd feat(langs,nix): Added nix language support (#399) (Thanks @Fryuni!)
Fixes
v4.0.4
Features
- c475091 feat(core): Add
requires_modules
field to modules- Should now warn you if you don't enable codependent modules i.e.
features.projects
requiresfeatures.telescope
- Should now warn you if you don't enable codependent modules i.e.
- 093b2c0 feat(langs,gdscript): Add gdscript language support (support is not great but it's there)
- d741fa0 feat(core): Add
ignorecase
andsmartcase
options (#387)
Docs
- 618cbb2 docs: Improved docs on adding / installing plugins (guides user to
:PackerSync
after adding new plugins)
v4.0.3
Some "soft" breaking changes in this releases (should handle itself but could still cause complications). Explanations highlighted with the changes.
Fixes
- db322f3 fix(auto_install)!: Switch to using default install directory.
- Note: You will have to re-install your LSPs, this should happen automatically but if you have any extra LSPs they will need to be re-installed.
- 5f9cf2d fix(keymaps): Incorrect EmmyLua typing
- 5074f61 ea799b3 fix(whichkey): User keybinds not showing in whichkey.
- 6b47758 fix(langs,vue): Fixed LSP broken in monorepos
- ec17813 2693dbf 31668a5 fix(core): Updated minimum neovim version to 0.7.0 + added updating neovim docs.
- Note: Including this in a minor release as doom-nvim was broken on 0.6.0 anyway, these changes just formalize it and tell users how to upgrade.
- 845b5b6 fix(telescope): Broken
<leader>.
(browse_files) keybind. - 8d12f36 fix(core): Fix EmmyLua typing for
doom.use_package
- e8e7df7 fix(explorer): delete duplicate keybinding (#383)
- This change fixes the explorer (
<leader>oe
keybind breaking after some use).
- This change fixes the explorer (
Other
- b13be2e chore: Update pinned packer dependencies.
v4.0.2
Features
- feat(lsp): Enabled ghost_text by default
- feat(dockerfile): Added Dockerfile language support.
- feat(ocaml): add ocaml language support by @edwintorok in #373
- feat(html): Add html language support
Fixes
- fix(langs,typescript): Add
tsx
treesitter grammer totypescript
language support. - fix(netrw): do not disable loading netrw when netrw feature is enabled
- fix(linter): Increased formatting timeout. (fixes lsp formatting timing out on large documents)
- fix Dockerfile, lsp warning and preserve_edit_pos by @edwintorok in #371
- Fix netrw and explorer features by @edwintorok in #380
- fix(statusline): increase contrast by @edwintorok in #381
- improves support for older colour schemes + correctly handles when highlights are reversed.
New Contributors
- @edwintorok made their first contribution in #371
Full Changelog: v4.0.1...v4.0.2
v4.0.1
Changes
- fix(docs): Broken links in README.md
- fix(features.telescope): Broken ` keybind if telescope hasn't loaded yet.
- fix(logger): Fix when
stdpath('data')
doesn't exist @dwarfmaster #364 - feat(docs): Added uninstall docs
- chore(deps): Update pinned packer dependencies
- fix(lsp): Fixed some lsps not working when
snippets
module disabled. - refact(langs): Renamed
snippets
toextra_snippets
.
Full Changelog: v4.0.0...v.4.0.1
v4.0.0
This is a massive rewrite of the entirety of doom-nvim to make it more modular, extendable and maintainable. Please check the updated README.md
as a getting started guide.
doom_modules.lua
renamed tomodules.lua
doom_config.lua
renamed toconfig.lua
doom_userplugins.lua
replaced by thedoom.use_package(...)
helper function.- refact!:
+lsp
flags for languages are now redundant, all langs have LSP enabled by default. - refact!: Rewrote doom-nvim internals to simplify code + improve modularity and integrations between modules.
modules.lua
now only has two sections:features
andlangs
- Modules defined in
lua/doom/modules/SECTION_NAME/MODULE_NAME
- Each module contains all plugins, config, keybinds, autocommands for a feature or a language.
- Users can override or add new modules by creating a folder in
lua/user/modules/SECTION_NAME/MODULE_NAME
(implementing custom modules).
- refact!:
config.lua
to define your config programatically / imperatively using new helper functions. - feat: Added an install script (clones doom-nvim, checks out a new branch
my-config
). - feat: Added
repl
module (run code in neovim using iron.nvim). - feat: Added
annotations
module (generate code documentation using neogen) to replace brokennvim-tree-docs
plugin. - feat: Added
projects
module (quickly switch between projects using project.nvim). - feat: Added
lsp_progress
module (shows lsp startup and loading using fidget.nvim) - refact!:
linter
andformatter
module merged into one (linter
). - refact!:
linter
module to use null-ls.nvim. - refact: Renamed
kommentary
module tocomment
module, switched to Comment.nvim and fixed keybinds. - feat: Implemented a
nest.nvim
inspired keymap syntax that integrates withwhichkey
andnvim-mapper
. - feat: Added optional impatient.nvim (
doom.impatient_enabled = true
inconfig.lua
).- WARN: This can create bugs when modifying your config and you'll probably have to run
:LuaCacheClear
.
- WARN: This can create bugs when modifying your config and you'll probably have to run
- refact: Removed
develop
branch, doom-nvim will now use rolling releases with tagged stable versions. - refact: Auto updating logic moved into core module
- Now requires user to use a custom config branch
- Updating will merge the latest tagged stable version with your custom config branch.
- tweak: Various startup time improvements.
New Contributors
- @mandarvaze made their first contribution in #302
- @DannyJJK made their first contribution in #308
- @pbar1 made their first contribution in #307
- @ilkka made their first contribution in #315
- @LuigiPiucco made their first contribution in #277
- @oeyoews made their first contribution in #348
- @cleong14 made their first contribution in #346
- @dwarfmaster made their first contribution in #355
Full Changelog: v3.3.0...v4.0.0
v3.3.0
Just a minor release for this one as a lot of plugins are dropping 0.5 support, this removes 0.5 compatible code and will address the annoying deprecation warnings.
This release breaks 0.5 support. A lot of the plugins that we depend upon no longer support neovim 0.5.
Fixes:
- Fixed Dashboard showing up instead of piped contents when piping data into neovim.
- Fix sumneko_lua not auto installing
- Fix get_count deprecated messages (0.5 api)
v3.2.0
Added
- Completely reload Doom after updating
- Hot reload plugins configurations
- Run
PackerCompile
on exit when Doom modulesor userplugins files were modified - Automatically install or uninstall plugins on save in plugins files
- Improve debugging messages
- Better error catching
- Install http tree-sitter parser if
rest.nvim
plugin is enabled - New languages in
doom_modules.lua
file - New
contrib
entry indoom_modules.lua
file, contrib module enables some documentation plugins - Add
~/.config/nvim/doc
to neorg workspaces - Add
statusline_show_file_path
option indoom_config.lua
file - Add Scala language server support out of the box (Metals)
- Override LSP using
+lsp(LSP_NAME)
syntax- Use several LSPs using
+lsp(LSP_NAME, ANOTHER_LSP_NAME)
syntax
- Use several LSPs using
- Improve
netrw
look and feel - Add
use_netrw
configuration option, decide if Doom sshoulduse netrw or nvim-tree as the file explorer - Implement
keybinds_mdoules
option indoom_config.lua
, enable or disable Doom keybindings modules as you wish- Modularize keybindings
- Add extra field to custom functions in order to choose if the function should be ran on startup or if should be a global function
- Add modeline in
doom_config.lua
file #139 - Ignore editor artifacts #141
- Use a better syntax for Neovim folds
- Add
escape_str
function to utils module - Add GTD (Getting Things Done) setup in Neorg
- Use
q
to quickly exit Neovim in dashboard - Stay in visual mode after indenting a selection with
<
or>
- Add keybindings for
lsp_rename
functionality (<leader>clr
) - Add an option to turn off folding
- Improve statusline look and feel, show filetype + active language servers
- Add helper script for contributors to setup and run a docker image and create a git worktree
- Add helper script for contributors to update Doom plugins commits pins
- Provide workaround for
clang
users who run into treesitter complation issues - Add debugging keybindings
- Add
disable_numbering
confiugration option - Add user defined ESC sequences in
doom_config
file - New plugins
nvim-lint
, async lintervim-illuminate
, highlight word under cursor
- New commands
DoomManual
, open Doom user manualDoomReport
, create a Doom crash reportDoomConfigs
, open a prompt to edit Doom configuration filesDoomConfigsReload
, reload Doom custom mappings, autocommands, etcDoomInfo
, display a informational dashboardDoomReload
, hot reload Doom Nvim
- New keybinds
<leader>di
, display a informational dashboard<leader>t
section to tweak editor behaviors like numbering and spelling
- New built-in plugins
info
, show an useful informational dashboardasync
, run async system commands (e.g. running Git)reloader
, reload Lua modules on the fly
Changed
- General cleanup
:DoomUpdate
is now asynchronous, keep coding while Doom updates itself!- Update doom-one colorscheme
- Reduce delay on LSP startup
- Replace built-in Neovim
.txt
docs with Neorg-based docs - Refact configuration files handling #108
- Invert Doom Lua modules loading order, in that way we will load Neovim configurations first
- Use
xpcall
instead ofpcall
in all modules to provide a better tracback in case of an error - Rename all our Lua modules tables from
M
to a more logical name, e.g.system
for system module - Improve EmmyLua annotations and comments
- Fragment utilities module
fs
, filesystem utilitiesmappings
, mappings utilitiesmodules
, Lua modules utilities
- Plugins
- Pin plugins to a certain commit to improve stability
- Lazy-load more plugins
- Do not lazy-load nvim-mapper
- Enable
neorg
by default - Replace nvim-compe with nvim-cmp #119
- Replace nvim-lspinstall with nvim-lsp-installer
- Use NTBBloodbath's galaxyline fork
- Update
gitsigns
configurations - Update
nvim-tree
configurations - Update
bufferline
configurations - Update
dap-ui
configurations #114 - Update
neorg
tree-sitter parser files - Use
,o
as neorg leader instead of<leader>o
- Drop a line from Doom logo in dashboard #140
- Small statusline improvements for small windows
Fixed
- Disable indent lines in norg files
- Proper conditional for enabling undodir
- Add missing entries for disabling certain plugins
- Update some plugins links
- Fix DAP auto installation
- Fix telescope indexing
.git
directory - Fix Doom not respecting
CC
environment variable - Fix
:DoomReport
command not includingwarning
/error
logs - Provide Neovim 0.6 LSP API changes
- Proper precedence in paths to source Doom configuration files
- Proper example for custom options in
doom_config
file - Make sure plugins are loaded in a correct order #120
- Remove non-neeeded
bufdo e
. Fixes #127 - Do not try to load
which-key.nvim
plugin if not installed. Fixes #124 - Bufferline was not being loaded sometimes
- Run
BufEnter
autocommand after loading tree-sitter, fixes concealing on norg files - Properly fallback to doom-one, better logging messages in UI module
- Use
0.5-compat
branch for TreeSitter when using Neovim 0.5.x - Use
package.loaded
to check toggleterm existence in built-in modules
Removed
v3.1.2
Changed
- Updated
dap-ui
plugin configurations to match recent breaking changes.
See #114 and #137 - Updated
gitsigns
plugin configurations to match recent breaking changes. See #115 - Updated
nvim-tree.lua
plugin configurations - Updated Neorg URL, neorg is now under
nvim-neorg
organization. See #115 - Updated some other plugins URLs
- Use
,o
instead of<leader>o
as Neorg leader. Fixes #110
Fixed
- Proper conditional for triggering dashboard-nvim plugin (re-apply)
- Correct description for splits in documentation. See #128
- Do not try to load which-key.nvim if not installed. Fixes #124
- Language servers not being installed with
+lsp
flag indoomrc
.
Fixes #87, see #149
Removed
- Non-needed
bufdo e
, this was causing issues withnvim -d file1 file2
. Fixes #127