Compare commits

...

14 Commits

Author SHA1 Message Date
iGor milhit 05bace5665
spell: add two words in the French dictionary
Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:25 +02:00
iGor milhit e5298b6bb3
completion: support non ascii with cmp-buffer
- Supports non ASCII chars in text completion (cmp-buffer).
- Restore the luasnip configuration inside the nvim-cmp configuration,
  as it is indeed closely related. I didn't understood it in the first
  place.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:25 +02:00
iGor milhit 43841e7a5b
snippets: add HTML and commit snippets
- Creates a new file for custom HTML snippets.
- Creates three snippets to be used when updating the clinical medicine
  library portal with bibliographic descriptions:
  - A main HTML structure with CSS styling.
  - An item with some bibliographic description examples.
  - A list item with a link to an ebook online.
- Creates a snippet for commit message to save working hours.
- Creates snippet for incremental note commits.
- Creates snippet for AoU stats commits.
- Removes redundant markdown snippets for the date.
- Improves the markdown snippet for incremental note entry.
- Improves the LuaSnip configuration and moves it outside the nvim-cmp
  configuration.
- Increments the French personal dictionary.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:25 +02:00
iGor milhit 5433a5538d
json: add configuration for JSON
- Adds the `json` parser to the treesitter languages for linting
  purpose.
- Adds `jsonls` as language server provider for JSON.
- Creates the `after/ftplugin` folders.
- Sets specific settings for JSON for folding method.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:24 +02:00
iGor milhit 5167c5c6be
snippets: fix the inc front matter
- Fixes the front matter for the incremental notes files, removing
  unnecessary metadata and adding the id.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:24 +02:00
iGor milhit 4d92ad9863
telescope: add a plugin to use Ag
- Adds a plugin to use Ag The Silversearcher with Telescope.
- Improves some comments.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:24 +02:00
iGor milhit af95122e63
config: set changes preview
- Sets the `inccommand` option to `nosplit` to preview the changes
  before accepting them with the substitute command.
- Removes unused configuration.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:24 +02:00
iGor milhit 8543c689b0
mkdnflow: adapt follow link behavior
- Sets the `perspective.priority` to `current` to get the follow link
  feature behaves as I need, relative to the current buffer.
- Fixes the new file template to avoid a blank column at the begining
  (results in an invalid YAML syntax).

Co-Authored-by: iGor milhit <igor.milhit@unige.ch>
2023-08-23 08:43:24 +02:00
iGor milhit 8f5d37f313
plugin: install, configure Grammalecte
- Grammalecte is a French language checker. This plugin requires the
  python package `Grammalecte` that provide `grammalecte-cli` and
  `grammalecte-server`.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:23 +02:00
iGor milhit ccf1fe4030
completion: set buffer completion to 4 chars
- Set the keyword_length to 4 in order to lighten the buffer completion.
- Add a markdown snippet to add a tags line in my incremental notes.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:23 +02:00
iGor milhit a9fc78d5b6
plugin: ensure to use the legacy tag for fidget
- Ensures to use the legacy tag for the fidget plugin, as it will be
  under active development and rewritting.

Co-Authored-by: iGor milhit <igor.milhit@unige.ch>
2023-08-23 08:43:23 +02:00
iGor milhit 4604bf5925
completion: add completion for text in the buffer
- Adds completion capabilities for text (in the current buffer), with
  the help of `cmp-buffer`).
- Expand the French dictionnary.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:43:23 +02:00
iGor milhit c2fdfafae4
plugins: improve md preview, install ToggleTerm
- Fixes the markdown preview node package installation.
- Removes the markdown preview theme configuration.
- Adds the ToggleTerm plugin that allows to improve the managment of
  terminal buffers and configures it.

Co-Authored-by: iGor milhit <igor.milhit@unige.ch>
2023-08-23 08:41:22 +02:00
iGor milhit 7c52a10de3
snippets: load my own, add markdown snippets
- Renames the snippets folder to my_snippets.
- Lazy loads my snippets.
- Creates two snippet example available for all filetypes.
- Creates three snippets for markdown filetype.
- Creates a markdown snippet to get the number of the curret day.
- Creates a markdown snippet to get the current date.
- Creates a snippet to create a link in markdown reference syntax.
- Creates a generic frontmatter snippet.
- Creates a frontmatter snippet for my incremental notes (journal).
- Improves the description and description syntax of my markdown
  snippets.
