Compare commits

..

3 commits

Author SHA1 Message Date
diniamo
79619c120a docs: add missing section ids 2024-09-20 16:58:49 +02:00
raf
1d259ce695
Merge branch 'main' into new-codeactions 2024-09-20 11:59:34 +00:00
raf
e40d7a2a56
neovim/basic: add undofile options (#367)
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
`vim.undoFile.enable` and `vim.undoFile.path` can be used to manipulate whether undofile will be enabled, and the location if it is enabled.
2024-09-19 22:07:25 +03:00
2 changed files with 138 additions and 110 deletions

View file

@ -4,7 +4,7 @@ Release notes for release 0.7
## Breaking Changes and Migration Guide {#sec-breaking-changes-and-migration-guide-0-7} ## Breaking Changes and Migration Guide {#sec-breaking-changes-and-migration-guide-0-7}
### `vim.configRC` removed ### `vim.configRC` removed {#sec-vim-configrc-removed}
In v0.7 we are removing `vim.configRC` in favor of making `vim.luaConfigRC` the In v0.7 we are removing `vim.configRC` in favor of making `vim.luaConfigRC` the
top-level DAG, and thereby making the entire configuration Lua based. This top-level DAG, and thereby making the entire configuration Lua based. This
@ -26,7 +26,7 @@ making good use of its extensive Lua API. Additionally, Vimscript is slow and
brings unnecessary performance overhead while working with different brings unnecessary performance overhead while working with different
configuration formats. configuration formats.
### `vim.lsp.nvimCodeActionMenu` removed in favor of `vim.ui.fastaction` ### `vim.lsp.nvimCodeActionMenu` removed in favor of `vim.ui.fastaction` {#sec-nvim-code-action-menu-deprecation}
The nvim-code-action-menu plugin has been archived and broken for a long time, The nvim-code-action-menu plugin has been archived and broken for a long time,
so it's being replaced with a young, but better alternative called so it's being replaced with a young, but better alternative called

View file

@ -3,11 +3,13 @@
lib, lib,
... ...
}: let }: let
inherit (lib.options) mkOption literalExpression; inherit (lib.options) mkOption mkEnableOption literalExpression literalMD;
inherit (lib.strings) optionalString; inherit (lib.strings) optionalString;
inherit (lib.types) enum bool str int; inherit (lib.types) enum bool str int either;
inherit (lib.generators) mkLuaInline;
inherit (lib.nvim.dag) entryAfter; inherit (lib.nvim.dag) entryAfter;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
inherit (lib.nvim.types) luaInline;
cfg = config.vim; cfg = config.vim;
in { in {
@ -158,112 +160,138 @@ in {
default = "sensitive"; default = "sensitive";
description = "Set the case sensitivity of search"; description = "Set the case sensitivity of search";
}; };
undoFile = {
enable = mkEnableOption "undofile for persistent undo behaviour";
path = mkOption {
type = either str luaInline;
default = mkLuaInline "vim.fn.stdpath('state') .. '/undo'";
defaultText = literalMD ''
```nix
mkLuaInline "vim.fn.stdpath('state') .. '/undo'"
```
'';
example = literalMD ''
```nix
mkLuaInline "os.getenv('XDG_DATA_HOME') .. '/nvf/undo'"
```
'';
description = "Path to the directory in which undo history will be stored";
};
};
}; };
config.vim.luaConfigRC.basic = entryAfter ["globalsScript"] '' config = {
-- Settings that are set for everything vim.luaConfigRC.basic = entryAfter ["globalsScript"] ''
vim.o.encoding = "utf-8" -- Settings that are set for everything
vim.o.hidden = true vim.o.encoding = "utf-8"
vim.opt.shortmess:append("c") vim.o.hidden = true
vim.o.expandtab = true vim.opt.shortmess:append("c")
vim.o.mouse = ${toLuaObject cfg.mouseSupport} vim.o.expandtab = true
vim.o.tabstop = ${toLuaObject cfg.tabWidth} vim.o.mouse = ${toLuaObject cfg.mouseSupport}
vim.o.shiftwidth = ${toLuaObject cfg.tabWidth} vim.o.tabstop = ${toLuaObject cfg.tabWidth}
vim.o.softtabstop = ${toLuaObject cfg.tabWidth} vim.o.shiftwidth = ${toLuaObject cfg.tabWidth}
vim.o.cmdheight = ${toLuaObject cfg.cmdHeight} vim.o.softtabstop = ${toLuaObject cfg.tabWidth}
vim.o.updatetime = ${toLuaObject cfg.updateTime} vim.o.cmdheight = ${toLuaObject cfg.cmdHeight}
vim.o.tm = ${toLuaObject cfg.mapTimeout} vim.o.updatetime = ${toLuaObject cfg.updateTime}
vim.o.cursorlineopt = ${toLuaObject cfg.cursorlineOpt} vim.o.tm = ${toLuaObject cfg.mapTimeout}
vim.o.scrolloff = ${toLuaObject cfg.scrollOffset} vim.o.cursorlineopt = ${toLuaObject cfg.cursorlineOpt}
vim.g.mapleader = ${toLuaObject cfg.leaderKey} vim.o.scrolloff = ${toLuaObject cfg.scrollOffset}
vim.g.maplocalleader = ${toLuaObject cfg.leaderKey} vim.g.mapleader = ${toLuaObject cfg.leaderKey}
vim.g.maplocalleader = ${toLuaObject cfg.leaderKey}
${optionalString cfg.splitBelow '' ${optionalString cfg.undoFile.enable ''
vim.o.splitbelow = true vim.o.undofile = true
''} vim.o.undodir = ${toLuaObject cfg.undoFile.path}
''}
${optionalString cfg.splitRight '' ${optionalString cfg.splitBelow ''
vim.o.splitright = true vim.o.splitbelow = true
''} ''}
${optionalString cfg.showSignColumn '' ${optionalString cfg.splitRight ''
vim.o.signcolumn = "yes" vim.o.splitright = true
''} ''}
${optionalString cfg.autoIndent '' ${optionalString cfg.showSignColumn ''
vim.o.autoindent = true vim.o.signcolumn = "yes"
''} ''}
${optionalString cfg.preventJunkFiles '' ${optionalString cfg.autoIndent ''
vim.o.swapfile = false vim.o.autoindent = true
vim.o.backup = false ''}
vim.o.writebackup = false
''}
${optionalString (cfg.bell == "none") '' ${optionalString cfg.preventJunkFiles ''
vim.o.errorbells = false vim.o.swapfile = false
vim.o.visualbell = false vim.o.backup = false
''} vim.o.writebackup = false
''}
${optionalString (cfg.bell == "on") '' ${optionalString (cfg.bell == "none") ''
vim.o.visualbell = false vim.o.errorbells = false
''} vim.o.visualbell = false
''}
${optionalString (cfg.bell == "visual") '' ${optionalString (cfg.bell == "on") ''
vim.o.errorbells = false vim.o.visualbell = false
''} ''}
${optionalString (cfg.lineNumberMode == "relative") '' ${optionalString (cfg.bell == "visual") ''
vim.o.relativenumber = true vim.o.errorbells = false
''} ''}
${optionalString (cfg.lineNumberMode == "number") '' ${optionalString (cfg.lineNumberMode == "relative") ''
vim.o.number = true vim.o.relativenumber = true
''} ''}
${optionalString (cfg.lineNumberMode == "relNumber") '' ${optionalString (cfg.lineNumberMode == "number") ''
vim.o.number = true vim.o.number = true
vim.o.relativenumber = true ''}
''}
${optionalString cfg.useSystemClipboard '' ${optionalString (cfg.lineNumberMode == "relNumber") ''
vim.opt.clipboard:append("unnamedplus") vim.o.number = true
''} vim.o.relativenumber = true
''}
${optionalString cfg.syntaxHighlighting '' ${optionalString cfg.useSystemClipboard ''
vim.cmd("syntax on") vim.opt.clipboard:append("unnamedplus")
''} ''}
${optionalString (!cfg.wordWrap) '' ${optionalString cfg.syntaxHighlighting ''
vim.o.wrap = false vim.cmd("syntax on")
''} ''}
${optionalString cfg.hideSearchHighlight '' ${optionalString (!cfg.wordWrap) ''
vim.o.hlsearch = false vim.o.wrap = false
vim.o.incsearch = true ''}
''}
${optionalString cfg.colourTerm '' ${optionalString cfg.hideSearchHighlight ''
vim.o.termguicolors = true vim.o.hlsearch = false
''} vim.o.incsearch = true
''}
${optionalString (!cfg.enableEditorconfig) '' ${optionalString cfg.colourTerm ''
vim.g.editorconfig = false vim.o.termguicolors = true
''} ''}
${optionalString (cfg.searchCase == "ignore") '' ${optionalString (!cfg.enableEditorconfig) ''
vim.o.smartcase = false vim.g.editorconfig = false
vim.o.ignorecase = true ''}
''}
${optionalString (cfg.searchCase == "smart") '' ${optionalString (cfg.searchCase == "ignore") ''
vim.o.smartcase = true vim.o.smartcase = false
vim.o.ignorecase = true vim.o.ignorecase = true
''} ''}
${optionalString (cfg.searchCase == "sensitive") '' ${optionalString (cfg.searchCase == "smart") ''
vim.o.smartcase = false vim.o.smartcase = true
vim.o.ignorecase = false vim.o.ignorecase = true
''} ''}
'';
${optionalString (cfg.searchCase == "sensitive") ''
vim.o.smartcase = false
vim.o.ignorecase = false
''}
'';
};
} }