Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions docs/manual/release-notes/rl-0.6.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ vim.api.nvim_set_keymap('n', '<leader>a', ':lua camelToSnake()<CR>', { noremap =

- Lualine module now allows customizing `always_divide_middle`, `ignore_focus`
and `disabled_filetypes` through the new options:
{option}`vim.statusline.lualine.alwaysDivideMiddle`,
{option}`vim.statusline.lualine.ignoreFocus` and
{option}`vim.statusline.lualine.disabledFiletypes.statusline`).
`vim.statusline.lualine.alwaysDivideMiddle`,
`vim.statusline.lualine.ignoreFocus` and
`vim.statusline.lualine.disabledFiletypes.statusline`).

- Updated all plugin inputs to their latest versions (**21.04.2024**) - this
brought minor color changes to the Catppuccin theme.
Expand Down
27 changes: 27 additions & 0 deletions docs/manual/release-notes/rl-26.12.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,33 @@
- Removed `vim-dirtytalk` from `spellcheck` as it is unmaintained and no longer
works.

[horriblename](https://github.com/horriblename)

- Fully migrate lualine to setupOpts.
- For lualine sections, you can start by adding `map mkLuaInline` (use
`mkDefault + mkAfter` if you are converting `extra*Section` instead):

```diff
vim.statusline.lualine = {
# use `map mkLuaInline` to get something working quick, then
# nixify each option at your own pace
- activeSection.a = [
+ sections.lualine_a = map lib.generators.mkLuaInline [
"'filetype'"
"{'location', some_option = false}"
];

# use mkDefault + mkAfter to extend NVF defaults instead of replace
- extraInactiveSection.x =
+ inactive_sections.lualine_x =
+ mkDefault (mkAfter (map lib.generators.mkLuaInline
[
"function() return 'something' end"
- ];
+ ]));
};
```

## Changelog {#sec-release-26-12-changelog}

[Snoweuph](https://github.com/snoweuph)
Expand Down
106 changes: 42 additions & 64 deletions modules/extra/deprecations.nix
Original file line number Diff line number Diff line change
@@ -1,70 +1,7 @@
{lib, ...}: let
inherit (builtins) head;
inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule doRename;
inherit (lib.modules) mkRemovedOptionModule mkRenamedOptionModule;
inherit (lib.lists) concatLists;
inherit (lib.nvim.config) batchRenameOptions;
inherit (lib.trivial) warn;

renamedVimOpts = batchRenameOptions ["vim"] ["vim" "options"] {
# 2024-12-01
colourTerm = "termguicolors";
mouseSupport = "mouse";
cmdHeight = "cmdheight";
updateTime = "updatetime";
mapTimeout = "tm";
cursorlineOpt = "cursorlineopt";
splitBelow = "splitbelow";
splitRight = "splitright";
autoIndent = "autoindent";
wordWrap = "wrap";
showSignColumn = "signcolumn";

# 2025-02-07
scrollOffset = "scrolloff";
};

mkRemovedLspOpt = lang: (mkRemovedOptionModule ["vim" "languages" lang "lsp" "opts"] ''
`vim.languages.${lang}.lsp.opts` is now moved to `vim.lsp.servers.<server_name>.init_options`
'');

mkRemovedLspPackage = lang: (mkRemovedOptionModule ["vim" "languages" lang "lsp" "package"] ''
`vim.languages.${lang}.lsp.package` is now moved to `vim.lsp.servers.<server_name>.cmd`
'');

mkRenamedLspServer = lang:
doRename
{
from = ["vim" "languages" lang "lsp" "server"];
to = ["vim" "languages" lang "lsp" "servers"];
visible = false;
warn = true;
use = x:
warn
"Obsolete option `vim.languages.${lang}.lsp.server` used, use `vim.languages.${lang}.lsp.servers` instead."
(head x);
};

mkRemovedFormatPackage = lang: (mkRemovedOptionModule ["vim" "languages" lang "format" "package"] ''
`vim.languages.${lang}.format.package` is removed, please use `vim.formatter.conform-nvim.formatters.<formatter_name>.command` instead.
'');

mkRemovedEnumListOption = optionPath: removedValue: msg: {
config,
lib,
...
}: let
inherit (lib) elem attrByPath concatStringsSep;
in {
config.assertions = [
{
assertion = !(elem removedValue (attrByPath optionPath [] config));
message = ''
The value `${removedValue}` was removed from `${concatStringsSep "." optionPath}`.
${msg}
'';
}
];
};
in {
imports = concatLists [
# 2026-07-28
Expand Down Expand Up @@ -99,5 +36,46 @@ in {
Dirtytalk is unmaintained and no longer works.
'')
]

# 2026-09-04
(batchRenameOptions
["vim" "statusline" "lualine"]
["vim" "statusline" "lualine" "setupOpts" "options"]
{
theme = "theme";
componentSeparator = "component_separators";
sectionSeparator = "section_separators";
globalStatus = "globalstatus";
refresh = "refresh";
alwaysDivideMiddle = "always_divide_middle";
ignoreFocus = "ignore_focus";
disabledFiletypes = "disabled_filetypes";
})
[
(mkRemovedOptionModule ["vim" "statusline" "lualine" "activeSection"]
''
Please use `vim.statusline.lualine.setupOpts.sections` instead.
'')
(mkRemovedOptionModule ["vim" "statusline" "lualine" "extraActiveSection"]
''
Please use `vim.statusline.lualine.setupOpts.sections` with mkDefault
and mkAfter instead.
'')

(mkRemovedOptionModule ["vim" "statusline" "lualine" "inactiveSection"]
''
Please use `vim.statusline.lualine.setupOpts.inactive_sections`
instead.
'')
(mkRemovedOptionModule ["vim" "statusline" "lualine" "extraInactiveSection"]
''
Please use `vim.statusline.lualine.setupOpts.inactive_sections`
with mkDefault and mkAfter instead.
'')
]

[
(mkRenamedOptionModule ["vim" "statusline" "lualine" "icons" "enable"] ["vim" "statusline" "lualine" "setupOpts" "options" "icons_enabled"])
]
];
}
35 changes: 0 additions & 35 deletions modules/plugins/statusline/lualine/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -270,41 +270,6 @@ in {
local lualine = require('lualine')
lualine.setup ${toLuaObject cfg.setupOpts}
'';

# this is for backwards-compatibility
# NOTE: since lualine relies heavily on mixed list + key-value table syntax in lua e.g. {1, 2, three = 3}
# and we don't have a good syntax for that we're keeping the old options for now
statusline.lualine.setupOpts = {
options = {
icons_enabled = mkDefault cfg.icons.enable;
theme = mkDefault cfg.theme;
component_separators = mkDefault cfg.componentSeparator;
section_separators = mkDefault cfg.sectionSeparator;
globalstatus = mkDefault cfg.globalStatus;
refresh = mkDefault cfg.refresh;
always_divide_middle = mkDefault cfg.alwaysDivideMiddle;
ignore_focus = mkDefault cfg.ignoreFocus;
disabled_filetypes = mkDefault cfg.disabledFiletypes;
};

sections = {
lualine_a = mkDefault (map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a));
lualine_b = mkDefault (map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b));
lualine_c = mkDefault (map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c));
lualine_x = mkDefault (map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x));
lualine_y = mkDefault (map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y));
lualine_z = mkDefault (map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z));
};

inactive_sections = {
lualine_a = mkDefault (map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a));
lualine_b = mkDefault (map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b));
lualine_c = mkDefault (map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c));
lualine_x = mkDefault (map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x));
lualine_y = mkDefault (map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y));
lualine_z = mkDefault (map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z));
};
};
};
})
];
Expand Down
Loading
Loading