Compare commits
119 Commits
74f17dbb59
...
main
Author | SHA1 | Date | |
---|---|---|---|
1f39139f1d
|
|||
1d59bfc4cb
|
|||
03192ef86a
|
|||
fd61b53dbd
|
|||
e047151a72
|
|||
989f9163c0
|
|||
a52c4bf561
|
|||
aa829327b5
|
|||
e934e38bd0
|
|||
031e7694a5
|
|||
44be63bc2e
|
|||
7e5c198296
|
|||
0a2c5aae5e
|
|||
3fce227c18
|
|||
14c5786b21
|
|||
2685b0f813
|
|||
62fc616ee8
|
|||
2719672e6a
|
|||
f9152e058b
|
|||
23d2b1bee8
|
|||
aefc57c0f7
|
|||
8460677953
|
|||
2cc2998907
|
|||
2a35077571
|
|||
5c17ad21d2
|
|||
3ff49b2567
|
|||
d150b64747
|
|||
82a68ba7d5
|
|||
c52171c11e
|
|||
b0f478ac92
|
|||
98f079fb81
|
|||
04a7ec0218
|
|||
85193f19fd
|
|||
0a044ca3d4
|
|||
b2881a4504
|
|||
84613d7e1f
|
|||
dd8583d064
|
|||
9af5411235
|
|||
b13cdaea9d
|
|||
6caf44226f
|
|||
a3438de2fc
|
|||
86a58e267e
|
|||
c15198b661
|
|||
0af5352a17
|
|||
3508cdd8f6
|
|||
ea672511d8
|
|||
4cdb232020
|
|||
fc034ea90f
|
|||
765e2d1a8b
|
|||
faea5c2b0c
|
|||
758f448b2f
|
|||
7783b8eb60
|
|||
623ca0a753
|
|||
2651b5944b
|
|||
983e8ff195
|
|||
ea402d4c4e
|
|||
b6dae05d63
|
|||
e86ab765d7
|
|||
49407e023c
|
|||
f29b3368bc
|
|||
631f476d35
|
|||
562187bf5a
|
|||
6df3ba48b7
|
|||
765f2c3648
|
|||
dfe5d608e2
|
|||
ba9775b108
|
|||
d0cbb36a44
|
|||
398736176c
|
|||
4f45e89025
|
|||
ef2bdaf201
|
|||
9a940a9ba4
|
|||
49acc75e2a
|
|||
48c698c2c5
|
|||
26f875171f
|
|||
4775d23ed4
|
|||
88cd86eb8c
|
|||
5bfbc64cf0
|
|||
f8acdeac19
|
|||
7b8db55790
|
|||
cde7f74d0b
|
|||
74515e706b
|
|||
f1a52d9dcb
|
|||
8f04c0e04c
|
|||
6851e16bcf
|
|||
1ba07cf703
|
|||
c10feb7712
|
|||
3242adf2ed
|
|||
89bb298289
|
|||
6e9919da69
|
|||
1f71c346f0
|
|||
989020e20f
|
|||
d130acc11e
|
|||
5a4b907f6e
|
|||
7e6d4ae3c0
|
|||
5bb1039198
|
|||
0a73bd4259
|
|||
22e70f9725
|
|||
6a6243fd90
|
|||
9299b58212
|
|||
3d61f9afdd
|
|||
0e6b7e2558
|
|||
32371d317f
|
|||
9506be9938
|
|||
0a027afb4d
|
|||
5a118932f3
|
|||
146083e981
|
|||
3136772105
|
|||
7f1702d917
|
|||
ae0e55e3d1
|
|||
01f8889613
|
|||
c2502fd47e
|
|||
c62a8ebc23
|
|||
fd84aebebb
|
|||
029d95e75d
|
|||
94cddafa6e
|
|||
e125c201cb
|
|||
55f1d17d38
|
|||
34c2c9e1f2
|
|||
8ae2549f3a |
1
.gitignore
vendored
1
.gitignore
vendored
@ -1,2 +1 @@
|
||||
lazy-lock.json
|
||||
spell/
|
||||
|
@ -1,46 +1,15 @@
|
||||
--[[
|
||||
-- Contains fixes for mappings created by plugins
|
||||
-- Useful because of bépo
|
||||
-- NOTE: not in use right now
|
||||
--]]
|
||||
|
||||
-- Comments.nvim adds `gbc` command, which conflicts with `gb/gé` to move
|
||||
-- between tabs
|
||||
if vim.fn.maparg("gbc") ~= "" then
|
||||
--[[ if vim.fn.maparg("gbc") ~= "" then
|
||||
vim.keymap.del("n", "gbc")
|
||||
vim.keymap.set('n', 'gBc', function()
|
||||
return vim.api.nvim_get_vvar('count') == 0 and '<Plug>(comment_toggle_blockwise_current)'
|
||||
or '<Plug>(comment_toggle_blockwise_count)'
|
||||
end, { expr = true, desc = 'Comment toggle current block' })
|
||||
end
|
||||
|
||||
-- [[ vimtex ]]
|
||||
-- Some BÉPO mappings for vimtex
|
||||
local texgroup = vim.api.nvim_create_augroup("latex-after", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
pattern = { "*.tex", "*.bib", "*.cls", "*.tikz", },
|
||||
group = texgroup,
|
||||
callback = function()
|
||||
local vimtex_remaps = {
|
||||
-- c <-> t
|
||||
{ mode = "n", source = "csd", target = "lsd", command = "<Plug>(vimtex-delim-change-math)" },
|
||||
{ mode = "n", source = "csc", target = "lsc", command = "<Plug>(vimtex-cmd-change)" },
|
||||
{ mode = "n", source = "cse", target = "lse", command = "<Plug>(vimtex-env-change)" },
|
||||
{ mode = "n", source = "cs$", target = "ls$", command = "<Plug>(vimtex-env-change-math))" },
|
||||
-- t <-> j
|
||||
{ mode = { "x", "n" }, source = "tsD", target = "jsD", command = "<Plug>(vimtex-delim-toggle-modifier-reverse)" },
|
||||
{ mode = { "x", "n" }, source = "tsd", target = "jsd", command = "<Plug>(vimtex-delim-toggle-modifier)" },
|
||||
{ mode = { "x", "n" }, source = "tsf", target = "jsf", command = "<Plug>(vimtex-cmd-toggle-frac)" },
|
||||
{ mode = "n", source = "tsc", target = "jsc", command = "<Plug>(vimtex-cmd-toggle-star)" },
|
||||
{ mode = "n", source = "ts$", target = "js$", command = "<Plug>(vimtex-env-toggle-math)" },
|
||||
{ mode = "n", source = "tse", target = "jse", command = "<Plug>(vimtex-env-toggle-star)" },
|
||||
}
|
||||
|
||||
for _, remap in pairs(vimtex_remaps) do
|
||||
if vim.fn.maparg(remap.source) ~= "" then
|
||||
vim.keymap.del(remap.mode, remap.source, { buffer = true })
|
||||
vim.keymap.set(remap.mode, remap.target, remap.command, { silent = true, noremap = true, buffer = true })
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
end ]]
|
||||
|
6
init.lua
6
init.lua
@ -28,7 +28,7 @@ vim.opt.rtp:prepend(lazypath)
|
||||
--
|
||||
-- You can also configure plugins after the setup call,
|
||||
-- as they will be available in your neovim runtime.
|
||||
require('lazy-configure')
|
||||
require('plugins-configure')
|
||||
|
||||
-- [[ Setting options ]]
|
||||
require('general-options')
|
||||
@ -62,8 +62,10 @@ require('complete')
|
||||
-- [[ Configure neorg ]]
|
||||
require('neorg-configure')
|
||||
|
||||
-- [[ Configure status line ]]
|
||||
require('statusline')
|
||||
|
||||
-- Customizations
|
||||
-- require('bepo')
|
||||
require('restore-position')
|
||||
require('autocommands')
|
||||
|
||||
|
50
lazy-lock.json
Normal file
50
lazy-lock.json
Normal file
@ -0,0 +1,50 @@
|
||||
{
|
||||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"LuaSnip": { "branch": "master", "commit": "c1851d5c519611dfc451b6582961b2602e0af89b" },
|
||||
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
|
||||
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"fidget.nvim": { "branch": "main", "commit": "d9ba6b7bfe29b3119a610892af67602641da778e" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "39e0d1cd44eafed5f30c372e377ab1cb1781ec9f" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"lazydev.nvim": { "branch": "main", "commit": "2367a6c0a01eb9edb0464731cc0fb61ed9ab9d2c" },
|
||||
"lsp_signature.nvim": { "branch": "master", "commit": "a4e3c15dfdce8783c074539b1835edae75fa63d5" },
|
||||
"lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "15884cee63a8c205334ab13ab1c891cd4d27101a" },
|
||||
"luarocks.nvim": { "branch": "main", "commit": "1db9093915eb16ba2473cfb8d343ace5ee04130a" },
|
||||
"luvit-meta": { "branch": "main", "commit": "1df30b60b1b4aecfebc785aa98943db6c6989716" },
|
||||
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "d39a75bbce4b8aad5d627191ea915179c77c100f" },
|
||||
"mason.nvim": { "branch": "main", "commit": "888d6ee499d8089a3a4be4309d239d6be1c1e6c0" },
|
||||
"mini.icons": { "branch": "main", "commit": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a" },
|
||||
"mini.nvim": { "branch": "main", "commit": "8f0969dd976e4f0cb8e2898596fa2eab18ce676b" },
|
||||
"neorg": { "branch": "main", "commit": "8fdd9b2986acfb4ce310bebfc338111793862f00" },
|
||||
"neorg-telescope": { "branch": "main", "commit": "7fb6ca6a632c3c095601d379a664c0c1f802dc6c" },
|
||||
"nui.nvim": { "branch": "main", "commit": "f535005e6ad1016383f24e39559833759453564e" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "a065833f35a3a7cc3ef137ac88b5381da2ba302e" },
|
||||
"nvim-dap": { "branch": "master", "commit": "8df427aeba0a06c6577dc3ab82de3076964e3b8d" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "ac1dfbe3b60e5e23a2cff90e3bd6a3bc88031a57" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "066fd6505377e3fd4aa219e61ce94c2b8bdb0b79" },
|
||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "b0debd5c424969b4baeabdc8f54db3036c691732" },
|
||||
"oil.nvim": { "branch": "master", "commit": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a" },
|
||||
"pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"rose-pine": { "branch": "main", "commit": "491a0c77abc7ecb955c27a974091a5968232995f" },
|
||||
"tabular": { "branch": "master", "commit": "12437cd1b53488e24936ec4b091c9324cafee311" },
|
||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||
"telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" },
|
||||
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
|
||||
"typst.vim": { "branch": "main", "commit": "323539709e29a537ff39dfce6c05f175a8921504" },
|
||||
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
|
||||
"vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
|
||||
"vim-pandoc-syntax": { "branch": "master", "commit": "ea3fc415784bdcbae7f0093b80070ca4ff9e44c8" },
|
||||
"vim-rhubarb": { "branch": "master", "commit": "386daa2e9d98e23e27ad089afcbe5c5a903e488d" },
|
||||
"vim-sleuth": { "branch": "master", "commit": "be69bff86754b1aa5adcbb527d7fcd1635a84080" },
|
||||
"vim-speeddating": { "branch": "master", "commit": "c17eb01ebf5aaf766c53bab1f6592710e5ffb796" },
|
||||
"vimtex": { "branch": "master", "commit": "9d9f74c3ab073b70bc943279af1aa86075de632c" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
|
||||
}
|
17
lsp/gdscript.lua
Normal file
17
lsp/gdscript.lua
Normal file
@ -0,0 +1,17 @@
|
||||
local port = os.getenv 'GDScript_Port' or '6005'
|
||||
local cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(port))
|
||||
|
||||
return {
|
||||
default_config = {
|
||||
cmd = cmd,
|
||||
filetypes = { 'gd', 'gdscript', 'gdscript3' },
|
||||
root_markers = { '.git', 'project.godot' },
|
||||
},
|
||||
docs = {
|
||||
description = [[
|
||||
https://github.com/godotengine/godot
|
||||
|
||||
Language server for GDScript, used by Godot Engine.
|
||||
]],
|
||||
},
|
||||
}
|
69
lsp/ltex_ls_plus.lua
Normal file
69
lsp/ltex_ls_plus.lua
Normal file
@ -0,0 +1,69 @@
|
||||
local language_id_mapping = {
|
||||
bib = 'bibtex',
|
||||
pandoc = 'markdown',
|
||||
plaintex = 'tex',
|
||||
rnoweb = 'rsweave',
|
||||
rst = 'restructuredtext',
|
||||
tex = 'latex',
|
||||
text = 'plaintext',
|
||||
norg = 'neorg',
|
||||
}
|
||||
|
||||
local function get_language_id(_, filetype)
|
||||
return language_id_mapping[filetype] or filetype
|
||||
end
|
||||
|
||||
return {
|
||||
cmd = { 'ltex-ls-plus' },
|
||||
filetypes = {
|
||||
'markdown',
|
||||
'pandoc',
|
||||
'latex',
|
||||
'text',
|
||||
'norg',
|
||||
'gitcommit',
|
||||
'jj',
|
||||
'jjdescription',
|
||||
'rst',
|
||||
'typst'
|
||||
},
|
||||
get_language_id = get_language_id,
|
||||
single_file_support = true,
|
||||
settings = {
|
||||
ltex = {
|
||||
enabled = {
|
||||
'markdown',
|
||||
'pandoc',
|
||||
'latex',
|
||||
'text',
|
||||
'norg',
|
||||
'gitcommit',
|
||||
'jj',
|
||||
'jjdescription',
|
||||
'rst',
|
||||
'typst'
|
||||
},
|
||||
language = "auto",
|
||||
diagnosticSeverity = "information",
|
||||
checkFrequency = "save",
|
||||
sentenceCacheSize = 2000,
|
||||
additionalRules = {
|
||||
enablePickyRules = true,
|
||||
motherTongue = "fr",
|
||||
},
|
||||
enabledRules = {
|
||||
en = { "EN_CONSISTENT_APOS" },
|
||||
},
|
||||
disabledRules = {
|
||||
fr = { "APOS_TYP", "FRENCH_WHITESPACE", "CHANGE", "ISSUE", },
|
||||
en = { "DASH_RULE", "TWO_HYPHENS", "CHANGE", "ISSUE", "CHECK", "ACTUALLY", "CONSISTENT", "EN_CONSISTENT_APOS", },
|
||||
},
|
||||
dictionary = {
|
||||
fr = { "CryptPad", "Chouhartem",
|
||||
-- field names
|
||||
"authors", "categories", "created", "updated", "title", "meta" },
|
||||
en = { "CryptPad", },
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
21
lsp/rust-analyzer.lua
Normal file
21
lsp/rust-analyzer.lua
Normal file
@ -0,0 +1,21 @@
|
||||
return {
|
||||
cmd = { 'rust-analyzer' },
|
||||
filetypes = { 'rust' },
|
||||
root_markers = { '.git', 'Cargo.toml' },
|
||||
settings = {
|
||||
imports = {
|
||||
granularity = {
|
||||
group = "module",
|
||||
},
|
||||
prefix = "self",
|
||||
},
|
||||
cargo = {
|
||||
buildScripts = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
procMacro = {
|
||||
enable = true
|
||||
},
|
||||
}
|
||||
}
|
@ -1,5 +1,6 @@
|
||||
local markdown = vim.api.nvim_create_augroup("markdown", { clear = true })
|
||||
local spelling = vim.api.nvim_create_augroup("spelling", { clear = true })
|
||||
local spell_keymap = require('spelling').spell_keymap
|
||||
|
||||
-- Recognize .md as pandoc
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
@ -7,26 +8,20 @@ vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
group = markdown,
|
||||
callback = function()
|
||||
vim.o.filetype = 'pandoc'
|
||||
vim.o.commentstring = '<!--%s-->'
|
||||
require('luasnip').filetype_extend("pandoc", { "markdown" })
|
||||
vim.o.spell = true
|
||||
require('spelling').spell_keymap()
|
||||
vim.o.spelllang = 'en'
|
||||
spell_keymap()
|
||||
vim.o.spelllang = 'en,fr'
|
||||
vim.o.formatoptions = "qj"
|
||||
-- email commands: my/msy to paste the html inside the clipboard
|
||||
vim.keymap.set('', '<LocalLeader>msy', ':w !pandoc -f markdown+emoji -t html5 -s | wl-copy<CR><CR>',
|
||||
vim.keymap.set('', '<LocalLeader>msy', ':w !pandoc -f markdown+emoji -t html5 -s | wl-copy --type text/html<CR><CR>',
|
||||
{ noremap = true, silent = true, desc = "[M]arkdown to [S]ingle page [Y]ank" })
|
||||
vim.keymap.set('', '<LocalLeader>my', ':w !pandoc -f markdown+emoji --wrap=none -t html5 | wl-copy<CR><CR>',
|
||||
vim.keymap.set('', '<LocalLeader>my',
|
||||
':w !pandoc -f markdown+emoji --wrap=none -t html5 | wl-copy --type text/html<CR><CR>',
|
||||
{ noremap = true, silent = true, desc = "[M]arkdown to HTML [Y]ank" })
|
||||
vim.keymap.set('', '<LocalLeader>mp', '<Plug>MarkdownPreviewToggle', { noremap = true, silent = true, desc = "[M]arkdown [Preview]" })
|
||||
end
|
||||
})
|
||||
|
||||
-- French markdown files
|
||||
vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
pattern = { "*-fr.md", },
|
||||
group = markdown,
|
||||
callback = function()
|
||||
vim.o.spelllang = 'fr'
|
||||
vim.keymap.set('', '<LocalLeader>mp', '<Plug>MarkdownPreviewToggle',
|
||||
{ noremap = true, silent = true, desc = "[M]arkdown [P]review" })
|
||||
end
|
||||
})
|
||||
|
||||
@ -34,7 +29,7 @@ vim.api.nvim_create_autocmd({ "BufEnter", "BufWinEnter" }, {
|
||||
vim.api.nvim_create_autocmd({ "OptionSet" }, {
|
||||
pattern = { "spell" },
|
||||
group = spelling,
|
||||
callback = require('spelling').spell_keymap
|
||||
callback = spell_keymap
|
||||
})
|
||||
|
||||
-- LaTeX configuration
|
||||
@ -49,13 +44,40 @@ vim.api.nvim_create_autocmd("FileType", {
|
||||
vim.g.vimtex_view_general_viewer = 'zathura'
|
||||
vim.g.maplocalleader = ' '
|
||||
-- Legacy shortcut from my vim-latexsuite days
|
||||
vim.api.nvim_set_keymap("n", "<Leader>ls", ":VimtexView<CR>",
|
||||
-- FIX: doesn’t seem to work…
|
||||
vim.keymap.set("n", "<Leader>ls", ":VimtexView<CR>",
|
||||
{ noremap = true, silent = true, desc = 'View [L]atex Document' })
|
||||
|
||||
vim.o.foldmethod = 'expr'
|
||||
vim.o.foldexpr = 'vimtex#fold#level(v:lnum)'
|
||||
vim.o.foldtext = 'vimtex#fold#text()'
|
||||
vim.o.spell = true
|
||||
require('spelling').spell_keymap()
|
||||
spell_keymap()
|
||||
vim.o.spelllang = "en,fr"
|
||||
end,
|
||||
})
|
||||
|
||||
-- Typst bindings + spellchecking
|
||||
local typstgroup = vim.api.nvim_create_augroup("typst", { clear = true })
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "typst" },
|
||||
group = typstgroup,
|
||||
callback = function()
|
||||
vim.keymap.set('', '<LocalLeader>mp', ':TypstWatch<CR>', { noremap = true, silent = true, desc = "[M]ake [P]review" })
|
||||
vim.o.spell = true
|
||||
spell_keymap()
|
||||
vim.o.spelllang = "fr,en"
|
||||
end,
|
||||
})
|
||||
|
||||
-- Jujutsu spellchecking
|
||||
local jjgroup = vim.api.nvim_create_augroup("jujustu", { clear = true })
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "jj" },
|
||||
group = jjgroup,
|
||||
callback = function()
|
||||
vim.o.spell = true
|
||||
spell_keymap()
|
||||
vim.o.spelllang = "en"
|
||||
end,
|
||||
})
|
||||
|
67
lua/bepo.lua
67
lua/bepo.lua
@ -1,67 +0,0 @@
|
||||
-- colorise les nbsp
|
||||
-- highlight NbSp ctermbg=lightgray guibg=lightred
|
||||
--hi NbSps ctermbg=lightred guibg=lightred
|
||||
--match NbSps /\%xa0\|\%u202F/
|
||||
-- bépo
|
||||
vim.opt.listchars:append({nbsp = "·", trail = "¤", eol = '↲'})
|
||||
vim.opt.list = true
|
||||
|
||||
-- {W} -> [É]
|
||||
-- ——————————
|
||||
-- On remappe W sur É :
|
||||
-- Pour faciliter les manipulations de fenêtres, on utilise {W} comme un Ctrl+W :
|
||||
local keymap = vim.keymap.set
|
||||
local opts = {noremap = true, silent = true}
|
||||
|
||||
local map_list = {['é'] = 'w', ['É'] = 'W', ['w'] = '<C-w>'}
|
||||
for key,binding in pairs(map_list) do
|
||||
keymap('n', key, binding, opts)
|
||||
end
|
||||
-- Corollaire: on remplace les text objects aw, aW, iw et iW
|
||||
-- pour effacer/remplacer un mot quand on n’est pas au début (daé / laé).
|
||||
local omap_list = {['aé'] = 'w', ['aÉ'] = 'aW', ['ié'] = 'iw', ['iÉ'] = 'iW'}
|
||||
for key,binding in pairs(omap_list) do
|
||||
keymap('o', key, binding, opts)
|
||||
end
|
||||
|
||||
-- [HJKL] <-> {CTSR}
|
||||
-- ————————————————
|
||||
map_list = {
|
||||
['c'] = 'h', ['r'] = 'l', ['t'] = 'j', ['s'] = 'k', ['C'] = 'H', ['R'] = 'L', ['T'] = 'J', ['S'] = 'K', -- [HJKL] -> [CTSR]
|
||||
['j'] = 't', ['J'] = 'T', ['l'] = 'c', ['L'] = 'C', ['h'] = 'r', ['H'] = 'R', ['k'] = 's', ['K'] = 'S', -- [CTSR] -> [HJKL]: J = jusqu'à, L = change, h = remplace, k = substitute
|
||||
['zs'] = 'zj', ['zt'] = 'zk', -- Pour les replis
|
||||
[']k'] = ']s', ['[k'] = '[s' , -- correction orthographique
|
||||
}
|
||||
for key, binding in pairs(map_list) do
|
||||
keymap({'n', 'x'}, key, binding, opts)
|
||||
end
|
||||
|
||||
-- Désambiguation de {g}
|
||||
-- —————————————————————
|
||||
-- ligne écran précédente / suivante (à l'intérieur d'une phrase)
|
||||
-- onglets précédent/suivant : gé/gb, premier/dernier onglet : gÉ/gB,
|
||||
-- g" = première ligne de l’écran
|
||||
local map_list = {['gs'] = 'gk', ['gt'] = 'gj', ['gb'] = 'gT', ['gé'] = 'gt', ['gB'] = ':tabfirst<CR>', ['gÉ'] = ':tablast<CR>', ['g"'] = 'g0', }
|
||||
for key, binding in pairs(map_list) do
|
||||
keymap({'n', 'x'}, key, binding, opts)
|
||||
end
|
||||
|
||||
-- <> en direct
|
||||
-- ————————————
|
||||
vim.api.nvim_set_keymap('', '«', '<', {noremap = false, silent = true})
|
||||
vim.api.nvim_set_keymap('', '»', '>', {noremap = false, silent = true})
|
||||
|
||||
-- Chiffres en accès direct
|
||||
-- ————————————————————————
|
||||
-- À décommenter si on souhaite les avoir
|
||||
--local map_list = { ['"'] = '1', ['1'] = '"', ['«'] = '2', ['2'] = '<', ['»'] = '3', ['3'] = '>', ['('] = '4', ['4'] = '(', [')'] = '5', ['5'] = ')', ['@'] = '6', ['6'] = '@', ['+'] = '7', ['7'] = '+', ['-'] = '8', ['8'] = '-', ['/'] = '9', ['9'] = '/', ['*'] = '0', ['0'] = '*', }
|
||||
--for key, binding in pairs(map_list) do
|
||||
-- vim.api.nvim_set_keymap('', key, binding, { noremap = true, silent = true })
|
||||
--end
|
||||
|
||||
-- Remaper la gestion des fenêtres
|
||||
-- ———————————————————————————————
|
||||
map_list = {['wt'] = '<C-w>j', ['ws'] = '<C-w>k', ['wc'] = '<C-w>h', ['wr'] = '<C-w>l', ['wd'] = '<C-w>c', ['wo'] = '<C-w>s', ['wp'] = '<C-w>o', ['w<SPACE>'] = ':split<CR>', ['w<CR>'] = ':vsplit<CR>', ['<A-w>'] = '<C-w><C-w>', }
|
||||
for key, binding in pairs(map_list) do
|
||||
vim.api.nvim_set_keymap('', key, binding, {noremap = true, silent = true})
|
||||
end
|
@ -2,11 +2,19 @@
|
||||
local cmp = require 'cmp'
|
||||
local luasnip = require 'luasnip'
|
||||
require('luasnip.loaders.from_vscode').lazy_load()
|
||||
require('luasnip.loaders.from_lua').lazy_load()
|
||||
luasnip.config.setup {
|
||||
history = true,
|
||||
updateevents = "TextChanged,TextChangedI",
|
||||
enable_autosnippets = true,
|
||||
}
|
||||
luasnip.filetype_extend("jjdescription", { "gitcommit" })
|
||||
|
||||
local has_words_before = function()
|
||||
unpack = unpack or table.unpack
|
||||
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||
end
|
||||
|
||||
cmp.setup {
|
||||
snippet = {
|
||||
@ -16,6 +24,7 @@ cmp.setup {
|
||||
},
|
||||
completion = {
|
||||
completeopt = 'menu,menuone,noinsert',
|
||||
autocomplete = false,
|
||||
},
|
||||
mapping = cmp.mapping.preset.insert {
|
||||
['<C-n>'] = cmp.mapping.select_next_item(),
|
||||
@ -23,16 +32,25 @@ cmp.setup {
|
||||
['<C-b>'] = cmp.mapping.scroll_docs(-4),
|
||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
||||
['<C-Space>'] = cmp.mapping.complete {},
|
||||
['<C-l>'] = cmp.mapping.confirm {
|
||||
['<CR>'] = cmp.mapping.confirm {
|
||||
behavior = cmp.ConfirmBehavior.Replace,
|
||||
select = true,
|
||||
},
|
||||
['<C-e>'] = cmp.mapping({ i = cmp.mapping.abort(), c = cmp.mapping.close() }),
|
||||
['<Tab>'] = cmp.mapping(function(fallback)
|
||||
if cmp.visible() then
|
||||
if #cmp.get_entries() == 1 then
|
||||
cmp.confirm({ select = true })
|
||||
else
|
||||
cmp.select_next_item()
|
||||
end
|
||||
elseif luasnip.expand_or_locally_jumpable() then
|
||||
luasnip.expand_or_jump()
|
||||
elseif has_words_before() then
|
||||
cmp.complete()
|
||||
if #cmp.get_entries() == 1 then
|
||||
cmp.confirm({ select = true })
|
||||
end
|
||||
else
|
||||
fallback()
|
||||
end
|
||||
@ -48,6 +66,8 @@ cmp.setup {
|
||||
end, { 'i', 's' }),
|
||||
},
|
||||
sources = {
|
||||
{ name = 'lazydev',
|
||||
group_index = 0 },
|
||||
{ name = 'nvim_lsp' },
|
||||
{ name = 'luasnip' },
|
||||
{ name = 'path' },
|
||||
|
@ -62,5 +62,5 @@ vim.o.scrolloff = 10
|
||||
vim.cmd "set formatoptions-=t"
|
||||
|
||||
-- Make some typographic chars visible
|
||||
vim.opt.listchars:append({nbsp = "·", trail = "¤", eol = '↲'})
|
||||
vim.opt.listchars:append({ nbsp = "·", trail = "¤", eol = '↲' })
|
||||
vim.o.list = true
|
||||
|
151
lua/lsp.lua
151
lua/lsp.lua
@ -1,5 +1,9 @@
|
||||
local lspattach = vim.api.nvim_create_augroup("LspMapping", { clear = true })
|
||||
|
||||
-- This function gets run when an LSP connects to a particular buffer.
|
||||
local on_attach = function(_, bufnr)
|
||||
vim.api.nvim_create_autocmd("LspAttach", {
|
||||
group = lspattach,
|
||||
callback = function(args)
|
||||
-- NOTE: Remember that lua is a real programming language, and as such it is possible
|
||||
-- to define small helper and utility functions so you don't have to repeat yourself
|
||||
-- many times.
|
||||
@ -11,17 +15,30 @@ local on_attach = function(_, bufnr)
|
||||
desc = 'LSP: ' .. desc
|
||||
end
|
||||
|
||||
vim.keymap.set('n', keys, func, { buffer = bufnr, desc = desc })
|
||||
vim.keymap.set('n', keys, func, { buffer = args.buf, silent = true, desc = desc })
|
||||
end
|
||||
|
||||
nmap('<leader>rn', vim.lsp.buf.rename, '[R]e[n]ame')
|
||||
nmap('<leader>ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
|
||||
nmap('<leader>c', vim.lsp.buf.code_action, '[C]ode action') -- NOTE: to see if ca is needed
|
||||
nmap('<leader>f', function() -- https://stackoverflow.com/a/74303272
|
||||
vim.lsp.buf.code_action({
|
||||
filter = function(a)
|
||||
return a.isPreferred
|
||||
end,
|
||||
apply = true
|
||||
})
|
||||
end, 'code action: [F]ix'
|
||||
)
|
||||
|
||||
nmap('gd', require('telescope.builtin').lsp_definitions, '[G]oto [D]efinition')
|
||||
nmap('gr', require('telescope.builtin').lsp_references, '[G]oto [R]eferences')
|
||||
nmap('gI', require('telescope.builtin').lsp_implementations, '[G]oto [I]mplementation')
|
||||
nmap('<leader>D', require('telescope.builtin').lsp_type_definitions, 'Type [D]efinition')
|
||||
nmap('<leader>ds', require('telescope.builtin').lsp_document_symbols, '[D]ocument [S]ymbols')
|
||||
nmap('<leader>dd', function()
|
||||
local new_config = not vim.diagnostic.config().virtual_lines
|
||||
vim.diagnostic.config({ virtual_lines = new_config })
|
||||
end, '[D]iagnostic toggle virtual lines')
|
||||
nmap('<leader>ws', require('telescope.builtin').lsp_dynamic_workspace_symbols, '[W]orkspace [S]ymbols')
|
||||
|
||||
-- See `:help K` for why this keymap
|
||||
@ -37,28 +54,37 @@ local on_attach = function(_, bufnr)
|
||||
end, '[W]orkspace [L]ist Folders')
|
||||
|
||||
-- Create a command `:Format` local to the LSP buffer
|
||||
vim.api.nvim_buf_create_user_command(bufnr, 'Format', function(_)
|
||||
vim.api.nvim_buf_create_user_command(args.buf, 'Format', function(_)
|
||||
vim.lsp.buf.format()
|
||||
end, { desc = 'Format current buffer with LSP' })
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- document existing key chains
|
||||
require('which-key').register {
|
||||
['<leader>c'] = { name = '[C]ode', _ = 'which_key_ignore' },
|
||||
['<leader>d'] = { name = '[D]ocument', _ = 'which_key_ignore' },
|
||||
['<leader>g'] = { name = '[G]it', _ = 'which_key_ignore' },
|
||||
['<leader>h'] = { name = 'Git [H]unk', _ = 'which_key_ignore' },
|
||||
['<leader>r'] = { name = '[R]ename', _ = 'which_key_ignore' },
|
||||
['<leader>s'] = { name = '[S]earch', _ = 'which_key_ignore' },
|
||||
['<leader>t'] = { name = '[T]oggle', _ = 'which_key_ignore' },
|
||||
['<leader>w'] = { name = '[W]orkspace', _ = 'which_key_ignore' },
|
||||
require('which-key').add {
|
||||
-- { "<leader>c", group = "[C]ode" },
|
||||
-- { "<leader>c_", hidden = true },
|
||||
{ "<leader>d", group = "[D]ocument / [D]iagnostic" },
|
||||
{ "<leader>d_", hidden = true },
|
||||
{ "<leader>g", group = "[G]it" },
|
||||
{ "<leader>g_", hidden = true },
|
||||
{ "<leader>h", group = "Git [H]unk" },
|
||||
{ "<leader>h_", hidden = true },
|
||||
{ "<leader>r", group = "[R]ename" },
|
||||
{ "<leader>r_", hidden = true },
|
||||
{ "<leader>s", group = "[S]earch" },
|
||||
{ "<leader>s_", hidden = true },
|
||||
{ "<leader>t", group = "[T]oggle" },
|
||||
{ "<leader>t_", hidden = true },
|
||||
{ "<leader>w", group = "[W]orkspace" },
|
||||
{ "<leader>w_", hidden = true },
|
||||
}
|
||||
-- register which-key VISUAL mode
|
||||
-- required for visual <leader>hs (hunk stage) to work
|
||||
require('which-key').register({
|
||||
['<leader>'] = { name = 'VISUAL <leader>' },
|
||||
['<leader>h'] = { 'Git [H]unk' },
|
||||
}, { mode = 'v' })
|
||||
require('which-key').add {
|
||||
{ "<leader>", group = "VISUAL <leader>", mode = "v" },
|
||||
{ "<leader>h", desc = "Git [H]unk", mode = "v" },
|
||||
}
|
||||
|
||||
-- mason-lspconfig requires that these setup functions are called in this order
|
||||
-- before setting up the servers.
|
||||
@ -75,32 +101,15 @@ require('mason-lspconfig').setup()
|
||||
-- define the property 'filetypes' to the map in question.
|
||||
local servers = {
|
||||
clangd = {},
|
||||
bashls = {},
|
||||
-- gopls = {},
|
||||
pyright = {},
|
||||
-- rust_analyzer = {},
|
||||
tsserver = {},
|
||||
ts_ls = {},
|
||||
eslint = {},
|
||||
-- html = { filetypes = { 'html', 'twig', 'hbs'} },
|
||||
texlab = {},
|
||||
ltex = {
|
||||
filetypes = {
|
||||
'markdown',
|
||||
'latex',
|
||||
'norg',
|
||||
'gitcommit'
|
||||
},
|
||||
ltex = {
|
||||
language = "auto",
|
||||
diagnosticSeverity = "information",
|
||||
sentenceCacheSize = 2000,
|
||||
additionalRules = {
|
||||
enablePickyRules = true,
|
||||
motherTongue = "fr",
|
||||
},
|
||||
disabledRules = {
|
||||
fr = { "APOS_TYP", "FRENCH_WHITESPACE" }
|
||||
},
|
||||
}
|
||||
},
|
||||
tinymist = {},
|
||||
lua_ls = {
|
||||
Lua = {
|
||||
workspace = { checkThirdParty = false },
|
||||
@ -111,9 +120,6 @@ local servers = {
|
||||
},
|
||||
}
|
||||
|
||||
-- Setup neovim lua configuration
|
||||
require('neodev').setup()
|
||||
|
||||
-- nvim-cmp supports additional completion capabilities, so broadcast that to servers
|
||||
local capabilities = vim.lsp.protocol.make_client_capabilities()
|
||||
capabilities = require('cmp_nvim_lsp').default_capabilities(capabilities)
|
||||
@ -123,46 +129,33 @@ local mason_lspconfig = require 'mason-lspconfig'
|
||||
|
||||
mason_lspconfig.setup {
|
||||
ensure_installed = vim.tbl_keys(servers),
|
||||
}
|
||||
|
||||
mason_lspconfig.setup_handlers {
|
||||
function(server_name)
|
||||
require('lspconfig')[server_name].setup {
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = servers[server_name],
|
||||
filetypes = (servers[server_name] or {}).filetypes,
|
||||
}
|
||||
end,
|
||||
automatic_installation = true,
|
||||
automatic_enable = true,
|
||||
}
|
||||
|
||||
-- [[ System LSPs ]]
|
||||
local lspconfig = require('lspconfig')
|
||||
servers = {
|
||||
rust_analyzer = {
|
||||
["rust-analyzer"] = {
|
||||
imports = {
|
||||
granularity = {
|
||||
group = "module",
|
||||
},
|
||||
prefix = "self",
|
||||
},
|
||||
cargo = {
|
||||
buildScripts = {
|
||||
enable = true,
|
||||
},
|
||||
},
|
||||
procMacro = {
|
||||
enable = true
|
||||
},
|
||||
}
|
||||
},
|
||||
}
|
||||
local setup_godot_dap = function()
|
||||
local dap = require("dap")
|
||||
|
||||
for server_name, server_settings in pairs(servers) do
|
||||
lspconfig[server_name].setup {
|
||||
capabilities = capabilities,
|
||||
on_attach = on_attach,
|
||||
settings = server_settings,
|
||||
dap.adapters.godot = {
|
||||
type = "server",
|
||||
host = "127.0.0.1",
|
||||
port = 6006,
|
||||
}
|
||||
|
||||
dap.configurations.gdscript = {
|
||||
{
|
||||
launch_game_instance = false,
|
||||
launch_scene = false,
|
||||
name = "Launch scene",
|
||||
project = "${workspaceFolder}",
|
||||
request = "launch",
|
||||
type = "godot",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
setup_godot_dap()
|
||||
|
||||
vim.diagnostic.config({ virtual_lines = true })
|
||||
vim.lsp.enable({ "ltex_ls_plus", "rust-analyzer", "gdscript" })
|
||||
|
@ -1,7 +1,8 @@
|
||||
local map_list = {
|
||||
["w|"] = ":vsplit", ["w-"] = ":split", -- w| / w- pour créer des splits verticaux et horizontaux
|
||||
["ge"] = ":bprevious", ["gn"] = ":bnext",
|
||||
["W"] = ":w", ["<C-t>"] = ":tabnew",
|
||||
-- ["w|"] = ":vsplit", ["w-"] = ":split", -- w| / w- pour créer des splits verticaux et horizontaux
|
||||
-- ["ge"] = ":bprevious", ["gn"] = ":bnext",
|
||||
["W"] = ":w",
|
||||
["<C-t>"] = ":tabnew",
|
||||
}
|
||||
|
||||
local keymap = vim.keymap.set
|
||||
@ -20,18 +21,57 @@ keymap('n', 'k', "v:count == 0 ? 'gk' : 'k'", { expr = true, silent = true })
|
||||
keymap('n', 'j', "v:count == 0 ? 'gj' : 'j'", { expr = true, silent = true })
|
||||
|
||||
-- Diagnostic keymaps
|
||||
keymap('n', '[d', vim.diagnostic.goto_prev, { desc = 'Go to previous diagnostic message' })
|
||||
keymap('n', ']d', vim.diagnostic.goto_next, { desc = 'Go to next diagnostic message' })
|
||||
keymap('n', '<leader>e', vim.diagnostic.open_float, { desc = 'Open floating diagnostic message' })
|
||||
keymap('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostics list' })
|
||||
|
||||
keymap({ "n", "v" }, "<Leader>y", '"+y', { noremap = true, silent = true, desc = "[Y]ank to system clipboard" })
|
||||
keymap({ "n", "v" }, "<Leader>Y", '"+yg_', { noremap = true, silent = true, desc = "[Y]ank line to system clipboard" })
|
||||
keymap({ "n", "v" }, "<Leader>p", '"+p', { noremap = true, silent = true, desc = "[P]ast from system clipboard" })
|
||||
|
||||
--[[ Folds ]]
|
||||
-- z0…z9 to open folds to a certain level
|
||||
for i = 0, 9 do
|
||||
keymap('n', 'z' .. i, ':set fdl=' .. i .. '<CR>', { noremap = true, silent = false })
|
||||
end
|
||||
-- tab for folds management
|
||||
keymap('n', '<Tab>', 'za', { noremap = true, silent = true, desc = 'Toggle open folds' })
|
||||
keymap('n', '<S-Tab>', 'zA', { noremap = true, silent = true, desc = 'Toggle open all folds' })
|
||||
|
||||
-- in :terminal esc exits edit mode
|
||||
keymap('t', '<Esc>', '<C-\\><C-n>', { noremap = true, silent = true })
|
||||
|
||||
-- Markdown scratchpads
|
||||
require('which-key').add({
|
||||
{ "<leader>m", group = "[M]arkdown" },
|
||||
{ "<leader>m_", hidden = true },
|
||||
{ "<leader>sl", group = "[S]pell[Lang]" },
|
||||
{ "<leader>sl_", hidden = true },
|
||||
})
|
||||
|
||||
-- Markdown temp files
|
||||
keymap('n', '<leader>mn', ':e ~/tmp/scratch.md<CR>', { desc = '[M]arkdown [N]ew', noremap = true, silent = true })
|
||||
keymap('n', '<leader>me', ':e ~/tmp/scratch-fr.md<CR>',
|
||||
{ desc = '[M]arkdown new Fr[e]nch', noremap = true, silent = true })
|
||||
|
||||
-- Spellchecking
|
||||
keymap('n', '<leader>st', ':set spell!<CR>', { desc = "Toggle [S]pellcheck", silent = true, noremap = true })
|
||||
keymap('n', '<leader>sle', ':set spelllang=en<CR>',
|
||||
{ desc = "Set [S]pell[L]ang to [E]nglish", silent = true, noremap = true })
|
||||
keymap('n', '<leader>slf', ':set spelllang=fr<CR>',
|
||||
{ desc = "Set [S]pell[L]ang to [F]rench", silent = true, noremap = true })
|
||||
|
||||
-- Toggle hlsearch
|
||||
keymap({ 'n', 'v' }, '<C-l>', ':set hlsearch!<CR>', { silent = true, noremap = true })
|
||||
|
||||
-- Undotree
|
||||
keymap('n', 'U', vim.cmd.UndotreeToggle, { desc = "[U]ndotree toggle", silent = true, noremap = true })
|
||||
|
||||
-- [[ Paste ]]
|
||||
keymap('i', '<C-S-v>', '<C-r>+', { noremap = true, silent = true, desc = 'Paste from "+' })
|
||||
|
||||
-- [[ Some standard behaviour changes ]]
|
||||
-- Y is mapped to y$, remap to yg_
|
||||
keymap('n', 'Y', 'yg_', { noremap = true, silent = true, desc = '[Y]ank the line' })
|
||||
-- {>,<} preserve the selection
|
||||
keymap('v', '>', '>gv', { noremap = true, silent = true })
|
||||
keymap('v', '<', '<gv', { noremap = true, silent = true })
|
||||
|
@ -1,4 +1,4 @@
|
||||
--vim.api.nvim_set_keymap('', 'à', '<Nop>', { noremap = true, silent = true })
|
||||
--vim.keymap.set('', 'à', '<Nop>', { noremap = true, silent = true })
|
||||
local neorgroup = vim.api.nvim_create_augroup("neorg", { clear = true })
|
||||
|
||||
vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
@ -7,66 +7,78 @@ vim.api.nvim_create_autocmd({ "FileType" }, {
|
||||
callback = function()
|
||||
vim.g.maplocalleader = ' '
|
||||
vim.o.conceallevel = 2
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nr", ":Neorg return<CR>",
|
||||
vim.o.foldlevelstart = 99
|
||||
vim.keymap.set("n", "<Leader>nr", ":Neorg return<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [R]eturn" })
|
||||
|
||||
-- Neorg Telescope
|
||||
vim.keymap.set("n", "<Leader>nh", "<Plug>(neorg.telescope.search_headings)",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg search [H]eading" })
|
||||
vim.keymap.set("n", "<Leader>nb", "<Plug>(neorg.telescope.backlinks.file_backlinks)",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg file [B]acklinks" })
|
||||
vim.keymap.set("n", "<C-l>", "<Plug>(neorg.telescope.insert_link)",
|
||||
{ noremap = true, silent = true, desc = "Neorg insert [L]ink" })
|
||||
-- Tasks
|
||||
vim.keymap.set("n", "<LocalLeader>td", "<Plug>(neorg.qol.todo-items.todo.task-done)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask [D]one" })
|
||||
vim.keymap.set("n", "<LocalLeader>tu", "<Plug>(neorg.qol.todo-items.todo.task-undone)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask [U]ndone" })
|
||||
vim.keymap.set("n", "<LocalLeader>tp", "<Plug>(neorg.qol.todo-items.todo.task-pending)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask [P]ending" })
|
||||
vim.keymap.set("n", "<LocalLeader>th", "<Plug>(neorg.qol.todo-items.todo.task-on_hold)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask on [H]old" })
|
||||
vim.keymap.set("n", "<LocalLeader>tc", "<Plug>(neorg.qol.todo-items.todo.task-cancelled)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask on [C]ancelled" })
|
||||
vim.keymap.set("n", "<LocalLeader>tr", "<Plug>(neorg.qol.todo-items.todo.task-recurring)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask on [R]ecurring" })
|
||||
vim.keymap.set("n", "<LocalLeader>ti", "<Plug>(neorg.qol.todo-items.todo.task-important)",
|
||||
{ noremap = true, silent = true, desc = "[T]ask on [I]mportant" })
|
||||
vim.keymap.set("n", "gO", ":Neorg toc<CR>",
|
||||
{ noremap = true, silent = true, desc = "[O]pen toc" })
|
||||
end,
|
||||
})
|
||||
|
||||
local function live_grep_neorg()
|
||||
local neorg_root = '~/Sync/neorg' -- TODO: get it from neorg
|
||||
require('telescope.builtin').live_grep {
|
||||
cwd = neorg_root,
|
||||
}
|
||||
end
|
||||
|
||||
-- document existing key chains
|
||||
require('which-key').register {
|
||||
['<leader>n'] = { name = '[N]eorg', _ = 'which_key_ignore' },
|
||||
['<leader>m'] = { name = 'neorg [M]ode', _ = 'which_key_ignore' },
|
||||
['<leader>l'] = { name = 'neorg [L]ist', _ = 'which_key_ignore' },
|
||||
['<leader>ne'] = { name = '[N]eorg [E]xport', _ = 'which_key_ignore' },
|
||||
require('which-key').add {
|
||||
{ "<leader>l", group = "neorg [L]ist" },
|
||||
{ "<leader>l_", hidden = true },
|
||||
{ "<leader>t", group = "neorg [T]asks" },
|
||||
{ "<leader>n", group = "[N]eorg" },
|
||||
{ "<leader>n_", hidden = true },
|
||||
{ "<leader>ne", group = "[N]eorg [E]xport" },
|
||||
{ "<leader>ne_", hidden = true },
|
||||
}
|
||||
|
||||
vim.api.nvim_set_keymap("n", "<Leader>ni", ":Neorg index<CR>",
|
||||
vim.keymap.set("n", "<Leader>ni", ":Neorg index<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [I]ndex" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nm", ":Neorg inject-metadata<CR>",
|
||||
vim.keymap.set("n", "<Leader>nm", ":Neorg inject-metadata<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg insert [M]etadata" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nj", ":Neorg journal toc open<CR>",
|
||||
vim.keymap.set("n", "<Leader>nj", ":Neorg journal toc open<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [J]ournal" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nt", ":Neorg journal today<CR>",
|
||||
vim.keymap.set("n", "<Leader>nt", ":Neorg journal today<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [T]oday" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>ns", ":Neorg journal tomorrow<CR>",
|
||||
vim.keymap.set("n", "<Leader>ns", ":Neorg journal tomorrow<CR>",
|
||||
{ noremap = true, silent = true, desc = "Neorg tomorrow" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>ny", ":Neorg journal yesterday<CR>",
|
||||
vim.keymap.set("n", "<Leader>ny", ":Neorg journal yesterday<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [Y]esterday" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>neo", ":e /tmp/neorg-export.md<CR>",
|
||||
vim.keymap.set("n", "<Leader>neo", ":e /tmp/neorg-export.md<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [E]xport [O]pen" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nee", ":Neorg export to-file /tmp/neorg-export.md<CR>",
|
||||
vim.keymap.set("n", "<Leader>nev", ":bo vsp /tmp/neorg-export.md<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [E]xport [V]ertical open" })
|
||||
vim.keymap.set("n", "<Leader>nee", ":Neorg export to-file /tmp/neorg-export.md<CR>",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [E]xport Predefined" })
|
||||
vim.api.nvim_set_keymap("n", "<Leader>nef", ":Neorg export to-file ",
|
||||
vim.keymap.set("n", "<Leader>nef", ":Neorg export to-file ",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg [E]xport [F]ile" })
|
||||
|
||||
local neorg = require('neorg')
|
||||
|
||||
neorg.setup {
|
||||
load = {
|
||||
["core.defaults"] = {},
|
||||
["core.concealer"] = {
|
||||
config = {
|
||||
icon_preset = "diamond",
|
||||
}
|
||||
},
|
||||
["core.dirman"] = {
|
||||
config = {
|
||||
workspaces = {
|
||||
notes = "~/Sync/neorg",
|
||||
},
|
||||
default_workspace = "notes",
|
||||
}
|
||||
},
|
||||
["core.export"] = {
|
||||
config = {
|
||||
export_dir = "<export-dir>/<language>",
|
||||
},
|
||||
},
|
||||
["core.esupports.metagen"] = {
|
||||
config = {
|
||||
author = "Chouhartem",
|
||||
type = "empty",
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
vim.keymap.set("n", "<Leader>nl", "<Plug>(neorg.telescope.find_linkable)",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg find [L]inkable" })
|
||||
vim.keymap.set("n", "<Leader>nf", "<Plug>(neorg.telescope.find_norg_files)",
|
||||
{ noremap = true, silent = true, desc = "[N]eorg find [F]ile" })
|
||||
vim.keymap.set("n", "<Leader>n/", live_grep_neorg,
|
||||
{ noremap = true, silent = true, desc = "[N]eorg Live Grep" })
|
||||
|
@ -10,6 +10,21 @@ require('lazy').setup({
|
||||
|
||||
-- NOTE: This is where your plugins related to LSP can be installed.
|
||||
-- The configuration is done below. Search for lspconfig to find it below.
|
||||
{
|
||||
-- `lazydev` configures Lua LSP for your Neovim config, runtime and plugins
|
||||
-- used for completion, annotations and signatures of Neovim apis
|
||||
'folke/lazydev.nvim',
|
||||
ft = 'lua',
|
||||
opts = {
|
||||
library = {
|
||||
-- Load luvit types when the `vim.uv` word is found
|
||||
{ path = 'luvit-meta/library', words = { 'vim%.uv' } },
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
'Bilal2453/luvit-meta', lazy = true
|
||||
},
|
||||
{
|
||||
-- LSP Configuration & Plugins
|
||||
'neovim/nvim-lspconfig',
|
||||
@ -21,11 +36,23 @@ require('lazy').setup({
|
||||
-- Useful status updates for LSP
|
||||
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
|
||||
{ 'j-hui/fidget.nvim', opts = {} },
|
||||
},
|
||||
},
|
||||
-- LSP-signature
|
||||
{
|
||||
"ray-x/lsp_signature.nvim",
|
||||
event = "InsertEnter",
|
||||
opts = {
|
||||
bind = true,
|
||||
handler_opts = {
|
||||
border = "rounded"
|
||||
}
|
||||
},
|
||||
config = function(_, opts) require 'lsp_signature'.setup(opts) end
|
||||
},
|
||||
|
||||
-- Additional lua configuration, makes nvim stuff amazing!
|
||||
'folke/neodev.nvim',
|
||||
},
|
||||
},
|
||||
-- DAP: Debug Adapter Protocol
|
||||
'mfussenegger/nvim-dap',
|
||||
|
||||
{
|
||||
-- Autocompletion
|
||||
@ -134,25 +161,8 @@ require('lazy').setup({
|
||||
end,
|
||||
},
|
||||
|
||||
{
|
||||
-- Set lualine as statusline
|
||||
'nvim-lualine/lualine.nvim',
|
||||
-- See `:help lualine.txt`
|
||||
opts = {
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = 'rose-pine',
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
symbols = {
|
||||
error = " ",
|
||||
warn = " ",
|
||||
info = " ",
|
||||
hint = " ",
|
||||
}
|
||||
},
|
||||
},
|
||||
|
||||
{
|
||||
-- Add indentation guides even on blank lines
|
||||
@ -253,10 +263,47 @@ require('lazy').setup({
|
||||
},
|
||||
{
|
||||
"nvim-neorg/neorg",
|
||||
dependencies = { "luarocks.nvim" },
|
||||
dependencies = { "luarocks.nvim", { "nvim-lua/plenary.nvim" }, { "nvim-neorg/neorg-telescope" } },
|
||||
lazy = false, -- Disable lazy loading as some `lazy.nvim` distributions set `lazy = true` by default
|
||||
version = "*", -- Pin Neorg to the latest stable release
|
||||
config = true,
|
||||
-- version = "*", -- Pin Neorg to the latest stable release
|
||||
config = function()
|
||||
require("neorg").setup {
|
||||
load = {
|
||||
["core.defaults"] = {},
|
||||
["core.keybinds"] = {},
|
||||
["core.completion"] = {
|
||||
config = {
|
||||
engine = "nvim-cmp",
|
||||
},
|
||||
},
|
||||
["core.concealer"] = {
|
||||
config = {
|
||||
icon_preset = "diamond",
|
||||
}
|
||||
},
|
||||
["core.dirman"] = {
|
||||
config = {
|
||||
workspaces = {
|
||||
notes = "~/Sync/neorg",
|
||||
},
|
||||
default_workspace = "notes",
|
||||
}
|
||||
},
|
||||
["core.export"] = {
|
||||
config = {
|
||||
export_dir = "<export-dir>/<language>",
|
||||
},
|
||||
},
|
||||
["core.esupports.metagen"] = {
|
||||
config = {
|
||||
author = "Chouhartem",
|
||||
type = "empty",
|
||||
},
|
||||
},
|
||||
["core.integrations.telescope"] = {},
|
||||
}
|
||||
}
|
||||
end,
|
||||
},
|
||||
-- vim-speeddating
|
||||
'tpope/vim-speeddating',
|
||||
@ -267,7 +314,26 @@ require('lazy').setup({
|
||||
"iamcco/markdown-preview.nvim",
|
||||
cmd = { "MarkdownPreviewToggle", "MarkdownPreview", "MarkdownPreviewStop" },
|
||||
ft = { "markdown", "pandoc" },
|
||||
build = function() vim.fn["mkdp#util#install"]() end,
|
||||
}
|
||||
|
||||
-- build = function() vim.fn["mkdp#util#install"]() end,
|
||||
build = "cd app && npm install && git restore .",
|
||||
},
|
||||
{
|
||||
'kaarmu/typst.vim',
|
||||
ft = 'typst',
|
||||
lazy = false,
|
||||
},
|
||||
-- oil.nvim
|
||||
{
|
||||
'stevearc/oil.nvim',
|
||||
---@module 'oil'
|
||||
---@type oil.SetupOpts
|
||||
opts = {},
|
||||
-- Optional dependencies
|
||||
dependencies = { { "echasnovski/mini.icons", opts = {} } },
|
||||
-- dependencies = { "nvim-tree/nvim-web-devicons" }, -- use if you prefer nvim-web-devicons
|
||||
-- Lazy loading is not recommended because it is very tricky to make it work correctly in all situations.
|
||||
lazy = false,
|
||||
},
|
||||
-- undotree
|
||||
'mbbill/undotree',
|
||||
}, {})
|
48
lua/statusline.lua
Normal file
48
lua/statusline.lua
Normal file
@ -0,0 +1,48 @@
|
||||
-- Character, word and line counts
|
||||
-- https://www.reddit.com/r/neovim/comments/1130kh5/comment/j8navg6/
|
||||
local function counters()
|
||||
local isVisualMode = vim.fn.mode():find("[Vv]")
|
||||
if not isVisualMode then return "" end
|
||||
local starts = vim.fn.line("v")
|
||||
local ends = vim.fn.line(".")
|
||||
local lines = starts <= ends and ends - starts + 1 or starts - ends + 1
|
||||
local wordcount = vim.fn.wordcount()
|
||||
return tostring(wordcount.visual_words) ..
|
||||
"W " .. tostring(wordcount.visual_chars) .. "C " .. tostring(lines) .. "L"
|
||||
end
|
||||
|
||||
-- See `:help lualine.txt`
|
||||
require('lualine').setup({
|
||||
options = {
|
||||
icons_enabled = true,
|
||||
theme = 'rose-pine',
|
||||
component_separators = '|',
|
||||
section_separators = '',
|
||||
},
|
||||
sections = {
|
||||
lualine_c = {
|
||||
{
|
||||
'filename',
|
||||
path = 1,
|
||||
}
|
||||
},
|
||||
lualine_y = {
|
||||
{ counters },
|
||||
'progress'
|
||||
}
|
||||
},
|
||||
inactive_sections = {
|
||||
lualine_c = {
|
||||
{
|
||||
'filename',
|
||||
path = 1,
|
||||
}
|
||||
},
|
||||
},
|
||||
symbols = {
|
||||
error = " ",
|
||||
warn = " ",
|
||||
info = " ",
|
||||
hint = " ",
|
||||
}
|
||||
})
|
@ -76,9 +76,11 @@ vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc
|
||||
vim.keymap.set('n', '<leader>sG', ':LiveGrepGitRoot<cr>', { desc = '[S]earch by [G]rep on Git Root' })
|
||||
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
|
||||
vim.keymap.set('n', '<leader>sr', require('telescope.builtin').resume, { desc = '[S]earch [R]esume' })
|
||||
vim.keymap.set('n', '<leader>sb', require('telescope.builtin').lsp_document_symbols, { desc = '[S]earch Sym[b]bol' })
|
||||
vim.keymap.set('n', '<leader>sB', require('telescope.builtin').lsp_workspace_symbols, { desc = '[S]earch Sym[b]bol in workspace' })
|
||||
|
||||
-- vim telescope
|
||||
vim.keymap.set('n', '<leader>gc', require('telescope.builtin').git_commits, { desc = '[G]it [C]ommits' })
|
||||
vim.keymap.set('n', '<leader>gs', require('telescope.builtin').git_status, { desc = '[G]it [S]tatus' })
|
||||
vim.keymap.set({'n', 'x'}, '<leader>gB', require('telescope.builtin').git_bcommits, { desc = '[G]it [B]commits' })
|
||||
vim.keymap.set({ 'n', 'x' }, '<leader>gB', require('telescope.builtin').git_bcommits, { desc = '[G]it [B]commits' })
|
||||
vim.keymap.set('n', '<leader>gb', require('telescope.builtin').git_branches, { desc = '[G]it [B]ranches' })
|
||||
|
@ -3,9 +3,9 @@
|
||||
vim.defer_fn(function()
|
||||
require('nvim-treesitter.configs').setup {
|
||||
-- Add languages to be installed here that you want installed for treesitter
|
||||
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash', 'norg' },
|
||||
ignore_install = {'latex', 'tex', 'markdown'},
|
||||
disable = {'latex', 'tex', 'markdown'},
|
||||
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'javascript', 'typescript', 'vimdoc', 'vim', 'bash', 'norg', 'norg_meta', 'gdscript' },
|
||||
ignore_install = { 'latex', 'tex', 'markdown' },
|
||||
disable = { 'latex', 'tex', 'markdown' },
|
||||
|
||||
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
|
||||
auto_install = false,
|
||||
@ -15,7 +15,7 @@ vim.defer_fn(function()
|
||||
highlight = { enable = true },
|
||||
indent = {
|
||||
enable = true,
|
||||
disable = {'javascript'}
|
||||
disable = { 'javascript' }
|
||||
},
|
||||
incremental_selection = {
|
||||
enable = true,
|
||||
@ -70,5 +70,6 @@ vim.defer_fn(function()
|
||||
},
|
||||
},
|
||||
},
|
||||
modules = {},
|
||||
}
|
||||
end, 0)
|
||||
|
@ -87,4 +87,7 @@ local options = {
|
||||
},
|
||||
}
|
||||
|
||||
-- XXX: temporary until upgrading the deprecated configuration above…
|
||||
options = {}
|
||||
|
||||
return options
|
||||
|
32
luasnippets/norg.lua
Normal file
32
luasnippets/norg.lua
Normal file
@ -0,0 +1,32 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local sn = ls.snippet_node
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local f = ls.function_node
|
||||
local d = ls.dynamic_node
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
local fmta = require("luasnip.extras.fmt").fmta
|
||||
local rep = require("luasnip.extras").rep
|
||||
|
||||
return {
|
||||
-- Pull Request
|
||||
s({
|
||||
trig = "pr", dscr = "cryptpad pull request"
|
||||
},
|
||||
fmta("{https://github.com/cryptpad/cryptpad/pull/<>}[#<>]", {
|
||||
i(1, "number"),
|
||||
rep(1),
|
||||
})
|
||||
),
|
||||
|
||||
-- Issue
|
||||
s({
|
||||
trig = "issue", dscr = "cryptpad issue request"
|
||||
},
|
||||
fmta("{https://github.com/cryptpad/cryptpad/issues/<>}[#<>]", {
|
||||
i(1, "number"),
|
||||
rep(1),
|
||||
})
|
||||
),
|
||||
}
|
68
luasnippets/tex.lua
Normal file
68
luasnippets/tex.lua
Normal file
@ -0,0 +1,68 @@
|
||||
local ls = require("luasnip")
|
||||
local s = ls.snippet
|
||||
local sn = ls.snippet_node
|
||||
local t = ls.text_node
|
||||
local i = ls.insert_node
|
||||
local f = ls.function_node
|
||||
local d = ls.dynamic_node
|
||||
local fmt = require("luasnip.extras.fmt").fmt
|
||||
local fmta = require("luasnip.extras.fmt").fmta
|
||||
local rep = require("luasnip.extras").rep
|
||||
|
||||
return {
|
||||
s({ trig = "frame", dscr = "Insert a beamer frame" },
|
||||
fmta(
|
||||
[[
|
||||
\begin{frame}{<>}
|
||||
<>
|
||||
\end{frame}
|
||||
]],
|
||||
{
|
||||
i(1, "title"),
|
||||
i(2, "content")
|
||||
}
|
||||
)
|
||||
),
|
||||
|
||||
s({ trig = "block", dscr = "Insert a beamer block" },
|
||||
fmta(
|
||||
[[
|
||||
\begin{block}{<>}
|
||||
<>
|
||||
\end{block}
|
||||
]],
|
||||
{
|
||||
i(1, "title"),
|
||||
i(2, "content")
|
||||
}
|
||||
)
|
||||
),
|
||||
|
||||
s({ trig = "pp", dscr = "Insert a beamer pause" },
|
||||
fmt("\\pause", {})
|
||||
),
|
||||
|
||||
s({ trig = "ii", dscr = "Insert an item" },
|
||||
fmt("\\item ", {})
|
||||
),
|
||||
|
||||
s({ trig = "ss", dscr = "Insert a small skip" },
|
||||
fmt("\\smallskip", {})
|
||||
),
|
||||
|
||||
s({ trig = "ms", dscr = "Insert a medium skip" },
|
||||
fmt("\\medskip", {})
|
||||
),
|
||||
|
||||
s({ trig = "bs", dscr = "Insert a big skip" },
|
||||
fmt("\\bigskip", {})
|
||||
),
|
||||
|
||||
s({ trig = "tw", dscr = "Insert \\textwidth" },
|
||||
fmt("\\textwidth", {})
|
||||
),
|
||||
|
||||
s({ trig = "th", dscr = "Insert \\textheight" },
|
||||
fmt("\\textheight", {})
|
||||
),
|
||||
}
|
17
readme.md
17
readme.md
@ -1,10 +1,15 @@
|
||||
In this repository lies my Neovim configuration starting from
|
||||
[kickstart.nvim](https://github.com/nvim-lua/kickstart.nvim).
|
||||
|
||||
The provided `init.lua` file has then been split into (tryingly) semantically
|
||||
The provided `init.lua` file has then been split into (tentatively) semantically
|
||||
consistent files inside `lua/` and personal customizations have been applied.
|
||||
|
||||
The process to design this configuration and some thoughts can be found [here](https://blog.epheme.re/software/nvim-kickstart.html).
|
||||
The process to design this configuration and some thoughts can be found
|
||||
[here](https://blog.epheme.re/software/nvim-kickstart.html).
|
||||
|
||||
Note that if the global principles remain true, the blog post dates from
|
||||
December 2023, and things may have changed a bit since then. Just use it as a
|
||||
reference for my rationals.
|
||||
|
||||
## Testing it
|
||||
|
||||
@ -17,3 +22,11 @@ For instance, you can create clone this repository inside
|
||||
```sh
|
||||
export NVIM_APPNAME="$HOME/.config/kicknvim"
|
||||
```
|
||||
|
||||
## LSP dependencies
|
||||
|
||||
This configuration requires some LSP servers to be installed on your machine
|
||||
(usually because they are unavailable in `mason`). These packages are:
|
||||
|
||||
- `rust-analyzer`
|
||||
- `ltex-ls-plus`
|
||||
|
Reference in New Issue
Block a user