- Adds the telescope luasnip plugin.
- Sets a keymaping to fuzzy search all available snippets (<leader>ss).
- Documents the feature of the plugin that provides the snippets search
  through telescope.
- Enables the search highlighting.
- Removes unnecessary lualine separator.
- Renames the neo-tree plugin file.
- Lazy loads the zen-mode for markdown files.
- Installs and configure texlab which provides LSP and linter for LaTeX.
  Should also allow to build a project, but It is failling right now, I
  don't get why.

Co-Authored-by: iGor milhit <igor@milhit.ch>
2023-08-23 08:31:22 +02:00
15 changed files with 464 additions and 23 deletions

View File

@ -0,0 +1,8 @@
-- Specific settings for JSON files
-- Use treesitter for folding
-- Disable the color column
vim.opt.foldmethod="expr"
vim.opt.foldexpr="nvim_treesitter#foldexpr()"
vim.opt.foldlevel=3
vim.opt.colorcolumn=""

View File

@ -87,7 +87,7 @@ require('lazy').setup({
-- Useful status updates for LSP
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ 'j-hui/fidget.nvim', opts = {} },
{ 'j-hui/fidget.nvim', tag = "legacy", opts = {} },
-- Additional lua configuration, makes nvim stuff amazing!
'folke/neodev.nvim',
@ -106,6 +106,9 @@ require('lazy').setup({
-- Adds LSP completion capabilities
'hrsh7th/cmp-nvim-lsp',
-- Adds completion capabilities for text in buffers
'hrsh7th/cmp-buffer',
-- Adds path completion capabilities
'hrsh7th/cmp-path',
@ -160,7 +163,7 @@ require('lazy').setup({
icons_enabled = true,
theme = 'nord',
component_separators = '|',
section_separators = '/',
section_separators = '',
},
},
},
@ -195,6 +198,16 @@ require('lazy').setup({
end,
},
-- Extension to telescope to use Ag (or ripgrep) to filter results
{
'kelly-lin/telescope-ag'
},
-- Allow to search for snippets
{
'benfowler/telescope-luasnip.nvim'
},
{
-- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
@ -227,7 +240,11 @@ vim.opt.rtp:append (vim.fn.stdpath ('data') .. '/site')
-- NOTE: You can change these options as you wish!
-- Set highlight on search
vim.o.hlsearch = false
vim.o.hlsearch = true
-- Preview changes when searching and substituing
-- nosplit avoid to display the preview in a separate split
vim.o.inccommand = "nosplit"
-- Make line numbers default
vim.wo.number = true
@ -237,10 +254,6 @@ vim.opt.textwidth = 79
-- Display the cusor column at 79+1 column
vim.opt.colorcolumn:append('+1')
-- Set text formatting options
-- 'a' is for autoformat
-- vim.opt.formatoptions:append('a')
-- Enable mouse mode
vim.o.mouse = 'a'
@ -320,6 +333,10 @@ require('telescope').setup {
-- Enable telescope fzf native, if installed
pcall(require('telescope').load_extension, 'fzf')
-- Enable telescope luasnip extension, if installed
pcall(require('telescope').load_extension, 'luasnip')
-- Enable telescope-ag extension, if installed
pcall(require('telescope').load_extension, 'ag')
-- See `:help telescope.builtin`
vim.keymap.set('n', '<leader>?', require('telescope.builtin').oldfiles, { desc = '[?] Find recently opened files' })
@ -339,12 +356,13 @@ vim.keymap.set('n', '<leader>sw', require('telescope.builtin').grep_string, { de
vim.keymap.set('n', '<leader>sg', require('telescope.builtin').live_grep, { desc = '[S]earch by [G]rep' })
vim.keymap.set('n', '<leader>sd', require('telescope.builtin').diagnostics, { desc = '[S]earch [D]iagnostics' })
vim.keymap.set('n', '<leader>sb', require('telescope.builtin').buffers, { desc = '[S]earch [B]uffers' })
vim.keymap.set('n', '<leader>ss', require'telescope'.extensions.luasnip.luasnip , { desc = '[S]earch [S]nippets' })
-- [[ Configure Treesitter ]]
-- See `:help nvim-treesitter`
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', 'typescript', 'vimdoc', 'vim' },
ensure_installed = { 'c', 'cpp', 'go', 'lua', 'python', 'rust', 'tsx', 'typescript', 'vimdoc', 'vim', 'json' },
-- Autoinstall languages that are not installed. Defaults to false (but you can change for yourself!)
auto_install = false,
@ -468,7 +486,7 @@ local servers = {
-- pyright = {},
-- rust_analyzer = {},
-- tsserver = {},
marksman = {
ft = {
'markdown',
@ -482,6 +500,27 @@ local servers = {
telemetry = { enable = false },
},
},
texlab = {
settings = {
build = {
executable = "tectonic",
args = {
"-X",
"compile",
"%f",
"--syntex",
"--keep-logs",
"--keep-intermediates"
}
}
}
},
-- Require vscode-langservers-extracted
-- https://github.com/hrsh7th/vscode-langservers-extracted
jsonls = {
},
}
-- Setup neovim lua configuration
@ -508,7 +547,7 @@ mason_lspconfig.setup_handlers {
end,
}
-- [[ Configure nvim-cmp ]]
-- [[ Configure nvim-cmp, and LuaSnip ]]
-- See `:help cmp`
local cmp = require 'cmp'
local luasnip = require 'luasnip'
@ -519,9 +558,16 @@ luasnip.config.setup {
snippets = {
markdown = {},
},
luasnip.filetype_extend("pandoc", {"markdown"})
luasnip.filetype_extend("pandoc", {"markdown"}),
}
-- Load snippets from ~/.config/nvim/LuaSnip/
require("luasnip.loaders.from_lua").load({paths = "~/.config/nvim/my_snippets/"})
-- Keymap to reload snippets
-- https://www.ejmastnak.com/tutorials/vim-latex/luasnip/#refreshing-snippets-from-a-separate-vim-instance
vim.keymap.set('n', '<Leader>L', '<Cmd>lua require("luasnip.loaders.from_lua").load({paths = "~/.config/nvim/my_snippets/"})<CR>', { desc = 'Reload [L]uaSnippets' })
cmp.setup {
snippet = {
expand = function(args)
@ -559,6 +605,13 @@ cmp.setup {
},
sources = {
{ name = 'nvim_lsp' },
{
name = 'buffer',
option = {
keyword_length = 4,
keyword_pattern = [[\k\+]],
},
},
{ name = 'luasnip' },
{ name = 'path' },
},

View File

@ -0,0 +1,14 @@
-- Plugin to get Grammalecte checks in (neo)vim.
-- Set the path to the grammalecte-cli executable
vim.cmd([[ let g:grammalecte_cli_py = "/usr/bin/grammalecte-cli" ]])
return {
"dpelle/vim-Grammalecte",
ft = {
"pandoc",
"markdown",
"text",
"gitcommit"
}
}

View File

@ -1,9 +1,6 @@
-- makdown-preview.nvim
-- installed with code found at https://github.com/iamcco/markdown-preview.nvim/issues/558#issuecomment-1514701537
-- Force the light theme, no matter the system option is.
vim.cmd([[ let g:mkdp_theme = 'light' ]])
return {
{
"iamcco/markdown-preview.nvim",
@ -12,6 +9,6 @@ return {
'markdown'
},
lazy = true,
build = "cd app && yarn install",
build = "cd app && npm install && git reset --hard",
},
}

View File

@ -22,18 +22,22 @@ return {
markdown = true,
pandoc = true
},
perspective = {
-- Ensure that paths are relative to the current file
priority = "current"
},
links = {
conceal = true,
},
new_file_template = {
use_template = true,
template = [[
---
title:
date: {{ date }}
id: {{ id }}
tags: []
---
---
title:
date: {{ date }}
id: {{ id }}
tags: []
---
]],
placeholders = {
before = {

View File

@ -1,4 +1,5 @@
-- Trying to add a custom plugin for file tree
-- Plugin for file tree: neo-tree
-- Using the kickstart and the neo-tree documentations
-- Unless you are still migrating, remove the deprecated commands from v1.x
vim.cmd([[ let g:neo_tree_remove_legacy_commands = 1 ]])

View File

@ -0,0 +1,16 @@
-- A neovim lua plugin to help easily manage multiple terminal windows
-- https://github.com/akinsho/toggleterm.nvim
-- Set ZSH as shell to get it in a terminal buffer
vim.opt.shell = "/usr/bin/zsh"
return {
{
'akinsho/toggleterm.nvim',
version = "*",
opts = {
-- Avoid terminal to be darker than the Nord colorscheme
shade_terminals = false
}
}
}

View File

@ -3,6 +3,10 @@
return {
"folke/zen-mode.nvim",
ft = {
"markdown",
"pandoc"
},
-- Twilight allows to dim text outside of the cursor line.
dependencies = {
"folke/twilight.nvim",
@ -18,7 +22,7 @@ return {
width = 85,
height = .8,
options = {
-- Disable line numbering.
-- Disable line numbering, signcolumn and colorcolumn.
number = false,
signcolumn = "no",
},

View File

@ -0,0 +1,48 @@
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local f = ls.function_node
local fmt = require("luasnip.extras.fmt").fmt
-- Function to get the current date
local get_date = function()
return os.date("%Y-%m-%d")
end
return {
s(
{
trig = "hr",
name = "Heures",
dscr = "Insert a commit message for saving the worked hours."
},
{
t("organisation: enregistre les heures")
}
),
s(
{
trig = "ic",
name = "Incremental note commit message",
dscr = "Insert a commit message for my incremental notes commits."
},
fmt(
[[
Incrémente la note du {1}
]],
{
f(get_date, {})
}
)
),
s(
{
trig = "aou",
name = "AoU stats commit message",
dscr = "Commit message for an increment of AoU validation statistics."
},
{
t("r+e: incrémente les stats de validation de l'AoU")
}
)
}

View File

@ -0,0 +1,111 @@
-- My HTML snippets
-- Below, the duplicate of brackets, for instance in the CSS code, is for
-- escaping delimiters.
-- Set the local variables (shortcuts)
local ls = require("luasnip")
local s = ls.snippet
local i = ls.insert_node
local fmt = require("luasnip.extras.fmt").fmt
return {
-- A main snippet setting the outer structure, with the style tag.
-- Should be completed with the nested article item below.
s(
{
trig = "mcim",
name = "Main article structure for MC portal",
dscr = "Insert an HTML structure to add bibliographic description on the clinical medicine portal."
},
fmt(
[[
<article class="mc-{1}-main">
{2}
<style>
.mc-{1}-item > ul > li {{
padding: 0 !important;
}}
.mc-{1}-item li:not([class])::before,
.mc-{1}-item li::before {{
content: none;
}}
</style>
</article>
]],
{
i(1, "Class identifier"),
i(0)
},
{
repeat_duplicates = true
}
)
),
-- Snippet that inserts an article with bibliographic metatada, to be nested
-- in the upper main structure.
s(
{
trig = "mcii",
name = "Item article structure for MC portal",
dscr = "Insert an HTML structure to add an item bibliographic description on the clinical medicine portal."
},
fmt(
[[
<article class="mc-{1}-item">
<ul>
<li>Dorland W. Dorlands illustrated medical dictionary. 4th ed.</li>
<li>Philadelphia: Elsevier, 2020.</li>
<li>Cote : W 13 ed 4</li>
<li>
<a lang="fr"
dir="ltr"
type="html/text"
href="https://slsp-unige.primo.exlibrisgroup.com/articleermalink/41SLSP_UGE/l0hvjc/alma991008098789705502"
hreflang="français"
rel="nofollow"
target="_blank">
Le document dans le catalogue Swisscovery
</a>.
</li>
</ul>
<span placeholder="coins metadata"></span>
</article>{2}
]],
{
i(1, "Class identifier"),
i(0)
},
{
repeat_duplicates = true
}
)
),
-- Snippet that insert a list item with a link to an ebook online.
s(
{
trig = "eli",
name = "List item for an ebook link",
dscr = "Insert a link for an ebook nested in a list item. Designed for the medicine portal HTML structure."
},
fmt(
[[
<li>
<a dir="ltr"
type="html/text"
href="{1}"
lang="{2}"
hreflang="{3}"
ref="nofollow"
target="_blank">
Livre électronique en ligne
</a>.
</li>
]],
{
i(1, "Ebook URL"),
i(2, "Language code (2 chars)"),
i(3, "Language name")
}
)
)
}

View File

@ -0,0 +1,172 @@
local ls = require("luasnip")
local s = ls.snippet
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local fmt = require("luasnip.extras.fmt").fmt
-- Function to get the datetime
-- with daylight saving time
-- according to the locale
local get_datetime = function()
return os.date("%Y-%m-%dT%H:%M:%S%z")
end
-- Function to get the current date
local get_date = function()
return os.date("%Y-%m-%d")
end
-- Function to get the current month
local get_month = function()
return os.date("%B")
end
-- Function to get the current year
local get_month_year = function()
return os.date("%B-%Y")
end
-- Function to get an id based on the datetime
local get_id = function()
return os.date("%Y%m%d%H%M%S")
end
-- Function to get the number of the current day
local get_day = function()
return os.date("%d")
end
return {
s(
{
trig = "dt",
name = "Datetime",
dscr = "Insert the current datetime with locale daylight saving."
},
{
f(get_datetime, {})
}
),
s(
{
trig = "id",
Name = "ID",
dscr = "Insert an id based on the current datetime."
},
{
f(get_id, {})
}
),
s(
{
trig = "today",
Name = "Today",
dscr = "Insert the number of the current day."
},
{
f(get_day, {})
}
),
s(
{
trig = "ie",
Name = "Inc entry",
dscr = "Insert an Inc entry for today (heading level 2)."
},
fmt(
[[
## {}
]],
{
f(get_day, {})
}
)
),
s(
{
trig = "fm",
name = "YAML frontmatter",
dscr = "Insert a YAML frontmatter for markdown files.\n\nIt has a datetime with the locale daylight saving time, and an ID based on the datetime.\nTab to jump to next text input."
},
fmt(
[[
---
title: {1}
date: {3}
id: {4}
tags: [{2}]
---
]],
{
i(1, "title"),
i(2, "tags"),
f(get_datetime, {}),
f(get_id, {})
}
)
),
s(
{
trig = "inc",
name = "INC YAML frontmatter",
dscr = "Insert a YAML frontmatter for INC notes.\n\nIt has a datetime with the locale daylight saving time, prefilled title, author, categories and tags.\nAdjust the title manually."
},
fmt(
[[
---
title: {1}
date: {2}
id: {4}
tags: [notes, quotidien, {3}]
---
]],
{
f(get_month_year, {}),
f(get_datetime, {}),
f(get_month, {}),
f(get_id, {})
}
)
),
s(
{
trig="reflink",
name = "Reference link",
dscr="Insert a link with reference syntax",
docstring = "[Link text][Reference]\n\n[Reference]: Link Target \"Title\"\n\nTab to jump to next text input. \"Reference\" is automatically repeated."
},
fmt(
[[
[{1}][{2}]
[{2}]: {3}
]],
{
i(1, "Link text"),
i(2, "Reference"),
i(3, "Link target")
},
{ repeat_duplicates = true }
)
),
s(
{
trig = "tags",
name = "Tags",
dscr = "Insert a one-line tags array, in a text file (markdown)."
},
fmt(
[[
tags: [{}]
]],
{
i(1, "tags")
}
)
)
}

View File

@ -1,2 +1,15 @@
AoU
Floriane
Séverine
HEG
neovim
lua
InfoBiblio
Réaménagement
biodiversité
hyperindustrialisés
lacto-fermentation
d'engrain
écorcheuse
écopolitique
Centralité

Binary file not shown.