Doom Nvim Versions Save

A Neovim configuration for the advanced martian hacker

v4.1.0

1 year ago

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. Screen Shot 2022-11-06 at 4 08 40 pm

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). Screen Shot 2022-11-06 at 4 18 39 pm

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 in config.lua
  • 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 https://github.com/doom-neovim/doom-nvim/pull/404
  • fix(dashboard): Fix shortcuts shown on dashboard by @Fryuni in https://github.com/doom-neovim/doom-nvim/pull/403
  • Fixed backup dirs & added doom-nvim installed check by @Coloursplash in https://github.com/doom-neovim/doom-nvim/pull/401
  • feat(auto_install): Switch from nvim-lsp-installer to mason.nvim + various other improvements. by @connorgmeehan in https://github.com/doom-neovim/doom-nvim/pull/405

New Contributors

Full Changelog: https://github.com/doom-neovim/doom-nvim/compare/v4.0.5...v4.1.0

v4.0.5

1 year ago

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 Delete packer_compiled.lua
  • 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

  • 8e01af1 fix(whichkey): Not showing all keymaps
  • 99f5a78 Add extra description for configurable binds and autocmds
  • 47441f5 Fix docs message and alignment

v4.0.4

1 year ago

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 requires features.telescope
  • 093b2c0 feat(langs,gdscript): Add gdscript language support (support is not great but it's there)
  • d741fa0 feat(core): Add ignorecase and smartcase options (#387)

Docs

  • 618cbb2 docs: Improved docs on adding / installing plugins (guides user to :PackerSync after adding new plugins)

v4.0.3

1 year ago

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>oekeybind breaking after some use).

Other

  • b13be2e chore: Update pinned packer dependencies.

v4.0.2

1 year ago

Features

Fixes

New Contributors

Full Changelog: https://github.com/NTBBloodbath/doom-nvim/compare/v4.0.1...v4.0.2

v4.0.1

1 year ago

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 to extra_snippets.

Full Changelog: https://github.com/NTBBloodbath/doom-nvim/compare/v4.0.0...v.4.0.1

v4.0.0

1 year ago

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 to modules.lua
  • doom_config.lua renamed to config.lua
  • doom_userplugins.lua replaced by the doom.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 and langs
    • 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 broken nvim-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 and formatter module merged into one (linter).
  • refact!: linter module to use null-ls.nvim.
  • refact: Renamed kommentary module to comment module, switched to Comment.nvim and fixed keybinds.
  • feat: Implemented a nest.nvim inspired keymap syntax that integrates with whichkey and nvim-mapper.
  • feat: Added optional impatient.nvim (doom.impatient_enabled = true in config.lua).
    • WARN: This can create bugs when modifying your config and you'll probably have to run :LuaCacheClear.
  • 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

Full Changelog: https://github.com/NTBBloodbath/doom-nvim/compare/v3.3.0...v4.0.0

v3.3.0

2 years ago

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

2 years ago

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 in doom_modules.lua file, contrib module enables some documentation plugins
  • Add ~/.config/nvim/doc to neorg workspaces
  • Add statusline_show_file_path option in doom_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
  • 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 in doom_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 linter
    • vim-illuminate, highlight word under cursor
  • New commands
    • DoomManual, open Doom user manual
    • DoomReport, create a Doom crash report
    • DoomConfigs, open a prompt to edit Doom configuration files
    • DoomConfigsReload, reload Doom custom mappings, autocommands, etc
    • DoomInfo, display a informational dashboard
    • DoomReload, 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 dashboard
    • async, 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 of pcall 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 utilities
    • mappings, mappings utilities
    • modules, 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 including warning/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

  • Selene linter comments and references #106
  • Do not disable syntax highlighting on launch. Closes #131
  • Remove some built-in Neovim plugins loading logic to allow them to be used
  • Remove shada logic, we do not really need to temporarily disable it

v3.1.2

2 years ago

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 in doomrc. Fixes #87, see #149

Removed

  • Non-needed bufdo e, this was causing issues with nvim -d file1 file2. Fixes #127