Compare commits
5 Commits
1084c831f7
...
955e0947c1
Author | SHA1 | Date | |
---|---|---|---|
955e0947c1 | |||
be052e45bd | |||
f59aa8711c | |||
83b99fb833 | |||
019c7093b2 |
@ -22,3 +22,8 @@ Quite incomplete.
|
|||||||
|
|
||||||
If `sops-nix` is having trouble in WSL it could be because the user systemd set up doesn't get correctly started.
|
If `sops-nix` is having trouble in WSL it could be because the user systemd set up doesn't get correctly started.
|
||||||
Using something like `systemctl restart user@1000` can be helpful (cf. [this link]{https://github.com/microsoft/WSL/issues/8842#issuecomment-2346387618})
|
Using something like `systemctl restart user@1000` can be helpful (cf. [this link]{https://github.com/microsoft/WSL/issues/8842#issuecomment-2346387618})
|
||||||
|
|
||||||
|
|
||||||
|
## Todo
|
||||||
|
|
||||||
|
- [ ] Toggle checkbox needs to only be enabled for markdown, use autocmd or something
|
||||||
|
@ -270,5 +270,6 @@
|
|||||||
|
|
||||||
${builtins.readFile ./lualine.lua}
|
${builtins.readFile ./lualine.lua}
|
||||||
|
|
||||||
|
${builtins.readFile ./toggle-checkbox.lua}
|
||||||
EOF
|
EOF
|
||||||
''
|
''
|
||||||
|
70
home/deepak/neovim/toggle-checkbox.lua
Normal file
70
home/deepak/neovim/toggle-checkbox.lua
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
-- stolen from https://github.com/opdavies/toggle-checkbox.nvim/blob/main/lua/toggle-checkbox.lua
|
||||||
|
-- Just copying the code because I don't want to import it as a dependency
|
||||||
|
|
||||||
|
local checked_character = "x"
|
||||||
|
|
||||||
|
local checked_checkbox = "%[" .. checked_character .. "%]"
|
||||||
|
local unchecked_checkbox = "%[ %]"
|
||||||
|
|
||||||
|
local line_contains_unchecked = function(line)
|
||||||
|
return line:find(unchecked_checkbox)
|
||||||
|
end
|
||||||
|
|
||||||
|
local line_contains_checked = function(line)
|
||||||
|
return line:find(checked_checkbox)
|
||||||
|
end
|
||||||
|
|
||||||
|
local line_with_checkbox = function(line)
|
||||||
|
-- return not line_contains_a_checked_checkbox(line) and not line_contains_an_unchecked_checkbox(line)
|
||||||
|
return line:find("^%s*- " .. checked_checkbox)
|
||||||
|
or line:find("^%s*- " .. unchecked_checkbox)
|
||||||
|
or line:find("^%s*%d%. " .. checked_checkbox)
|
||||||
|
or line:find("^%s*%d%. " .. unchecked_checkbox)
|
||||||
|
end
|
||||||
|
|
||||||
|
local checkbox = {
|
||||||
|
check = function(line)
|
||||||
|
return line:gsub(unchecked_checkbox, checked_checkbox, 1)
|
||||||
|
end,
|
||||||
|
|
||||||
|
uncheck = function(line)
|
||||||
|
return line:gsub(checked_checkbox, unchecked_checkbox, 1)
|
||||||
|
end,
|
||||||
|
|
||||||
|
make_checkbox = function(line)
|
||||||
|
if not line:match("^%s*-%s.*$") and not line:match("^%s*%d%s.*$") then
|
||||||
|
-- "xxx" -> "- [ ] xxx"
|
||||||
|
return line:gsub("(%S+)", "- [ ] %1", 1)
|
||||||
|
else
|
||||||
|
-- "- xxx" -> "- [ ] xxx", "3. xxx" -> "3. [ ] xxx"
|
||||||
|
return line:gsub("(%s*- )(.*)", "%1[ ] %2", 1):gsub("(%s*%d%. )(.*)", "%1[ ] %2", 1)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.toggle = function()
|
||||||
|
local bufnr = vim.api.nvim_buf_get_number(0)
|
||||||
|
local cursor = vim.api.nvim_win_get_cursor(0)
|
||||||
|
local start_line = cursor[1] - 1
|
||||||
|
local current_line = vim.api.nvim_buf_get_lines(bufnr, start_line, start_line + 1, false)[1] or ""
|
||||||
|
|
||||||
|
-- If the line contains a checked checkbox then uncheck it.
|
||||||
|
-- Otherwise, if it contains an unchecked checkbox, check it.
|
||||||
|
local new_line = ""
|
||||||
|
|
||||||
|
if not line_with_checkbox(current_line) then
|
||||||
|
new_line = checkbox.make_checkbox(current_line)
|
||||||
|
elseif line_contains_unchecked(current_line) then
|
||||||
|
new_line = checkbox.check(current_line)
|
||||||
|
elseif line_contains_checked(current_line) then
|
||||||
|
new_line = checkbox.uncheck(current_line)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_lines(bufnr, start_line, start_line + 1, false, { new_line })
|
||||||
|
vim.api.nvim_win_set_cursor(0, cursor)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_user_command("ToggleCheckbox", M.toggle, {})
|
||||||
|
vim.api.nvim_set_keymap("n", "<leader>x", "<cmd>ToggleCheckbox<CR>", { noremap = true })
|
Loading…
x
Reference in New Issue
Block a user