From 77df7e408dcd4568a8d4d38b802de003ca0c50ed Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 2 Oct 2022 10:49:22 +0200 Subject: [PATCH 1/3] translated intro, install, quick start and meet the team pages in Italian --- docs.it/01-introduction.md | 22 + docs.it/02-installation.md | 125 +++ docs.it/03-quick-start.md | 47 + docs.it/_category_.json | 3 + docs.it/community/01-meet-the-team.md | 13 + docs.it/community/README.md | 11 + docs.it/community/_category_.json | 4 + docs.it/community/faq.md | 62 ++ docs.it/configuration/01-settings.md | 56 ++ docs.it/configuration/02-keybindings.md | 178 ++++ docs.it/configuration/03-colorschemes.md | 44 + docs.it/configuration/04-nerd-fonts.md | 42 + docs.it/configuration/05-autocommands.md | 40 + docs.it/configuration/06-statusline.md | 143 +++ docs.it/configuration/07-ftplugin.md | 15 + docs.it/configuration/08-custom-snippets.md | 69 ++ docs.it/configuration/README.md | 31 + docs.it/configuration/_category_.json | 3 + docs.it/dev/02-under-the-hood.md | 74 ++ docs.it/dev/README.md | 84 ++ docs.it/dev/_category_.json | 4 + docs.it/dev/lunarvim_initialization.png | Bin 0 -> 238395 bytes docs.it/languages/HCL.md | 15 + docs.it/languages/README.md | 313 +++++++ docs.it/languages/Terraform.md | 30 + docs.it/languages/_category_.json | 4 + docs.it/languages/c_cpp.md | 118 +++ docs.it/languages/csharp.md | 19 + docs.it/languages/go.md | 92 ++ docs.it/languages/java.md | 52 ++ docs.it/languages/javascript.md | 45 + docs.it/languages/json.md | 19 + docs.it/languages/julia.md | 53 ++ docs.it/languages/lua.md | 25 + docs.it/languages/powershell.md | 35 + docs.it/languages/python.md | 43 + docs.it/languages/qml.md | 35 + docs.it/languages/ruby.md | 31 + docs.it/languages/rust.md | 82 ++ docs.it/languages/scala.md | 60 ++ docs.it/languages/swift.md | 38 + docs.it/languages/typescript.md | 38 + docs.it/languages/vue.md | 33 + docs.it/plugins/01-core-plugins-list.md | 41 + docs.it/plugins/02-extra-plugins.md | 966 ++++++++++++++++++++ docs.it/plugins/README.md | 84 ++ docs.it/plugins/_category_.json | 3 + docs.it/sponsors/01-donate.md | 6 + docs.it/sponsors/README.md | 5 + docs.it/sponsors/_category_.json | 4 + docs.it/troubleshooting/README.md | 144 +++ docs.it/troubleshooting/_category_.json | 4 + 52 files changed, 3507 insertions(+) create mode 100644 docs.it/01-introduction.md create mode 100644 docs.it/02-installation.md create mode 100644 docs.it/03-quick-start.md create mode 100644 docs.it/_category_.json create mode 100644 docs.it/community/01-meet-the-team.md create mode 100644 docs.it/community/README.md create mode 100644 docs.it/community/_category_.json create mode 100644 docs.it/community/faq.md create mode 100644 docs.it/configuration/01-settings.md create mode 100644 docs.it/configuration/02-keybindings.md create mode 100644 docs.it/configuration/03-colorschemes.md create mode 100644 docs.it/configuration/04-nerd-fonts.md create mode 100644 docs.it/configuration/05-autocommands.md create mode 100644 docs.it/configuration/06-statusline.md create mode 100644 docs.it/configuration/07-ftplugin.md create mode 100644 docs.it/configuration/08-custom-snippets.md create mode 100644 docs.it/configuration/README.md create mode 100644 docs.it/configuration/_category_.json create mode 100644 docs.it/dev/02-under-the-hood.md create mode 100644 docs.it/dev/README.md create mode 100644 docs.it/dev/_category_.json create mode 100644 docs.it/dev/lunarvim_initialization.png create mode 100644 docs.it/languages/HCL.md create mode 100644 docs.it/languages/README.md create mode 100644 docs.it/languages/Terraform.md create mode 100644 docs.it/languages/_category_.json create mode 100644 docs.it/languages/c_cpp.md create mode 100644 docs.it/languages/csharp.md create mode 100644 docs.it/languages/go.md create mode 100644 docs.it/languages/java.md create mode 100644 docs.it/languages/javascript.md create mode 100644 docs.it/languages/json.md create mode 100644 docs.it/languages/julia.md create mode 100644 docs.it/languages/lua.md create mode 100644 docs.it/languages/powershell.md create mode 100644 docs.it/languages/python.md create mode 100644 docs.it/languages/qml.md create mode 100644 docs.it/languages/ruby.md create mode 100644 docs.it/languages/rust.md create mode 100644 docs.it/languages/scala.md create mode 100644 docs.it/languages/swift.md create mode 100644 docs.it/languages/typescript.md create mode 100644 docs.it/languages/vue.md create mode 100644 docs.it/plugins/01-core-plugins-list.md create mode 100644 docs.it/plugins/02-extra-plugins.md create mode 100644 docs.it/plugins/README.md create mode 100644 docs.it/plugins/_category_.json create mode 100644 docs.it/sponsors/01-donate.md create mode 100644 docs.it/sponsors/README.md create mode 100644 docs.it/sponsors/_category_.json create mode 100644 docs.it/troubleshooting/README.md create mode 100644 docs.it/troubleshooting/_category_.json diff --git a/docs.it/01-introduction.md b/docs.it/01-introduction.md new file mode 100644 index 00000000..115cf87b --- /dev/null +++ b/docs.it/01-introduction.md @@ -0,0 +1,22 @@ +--- +title: Introduzione +--- + +Logo di LunarVim + +# Introduction + +LunarVim è un IDE layer opinionato, estendibile e veloce per Neovim >= 0.7.0. LunarVim trae vantaggio dalle ultimissime funzionalità di Neovim come [Treesitter](https://tree-sitter.github.io/tree-sitter/) e il supporto per il [Language Server Protocol](https://en.wikipedia.org/wiki/Language_Server_Protocol). + + +## Opinionato + +LunarVim viene fornito con una configurazione predefinita sensata che ti permette di costruirci sopra. Le funzionalità includono auto completamento, terminale integrato, esploratore di file, fuzzy finder, LSP, linting, formattazione e debugging. + +## Estendibile + +Solo perché LunarVim ha un'opinione non vuol dire che devi condividerla. Ogni componente aggiuntivo incorporato può essere acceso o spento nel file `config.lua`. Questo è il punto dove potrai aggiungere i tuoi componenti aggiuntivi, definire le scorciatoie da tastiera, autocomandi, associazioni con il tasto leader e tutte le altre impostazioni personalizzate. + +## Veloce + +LunarVim carica pigramente i componenti aggiuntivi dove possibile per massimizzare la velocità. I componenti aggiuntivi disattivati inoltre non diminuiranno la velocità visto che la lista dei componenti aggiuntivi viene compilata solo con quelli attivi. Questa strategia permette a LunarVim di non dover scegliere tra funzionalità e velocità. diff --git a/docs.it/02-installation.md b/docs.it/02-installation.md new file mode 100644 index 00000000..edba3e6c --- /dev/null +++ b/docs.it/02-installation.md @@ -0,0 +1,125 @@ +# Installazione + +## Prerequisiti + +- Assicurati di aver installato l'ultima versione di [`Neovim v0.7.2+`](https://github.com/neovim/neovim/releases/latest). +- Assicurati di aver installato `git`, `make`, `pip`, `npm`, `node` e `cargo` nel tuo sistema. +- [Risolvi i permessi `EACCES` quando installi i pachetti globalmente](https://docs.npmjs.com/resolving-eacces-permissions-errors-when-installing-packages-globally) per evitare errori quando installi pachetti con npm. + +# Installare + +Ci sono diversi modi per installare LunarVim. + +## Stabile + +Nessun allarme o sorpresa: + +```bash +bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/install.sh) +``` + +## Rolling + +Tutte le nuove funzionalità con tutti i nuovi bug: + +```bash +LV_BRANCH=rolling bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/rolling/utils/installer/install.sh) +``` + +Puoi anche usare questo helper script per ottenere l'ultimo binario di neovim: + +```bash +bash <(curl -s https://raw.githubusercontent.com/LunarVim/LunarVim/rolling/utils/installer/install-neovim-from-release) +``` + +Assicurati di controllare la sezione di [risoluzione degli errori](./troubleshooting/README.md) se riscontri dei problemi. + +## Suggerimenti per gli utenti di WSL2 + +Quando usi LunarVim dentro WSL2, ci sono alcune cose di cui dovresti essere a conoscenza: + +1. Evita di usare LunarVim dentro la cartella di Windows, es. `/mnt/c`, a causa di problemi di prestazioni del filesystem, vedi [WSL#4197](https://github.com/microsoft/WSL/issues/4197). +2. Alcuni utenti di WSL2 hanno riscontrato che ottenere gli appunti potrebbe essere lento. Una soluzione temporanea è chiamare il gestore degli appunti dal lato di Windows. Neovim cerca di usare [win32yank.exe](https://github.com/equalsraf/win32yank) se è disponibile. Dunque installalo e imposta il valore di `clipboard` esplicitamente: + +```lua +if vim.fn.has "wsl" == 1 then + vim.g.clipboard = { + copy = { + ["+"] = "win32yank.exe -i --crlf", + ["*"] = "win32yank.exe -i --crlf", + }, + paste = { + ["+"] = "win32yank.exe -o --lf", + ["*"] = "win32yank.exe -o --lf", + }, + } +end + +``` + +3. Alcuni utenti di WSL2 riscontrano che aprire i buffer all'avvio necessita di molto tempo. +Una possibile soluzione è aggiungere quanto segue al tuo file `/etc/wsl.conf`: + +```ini +[automount] +# Impostare questo a vero monterà automaticamente i dischi fissi (C:/ o D:/) con DrvFs sotto la cartella radice impostata sotto. Impostarlo a falso significa che i dischi non saranno montati automaticamente, ma dovranno essere montati a mano o con fstab. +enabled = false + +# Imposta il file `/etc/fstab` per essere processato quando una distribuzione WSL viene lanciata. +mountFsTab = false + +# Imposta se WSL supporta processi interoperativi come lanciare app Windows e aggiungere variabili di percorso. Impostare questi valori a falos bloccherà il lancio di processi Windows e bloccherà l'aggiunta delle variabili di ambiente $PATH. +[interop] +enabled = false +appendWindowsPath = false +``` + +Riferimento: [WSL automount settings](https://docs.microsoft.com/en-us/windows/wsl/wsl-config#automount-settings) + +## Suggerimenti per gli utenti di Neovide + +Per usare LunarVim con [Neovide](https://github.com/neovide/neovide) devi aggiungere la riga seguente al tuo file `config.lua`: + +```lua +vim.o.guifont = "Nome del tuo font" +``` + +Dove `Nome del tuo font` è il nome letterale del font che vuoi usare. Per esempio `"Inconsolata Nerd Font"`. +Avrai anche bisogno di esportare le variabili d'ambiente corrette e chiamare neovide con i parametri corretti. Un modo semplice per ottenere ciò e creare un piccolo script eseguibile, come per esempio `~/.local/bin/lvim-gui` + +```bash +#!/bin/sh +# ~/.local/bin/lvim-gui +export LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-"$HOME/.local/share/lunarvim"}" +export LUNARVIM_CONFIG_DIR="${LUNARVIM_CONFIG_DIR:-"$HOME/.config/lvim"}" +export LUNARVIM_CACHE_DIR="${LUNARVIM_CACHE_DIR:-"$HOME/.cache/lvim"}" + +exec neovide -- -u "$LUNARVIM_RUNTIME_DIR/lvim/init.lua" "$@" +``` + +Poi forniscigli i permessi di esecuzione appropriati + +```bash +chmod +x ~/.local/bin/lvim-gui +``` + +E d'ora in poi potrai lanciare in questo modo: + +```bash +lvim-gui +# or with params +lvim-gui some-file +``` + +## Disinstallazione + +Puoi rimuovere LunarVim (inclusi i file di configurazione) usando lo script `uninstall` incluso + +```bash +bash ~/.local/share/lunarvim/lvim/utils/installer/uninstall.sh +# oppure +bash <(curl -s https://raw.githubusercontent.com/lunarvim/lunarvim/master/utils/installer/uninstall.sh) +``` + + + diff --git a/docs.it/03-quick-start.md b/docs.it/03-quick-start.md new file mode 100644 index 00000000..94fba5c8 --- /dev/null +++ b/docs.it/03-quick-start.md @@ -0,0 +1,47 @@ +# Quick start + +Dopo l'installazione dovresti essere in grado di avviare LunarVim con il comando `lvim`. + +## Aggiungere `lvim` a `$PATH` + +If your terminal can't find the `lvim` command, [add the installation folder to your path](https://gist.github.com/nex3/c395b2f8fd4b02068be37c961301caa7) or move the lvim command to somewhere in your path. The default install folder is `~/.local/bin`. +Se il tuo terminale non riesce a trovare il comando `lvim`, [aggiungi la cartella di installazione al tuo percorso](https://gist.github.com/nex3/c395b2f8fd4b02068be37c961301caa7) o sposta il comando lvim da qualche parte nel tuo percorso. La cartella di installazione predefinita è `~/.local/bin`. + +## Tree-sitter + +Per installare il supporto per la colorazione sintattica e treesitter per il tuo linguaggio: + +```vim +:TSInstall +``` + +**NOTA:** `` indica che dovresti premere il tasto `` e scorrere tra le opzioni + +Non tutti i linguaggi sono supportati. Per una lista di linguaggi supportati [vedi qui](https://github.com/nvim-treesitter/nvim-treesitter#supported-languages) + +## Language Server + +Per installare un Language Server per il tuo linguaggio: + +```vim +:LspInstall +``` + +A volte il language server per il tuo linguaggio non avrà un nome ovvio. Per esempio, il language server per ruby è solargraph. Metals è il language server per scala, ecc. Per trovare il language server corrispondente per ilo tuo linguaggio [vedi qui](https://github.com/williamboman/nvim-lsp-installer) + +## Formattazione e Linting + +Formattazione e linting non sono supportati da alcuni LSP. +Dovranno essere installati / configurati separatamente. + +Vedi in [linguaggi](./languages/README.md) dove può essere gesito ogni linguaggio con il proprio formattatore e linting. + +## Nerd Fonts + +È consigliato un [nerd font](https://www.nerdfonts.com/). Altrimenti alcuni simboli non verranno mostrati correttamente. Per ulteriori informazioni visita la [sezione di configurazione](./configuration/04-nerd-fonts.md). + +## Passaggi successivi + +- Impara come [configurare LunarVim](./configuration/README.md) +- Informati su i [plugin installati](./plugins/README.md) +- Impara come configurare LunarVim per il tuo [linguaggio](./languages/README.md) diff --git a/docs.it/_category_.json b/docs.it/_category_.json new file mode 100644 index 00000000..1f79ec67 --- /dev/null +++ b/docs.it/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 6 +} diff --git a/docs.it/community/01-meet-the-team.md b/docs.it/community/01-meet-the-team.md new file mode 100644 index 00000000..d33755e8 --- /dev/null +++ b/docs.it/community/01-meet-the-team.md @@ -0,0 +1,13 @@ +# Conosci il team + +Christian Chiarulli + +[Abouzar Parvan](https://github.com/abzcoding/) + +[Nelson Jovel](https://github.com/rebuilt) + +[Sngmin Chae](https://github.com/chaeing) + +[Luc Sinet](https://github.com/Tastyep) + +(altri sviluppatore per favore fate una pr e aggiungete il vostro nome dove volete) diff --git a/docs.it/community/README.md b/docs.it/community/README.md new file mode 100644 index 00000000..99a5a2fb --- /dev/null +++ b/docs.it/community/README.md @@ -0,0 +1,11 @@ +# Links + +- 🔌 Ask questions and get support on [Discord](https://discord.gg/Xb9B4Ny) +- 📹 Follow me on [YouTube](https://www.youtube.com/channel/UCS97tchJDq17Qms3cux8wcA) +- 📺 I'd rather you join me on [Odysee](https://odysee.com/@chrisatmachine:f) +- 🐦 Connect on [Twitter](https://twitter.com/chrisatmachine) +- 🎙️ You can also find us on [Matrix](https://matrix.to/#/+atmachine:matrix.org) +- 💳 Support on [Patreon](https://www.patreon.com/chrisatmachine) +- 🪙 Stake DEV token with LunarVim on [stakes.social](https://stakes.social/0xe014A52354136B678ff5030397224179bD0F9657) +- ❤️ Sponsor me [sponsor page](https://github.com/sponsors/ChristianChiarulli) +- 🌑 Share your LunarVim config [here](https://github.com/LunarVim/LunarVimCommunity) diff --git a/docs.it/community/_category_.json b/docs.it/community/_category_.json new file mode 100644 index 00000000..4c91cc88 --- /dev/null +++ b/docs.it/community/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Community", + "position": 9 +} diff --git a/docs.it/community/faq.md b/docs.it/community/faq.md new file mode 100644 index 00000000..63474c73 --- /dev/null +++ b/docs.it/community/faq.md @@ -0,0 +1,62 @@ +--- +sidebar: auto +--- + +# FAQ + +## How do I [..] ? + +### How do I add my own keybindings? + +- View all defaults by pressing `Lk` +- change the leader key + +```lua +lvim.leader = "space" +``` + +- Add your own binding + +```lua +-- save the buffer +lvim.keys.normal_mode[""] = ":w" +-- move the cursor without leaving insert mode +lvim.keys.insert_mode[""] = "" +lvim.keys.insert_mode[""] = "" +``` + +- Remove or un-map a default binding + +```lua +-- disable completely +lvim.keys.normal_mode[""] = "" +-- define a new behavior +lvim.keys.normal_mode[""] = ":q" +``` + +- You can also use the NeoVim API directly using [nvim_set_keymap]() + +```lua +vim.api.nvim_set_keymap("i", "", "Telescope find_files", { noremap = true, silent = true, expr = true }) +``` + +- Or you can use the native vim way for those tricky bindings that you are not sure how to translate just yet + +```lua +-- Search and replace word under cursor using +vim.cmd [[ nnoremap :%s///gc$F/i ]] +``` + +## What is `null-ls` and why do you use it? + +For C/C++ we have the `clangd` by `llvm` which can also use its siblings' abilities `clang-tidy` and `clang-format` to support additional linting and formatting. But something like `pyright` doesn't support formatting, so we use `null-ls` to register `black` and `flake8` for example, as a "fake" language server. + +Since it's not using a separate binary it's called `null-ls` or _null language server_. + +## Where can I find some example configs? + +If you want ideas for configuring LunarVim you can look at these repositories. + +- Chris - [https://github.com/ChristianChiarulli/lvim](https://github.com/ChristianChiarulli/lvim) +- Abouzar -[ https://github.com/abzcoding/lvim ](https://github.com/abzcoding/lvim) +- Nelson -[ https://github.com/rebuilt/lvim ](https://github.com/rebuilt/lvim) diff --git a/docs.it/configuration/01-settings.md b/docs.it/configuration/01-settings.md new file mode 100644 index 00000000..9ad055de --- /dev/null +++ b/docs.it/configuration/01-settings.md @@ -0,0 +1,56 @@ +# General Settings + +To set options use + +```lua +vim.opt.{option} +``` + +## Example options + +```lua +vim.opt.backup = false -- creates a backup file +vim.opt.clipboard = "unnamedplus" -- allows neovim to access the system clipboard +vim.opt.cmdheight = 2 -- more space in the neovim command line for displaying messages +vim.opt.colorcolumn = "99999" -- fixes indentline for now +vim.opt.completeopt = { "menuone", "noselect" } +vim.opt.conceallevel = 0 -- so that `` is visible in markdown files +vim.opt.fileencoding = "utf-8" -- the encoding written to a file +vim.opt.foldmethod = "manual" -- folding set to "expr" for treesitter based folding +vim.opt.foldexpr = "" -- set to "nvim_treesitter#foldexpr()" for treesitter based folding +vim.opt.guifont = "monospace:h17" -- the font used in graphical neovim applications +vim.opt.hidden = true -- required to keep multiple buffers and open multiple buffers +vim.opt.hlsearch = true -- highlight all matches on previous search pattern +vim.opt.ignorecase = true -- ignore case in search patterns +vim.opt.mouse = "a" -- allow the mouse to be used in neovim +vim.opt.pumheight = 10 -- pop up menu height +vim.opt.showmode = false -- we don't need to see things like -- INSERT -- anymore +vim.opt.showtabline = 2 -- always show tabs +vim.opt.smartcase = true -- smart case +vim.opt.smartindent = true -- make indenting smarter again +vim.opt.splitbelow = true -- force all horizontal splits to go below current window +vim.opt.splitright = true -- force all vertical splits to go to the right of current window +vim.opt.swapfile = false -- creates a swapfile +vim.opt.termguicolors = true -- set term gui colors (most terminals support this) +vim.opt.timeoutlen = 100 -- time to wait for a mapped sequence to complete (in milliseconds) +vim.opt.title = true -- set the title of window to the value of the titlestring +vim.opt.titlestring = "%<%F%=%l/%L - nvim" -- what the title of the window will be set to +vim.opt.undodir = vim.fn.stdpath "cache" .. "/undo" +vim.opt.undofile = true -- enable persistent undo +vim.opt.updatetime = 300 -- faster completion +vim.opt.writebackup = false -- if a file is being edited by another program (or was written to file while editing with another program) it is not allowed to be edited +vim.opt.expandtab = true -- convert tabs to spaces +vim.opt.shiftwidth = 2 -- the number of spaces inserted for each indentation +vim.opt.tabstop = 2 -- insert 2 spaces for a tab +vim.opt.cursorline = true -- highlight the current line +vim.opt.number = true -- set numbered lines +vim.opt.relativenumber = false -- set relative numbered lines +vim.opt.numberwidth = 4 -- set number column width to 2 {default 4} +vim.opt.signcolumn = "yes" -- always show the sign column otherwise it would shift the text each time +vim.opt.wrap = false -- display lines as one long line +vim.opt.spell = false +vim.opt.spelllang = "en" +vim.opt.scrolloff = 8 -- is one of my fav +vim.opt.sidescrolloff = 8 +``` + diff --git a/docs.it/configuration/02-keybindings.md b/docs.it/configuration/02-keybindings.md new file mode 100644 index 00000000..804e3874 --- /dev/null +++ b/docs.it/configuration/02-keybindings.md @@ -0,0 +1,178 @@ +# Keybindings + +## General Bindings + +There are three style options for settings keybindings. + +### Vim style + +Set bindings with vim.cmd. For more details read `:help vim.cmd` + +```lua +# Just take your vim keybindings and wrap them in vim.cmd +vim.cmd("nnoremap W :w") + +# Multiline Statements +vim.cmd([[ + map bb :!bundle install + map gdm :Git diff master + imap jj +]]) + +# Calling lua functions +vim.cmd("nnoremap gi lua vim.lsp.buf.implementation()") +``` + +### Neovim style + +Use the `vim.api.nvim_set_keymap` function. Arguments for the function are: (mode, keybind, command, options). For more details read `:help map-arguments` + +```lua +vim.api.nvim_set_keymap('n', '', ':set hlsearch!', { noremap = true, silent = true }) +-- Vim equivalent +-- :nnoremap :set hlsearch + +vim.api.nvim_set_keymap('n', 'tegf', [[lua require('telescope.builtin').git_files()]], { noremap = true, silent = true }) +-- Vim equivalent +-- :nnoremap tegf lua require('telescope.builtin').git_files() + +vim.api.nvim_buf_set_keymap(0, '', 'cc', 'line(".") == 1 ? "cc" : "ggcc"', { noremap = true, expr = true }) +-- Vim equivalent +-- :noremap cc line('.') == 1 ? 'cc' : 'ggcc' +``` + +### LunarVim keybindings + +Use `Lk` to view the keybindings set by Lunarvim. + +To modify a single Lunarvim keymapping + +```lua + -- X closes a buffer + lvim.keys.normal_mode[""] = ":BufferClose" +``` + +To remove keymappings set by Lunarvim + +```lua + -- use the default vim behavior for H and L + lvim.keys.normal_mode[""] = false + lvim.keys.normal_mode[""] = false + -- vim.opt.scrolloff = 0 -- Required so L moves to the last line +``` + +### Listing what is mapped + +Use `Lk` to view the keybindings set by Lunarvim. + +To see if a particular key has already been bound: + +```lua +:verbose map +``` + +- :nmap for normal mode mappings +- :vmap for visual mode mappings +- :imap for insert mode mappings + +Or just list every mapping + +```lua +:map +``` + +To output this to a searchable buffer + +```lua +:enew|pu=execute('map') +``` + +To view keybindings for the nvimtree plugin. Make sure you're in an nvimtree buffer and type `g?` to toggle the keybindings help + +## Whichkey Bindings + +To add or remap keybindings for whichkey use `lvim.builtin.which_key.mappings` + +### Single mapping + +Map a single key. + +```lua +lvim.builtin.which_key.mappings["P"] = { + "lua require'telescope'.extensions.project.project{}", "Projects" +} +``` + +Adding a key to a existing submenu. + +```lua +lvim.builtin.which_key.mappings["tP"] = { + "lua require'telescope'.extensions.project.project{}", "Projects" +} +``` + +### Submenu mapping + +Map a group of keys. `Definitions` would be triggered by pressing `td`. The name for this menu would appear as `Trouble`. + +```lua +lvim.builtin.which_key.mappings["t"] = { + name = "Trouble", + r = { "Trouble lsp_references", "References" }, + f = { "Trouble lsp_definitions", "Definitions" }, + d = { "Trouble lsp_document_diagnostics", "Diagnosticss" }, + q = { "Trouble quickfix", "QuickFix" }, + l = { "Trouble loclist", "LocationList" }, + w = { "Trouble lsp_workspace_diagnostics", "Diagnosticss" }, +} +``` + +### Replace all whichkey mappings + +To clear all whichkey bindings and replace all mappings with your own, use this form. + +```lua +lvim.builtin.which_key.mappings = { + ["c"] = { "BufferClose!", "Close Buffer" }, + ["e"] = { "lua require'core.nvimtree'.toggle_tree()", "Explorer" }, + ["h"] = { 'let @/=""', "No Highlight" }, + + p = { + name = "Packer", + c = { "PackerCompile", "Compile" }, + i = { "PackerInstall", "Install" }, + r = { "lua require('lv-utils').reload_lv_config()", "Reload" }, + s = { "PackerSync", "Sync" }, + u = { "PackerUpdate", "Update" }, + }, +} +``` + +### Example mappings + +Consult the [LunarVim configuration for whichkey](https://github.com/LunarVim/LunarVim/blob/rolling/lua/lvim/core/which-key.lua) to see more examples of how to map keys. + +## Leader Key + +The default leader key is `Space`. This can be changed with the following + +```lua +lvim.leader = "space" +``` + +## Cursor Movement + +By default, when pressing left/right cursor keys, Vim will not move to the previous/next line after reaching first/last character in the line. This can be quite annoying for new users. Fortunately this behaviour can be easily changed by putting this in your vimrc file: + +To enable: + +```lua +lvim.line_wrap_cursor_movement = true +``` + +Enabling maps the following command + +```vim +set whichwrap+=<,>,h,l,[,] +``` + diff --git a/docs.it/configuration/03-colorschemes.md b/docs.it/configuration/03-colorschemes.md new file mode 100644 index 00000000..ea1ab62b --- /dev/null +++ b/docs.it/configuration/03-colorschemes.md @@ -0,0 +1,44 @@ +# Colorscheme + +## Switching colors + +To switch color schemes on the fly, type the following command: + +```vim +:Telescope colorscheme +``` + +You can also press `Space` `s` `p` to cycle through colorschemes with a preview. + +To change the color scheme permanently, modify `config.lua` + +```lua +lvim.colorscheme = 'desert' +``` + +## Installing colorschemes + +You can add any colorscheme you like. Just add a plugin with the colorscheme of your choice. For more information on installing plugins [look here. ](../plugins/README.md) + +[This is a list](https://github.com/rockerBOO/awesome-neovim#colorscheme) of colorschemes with tree-sitter support + +## Transparent Windows + +If you're using transparent windows enable this setting + +```lua +lvim.transparent_window = true +``` + +That enables the following settings + +```lua +cmd "au ColorScheme * hi Normal ctermbg=none guibg=none" +cmd "au ColorScheme * hi SignColumn ctermbg=none guibg=none" +cmd "au ColorScheme * hi NormalNC ctermbg=none guibg=none" +cmd "au ColorScheme * hi MsgArea ctermbg=none guibg=none" +cmd "au ColorScheme * hi TelescopeBorder ctermbg=none guibg=none" +cmd "au ColorScheme * hi NvimTreeNormal ctermbg=none guibg=none" +cmd "let &fcs='eob: '" +``` + diff --git a/docs.it/configuration/04-nerd-fonts.md b/docs.it/configuration/04-nerd-fonts.md new file mode 100644 index 00000000..1bac027b --- /dev/null +++ b/docs.it/configuration/04-nerd-fonts.md @@ -0,0 +1,42 @@ +--- +title: Nerd Fonts +--- + +# [ Nerd Fonts ](https://www.nerdfonts.com/) + +From the repo: + +> "Nerd Fonts is a project that patches developer targeted fonts with a high number of glyphs (icons). Specifically to add a high number of extra glyphs from popular 'iconic fonts' such as Font Awesome ➶, Devicons ➶, Octicons ➶, and others." + +## Installing a font + +### Video Explanation + +[Installing fonts with included icon sets](https://www.youtube.com/watch?v=fR4ThXzhQYI&t=364s) + +### Easy Installer + +Visit [this repo](https://github.com/ronniedroid/getnf) for an easy way to install nerd fonts. + +### Manual Install + +1. Go to the [pached fonts directory](https://www.nerdfonts.com/font-downloads) +1. Copy the downloaded files to `~/.local/share/fonts` + +### Curl Download + +```bash +mkdir -p ~/.local/share/fonts +cd ~/.local/share/fonts && curl -fLo "Droid Sans Mono for Powerline Nerd Font Complete.otf" https://github.com/ryanoasis/nerd-fonts/raw/master/patched-fonts/DroidSansMono/complete/Droid%20Sans%20Mono%20Nerd%20Font%20Complete.otf +``` + +### TTF vs OTF + +OTF is a newer standard based on TTF, when given the option you should generally choose OTF. + +[ Here ](https://www.makeuseof.com/tag/otf-vs-ttf-fonts-one-better/) is good article explaining the difference. + +## Terminal settings + +After installing your font, you will have to refresh your font cache by doing `fc-cache -f -v`. Then you will have to change your terminal settings to use the font you just installed. Please refer to your terminal's documentation for changing the terminal font. + diff --git a/docs.it/configuration/05-autocommands.md b/docs.it/configuration/05-autocommands.md new file mode 100644 index 00000000..7570317c --- /dev/null +++ b/docs.it/configuration/05-autocommands.md @@ -0,0 +1,40 @@ +# Autocommands + +To set up autocommands use the native nvim api `vim.api.nvim_create_autocmd`, or use the helper Lunarvim table `lvim.autocommands` which will be passed to [define_autocmds()](https://github.com/LunarVim/lunarvim/blob/3475f7675d8928b49c85878dfc2912407de57342/lua/lvim/core/autocmds.lua#L177) automatically. +```lua +lvim.autocommands = { + "BufEnter", -- see `:h autocmd-events` + { -- this table is passed verbatim as `opts` to `nvim_create_autocmd` + pattern = { "*.json", "*.jsonc" }, -- see `:h autocmd-events` + command = "setlocal wrap", + } + }, +``` +This will run a command at a given event for the given filetype. + +An example using the nvim api could look like this: +```lua +vim.api.nvim_create_autocmd("BufEnter", { + pattern = { "*.json", "*.jsonc" }, + -- enable wrap mode for json files only + command = "setlocal wrap", +}) +``` +You can also add lua callbacks + +```lua +lvim.autocommands = { + { + "BufWinEnter", { + pattern = { "*.cpp", "*.hpp" }, + callback = function() + -- DYI editorconfig + if vim.loop.cwd() == "path/to/my/project" then + vim.cmd [[setlocal tabstop=8 shiftwidth=8]] + end + end + }, + } +} +``` + diff --git a/docs.it/configuration/06-statusline.md b/docs.it/configuration/06-statusline.md new file mode 100644 index 00000000..aa3147b1 --- /dev/null +++ b/docs.it/configuration/06-statusline.md @@ -0,0 +1,143 @@ +# Statusline + +LunarVim uses `lualine` as a default statusline. + +Configuration is same as that of lualine with full support. See [Lualine README.md](https://github.com/nvim-lualine/lualine.nvim/blob/master/README.md) + +In addition, LunarVim provides predefined styles(layout) and components. + +## Style + +There are three style options LunarVim accepts, + +- lvim + > LunarVim's default layout +- default + > Lualine's default layout +- none + > Empty layout + +To set style other than `"lvim" style`, + +```lua +lvim.builtin.lualine.style = "default" -- or "none" +``` + +
+ +## Component + +You can use any component that `lualine` provides and `LunarVim` provides. + +**LunarVim's components** + +`mode`, `branch`, `filename`, `diff`, `python_env`, `diagnostics`, `treesitter`, `lsp`, `location`, `progress`, `spaces`, `encoding`, `filetype`, `scrollbar` + +To set `lualine's "diff"` component to section c of `"default" style`, + +```lua +lvim.builtin.lualine.style = "default" +lvim.builtin.lualine.sections.lualine_c = { "diff" } +``` + +To set `LunarVim's "spaces" and "location"` components to section y and `lualine's "mode"` component to section a of `"lvim" style`, + +```lua +-- no need to set style = "lvim" +local components = require("lvim.core.lualine.components") + +lvim.builtin.lualine.sections.lualine_a = { "mode" } +lvim.builtin.lualine.sections.lualine_y = { + components.spaces, + components.location +} +``` + +
+ +## Theme + +LunarVim automatically detects current colorscheme and set it as theme. + +To change your colorscheme, see [Colorscheme](./03-colorschemes.md) + +If there is no matching theme, it will fallback to `"auto"` theme provided by lualine. + +In case you want to use different theme, set it manually, + +```lua +lvim.builtin.lualine.options.theme = "gruvbox" +``` + +To customize existing theme, +```lua +local custom_gruvbox = require "lualine.themes.gruvbox_dark" +custom_gruvbox.insert.b = { fg = custom_gruvbox.insert.a.bg, gui = "bold" } +custom_gruvbox.visual.b = { fg = custom_gruvbox.visual.a.bg, gui = "bold" } +custom_gruvbox.replace.b = { fg = custom_gruvbox.replace.a.bg, gui = "bold" } +custom_gruvbox.command.b = { fg = custom_gruvbox.command.a.bg, gui = "bold" } + +lvim.builtin.lualine.options.theme = custom_gruvbox +``` + +To create your own theme, + +```lua +local colors = { + color2 = "#0f1419", + color3 = "#ffee99", + color4 = "#e6e1cf", + color5 = "#14191f", + color13 = "#b8cc52", + color10 = "#36a3d9", + color8 = "#f07178", + color9 = "#3e4b59", +} + +lvim.builtin.lualine.options.theme = { + normal = { + c = { fg = colors.color9, bg = colors.color2 }, + a = { fg = colors.color2, bg = colors.color10, gui = "bold" }, + b = { fg = colors.color4, bg = colors.color5 }, + }, + insert = { + a = { fg = colors.color2, bg = colors.color13, gui = "bold" }, + b = { fg = colors.color4, bg = colors.color5 }, + }, + visual = { + a = { fg = colors.color2, bg = colors.color3, gui = "bold" }, + b = { fg = colors.color4, bg = colors.color5 }, + }, + replace = { + a = { fg = colors.color2, bg = colors.color8, gui = "bold" }, + b = { fg = colors.color4, bg = colors.color5 }, + }, + inactive = { + c = { fg = colors.color4, bg = colors.color2 }, + a = { fg = colors.color4, bg = colors.color5, gui = "bold" }, + b = { fg = colors.color4, bg = colors.color5 }, + }, +} +``` + +
+ +## Callback + +Callback function is available for more flexibility. + +It will run when configuration is done, + +```lua +lvim.builtin.lualine.on_config_done = function(lualine) + local config = lualine.get_config() + local components = require "core.lualine.components" + + config.sections.lualine_x[3].color.bg = "#2c2c2c" + table.remove(config.sections.lualine_x, 2) -- remove treesitter icon + table.insert(config.sections.lualine_x, components.location) + lualine.setup(config) +end +``` + +If you want to go way beyond with configuration, check [jimcornmell's setup](https://github.com/jimcornmell/lvim/blob/main/lua/user/lualine.lua) as a reference. diff --git a/docs.it/configuration/07-ftplugin.md b/docs.it/configuration/07-ftplugin.md new file mode 100644 index 00000000..2aec73ec --- /dev/null +++ b/docs.it/configuration/07-ftplugin.md @@ -0,0 +1,15 @@ +# FTPlugin (filetype plugin) + +## Description + +From `:h ftplugin` + +> A filetype plugin is like a global plugin, except that it sets options and +> defines mappings for the current buffer only. + +Example for setting specific `shiftwidth` and `tabstop` that only apply for `C` file-types. + +```lua +-- create a file at $LUNARVIM_CONFIG_DIR/after/ftplugin/c.lua +vim.cmd("setlocal tabstop=4 shiftwidth=4") +``` diff --git a/docs.it/configuration/08-custom-snippets.md b/docs.it/configuration/08-custom-snippets.md new file mode 100644 index 00000000..5ac04e8a --- /dev/null +++ b/docs.it/configuration/08-custom-snippets.md @@ -0,0 +1,69 @@ +# Custom snippets + +## Description + +You can add your own snippets to LunarVim. + +Custom snippets can be defined as json or lua. + +### json version + +First create a folder : `~/.config/lvim/snippets/` next to your `config.lua` + +Then in there you need at least 2 files. + +The first file describes where your snippets are : + +`package.json` : + +```json +{ + "name": "nvim-snippets", + "author": "authorname", + "engines": { + "vscode": "^1.11.0" + }, + "contributes": { + "snippets": [ + { + "language": "python", + "path": "./python.json" + } + ] + } +} +``` + +For each language, create a file like this : + +`python.json` : + +```json +{ + "hello": { + "prefix": "hello", + "body": [ + "print('Hello, World!')" + ], + "description": "print Hello, World!" + } +} +``` + +You should be able to expand `hello` into `print("Hello, World!")` + +### lua version + +First create a folder named `luasnippets` next to your `config.lua`. For example `~/.config/lvim/luasnippets/` + +Then, inside that folder, create a lua file named with the filetype you want to create snippets for. For example, for creating snippets for lua, create a (redundant, but correct) file named `lua.lua`. Then you put your files there like this: + +```lua +return { + s("foo", { t "Expands to bar" }), +} +``` +LuaSnip is able to hot-reload snippets defined in lua when you save them, but you may need to restart LunarVim the first time you create the snippet files. +Please note that LuaSnip injects a bunch of utility globals when it loads your snippets (in this example the `s` and `t` functions), so you don't need to care about requiring or defining them. To get more detailed information and examples please read the [LuaSnip docs about this topic](https://github.com/L3MON4D3/LuaSnip/blob/master/DOC.md#lua) + +### TODO: snipmate version diff --git a/docs.it/configuration/README.md b/docs.it/configuration/README.md new file mode 100644 index 00000000..7bb75ebd --- /dev/null +++ b/docs.it/configuration/README.md @@ -0,0 +1,31 @@ +# Configuration + +You can configure LunarVim by using the configuration file located in `~/.config/lvim/config.lua`. + +To get started quickly, copy the sample configuration file + +```bash +cp ~/.local/share/lunarvim/lvim/utils/installer/config.example.lua ~/.config/lvim/config.lua +``` + +Many LunarVim internal settings are exposed through the `lvim` global object. +To see a list of all available settings, run this command from either `~/.config/lvim/` or `~/.local/share/lunarvim/lvim` to generate an lv-settings.lua file. + +```bash +lvim --headless +'lua require("lvim.utils").generate_settings()' +qa && sort -o lv-settings.lua{,} +``` + +Here is a sample of the output. + +```lua +lvim.builtin.telescope.defaults.initial_mode = "insert" +lvim.builtin.telescope.defaults.layout_config.horizontal.mirror = false +lvim.builtin.telescope.defaults.layout_config.preview_cutoff = 120 +lvim.builtin.telescope.defaults.layout_config.prompt_position = "bottom" +lvim.builtin.telescope.defaults.layout_config.vertical.mirror = false +lvim.builtin.telescope.defaults.layout_config.width = 0.75 +lvim.builtin.telescope.defaults.layout_strategy = "horizontal" +``` + +If you want to keep launching LunarVim with the nvim command, add an alias entry to your shell's config file: `alias nvim=lvim`. To temporarily revert to the default nvim prefix it with a backslash `\nvim`. If you create this alias, you may also want to explicitly set your editor as well `export EDITOR='lvim'`. This will tell command line tools like git to use LunarVim as your editor. + diff --git a/docs.it/configuration/_category_.json b/docs.it/configuration/_category_.json new file mode 100644 index 00000000..484e2553 --- /dev/null +++ b/docs.it/configuration/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 4 +} diff --git a/docs.it/dev/02-under-the-hood.md b/docs.it/dev/02-under-the-hood.md new file mode 100644 index 00000000..062913d5 --- /dev/null +++ b/docs.it/dev/02-under-the-hood.md @@ -0,0 +1,74 @@ +# Under the Hood + +# Logic from start to window load + +![LunarVim initialization flowchart](./lunarvim_initialization.png "LunarVim initialization flowchart") + +The above chart was made with the following markdown using mermaid markdown +Last updated Wed Aug 4 10:04:27 PM CEST 2021 + +```mermaid +graph TD + rtp[Set runtime path] --> config_check[Ensure user config exists] + config_check -- lv-config.lua --> print_rename_message["Print a message asking user to rename file"] + config_check -- config.lua --> load_defaults[Load default_config] + print_rename_message --> load_defaults + load_defaults --> load_lvim[Load lvim globals: builtin, lsp, diagnostics, misc] + load_lvim --> load_lsp[Load lsp file] + load_lsp --> load_common_on_attach( Load common_on_attach for use in lang configuration ) + load_common_on_attach --> load_common_capabilities( Load common_capabilities for use in lang configuration) + load_common_capabilities --> load_common_on_init( Set common_on_init for use in lang configuration ) + load_common_on_init --> load_json[Load Json schemas] + load_json --> load_lang[Load lvim globals: lang] + load_lang --> load_keymappings[Load Keymappings data but don't set Keymappings] + load_keymappings --> load_builtin_configs[Load configuration for builtin plugins] + load_builtin_configs --> load_autocommands[Load autocommands but don't set them] + load_autocommands --> set_default_options( Set the default options for the neovim editor ) + set_default_options --> load_user_config[Load user configuration file] + load_user_config -- status ok --> set_nvim_settings[Set neovim settings] + load_user_config -- status fail --> print_user_config_error["Print something is wrong with your config"] + print_user_config_error --> set_nvim_settings + set_nvim_settings --> define_autogroups[Define autogroups] + define_autogroups --> setup_plugins[Setup Plugins] + setup_plugins --> plugin_callback_check["Is there a callback set for lvim.builtin.?"] + plugin_callback_check -- Yes --> plugin_callback["Call the callback for the plugin"] + plugin_callback_check -- No --> colorscheme[Set the colorscheme] + plugin_callback --> colorscheme + colorscheme --> autoformat[Is format on save enabled?] + autoformat -- yes --> autoformat_active[Set an autocommand to enable autoformatting] + autoformat -- no --> autoformat_disabled[Look for an autoformat autocommand and remove it if it exists] + autoformat_active --> core_commands[Load core.commands: QuickFixToggle] + autoformat_disabled --> core_commands + core_commands --> lsp_handlers["Set up lsp handlers: publishDiagnostics, hover, signatureHelp"] + lsp_handlers --> null-ls["Add null-ls as a language server in lspconfig"] + null-ls --> nlsp["Set up NlspSettings"] + nlsp --> set_keymappings["Apply default keymappings"] + set_keymappings --> override_keymaps["Append to default keymappings"] + override_keymaps --> setup_common_on_init["Setup common_on_init"] + setup_common_on_init --> common_on_init_callback_check["Does a common on init callback exist?"] + common_on_init_callback_check -- Yes --> common_on_init_callback["Call the callback"] + common_on_init_callback_check -- No --> check_for_formatters["Check if formatters are explicitly set"] + common_on_init_callback --> check_for_formatters + check_for_formatters -- Yes --> turn_off_lsp_formatting["Turn off resolved_capabilities.document_formatting"] + turn_off_lsp_formatting --> setup_common_on_attach["Setup common on attach"] + setup_common_on_attach -- Has an lsp.on_attach_callback --> call_lsp_on_attach_callback["Call lsp on_attach callback"] + check_for_formatters -- No --> setup_common_on_attach + setup_common_on_attach -- No callback defined --> smart_cwd_check["Is lvim.lsp.smart_cwd set to true?"] + smart_cwd_check -- True --> query_lsp_for_cwd["Use root directory from LSP"] + smart_cwd_check -- False --> setup_null_ls["Setup null-ls formatters and linters"] + setup_null_ls --> validate_provider_request["Does a valid provider exist?"] + query_lsp_for_cwd --> setup_null_ls + call_lsp_on_attach_callback --> smart_cwd_check + validate_provider_request -- nil or empty provider --> lsp_setup["Setup LSP"] + validate_provider_request -- Executable exists --> is_provider_eslint["Is provider eslint?"] + is_provider_eslint -- Yes --> replace_with_eslintd["Replace it with eslint_d"] + replace_with_eslintd --> add_provider_to_table["Add it to the provider to a table"] + is_provider_eslint -- No --> add_provider_to_table + validate_provider_request -- Executable does not exist --> print_provider_error["Print error about not being able to find formatting executable"] + add_provider_to_table --> lsp_setup + print_provider_error --> lsp_setup + lsp_setup --> lsp_override_check["Is there an lvim.lsp.automatic_configuration.skipped_servers set?"] + lsp_override_check -- Yes --> lsp_override["Use the override table"] + lsp_override_check -- No --> first_window_load["First window loads"] + lsp_override --> first_window_load +``` diff --git a/docs.it/dev/README.md b/docs.it/dev/README.md new file mode 100644 index 00000000..e357d73a --- /dev/null +++ b/docs.it/dev/README.md @@ -0,0 +1,84 @@ +# Development of Lunarvim + +## Getting started + +We recommend setting up a symlink to your fork: + +```bash +cd ~/.local/share/lunarvim/ +ln -s ~/dev/Lunarvim ~/.local/share/lunarvim/lvim_dev +``` + +Your output should be something like: + +```bash +$ ls -a +lrwxrwxrwx 1 user user 37 sep 23 14:35 lvim_dev -> /home/user/dev/LunarVim +``` + +--- + +Now switch your lvim to the development setup: + +```bash +cd ~/.local/share/lunarvim/ +mv lvim lvim_back +mv lvim_dev lvim +``` + +--- + +Going back to lvim + +```bash +cd ~/.local/share/lunarvim/ +mv lvim lvim_dev +mv lvim_back lvim +``` + +To test that you can get some output from `lvim` add the following to your `init.lua` file in your fork. + +```lua +print ("it works") +``` + +```bash +lvim +``` + +Now type `:messages`. Happy contributing! + +## Lua + Neovim = :heart: + +To get started, [this guide](https://github.com/nanotee/nvim-lua-guide) covers many points that will get you going with Lua and how Neovim works. + +## Official Documentation + +The [reference manual](https://www.lua.org/manual/5.4/) is the official definition of the Lua language. + +If you don't know about it, [DevDocs](https://devdocs.io/lua~5.4/) combines multiple API documentations in a fast, organized, and searchable interface. + +## Neovim Documentation + +Neovim provides a [standard library](https://neovim.io/doc/user/lua.html) which you should know about. + +It provides many functions that you wish were implemented in Lua's stdlib, for instance `strings.split`. + +It also comes with a [LSP framework](https://neovim.io/doc/user/lsp.html) and [much more](https://neovim.io/doc/user/). + +## Style Guide + +LuaRock [style guide](https://github.com/luarocks/lua-style-guide) is a complete work that deserves a look if you want learn how to write consistent and robust code. + +It is based on many pre-existing guides, provides rationals for all their decisions, and worked successfully in a long-running project. + +## Code Quality + +To ensure code quality and a consistent style, our [CI](https://github.com/Lunarvim/LunarVim/actions) uses the following tools: + +- Lua: + - [Stylua](https://github.com/JohnnyMorganz/StyLua). An opinionated Lua code formatter. + - [Luacheck](https://github.com/mpeterv/luacheck). A tool for linting and static analysis of Lua code. +- Shell + - [Shfmt](https://github.com/mvdan/sh). A shell parser, formatter, and interpreter with bash support. + - [Shellcheck](https://github.com/koalaman/shellcheck). A static analysis tool for shell scripts. diff --git a/docs.it/dev/_category_.json b/docs.it/dev/_category_.json new file mode 100644 index 00000000..98231d78 --- /dev/null +++ b/docs.it/dev/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "For Developers", + "position": 7 +} diff --git a/docs.it/dev/lunarvim_initialization.png b/docs.it/dev/lunarvim_initialization.png new file mode 100644 index 0000000000000000000000000000000000000000..6427ab17e8173285a7c5026816fa744b83fbbc4f GIT binary patch literal 238395 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

s5k)E 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%0AXy45#sTX8savn`lh>S&7dOW!YC>fOEBL54t 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�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

Wpc?@%`g#MEc$3t2Srv~b<|~0 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�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 + +- `:LspInfo` + + - Contains basic information about all the servers that are running. + - keybind: `li` + +- `:LspInstallInfo` + + - Contains information about all the servers that you can manage with [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer). + - keybind: `lI` + +## LSP support + +### Installing and updating a server + +#### Automatic server installation + +By default, most supported language servers will get automatically installed once you open the supported file-type, e.g, opening a Python file for the first time will install `Pyright` and configure it automatically for you. + +- configuration option + +```lua +lvim.lsp.automatic_servers_installation = true +``` + +Please refer to [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer) to see the updated full list of currently available servers. + +To install a supported language server: + +```md +:LspInstall `` +``` + +You can also toggle `<:LspInstallInfo>` and interactively choose which servers to install. + +### Server override + +`lvim.lsp.automatic_configuration.skipped_servers` contains a list of servers that will **not** be automatically configured by default, for example only `tsserver` is allowed for JS-family languages, and when a language has more than one server available, then the most popular one is usually chosen. + +::: tip Notice +Overriding a server will completely bypass the lsp-installer, so you would have to manage the installation for any of those servers manually. +::: + +See the current list + +```lua +:lua print(vim.inspect(lvim.lsp.automatic_configuration.skipped_servers)) +``` + +See the default list + +```lua +:lua print(vim.inspect(lvim.lsp.automatic_configuration.skipped_servers)) +``` + +::: tip Notice +Any changes to `lvim.lsp.automatic_configuration.skipped_servers` **must** be followed by `:LvimCacheReset` to take effect. +::: + +### Server setup + +LunarVim uses [filetype plugins](../configuration/07-ftplugin.md) to enable lazy-loading the setup of a language server. A template generator is used to create `ftplugin` files and populate them with the setup call. + +- configuration option + +```lua +lvim.lsp.templates_dir = join_paths(get_runtime_dir(), "after", "ftplugin") +``` + +A typical setup call with default arguments + +```lua +-- edit this file by running `:lua vim.cmd("edit " .. lvim.lsp.templates_dir .. "/lua.lua")` +require("lvim.lsp.manager").setup("sumneko_lua") +``` + +::: tip +You can quickly find these files by running `Lf` -> "Find LunarVim Files" +::: + +#### Overriding the default setup options + +Add the server you wish to configure manually to `lvim.lsp.automatic_configuration.skipped_servers`. + +```lua +vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "pyright" }) +``` + +Now you can set it up manually using the builtin [lsp-manager](https://github.com/LunarVim/LunarVim/blob/rolling/lua/lvim/lsp/manager.lua) + +```lua +--- list of options that should take predence over any of LunarVim's defaults +--- check the lspconfig documentation for a list of all possible options +local opts = {} +require("lvim.lsp.manager").setup("pyright", opts) +``` + +Alternatively, set it up using the `lspconfig` API directly + +```lua +--- check the lspconfig documentation for a list of all possible options +local opts = {} +require("lspconfig")["pyright"].setup(opts) +``` + +### Server settings + +To set a setting for your language server: + +```vim +:LspSettings +:LspSettings +``` + +This will create a file in `$LUNARVIM_CONFIG_DIR/lsp-settings`, to enable persistent changes. Refer to the documentation of [nlsp-settings](https://github.com/tamago324/nlsp-settings.nvim/blob/main/schemas/README.md) for a full updated list of supported language servers. + +::: tip +Make sure to install `jsonls` for autocompletion. +::: + +## Linting/Formatting + +Set a linter/formatter, this will override the language server formatting capabilities (if it exists) + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { + { command = "black" }, + { + command = "prettier", + args = { "--print-width", "100" }, + filetypes = { "typescript", "typescriptreact" }, + }, +} + +local linters = require "lvim.lsp.null-ls.linters" +linters.setup { + { command = "flake8" }, + { + command = "shellcheck", + args = { "--severity", "warning" }, + }, + { + command = "codespell", + filetypes = { "javascript", "python" }, + }, +} + +local code_actions = require "lvim.lsp.null-ls.code_actions" +code_actions.setup { + { + command = "proselint" + }, +} +``` + +Another method is to reference the linter/formatter/code_actions by their names, as referenced in [null-ls docs](https://github.com/jose-elias-alvarez/null-ls.nvim/blob/main/doc/BUILTINS.md), if you do not want to customize the command + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { + { name = "black" }, +} + +local linters = require "lvim.lsp.null-ls.linters" +linters.setup { + { name = "flake8" }, + { name = "shellcheck" }, + { + name = "codespell", + filetypes = { "javascript", "python" }, + }, +} + +local code_actions = require "lvim.lsp.null-ls.code_actions" +code_actions.setup { + { + name = "proselint" + }, +} +``` + +This will lookup the provided name in the builtin configurations of `null_ls` and apply them. It can be considered equivalent to `null_ls.builtins.diagnostics.{name}`/`null_ls.builtins.formatting.{name}`/`null_ls.builtins.code_actions.{name}` + +_Note: Formatters' or Linters' or Code Actions installation is not managed by LunarVim. Refer to the each tool's respective manual for installation steps._ + +### Custom arguments + +It's also possible to add custom arguments for each linter/formatter/code_actions. + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { + { + command = "prettier", + ---@usage arguments to pass to the formatter + -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}` + args = { "--print-width", "100" }, + }, +} + +local linters = require "lvim.lsp.null-ls.linters" +linters.setup { + { + command = "shellcheck", + ---@usage arguments to pass to the formatter + -- these cannot contain whitespaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}` + args = { "--severity", "warning" }, + }, +} + +local code_actions = require "lvim.lsp.null-ls.code_actions" +code_actions.setup { + { + command = "proselint", + args = { "--json" }, + }, +} +``` + +_Note: remember that arguments cannot contains spaces, options such as `--line-width 80` become either `{'--line-width', '80'}` or `{'--line-width=80'}`._ + +### Multi languages per linter/formatter + +By default a formatter will attach to all the filetypes it supports. + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { + { + command = "prettier", + ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports. + filetypes = { "typescript", "typescriptreact" }, + }, +} +``` + +_Note: removing the `filetypes` argument will allow the formatter to attach to all the default filetypes it supports._ + +### Multi linters/formatters/code_actions per language + +There are no restrictions on setting up multiple formatters per language + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { + { + { command = "black", filetypes = { "python" } }, + { command = "isort", filetypes = { "python" } }, + }, +} + +local linters = require "lvim.lsp.null-ls.linters" +linters.setup { + { + command = "codespell", + ---@usage specify which filetypes to enable. By default a providers will attach to all the filetypes it supports. + filetypes = { "javascript", "python" }, + }, +} + +local code_actions = require "lvim.lsp.null-ls.code_actions" +code_actions.setup { + { + command = "proselint", + args = { "--json" }, + filetypes = { "markdown", "tex" }, + }, +} +``` + +### Lazy-loading the linter/formatter/code_actions setup + +By default, all null-ls providers are checked on startup. If you want to avoid that or want to only set up the provider when you opening the associated file-type, +then you can use [filetype plugins](../configuration/07-ftplugin.md) for this purpose. + +Let's take `python` as an example: + +1. create a file called `python.lua` in the `$LUNARVIM_CONFIG_DIR/after/ftplugin` folder +2. add the following snippet + +```lua +local linters = require "lvim.lsp.null-ls.linters" +linters.setup({{command = "flake8", filetypes = { "python" } }}) +``` + +### Formatting on save + +You can disable auto-command and is to true by default. + +- configuration option + +```lua +lvim.format_on_save = true +``` diff --git a/docs.it/languages/Terraform.md b/docs.it/languages/Terraform.md new file mode 100644 index 00000000..621666bc --- /dev/null +++ b/docs.it/languages/Terraform.md @@ -0,0 +1,30 @@ +# Terraform + +## Syntax highlighting + + +First, within LunarVim run the following: + +```vim +:TSInstall hcl +``` + +To enable Syntax Highlighting for `.tf` files as well, just add this to your `config.lua`: +```lua +local parser_configs = require("nvim-treesitter.parsers").get_parser_configs() +parser_configs.hcl = { + filetype = "hcl", "terraform", +} +``` + +## Supported language servers + +```lua +terraform = { "terraform", "terraformls"}, +``` + +## Supported formatters + +```lua +terraform = { "terraform"} } +``` diff --git a/docs.it/languages/_category_.json b/docs.it/languages/_category_.json new file mode 100644 index 00000000..6b13ae71 --- /dev/null +++ b/docs.it/languages/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Languages", + "position": 5 +} diff --git a/docs.it/languages/c_cpp.md b/docs.it/languages/c_cpp.md new file mode 100644 index 00000000..52020007 --- /dev/null +++ b/docs.it/languages/c_cpp.md @@ -0,0 +1,118 @@ +# C/C++ + +## Install Syntax Highlighting + +```vim +:TSInstall c +``` + +```vim +:TSInstall cpp +``` + +## Install Language Server + +You can install `clangd` language server using the [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer) + +```vim +:LspInstall clangd +``` + +Check the official documentation for other methods . + +## Formatters + +`clangd` language server supports formatting using `clang_format` by default. Optionally, you can use `uncrustify` or `clang-format` directly if you don't want to use `clangd`. + +Configuration in `~/.config/lvim/config.lua` + +```lua +local formatters = require "lvim.lsp.null-ls.formatters" +formatters.setup { { exe = "uncrustify", args = {} } } +``` + +The selected formatter must be installed separately. + +## LSP Settings + +If you need specific settings for `clangd` then you can override it like this + +```lua +-- check the full default list `:lua print(vim.inspect(lvim.lsp.automatic_configuration.set_keymappings))` +vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "clangd" }) +``` + +Now you can customize the setup completely + +```lua +-- some settings can only passed as commandline flags `clangd --help` +local clangd_flags = { + "--all-scopes-completion", + "--suggest-missing-includes", + "--background-index", + "--pch-storage=disk", + "--cross-file-rename", + "--log=info", + "--completion-style=detailed", + "--enable-config", -- clangd 11+ supports reading from .clangd configuration file + "--clang-tidy", + -- "--clang-tidy-checks=-*,llvm-*,clang-analyzer-*,modernize-*,-modernize-use-trailing-return-type", + -- "--fallback-style=Google", + -- "--header-insertion=never", + -- "--query-driver=" +} + +local clangd_bin = "clangd" + +local custom_on_attach = function(client, bufnr) + require("lvim.lsp").common_on_attach(client, bufnr) + local opts = { noremap = true, silent = true } + vim.api.nvim_buf_set_keymap(bufnr, "n", "lh", "ClangdSwitchSourceHeader", opts) +end + +local opts = { + cmd = { clangd_bin, unpack(clangd_flags) }, + on_attach = custom_on_attach, +} + +require("lvim.lsp.manager").setup("clangd", opts) +``` + +Refer to the official documentation if you face any issues . + +## Debugger + +```vim +:DIInstall ccppr_vsc +``` + +To enable pretty-printing, create a custom configuration: + +```lua +-- ~/.config/lvim/ftplugin/cpp.lua +local dap_install = require "dap-install" +dap_install.config("ccppr_vsc", { + adapters = { + type = "executable", + }, + configurations = { + { + type = "cpptools", + request = "launch", + name = "Launch with pretty-print", + program = function() + return vim.fn.input('Path to exe: ', vim.fn.getcwd() .. '/', 'file') + end, + cwd = "${workspaceFolder}", + stopOnEntry = true, + setupCommands = { + { + description = "Enable pretty-printing", + text = "-enable-pretty-printing", + } + } + }, + } +}) + +``` diff --git a/docs.it/languages/csharp.md b/docs.it/languages/csharp.md new file mode 100644 index 00000000..0dc13bf1 --- /dev/null +++ b/docs.it/languages/csharp.md @@ -0,0 +1,19 @@ +# C# (csharp) + +## Install Syntax Highlighting + +```vim +:TSInstall c_sharp +``` + +## Install Language Server + +```vim +:LspInstall c# +``` + +## Formatters + +The csharp language server OmniSharp supports formatting. Formatting is automatically enabled by installing the csharp language server. The formatting options can be changed by with the [OmniSharp configuration options](https://github.com/OmniSharp/omnisharp-roslyn/wiki/Configuration-Options). + +[clang-format](https://www.electronjs.org/docs/development/clang-format) can optionally be used as a C# formatter. After installing the `clang-format` the formatter is enabled with configuration. OmniSharp formatter is then automatically disabled. diff --git a/docs.it/languages/go.md b/docs.it/languages/go.md new file mode 100644 index 00000000..bf6454cb --- /dev/null +++ b/docs.it/languages/go.md @@ -0,0 +1,92 @@ +# Go + +## Install Syntax Highlighting + +```vim +:TSInstall go +``` + +## Supported language servers + +```lua +go = { "gopls" } +``` + +## Supported formatters + +```lua +go = { "gofmt", "gofumpt", "goimports", "golines" } +``` + +## LSP Settings + +```vim +:LspSettings gopls +``` + +Configure `json` to use auto-completion + +## Debugger + +```vim +:DIInstall go_delve +``` + +Using delve directly: + +```lua +-- ~/.config/lvim/ftplugin/go.lua +local dap_install = require "dap-install" +dap_install.config("go_delve", {}) +``` + +Using the [vscode-go debug adapter](https://github.com/mfussenegger/nvim-dap/wiki/Debug-Adapter-installation#go): + +```lua +local dap = require "dap" +dap.adapters.go = { + type = 'executable'; + command = 'node'; + args = {os.getenv('HOME') .. '/vscode-go/dist/debugAdapter.js'}; -- specify the path to the adapter +} +dap.configurations.go = { + { + type = "go", + name = "Attach", + request = "attach", + processId = require("dap.utils").pick_process, + program = "${workspaceFolder}", + dlvToolPath = vim.fn.exepath('dlv') + }, + { + type = "go", + name = "Debug curr file", + request = "launch", + program = "${file}", + dlvToolPath = vim.fn.exepath('dlv') + }, + { + type = "go", + name = "Debug", + request = "launch", + program = "${workspaceFolder}", + dlvToolPath = vim.fn.exepath('dlv') + }, + { + type = "go", + name = "Debug curr test", + request = "launch", + mode = "test", + program = "${file}", + dlvToolPath = vim.fn.exepath('dlv') + }, + { + type = "go", + name = "Debug test", + request = "launch", + mode = "test", + program = "${workspaceFolder}", + dlvToolPath = vim.fn.exepath('dlv') + }, +} +``` diff --git a/docs.it/languages/java.md b/docs.it/languages/java.md new file mode 100644 index 00000000..1736b661 --- /dev/null +++ b/docs.it/languages/java.md @@ -0,0 +1,52 @@ +# Java + +## Install Syntax Highlighting + +```vim +:TSInstall java +``` + +## Supported language servers + +```lua +java = { "jdtls" } +``` + +NOTE: jdtls requires jdk-11 or newer to run. + +## Supported formatters + +```lua +java = { "clang-format", "uncrustify" } +``` + +## LSP Settings + +```lua +:LspSettings jdtls +``` +This will generate the `jdtls.json` file where you can change the settings, the example document has this structure, but is too large to put it all here +```json +{ + "$schema": "http://json-schema.org/draft-04/schema#", + "description": "This is onyl an example, the full document has mora than 700 lines", + "properties": { + "java.autobuild.enabled": { + "default": true, + "description": "Go to the original document, this is just an example", + "scope": "window", + "type": "boolean" + }, + "java.codeGeneration.generateComments": { + "default": false, + "description": "Go to the original document, this is just an example", + "scope": "window", + "type": "boolean" + }, + } +``` +You can find the full document at nlsp-settings [generated schema](https://github.com/tamago324/nlsp-settings.nvim/blob/main/schemas/_generated/jdtls.json) + +## Debugger + +(TODO) diff --git a/docs.it/languages/javascript.md b/docs.it/languages/javascript.md new file mode 100644 index 00000000..d491519f --- /dev/null +++ b/docs.it/languages/javascript.md @@ -0,0 +1,45 @@ +# JavaScript + +## Syntax highlighting + +```vim +:TSInstall javascript +``` + +## Supported language servers + +```lua +javascript = { + "denols", "ember", "eslint", "eslintls", "rome", "stylelint_lsp", "tailwindcss", "tsserver" + } +``` + +Only `tsserver` is enabled by default and the other servers need to be [manually configured](./README.md#manually-configured-servers). + +### JavaScript standalone server (tsserver) + +`tsserver` requires one of the following files/folders : `package.json`, [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html), [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) or `.git.` in the root directory of the project + +See [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#tsserver) for more information about the tsserver language server configuration options. + +## Supported formatters + +```lua +javascript = { "deno", "eslint", "eslint_d", "prettier", "prettier_d_slim", "prettierd", "rustywind" } +``` + +The configured formatter(s) must be installed separately. + +## Supported linters + +```lua +javascript = { "eslint", "eslint_d" } +``` + +The configured linter(s) must be installed separately. + +## Supported language servers + +```lua +javascript = { "denols", "ember", "eslint", "eslintls", "rome", "stylelint_lsp", "tailwindcss", "tsserver" } +``` diff --git a/docs.it/languages/json.md b/docs.it/languages/json.md new file mode 100644 index 00000000..9b827615 --- /dev/null +++ b/docs.it/languages/json.md @@ -0,0 +1,19 @@ +# JSON + +## Install Syntax Highlighting + +```vim +:TSInstall json +``` + +## Supported language servers + +```lua +json = { "jsonls", "rome" } +``` + +## Supported formatters + +```lua +json = { "fixjson", "prettier", "prettier_d_slim", "prettierd", "python" } +``` diff --git a/docs.it/languages/julia.md b/docs.it/languages/julia.md new file mode 100644 index 00000000..d94f8f2a --- /dev/null +++ b/docs.it/languages/julia.md @@ -0,0 +1,53 @@ +# Julia + +## Install Syntax Highlighting + +```vim +:TSInstall julia +``` + +## Install Language Server + +The Juila language server, LanguageServer.jl, needs to be manually installed. +To install LanguageServer.jl in the location where [nvim-lspconfig +expects](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#julials) +run the following terminal command: + +```bash +julia --project=~/.julia/environments/nvim-lspconfig -e 'using Pkg; Pkg.add("LanguageServer")' +``` + +Create the file `~/.config/lvim/ftplugin/julia.lua` with the following line to +start the language server when opening Julia files. + +```lua +local opts = {} +-- re-use common lsp configurations (keybindings, buffer-highlight and cmp integration) +opts = require("lvim.lsp").get_common_opts() +require('lspconfig').julials.setup(opts) +``` + +## Supporting Plugins + +For Latex-to-Unicode substitutions, block-wise movements, and other niceties for +writing Julia, install the [julia-vim +](https://github.com/JuliaEditorSupport/julia-vim) plugin. + +## Pro Tip + +To leverage the +[edit](https://docs.julialang.org/en/v1/stdlib/InteractiveUtils/#InteractiveUtils.edit-Tuple{Any}) +functionality with LunarVim use the +[define_editor](https://docs.julialang.org/en/v1/stdlib/InteractiveUtils/#InteractiveUtils.define_editor) +method in `~/.julia/config/startup.jl` + +```julia +using InteractiveUtils + +ENV["JULIA_EDITOR"] = "lvim" + +InteractiveUtils.define_editor( + r"lvim", wait=true) do cmd, path, line + `$cmd +$line $path` +end +``` diff --git a/docs.it/languages/lua.md b/docs.it/languages/lua.md new file mode 100644 index 00000000..1065e489 --- /dev/null +++ b/docs.it/languages/lua.md @@ -0,0 +1,25 @@ +# Lua + +## Install Syntax Highlighting + +```vim +:TSInstall lua +``` + +## Supported language servers + +```lua +lua = { "sumneko_lua" } +``` + +## Supported formatters + +```lua +lua = { "lua-format", "stylua" } +``` + +## Supported linters + +```lua +lua = { "luacheck", "selene" } +``` diff --git a/docs.it/languages/powershell.md b/docs.it/languages/powershell.md new file mode 100644 index 00000000..c308b4f9 --- /dev/null +++ b/docs.it/languages/powershell.md @@ -0,0 +1,35 @@ +# PowerShell + +## Install Syntax Highlighting + +Currently there is no maintained PowerShell parser available. If needed, configure a unmaintained parser by adding the following code to e.g. `config.lua` + +```lua +local parser_config = require("nvim-treesitter.parsers").get_parser_configs() +parser_config.powershell = { + install_info = { + url = "https://github.com/jrsconfitto/tree-sitter-powershell", + files = {"src/parser.c"} + }, + filetype = "ps1", + used_by = { "psm1", "psd1", "pssc", "psxml", "cdxml" } +} +``` + +Install the configured parser. + +```lua +:TSInstall powershell +``` + +## Supported language servers + +```lua +ps1 = { "powershell_es" }, +``` + +For more information about the language server configuration, refer to [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#powershell_es) + +## Formatters + +Formatting is supported by the PowerShell ES language server without additional configuration. diff --git a/docs.it/languages/python.md b/docs.it/languages/python.md new file mode 100644 index 00000000..d344d86d --- /dev/null +++ b/docs.it/languages/python.md @@ -0,0 +1,43 @@ +# Python + +## Install Syntax Highlighting + +```vim +:TSInstall python +``` + +## Supported language servers + +```lua +python = { "jedi_language_server", "pylsp", "pyright" } +``` + +## Supported formatters + +```lua +python = { "autopep8", "black", "isort", "reorder-python-imports", "yapf" } +``` + +## Supported linters + +```lua +python = { "flake8", "pylint" } +``` + +## LSP Settings + +```vim +:LspSettings pyright +``` + +## Debugger + +```vim +:DIInstall python +``` + +```lua +-- ~/.config/lvim/ftplugin/python.lua +local dap_install = require "dap-install" +dap_install.config("python", {}) +``` diff --git a/docs.it/languages/qml.md b/docs.it/languages/qml.md new file mode 100644 index 00000000..a65741b8 --- /dev/null +++ b/docs.it/languages/qml.md @@ -0,0 +1,35 @@ +# QML + +## Install Syntax Highlighting + +There is no official Treesitter support for QML, so instead you could use [the +plugin](https://github.com/peterhoeg/vim-qml): + +```lua +{ + "peterhoeg/vim-qml", + event = "BufRead", + ft = { "qml" }, +}, +``` + +## Supported language servers + +Currently QML does not have an official LSP, but its development is currently +[in progress](https://bugreports.qt.io/browse/QTBUG-68406). + +## Supported formatters + +```lua +qml = { "qmlformat" } +``` + +## Supported linters + +```lua +qml = { "qmllint" } +``` + +## See also + +- [C/C++ Configuration](c_cpp.md) diff --git a/docs.it/languages/ruby.md b/docs.it/languages/ruby.md new file mode 100644 index 00000000..06e75cf8 --- /dev/null +++ b/docs.it/languages/ruby.md @@ -0,0 +1,31 @@ +# Ruby + +### Install Syntax Highlighting + +```vim +:TSInstall ruby +``` + +## Supported language servers + +```lua +ruby = { "solargraph" } +``` + +### Solargraph + +Project root is recognized by having one of the following files/folders in the root directory of the project: `Gemfile`, `.git`. + +Note: `Solargraph` should automatically detect and use `rubocop` for formatting. + +## Supported formatters + +```lua +ruby = { "rubocop", "rufo", "standardrb" } +``` + +## Supported linters + +```lua +ruby = { "rubocop", "standardrb" } +``` diff --git a/docs.it/languages/rust.md b/docs.it/languages/rust.md new file mode 100644 index 00000000..11be6d62 --- /dev/null +++ b/docs.it/languages/rust.md @@ -0,0 +1,82 @@ +# Rust + +## Install Syntax Highlighting + +```vim +:TSInstall rust +``` + +## Supported language servers + +```lua +rust = { "rust_analyzer" } +``` + +## Supported formatters + +```lua +rust = { "rustfmt" } +``` + +## LSP Settings + +```vim +:LspSettings rust_analyzer +``` + +## Extra Plugins + +```lua +vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "rust_analyzer" }) + +lvim.plugins = { + { + "simrat39/rust-tools.nvim", + -- ft = { "rust", "rs" }, -- IMPORTANT: re-enabling this seems to break inlay-hints + config = function() + require("rust-tools").setup { + tools = { + executor = require("rust-tools/executors").termopen, -- can be quickfix or termopen + reload_workspace_from_cargo_toml = true, + inlay_hints = { + auto = true, + only_current_line = false, + show_parameter_hints = true, + parameter_hints_prefix = "<-", + other_hints_prefix = "=>", + max_len_align = false, + max_len_align_padding = 1, + right_align = false, + right_align_padding = 7, + highlight = "Comment", + }, + hover_actions = { + border = { + { "╭", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╮", "FloatBorder" }, + { "│", "FloatBorder" }, + { "╯", "FloatBorder" }, + { "─", "FloatBorder" }, + { "╰", "FloatBorder" }, + { "│", "FloatBorder" }, + }, + auto_focus = true, + }, + }, + server = { + on_init = require("lvim.lsp").common_on_init, + on_attach = function(client, bufnr) + require("lvim.lsp").common_on_attach(client, bufnr) + local rt = require "rust-tools" + -- Hover actions + vim.keymap.set("n", "", rt.hover_actions.hover_actions, { buffer = bufnr }) + -- Code action groups + vim.keymap.set("n", "lA", rt.code_action_group.code_action_group, { buffer = bufnr }) + end, + }, + } + end, + }, +} +``` diff --git a/docs.it/languages/scala.md b/docs.it/languages/scala.md new file mode 100644 index 00000000..274ec38a --- /dev/null +++ b/docs.it/languages/scala.md @@ -0,0 +1,60 @@ +# Scala + +## Install Syntax Highlighting + +```vim +:TSInstall scala +``` + +## Install Language Server + +To get scala LSP support working in Lunarvim, first you need to do the prerequisites listed here https://github.com/scalameta/nvim-metals#prerequisites. + +Then use coursier to install the metals language server so that it is available on your PATH: + +`cs install metals` + +## Configure Lunarvim + +Create a file called `~/.config/lvim/lua/user/metals.lua`: + +```lua +local M = {} + +M.config = function() + local metals_config = require("metals").bare_config() + metals_config.on_attach = require("lvim.lsp").common_on_attach + metals_config.settings = { + showImplicitArguments = false, + showInferredType = true, + excludedPackages = {}, + } + metals_config.init_options.statusBarProvider = false + require("metals").initialize_or_attach { metals_config } +end + +return M +``` + +Add the following to your `config.lua` + +```lua +lvim.plugins = { + { + "scalameta/nvim-metals", + config = function() + require("user.metals").config() + end, + }, +} + +lvim.autocommands.custom_groups = { + { "FileType", "scala,sbt", "lua require('user.metals').config()" } +} +``` + +## Supported formatters + +```lua +scala = { "scalafmt" } +``` diff --git a/docs.it/languages/swift.md b/docs.it/languages/swift.md new file mode 100644 index 00000000..42c9f1b0 --- /dev/null +++ b/docs.it/languages/swift.md @@ -0,0 +1,38 @@ +# Swift + +## Install Syntax Highlighting +```vim +:TSInstall swift +``` + +## Install Language Server + +```vim +:LspInstall sourcekit +``` + + +## Configure Lunarvim + +The `sourcekit` language server is disabled (overridden) by default because of the conflict with `clangd` + +### Lsp Configuration +Create a file called `~/.config/lvim/ftplugin/swift.lua`: + +```lua +local opts = {} +require("lvim.lsp.manager").setup("sourcekit", opts) +``` +The default settings for the `sourcekit` lsp is: +```lua +default_config = { + cmd = { "sourcekit-lsp" } + filetypes = { "swift", "c", "cpp", "objective-c", "objective-cpp" } + root_dir = root_pattern("Package.swift", ".git") +} +``` +## Supported formatters + +```lua +swift = { "swiftformat" } +``` diff --git a/docs.it/languages/typescript.md b/docs.it/languages/typescript.md new file mode 100644 index 00000000..cd02b798 --- /dev/null +++ b/docs.it/languages/typescript.md @@ -0,0 +1,38 @@ +# TypeScript + +## Syntax highlighting + +```vim +:TSInstall typescript +:TSInstall tsx +``` + +## Supported language servers + +```lua +typescript = { "angularls", "denols", "ember", "eslint", "eslintls", "rome", "stylelint_lsp", "tailwindcss", "tsserver" } +``` + +Only `tsserver` is enabled by default and the other servers need to be [manually configured](./README.md#manually-configured-servers). + +### TypeScript standalone server (tsserver) + +`tsserver` requires one of the following files/folders : `package.json`, [`tsconfig.json`](https://www.typescriptlang.org/docs/handbook/tsconfig-json.html), [`jsconfig.json`](https://code.visualstudio.com/docs/languages/jsconfig) or `.git.` in the root directory of the project + +See [nvim-lspconfig](https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md#tsserver) for more information about the tsserver language server configuration options. + +## Supported formatters + +```lua +typescript = { "deno", "eslint", "eslint_d", "prettier", "prettier_d_slim", "prettierd", "rustywind" } +``` + +The configured formatter(s) must be installed separately. + +## Supported linters + +```lua +typescript = { "eslint", "eslint_d" } +``` + +The configured linter(s) must be installed separately. diff --git a/docs.it/languages/vue.md b/docs.it/languages/vue.md new file mode 100644 index 00000000..857c6881 --- /dev/null +++ b/docs.it/languages/vue.md @@ -0,0 +1,33 @@ +# Vue + +## Syntax highlighting + +```vim +:TSInstall vue +``` + +## Supported language servers + +```lua +vue = { "eslint", "stylelint_lsp", "tailwindcss", "volar", "vuels" }, +``` + +Only `vuels` is enabled by default and the other servers need to be [manually configured](./README.md#manually-configured-servers). + +## Supported formatters + +```lua +vue = { "eslint", "eslint_d", "prettier", "prettier_d_slim", "prettierd", "rustywind" } +``` + +## Supported linters + +```lua +vue = { "eslint", "eslint_d" } +``` + +## LSP Settings + +```lua +:LspSettings vuels +``` diff --git a/docs.it/plugins/01-core-plugins-list.md b/docs.it/plugins/01-core-plugins-list.md new file mode 100644 index 00000000..7996d176 --- /dev/null +++ b/docs.it/plugins/01-core-plugins-list.md @@ -0,0 +1,41 @@ +# Core Plugins List + +| name | description | status | +| ------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| nvim-telescope/telescope.nvim | Find, Filter, Preview, Pick. All lua, all the time. | | +| lewis6991/gitsigns.nvim | Git integration for buffers | | +| folke/lua-dev.nvim | 💻 Dev setup for init.lua and plugin development with full signature help, docs and completion for the nvim lua API. | | +| nvim-treesitter/nvim-treesitter | Nvim Treesitter configurations and abstraction layer | | +| folke/which-key.nvim | 💥 Create key bindings that stick. WhichKey is a lua plugin for Neovim 0.5 that displays a popup with possible keybindings of the command you started typing. | | +| akinsho/bufferline.nvim | A snazzy bufferline for Neovim | | +| hrsh7th/nvim-cmp | A completion plugin for neovim coded in Lua. | | +| hrsh7th/cmp-path | nvim-cmp source for path | | +| kyazdani42/nvim-tree.lua | A file explorer tree for neovim written in lua | | +| numToStr/Comment.nvim | :brain: :muscle: // Smart and powerful comment plugin for neovim. Supports treesitter, dot repeat, left-right/up-down motions, hooks, and more | | +| kyazdani42/nvim-web-devicons | lua `fork` of vim-web-devicons for neovim | | +| b0o/schemastore.nvim | 🛍 JSON schemas for Neovim | | +| windwp/nvim-autopairs | autopairs for neovim written by lua | | +| goolord/alpha-nvim | a lua powered greeter like vim-startify / dashboard-nvim | | +| JoosepAlviste/nvim-ts-context-commentstring | Neovim treesitter plugin for setting the commentstring based on the cursor location in a file. | | +| ahmedkhalf/project.nvim | The superior project management solution for neovim. | | +| L3MON4D3/LuaSnip | Snippet Engine for Neovim written in Lua. | | +| saadparwaiz1/cmp_luasnip | luasnip completion source for nvim-cmp | | +| nvim-lua/plenary.nvim | plenary: full; complete; entire; absolute; unqualified. All the lua functions I don't want to write twice. | | +| hrsh7th/cmp-buffer | nvim-cmp source for buffer words | | +| antoinemadec/FixCursorHold.nvim | Fix CursorHold Performance. | | +| lunarvim/onedarker.nvim | Onedark inspired colorscheme written in lua. | | +| nvim-lua/popup.nvim | [WIP] An implementation of the Popup API from vim in Neovim. Hope to upstream when complete | | +| Tastyep/structlog.nvim | Structured Logging for nvim, using Lua | | +| jose-elias-alvarez/null-ls.nvim | Use Neovim as a language server to inject LSP diagnostics, code actions, and more via Lua. | | +| williamboman/nvim-lsp-installer | Neovim plugin that allows you to seamlessly manage LSP servers with :LspInstall. With full Windows support! | | +| neovim/nvim-lspconfig | Quickstart configurations for the Nvim LSP client | | +| rafamadriz/friendly-snippets | Set of preconfigured snippets for different languages. | | +| tamago324/nlsp-settings.nvim | A plugin for setting Neovim LSP with JSON or YAML files | | +| hrsh7th/cmp-nvim-lsp | nvim-cmp source for neovim builtin LSP client | | +| nvim-lualine/lualine.nvim | A blazing fast and easy to configure neovim statusline plugin written in pure lua. | | +| nvim-telescope/telescope-fzf-native.nvim | FZF sorter for telescope written in c | | +| wbthomason/packer.nvim | A use-package inspired plugin manager for Neovim. Uses native packages, supports Luarocks dependencies, written in Lua, allows for expressive config | | +| rcarriga/nvim-notify | A fancy, configurable, notification manager for NeoVim | optional | +| Pocco81/DAPInstall.nvim | 🦆 A NeoVim plugin for managing several debuggers for Nvim-dap | optional | +| akinsho/toggleterm.nvim | A neovim lua plugin to help easily manage multiple terminal windows | optional | +| mfussenegger/nvim-dap | Debug Adapter Protocol client implementation for Neovim (>= 0.5) | optional | diff --git a/docs.it/plugins/02-extra-plugins.md b/docs.it/plugins/02-extra-plugins.md new file mode 100644 index 00000000..47bbf9d9 --- /dev/null +++ b/docs.it/plugins/02-extra-plugins.md @@ -0,0 +1,966 @@ +# Extra Plugins + +Every plugin that works with Neovim works with LunarVim, here are some examples to get you started. + +## Navigation plugins + +### [hop](https://github.com/phaazon/hop.nvim) + +**neovim motions on speed!** + +```lua +{ + "phaazon/hop.nvim", + event = "BufRead", + config = function() + require("hop").setup() + vim.api.nvim_set_keymap("n", "s", ":HopChar2", { silent = true }) + vim.api.nvim_set_keymap("n", "S", ":HopWord", { silent = true }) + end, +}, +``` + +### [lightspeed](https://github.com/ggandor/lightspeed.nvim) + +**jetpack codebase navigation** + +```lua +{ + "ggandor/lightspeed.nvim", + event = "BufRead", +}, +``` + +### [minimap](https://github.com/wfxr/minimap.vim) + +**blazing fast minimap/scrollbar written in Rust** + +```lua +{ + 'wfxr/minimap.vim', + run = "cargo install --locked code-minimap", + -- cmd = {"Minimap", "MinimapClose", "MinimapToggle", "MinimapRefresh", "MinimapUpdateHighlight"}, + config = function () + vim.cmd ("let g:minimap_width = 10") + vim.cmd ("let g:minimap_auto_start = 1") + vim.cmd ("let g:minimap_auto_start_win_enter = 1") + end, +}, +``` + +### [numb](https://github.com/nacro90/numb.nvim) + +**jump to the line** + +```lua +{ + "nacro90/numb.nvim", + event = "BufRead", + config = function() + require("numb").setup { + show_numbers = true, -- Enable 'number' for the window while peeking + show_cursorline = true, -- Enable 'cursorline' for the window while peeking + } + end, +}, +``` + +### [nvim-bqf](https://github.com/kevinhwang91/nvim-bqf) + +**better quickfix window** + +```lua +{ + "kevinhwang91/nvim-bqf", + event = { "BufRead", "BufNew" }, + config = function() + require("bqf").setup({ + auto_enable = true, + preview = { + win_height = 12, + win_vheight = 12, + delay_syntax = 80, + border_chars = { "┃", "┃", "━", "━", "┏", "┓", "┗", "┛", "█" }, + }, + func_map = { + vsplit = "", + ptogglemode = "z,", + stoggleup = "", + }, + filter = { + fzf = { + action_for = { ["ctrl-s"] = "split" }, + extra_opts = { "--bind", "ctrl-o:toggle-all", "--prompt", "> " }, + }, + }, + }) + end, +}, +``` + +### [nvim-spectre](https://github.com/windwp/nvim-spectre) + +**search and replace** + +```lua +{ + "windwp/nvim-spectre", + event = "BufRead", + config = function() + require("spectre").setup() + end, +}, +``` + +### [rnvimr](https://github.com/kevinhwang91/rnvimr) + +**ranger file explorer window** + +```lua +{ + "kevinhwang91/rnvimr", + cmd = "RnvimrToggle", + config = function() + vim.g.rnvimr_draw_border = 1 + vim.g.rnvimr_pick_enable = 1 + vim.g.rnvimr_bw_enable = 1 + end, +}, +``` + +### [snap](https://github.com/camspiers/snap) + +**fast finder system** + +```lua +{ + "camspiers/snap", + rocks = "fzy", + config = function() + local snap = require "snap" + local layout = snap.get("layout").bottom + local file = snap.config.file:with { consumer = "fzy", layout = layout } + local vimgrep = snap.config.vimgrep:with { layout = layout } + snap.register.command("find_files", file { producer = "ripgrep.file" }) + snap.register.command("buffers", file { producer = "vim.buffer" }) + snap.register.command("oldfiles", file { producer = "vim.oldfile" }) + snap.register.command("live_grep", vimgrep {}) + end, +}, +``` + +### [vim-matchup](https://github.com/andymass/vim-matchup) + +**navigate and highlight matching words** + +```lua +{ + "andymass/vim-matchup", + event = "CursorMoved", + config = function() + vim.g.matchup_matchparen_offscreen = { method = "popup" } + end, +}, +``` + +### [nvim-window-picker](https://github.com/s1n7ax/nvim-window-picker) + +**jump to any window using a selector like the one nvim-tree uses** + +```lua +{ + "s1n7ax/nvim-window-picker", + tag = "1.*", + config = function() + require("window-picker").setup({ + autoselect_one = true, + include_current = false, + filter_rules = { + -- filter using buffer options + bo = { + -- if the file type is one of following, the window will be ignored + filetype = { "neo-tree", "neo-tree-popup", "notify", "quickfix" }, + + -- if the buffer type is one of following, the window will be ignored + buftype = { "terminal" }, + }, + }, + other_win_hl_color = "#e35e4f", + }) + end, + } + +-- example mappings you can place in some other place +-- An awesome method to jump to windows +local picker = require('window-picker') + +vim.keymap.set("n", ",w", function() + local picked_window_id = picker.pick_window({ + include_current_win = true + }) or vim.api.nvim_get_current_win() + vim.api.nvim_set_current_win(picked_window_id) +end, { desc = "Pick a window" }) + +-- Swap two windows using the awesome window picker +local function swap_windows() + local window = picker.pick_window({ + include_current_win = false + }) + local target_buffer = vim.fn.winbufnr(window) + -- Set the target window to contain current buffer + vim.api.nvim_win_set_buf(window, 0) + -- Set current window to contain target buffer + vim.api.nvim_win_set_buf(0, target_buffer) +end + +vim.keymap.set('n', ',W', swap_windows, { desc = 'Swap windows' }) + +``` + +## Git + +### [diffview](https://github.com/sindrets/diffview.nvim) + +**git diff in a single tabpage** + +```lua +{ + "sindrets/diffview.nvim", + event = "BufRead", +}, +``` + +### [git-blame](https://github.com/f-person/git-blame.nvim) + +**show git blame** + +```lua +{ + "f-person/git-blame.nvim", + event = "BufRead", + config = function() + vim.cmd "highlight default link gitblame SpecialComment" + vim.g.gitblame_enabled = 0 + end, +}, +``` + +### [gitlinker](https://github.com/ruifm/gitlinker.nvim) + +**generate shareable file permalinks for several git web frontend hosts** + +```lua +{ + "ruifm/gitlinker.nvim", + event = "BufRead", + config = function() + require("gitlinker").setup { + opts = { + -- remote = 'github', -- force the use of a specific remote + -- adds current line nr in the url for normal mode + add_current_line_on_normal_mode = true, + -- callback for what to do with the url + action_callback = require("gitlinker.actions").open_in_browser, + -- print the url after performing the action + print_url = false, + -- mapping to call url generation + mappings = "gy", + }, + } + end, + requires = "nvim-lua/plenary.nvim", +}, +``` + +### [octo](https://github.com/pwntester/octo.nvim) + +**edit and review GitHub issues and pull requests** + +```lua +{ + "pwntester/octo.nvim", + event = "BufRead", +}, +``` + +### [vim-fugitive](https://github.com/tpope/vim-fugitive) + +**git wrapper** + +```lua +{ + "tpope/vim-fugitive", + cmd = { + "G", + "Git", + "Gdiffsplit", + "Gread", + "Gwrite", + "Ggrep", + "GMove", + "GDelete", + "GBrowse", + "GRemove", + "GRename", + "Glgrep", + "Gedit" + }, + ft = {"fugitive"} +}, +``` + +### [vim-gist](https://github.com/mattn/vim-gist) + +**create/edit Github gists** + +```lua +{ + "mattn/vim-gist", + event = "BufRead", + requires = "mattn/webapi-vim", +}, +``` + +## Treesitter + +### [nvim-ts-autotag](https://github.com/windwp/nvim-ts-autotag) + +**autoclose and autorename html tag** + +```lua +{ + "windwp/nvim-ts-autotag", + config = function() + require("nvim-ts-autotag").setup() + end, +}, +``` + +### [nvim-ts-context-commentstring](https://github.com/JoosepAlviste/nvim-ts-context-commentstring) + +**commentstring option based on the cursor location** + +```lua +{ + "JoosepAlviste/nvim-ts-context-commentstring", + event = "BufRead", +}, +``` + +### [nvim-ts-rainbow](https://github.com/p00f/nvim-ts-rainbow) + +**rainbow parentheses** + +```lua +{ + "p00f/nvim-ts-rainbow", +}, +``` +After installing ensure to enable it in your `config.lua` using: +``` +... +lvim.builtin.treesitter.rainbow.enable = true +... +``` + +### [playground](https://github.com/nvim-treesitter/playground) + +**view treesitter information** + +```lua +{ + "nvim-treesitter/playground", + event = "BufRead", +}, +``` + +### [nvim-treesitter-context](https://github.com/romgrk/nvim-treesitter-context) + +**Show current function at the top of the screen when function does not fit in screen** + +```lua +{ + "romgrk/nvim-treesitter-context", + config = function() + require("treesitter-context").setup{ + enable = true, -- Enable this plugin (Can be enabled/disabled later via commands) + throttle = true, -- Throttles plugin updates (may improve performance) + max_lines = 0, -- How many lines the window should span. Values <= 0 mean no limit. + patterns = { -- Match patterns for TS nodes. These get wrapped to match at word boundaries. + -- For all filetypes + -- Note that setting an entry here replaces all other patterns for this entry. + -- By setting the 'default' entry below, you can control which nodes you want to + -- appear in the context window. + default = { + 'class', + 'function', + 'method', + }, + }, + } + end + }, +``` + +## Telescope Extensions + +### How to install telescope extensions + +First **add your telescope extension to the list of plugins** as usual (`lvim.plugins = { ... }`) following the extension instructions. +There are several ways to register extensions within telescope, but the safer is using the `on_config_done` callback for telescope. +Create the callback function anywhere in your `config.lua`. This function will be called when telescope has finished loading and will get telescope as its only parameter. +Finally, within the `on_config_done` callback register your extension : + +```lua +lvim.builtin.telescope.on_config_done = function(telescope) + pcall(telescope.load_extension, "frecency") + pcall(telescope.load_extension, "neoclip") + -- any other extensions loading +end +``` + +### [telescope-fzy-native.nvim](https://github.com/nvim-telescope/telescope-fzy-native.nvim) + +**fzy style sorter that is compiled** + +```lua +{ + "nvim-telescope/telescope-fzy-native.nvim", + run = "make", + event = "BufRead", +}, +``` + +### [telescope-project](https://github.com/nvim-telescope/telescope-project.nvim) + +**switch between projects** + +```lua +{ + "nvim-telescope/telescope-project.nvim", + event = "BufWinEnter", + setup = function() + vim.cmd [[packadd telescope.nvim]] + end, +}, +``` + +## Colorschemes + +### [lsp-colors](https://github.com/folke/lsp-colors.nvim) + +**lsp diagnostics highlight groups for non lsp colorschemes** + +```lua +{ + "folke/lsp-colors.nvim", + event = "BufRead", +}, +``` + +### [lush.nvim](https://github.com/rktjmp/lush.nvim) + +**colorscheme creation aid** + +```lua +{ + "rktjmp/lush.nvim", +}, +``` + +### [nvim-colorizer](https://github.com/norcalli/nvim-colorizer.lua) + +**color highlighter** + +```lua +{ + "norcalli/nvim-colorizer.lua", + config = function() + require("colorizer").setup({ "css", "scss", "html", "javascript" }, { + RGB = true, -- #RGB hex codes + RRGGBB = true, -- #RRGGBB hex codes + RRGGBBAA = true, -- #RRGGBBAA hex codes + rgb_fn = true, -- CSS rgb() and rgba() functions + hsl_fn = true, -- CSS hsl() and hsla() functions + css = true, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB + css_fn = true, -- Enable all CSS *functions*: rgb_fn, hsl_fn + }) + end, +}, +``` + +## LSP Enhancement + +### [cmp-tabnine](https://github.com/tzachar/cmp-tabnine) + +**TabNine completion engine for hrsh7th/nvim-cmp** + +```lua +{ + "tzachar/cmp-tabnine", + run = "./install.sh", + requires = "hrsh7th/nvim-cmp", + event = "InsertEnter", +}, +``` + +### [goto-preview](https://github.com/rmagatti/goto-preview) + +**previewing goto definition calls** + +```lua +{ + "rmagatti/goto-preview", + config = function() + require('goto-preview').setup { + width = 120; -- Width of the floating window + height = 25; -- Height of the floating window + default_mappings = false; -- Bind default mappings + debug = false; -- Print debug information + opacity = nil; -- 0-100 opacity level of the floating window where 100 is fully transparent. + post_open_hook = nil -- A function taking two arguments, a buffer and a window to be ran as a hook. + -- You can use "default_mappings = true" setup option + -- Or explicitly set keybindings + -- vim.cmd("nnoremap gpd lua require('goto-preview').goto_preview_definition()") + -- vim.cmd("nnoremap gpi lua require('goto-preview').goto_preview_implementation()") + -- vim.cmd("nnoremap gP lua require('goto-preview').close_all_win()") + } + end +}, +``` + +### [lsp-rooter](https://github.com/ahmedkhalf/lsp-rooter.nvim) + +**cwd to the project's root directory** + +```lua +{ + "ahmedkhalf/lsp-rooter.nvim", + event = "BufRead", + config = function() + require("lsp-rooter").setup() + end, +}, +``` + +### [lsp_signature.nvim](https://github.com/ray-x/lsp_signature.nvim) + +**hint when you type** + +```lua +{ + "ray-x/lsp_signature.nvim", + event = "BufRead", + config = function() require"lsp_signature".on_attach() end, +}, +``` + +### [symbols-outline.nvim](https://github.com/simrat39/symbols-outline.nvim) + +**a tree like view for symbols** + +```lua +{ + "simrat39/symbols-outline.nvim", + config = function() + require('symbols-outline').setup() + end +}, +``` + +### [trouble.nvim](https://github.com/folke/trouble.nvim) + +**diagnostics, references, telescope results, quickfix and location lists** + +```lua +{ + "folke/trouble.nvim", + cmd = "TroubleToggle", +}, +``` + +Also define keybindings in `config.lua` + +```lua +lvim.builtin.which_key.mappings["t"] = { + name = "Diagnostics", + t = { "TroubleToggle", "trouble" }, + w = { "TroubleToggle workspace_diagnostics", "workspace" }, + d = { "TroubleToggle document_diagnostics", "document" }, + q = { "TroubleToggle quickfix", "quickfix" }, + l = { "TroubleToggle loclist", "loclist" }, + r = { "TroubleToggle lsp_references", "references" }, +}, +``` + +## General + +### [autosave](https://github.com/Pocco81/AutoSave.nvim) + +**automatically saving your work whenever you make changes to it** + +```lua +{ + "Pocco81/AutoSave.nvim", + config = function() + require("autosave").setup() + end, +}, +``` + +### [codi.vim](https://github.com/metakirby5/codi.vim) + +**interactive scratchpad for hackers** + +```lua +{ + "metakirby5/codi.vim", + cmd = "Codi", +}, +``` + +### [copilot.lua](https://github.com/zbirenbaum/copilot.lua) and [copilot-cmp](https://github.com/zbirenbaum/copilot-cmp) + +**let a computer write code for you** + +You need to authenticate according to [the instructions](https://github.com/zbirenbaum/copilot.lua#preliminary-steps). + +```lua +lvim.plugins = { + { "zbirenbaum/copilot.lua", + event = { "VimEnter" }, + config = function() + vim.defer_fn(function() + require("copilot").setup { + plugin_manager_path = get_runtime_dir() .. "/site/pack/packer", + } + end, 100) + end, + }, + + { "zbirenbaum/copilot-cmp", + after = { "copilot.lua", "nvim-cmp" }, + }, + ... +} + +-- Can not be placed into the config method of the plugins. +lvim.builtin.cmp.formatting.source_names["copilot"] = "(Copilot)" +table.insert(lvim.builtin.cmp.sources, 1, { name = "copilot" }) +``` + +### [dial.nvim](https://github.com/monaqa/dial.nvim) + +**extended incrementing/decrementing** + +```lua +{ + "monaqa/dial.nvim", + event = "BufRead", + config = function() + local dial = require "dial" + vim.cmd [[ + nmap (dial-increment) + nmap (dial-decrement) + vmap (dial-increment) + vmap (dial-decrement) + vmap g (dial-increment-additional) + vmap g (dial-decrement-additional) + ]] + + dial.augends["custom#boolean"] = dial.common.enum_cyclic { + name = "boolean", + strlist = { "true", "false" }, + } + table.insert(dial.config.searchlist.normal, "custom#boolean") + + -- For Languages which prefer True/False, e.g. python. + dial.augends["custom#Boolean"] = dial.common.enum_cyclic { + name = "Boolean", + strlist = { "True", "False" }, + } + table.insert(dial.config.searchlist.normal, "custom#Boolean") + end, +}, + +``` + +### [glow.nvim](https://github.com/npxbr/glow.nvim) + +**preview markdown in neovim** + +```lua +-- You must install glow globally +-- https://github.com/charmbracelet/glow +-- yay -S glow +{ + "npxbr/glow.nvim", + ft = {"markdown"} + -- run = "yay -S glow" +}, +``` + +### [indent-blankline](https://github.com/lukas-reineke/indent-blankline.nvim) + +**indentation guides for every line** + +```lua +{ + "lukas-reineke/indent-blankline.nvim", + event = "BufRead", + config = function() + local opts = { + -- char = "▏", + filetype_exclude = { + "alpha", + "help", + "terminal", + "dashboard", + "lspinfo", + "lsp-installer", + "mason", + }, + buftype_exclude = { "terminal" }, + bufname_exclude = { "config.lua" }, + + show_trailing_blankline_indent = false, + show_first_indent_level = false, + -- use_treesitter = false, + } + + require("indent_blankline").setup(opts) + end +}, +``` + +### [markdown-preview.nvim](https://github.com/iamcco/markdown-preview.nvim) + +**preview markdown in the browser** + +```lua +{ + "iamcco/markdown-preview.nvim", + run = "cd app && npm install", + ft = "markdown", + config = function() + vim.g.mkdp_auto_start = 1 + end, +}, +``` + +### [neoscroll](https://github.com/karb94/neoscroll.nvim) + +**smooth scrolling** + +```lua +{ + "karb94/neoscroll.nvim", + event = "WinScrolled", + config = function() + require('neoscroll').setup({ + -- All these keys will be mapped to their corresponding default scrolling animation + mappings = {'', '', '', '', + '', '', 'zt', 'zz', 'zb'}, + hide_cursor = true, -- Hide cursor while scrolling + stop_eof = true, -- Stop at when scrolling downwards + use_local_scrolloff = false, -- Use the local scope of scrolloff instead of the global scope + respect_scrolloff = false, -- Stop scrolling when the cursor reaches the scrolloff margin of the file + cursor_scrolls_alone = true, -- The cursor will keep on scrolling even if the window cannot scroll further + easing_function = nil, -- Default easing function + pre_hook = nil, -- Function to run before the scrolling animation starts + post_hook = nil, -- Function to run after the scrolling animation ends + }) + end +}, +``` + +### [neuron](https://github.com/oberblastmeister/neuron.nvim) + +**next generation note-taking** + +```lua + {"oberblastmeister/neuron.nvim"}, +``` + +### [nvim-lastplace](https://github.com/ethanholz/nvim-lastplace) + +**pick up where you left off** + +```lua + { + "ethanholz/nvim-lastplace", + event = "BufRead", + config = function() + require("nvim-lastplace").setup({ + lastplace_ignore_buftype = { "quickfix", "nofile", "help" }, + lastplace_ignore_filetype = { + "gitcommit", "gitrebase", "svn", "hgcommit", + }, + lastplace_open_folds = true, + }) + end, + }, +``` + +### [persistence](https://github.com/folke/persistence.nvim) + +**simple session management** + +```lua +{ + "folke/persistence.nvim", + event = "BufReadPre", -- this will only start session saving when an actual file was opened + module = "persistence", + config = function() + require("persistence").setup { + dir = vim.fn.expand(vim.fn.stdpath "config" .. "/session/"), + options = { "buffers", "curdir", "tabpages", "winsize" }, + } + end, +}, +``` + +Also define keybindings in your `config.lua` + +```lua + lvim.builtin.which_key.mappings["S"]= { + name = "Session", + c = { "lua require('persistence').load()", "Restore last session for current dir" }, + l = { "lua require('persistence').load({ last = true })", "Restore last session" }, + Q = { "lua require('persistence').stop()", "Quit without saving session" }, + } +``` + +### [todo-comments.nvim](https://github.com/folke/todo-comments.nvim) + +**highlight and search for todo comments** + +```lua +{ + "folke/todo-comments.nvim", + event = "BufRead", + config = function() + require("todo-comments").setup() + end, +}, +``` + +### [vim-cursorword](https://github.com/itchyny/vim-cursorword) + +**underlines the word under the cursor** + +```lua +{ + "itchyny/vim-cursorword", + event = {"BufEnter", "BufNewFile"}, + config = function() + vim.api.nvim_command("augroup user_plugin_cursorword") + vim.api.nvim_command("autocmd!") + vim.api.nvim_command("autocmd FileType NvimTree,lspsagafinder,dashboard,vista let b:cursorword = 0") + vim.api.nvim_command("autocmd WinEnter * if &diff || &pvw | let b:cursorword = 0 | endif") + vim.api.nvim_command("autocmd InsertEnter * let b:cursorword = 0") + vim.api.nvim_command("autocmd InsertLeave * let b:cursorword = 1") + vim.api.nvim_command("augroup END") + end +}, +``` + +### [vim-repeat](https://github.com/tpope/vim-repeat) + +**enable repeating supported plugin maps with "."** + +```lua +{ "tpope/vim-repeat" }, +``` + +### [vim-sanegx](https://github.com/felipec/vim-sanegx) + +**open url with `gx`** + +```lua +{ + "felipec/vim-sanegx", + event = "BufRead", +}, +``` + +### [vim-surround](https://github.com/tpope/vim-surround) + +**mappings to delete, change and add surroundings** + +```lua +{ + "tpope/vim-surround", + + -- make sure to change the value of `timeoutlen` if it's not triggering correctly, see https://github.com/tpope/vim-surround/issues/117 + -- setup = function() + -- vim.o.timeoutlen = 500 + -- end +}, +``` + +### [vim-wakatime](https://github.com/wakatime/vim-wakatime) + +**metrics, insights, and time tracking automatically generated from your programming activity** + +```lua +{ + "wakatime/vim-wakatime" +} +``` + +Once installed and synced, add your WakaTime API Key via `:WakaTimeApiKey` command + +## Language specific + +### [bracey](https://github.com/turbio/bracey.vim) + +**live edit html, css, and javascript** + +```lua +{ + "turbio/bracey.vim", + cmd = {"Bracey", "BracyStop", "BraceyReload", "BraceyEval"}, + run = "npm install --prefix server", +}, +``` + +### [vim-bundler](https://github.com/tpope/vim-bundler) + +**lightweight support for ruby's bundler** + +```lua +{ + "tpope/vim-bundler", + cmd = {"Bundler", "Bopen", "Bsplit", "Btabedit"} +}, +``` + +### [vim-rails](https://github.com/tpope/vim-rails) + +**edit ruby on rails applications** + +```lua +{ + "tpope/vim-rails", + cmd = { + "Eview", + "Econtroller", + "Emodel", + "Smodel", + "Sview", + "Scontroller", + "Vmodel", + "Vview", + "Vcontroller", + "Tmodel", + "Tview", + "Tcontroller", + "Rails", + "Generate", + "Runner", + "Extract" + } +}, + +``` diff --git a/docs.it/plugins/README.md b/docs.it/plugins/README.md new file mode 100644 index 00000000..3106d175 --- /dev/null +++ b/docs.it/plugins/README.md @@ -0,0 +1,84 @@ +# Plugins + +Plugins are managed by [Packer](https://github.com/wbthomason/packer.nvim), and are split into [core-plugins](./01-core-plugins-list.md) and user-plugins. + +- from [lua/lvim/plugin-loader.lua](https://github.com/lunarvim/lunarvim/blob/10c7753d8e6f572974f9b9e0d0d8631cd13e60ea/lua/lvim/plugin-loader.lua): + +```lua +--- to check the full configuration `:lua print(vim.inspect(require('packer').config))` +local compile_path = join_paths(get_config_dir(), "plugin", "packer_compiled.lua") +local snapshot_path = join_paths(get_cache_dir(), "snapshots") +local package_root = join_paths(vim.fn.stdpath("data"), "site", "pack") + +local init_opts = { + package_root = package_root, + compile_path = compile_path, + snapshot_path = snapshot_path, + log = { level = "warn" }, + git = { + clone_timeout = 300, + }, + display = { + open_fn = function() + return require("packer.util").float { border = "rounded" } + end, + }, +} + +packer.init(init_opts) +``` + +::: tip +use `:PackerStatus` to see a list of all installed plugins! +::: + +## Core plugins + +The configurations for core plugins are accessible through `lvim.builtin`. Most should contain an `active` attribute that can be set to `false` to disable the plugin + +```lua +lvim.builtin.alpha.active = true +lvim.builtin.dap.active = true -- (default: false) +lvim.builtin.terminal.active = true +``` +::: warning IMPORTANT +disabling a plugin will not take effect until you run `:PackerSync` or preferably `:LvimSyncCorePlugins` +::: + +You can press `` to get autocomplete suggestions to explore these settings. + +```lua +lvim.builtin.cmp.completion.keyword_length = 2 +lvim.builtin.telescope.defaults.layout_config.width = 0.95 +lvim.builtin.telescope.defaults.layout_config.preview_cutoff = 75 +``` + +::: tip +A plugin's README (and `docs/` folder if it exists) typically contain excellent documentation, so it may be worthwhile to create an alias for if you use them often. +::: + +### Pinning strategy + +Snapshot support has been added in [lunarvim#2351](https://github.com/LunarVim/LunarVim/pull/2351): + +> 1. add a default snapshot, `snapshots/default.json`, to hold the commits of all the core plugins +> 2. `LvimSyncCorePlugins` now uses `:PackerSnapshotRollback` +> 3. reduce errors caused by breaking changes in user plugins since they're not handled anymore with `packer.sync()` +> 4. `PackerSync` will now ignore all the core plugins which are already handled with snapshots, this makes it signficantly faster to finish. +> 5. allow "unlocking" all the core plugins, by setting an environment variable `$LVIM_DEV_MODE`, e.g. can be defined in `~/.local/bin/lvim` +> 6. `$LUNARVIM_CACHE_DIR/snapshots/` can be used to store complete snapshots of _all_ the installed plugins, `:h packer.snapshot()`. +> 7. add a new handler to allow updating `snapshots/default.json` that does not rely on packer or lvim's runtime. It could be completely re-written in any other language. + +## User plugins + +User plugins can be installed by adding entries to the `lvim.plugins` table in your `config.lua` file, and saving or manually invoking `LvimReload` will trigger Packer to sync all the plugins in that table. + +```lua +lvim.plugins = { + {"lunarvim/colorschemes"}, + {"folke/tokyonight.nvim"}, +} +``` +Check the [extra plugins](./02-extra-plugins.md) for some suggestions. + +_Note: removing a plugin from the `lvim.plugin` table removes it from your configuration but not your system. Any plugins left in the `start` directory will still autostart. To remove them completely, run `:PackerSync`._ diff --git a/docs.it/plugins/_category_.json b/docs.it/plugins/_category_.json new file mode 100644 index 00000000..03b11f77 --- /dev/null +++ b/docs.it/plugins/_category_.json @@ -0,0 +1,3 @@ +{ + "position": 5 +} diff --git a/docs.it/sponsors/01-donate.md b/docs.it/sponsors/01-donate.md new file mode 100644 index 00000000..0033252d --- /dev/null +++ b/docs.it/sponsors/01-donate.md @@ -0,0 +1,6 @@ +# How to Donate + +- [Patreon](https://www.patreon.com/chrisatmachine) +- [Github Sponsors](https://github.com/sponsors/ChristianChiarulli) +- Crypto (to do) +- Merch (to do) diff --git a/docs.it/sponsors/README.md b/docs.it/sponsors/README.md new file mode 100644 index 00000000..ffda21e9 --- /dev/null +++ b/docs.it/sponsors/README.md @@ -0,0 +1,5 @@ +# Thank You! + +To have your name listed here with a link to whatever you want please contact Chris@Machine on Discord or Matrix. + +- You! diff --git a/docs.it/sponsors/_category_.json b/docs.it/sponsors/_category_.json new file mode 100644 index 00000000..dcf9d94a --- /dev/null +++ b/docs.it/sponsors/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Sponsor", + "position": 10 +} diff --git a/docs.it/troubleshooting/README.md b/docs.it/troubleshooting/README.md new file mode 100644 index 00000000..1e0add01 --- /dev/null +++ b/docs.it/troubleshooting/README.md @@ -0,0 +1,144 @@ +# Installation + +## General + +1. Make sure to check that you have a recent Neovim version with `luajit` support. The output of version information `nvim -v` should include a line for: `LuaJIT`. +2. Make sure all the dependencies listed in [Manual Install](#manual-install) are actually installed on your system. + +## Unable to run `lvim` + +Make sure that `lvim` is available and executable on your path. You can check the results of these commands to verify that + +```shell +which lvim +stat "$(which lvim)" +cat "$(which lvim)" +``` + +If you get errors with any of the above commands, then you need to either fix that manually or reinstall the binary again. + +```shell +cd # this will be in `~/.local/share/lunarvim/lvim` by default +bash utils/installer/install_bin.sh +``` + +## Getting errors after an update + +### Cache issues + +This might be the result of old cache files that need to be reset. LunarVim makes use of [impatients's](https://github.com/lewis6991/impatient.nvim) to optimize the startup procedure and deliver a snappy experience. + +1. while running LunarVim: `:LvimCacheReset` +2. from the CLI: `lvim +LvimCacheReset` + +### Plugin issue + +Another common reason for such errors is due to Packer being unable to fully restore a snapshot. This could be due to multiple reasons, but mostl commonly it's a breaking change in some plugin, or `git` refusing to pull an update to a plugin because it [can't safely fast-forward the current branch](https://blog.sffc.xyz/post/185195398930/why-you-should-use-git-pull-ff-only-git-is-a). + +The easiest way to solve this is to manually update (a rebase is likely required) the offending plugin, which should be located in [Packer's package-root](https://github.com/wbthomason/packer.nvim/blob/4dedd3b08f8c6e3f84afbce0c23b66320cd2a8f2/doc/packer.txt#L199) at `$LUNARVIM_RUNTIME_DIR/site/pack/packer`. + +Let's say it's `nvim-cmp` for example + +```vim +:! git -C "$LUNARVIM_RUNTIME_DIR/site/pack/packer/start/nvim-cmp" status +``` + +now check which commit is currently checked out +```vim +:! git -C "$LUNARVIM_RUNTIME_DIR/site/pack/packer/start/nvim-cmp" log -1 +``` + +it should match the one in `$LUNARVIM_RUNTIME_DIR/lvim/snapshots/default.json`, but you can always restore the snapshot with `:LvimSyncCorePlugins` + +```vim +:! git -C "$LUNARVIM_RUNTIME_DIR/site/pack/packer/start/nvim-cmp" pull --rebase +``` + +### Packer failure + +if you have not done any changes to any of the plugins, then you can remove Packer's package root completely. + +```shell +LUNARVIM_RUNTIME_DIR="${LUNARVIM_RUNTIME_DIR:-$HOME/.local/share/lunarvim}" +rm -rf "$LUNARVIM_RUNTIME_DIR/site/pack/packer" +``` + +now open `lvim`, you'll see a lot of errors about all the plugins missing, but running `:LvimSyncCorePlugins` should fix them all. + +## LunarVim is slow! + +### are you using `fish`? + +> First of all, it is not recommended to set shell to fish in vim. Plenty of vim addons execute fish-incompatible shellscript, so setting it to /bin/sh is typically better, especially if you have no good reason to set it to fish. + +```lua +vim.opt.shell = "/bin/sh" +``` + +See [fish-shell/fish-shell#7004](https://github.com/fish-shell/fish-shell/issues/7004) and `:h 'shell'` for more info. + +## Language server XXX does not start for me! + +### Update node + +Some language servers depend on newer versions of node. Update your version of node to the latest. + +### is it overriden? + +This could be due to the fact that the server is [overridden](../languages/README.md#server-override) + +```lua +--- is it in this list? +:lua print(vim.inspect(lvim.lsp.automatic_configuration.skipped_servers)) +``` + +If that's the case, then you need to either remove it from that list and re-run `:LvimCacheReset` + +```lua +vim.tbl_map(function(server) + return server ~= "emmet_ls" +end, lvim.lsp.automatic_configuration.skipped_servers) +``` + +or set it up [manually](../languages/README.md#server-setup). + +### is it supported by [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer)? + +Any server that does not show up in `LspInstallInfo` needs to be installed manually. + +### is it at least showing up in `:LspInfo`? + +Check out the tips for [debugging nvim-lspconfig](https://github.com/neovim/nvim-lspconfig#debugging). + +## Too many language servers are starting at once! + +Are any of these servers [overridden](../languages/README.md#server-override) by default? + +```lua +:lua print(vim.inspect(require("lvim.lsp.config").override)) +``` + +If they are then you are using the syntax prior to [LunarVim#1813](https://github.com/LunarVim/LunarVim/pull/1813). + +```lua +-- this is the correct syntax since 3dd60bd +vim.list_extend(lvim.lsp.override, { "jsonls" }) +``` + +```lua +-- this the correct syntax since 198577a +vim.list_extend(lvim.lsp.automatic_configuration.skipped_servers, { "jsonls" }) +``` + + +## My LunarVim looks ugly! + +- Make sure that you have a terminal that supports 24-bit colors. If not, you might face some issues regarding the default colorscheme, and other colorschemes. + - For a explainer on what 24-bit colors are, and to test if your terminal supports it, we like this usefull repository: https://github.com/termstandard/colors + +- Another issue might be `termguicolors`. If this is the case, we advice you to look at the official neovim docs: + - What is `termguicolors`? see + +- Another case might be that your `$TERM` variable changes the colors in your terminal. + - For this, we advice you to look and see if anyone else has the same `$TERM` variable as you, and what they did https://github.com/neovim/neovim/issues?q=label%3Atui+color + diff --git a/docs.it/troubleshooting/_category_.json b/docs.it/troubleshooting/_category_.json new file mode 100644 index 00000000..60526355 --- /dev/null +++ b/docs.it/troubleshooting/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Troubleshooting", + "position": 8 +} From ae5d7749c44f1ea521a4310ac8899cfd8474ed2d Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 2 Oct 2022 10:54:18 +0200 Subject: [PATCH 2/3] proper docosaurus i18n setup --- docusaurus.config.js | 2 +- {docs.it => i18n/it/docs}/01-introduction.md | 0 {docs.it => i18n/it/docs}/02-installation.md | 0 {docs.it => i18n/it/docs}/03-quick-start.md | 0 {docs.it => i18n/it/docs}/_category_.json | 0 .../it/docs}/community/01-meet-the-team.md | 0 {docs.it => i18n/it/docs}/community/README.md | 0 {docs.it => i18n/it/docs}/community/_category_.json | 0 {docs.it => i18n/it/docs}/community/faq.md | 0 .../it/docs}/configuration/01-settings.md | 0 .../it/docs}/configuration/02-keybindings.md | 0 .../it/docs}/configuration/03-colorschemes.md | 0 .../it/docs}/configuration/04-nerd-fonts.md | 0 .../it/docs}/configuration/05-autocommands.md | 0 .../it/docs}/configuration/06-statusline.md | 0 .../it/docs}/configuration/07-ftplugin.md | 0 .../it/docs}/configuration/08-custom-snippets.md | 0 {docs.it => i18n/it/docs}/configuration/README.md | 0 .../it/docs}/configuration/_category_.json | 0 {docs.it => i18n/it/docs}/dev/02-under-the-hood.md | 0 {docs.it => i18n/it/docs}/dev/README.md | 0 {docs.it => i18n/it/docs}/dev/_category_.json | 0 .../it/docs}/dev/lunarvim_initialization.png | Bin {docs.it => i18n/it/docs}/languages/HCL.md | 0 {docs.it => i18n/it/docs}/languages/README.md | 0 {docs.it => i18n/it/docs}/languages/Terraform.md | 0 {docs.it => i18n/it/docs}/languages/_category_.json | 0 {docs.it => i18n/it/docs}/languages/c_cpp.md | 0 {docs.it => i18n/it/docs}/languages/csharp.md | 0 {docs.it => i18n/it/docs}/languages/go.md | 0 {docs.it => i18n/it/docs}/languages/java.md | 0 {docs.it => i18n/it/docs}/languages/javascript.md | 0 {docs.it => i18n/it/docs}/languages/json.md | 0 {docs.it => i18n/it/docs}/languages/julia.md | 0 {docs.it => i18n/it/docs}/languages/lua.md | 0 {docs.it => i18n/it/docs}/languages/powershell.md | 0 {docs.it => i18n/it/docs}/languages/python.md | 0 {docs.it => i18n/it/docs}/languages/qml.md | 0 {docs.it => i18n/it/docs}/languages/ruby.md | 0 {docs.it => i18n/it/docs}/languages/rust.md | 0 {docs.it => i18n/it/docs}/languages/scala.md | 0 {docs.it => i18n/it/docs}/languages/swift.md | 0 {docs.it => i18n/it/docs}/languages/typescript.md | 0 {docs.it => i18n/it/docs}/languages/vue.md | 0 .../it/docs}/plugins/01-core-plugins-list.md | 0 .../it/docs}/plugins/02-extra-plugins.md | 0 {docs.it => i18n/it/docs}/plugins/README.md | 0 {docs.it => i18n/it/docs}/plugins/_category_.json | 0 {docs.it => i18n/it/docs}/sponsors/01-donate.md | 0 {docs.it => i18n/it/docs}/sponsors/README.md | 0 {docs.it => i18n/it/docs}/sponsors/_category_.json | 0 {docs.it => i18n/it/docs}/troubleshooting/README.md | 0 .../it/docs}/troubleshooting/_category_.json | 0 53 files changed, 1 insertion(+), 1 deletion(-) rename {docs.it => i18n/it/docs}/01-introduction.md (100%) rename {docs.it => i18n/it/docs}/02-installation.md (100%) rename {docs.it => i18n/it/docs}/03-quick-start.md (100%) rename {docs.it => i18n/it/docs}/_category_.json (100%) rename {docs.it => i18n/it/docs}/community/01-meet-the-team.md (100%) rename {docs.it => i18n/it/docs}/community/README.md (100%) rename {docs.it => i18n/it/docs}/community/_category_.json (100%) rename {docs.it => i18n/it/docs}/community/faq.md (100%) rename {docs.it => i18n/it/docs}/configuration/01-settings.md (100%) rename {docs.it => i18n/it/docs}/configuration/02-keybindings.md (100%) rename {docs.it => i18n/it/docs}/configuration/03-colorschemes.md (100%) rename {docs.it => i18n/it/docs}/configuration/04-nerd-fonts.md (100%) rename {docs.it => i18n/it/docs}/configuration/05-autocommands.md (100%) rename {docs.it => i18n/it/docs}/configuration/06-statusline.md (100%) rename {docs.it => i18n/it/docs}/configuration/07-ftplugin.md (100%) rename {docs.it => i18n/it/docs}/configuration/08-custom-snippets.md (100%) rename {docs.it => i18n/it/docs}/configuration/README.md (100%) rename {docs.it => i18n/it/docs}/configuration/_category_.json (100%) rename {docs.it => i18n/it/docs}/dev/02-under-the-hood.md (100%) rename {docs.it => i18n/it/docs}/dev/README.md (100%) rename {docs.it => i18n/it/docs}/dev/_category_.json (100%) rename {docs.it => i18n/it/docs}/dev/lunarvim_initialization.png (100%) rename {docs.it => i18n/it/docs}/languages/HCL.md (100%) rename {docs.it => i18n/it/docs}/languages/README.md (100%) rename {docs.it => i18n/it/docs}/languages/Terraform.md (100%) rename {docs.it => i18n/it/docs}/languages/_category_.json (100%) rename {docs.it => i18n/it/docs}/languages/c_cpp.md (100%) rename {docs.it => i18n/it/docs}/languages/csharp.md (100%) rename {docs.it => i18n/it/docs}/languages/go.md (100%) rename {docs.it => i18n/it/docs}/languages/java.md (100%) rename {docs.it => i18n/it/docs}/languages/javascript.md (100%) rename {docs.it => i18n/it/docs}/languages/json.md (100%) rename {docs.it => i18n/it/docs}/languages/julia.md (100%) rename {docs.it => i18n/it/docs}/languages/lua.md (100%) rename {docs.it => i18n/it/docs}/languages/powershell.md (100%) rename {docs.it => i18n/it/docs}/languages/python.md (100%) rename {docs.it => i18n/it/docs}/languages/qml.md (100%) rename {docs.it => i18n/it/docs}/languages/ruby.md (100%) rename {docs.it => i18n/it/docs}/languages/rust.md (100%) rename {docs.it => i18n/it/docs}/languages/scala.md (100%) rename {docs.it => i18n/it/docs}/languages/swift.md (100%) rename {docs.it => i18n/it/docs}/languages/typescript.md (100%) rename {docs.it => i18n/it/docs}/languages/vue.md (100%) rename {docs.it => i18n/it/docs}/plugins/01-core-plugins-list.md (100%) rename {docs.it => i18n/it/docs}/plugins/02-extra-plugins.md (100%) rename {docs.it => i18n/it/docs}/plugins/README.md (100%) rename {docs.it => i18n/it/docs}/plugins/_category_.json (100%) rename {docs.it => i18n/it/docs}/sponsors/01-donate.md (100%) rename {docs.it => i18n/it/docs}/sponsors/README.md (100%) rename {docs.it => i18n/it/docs}/sponsors/_category_.json (100%) rename {docs.it => i18n/it/docs}/troubleshooting/README.md (100%) rename {docs.it => i18n/it/docs}/troubleshooting/_category_.json (100%) diff --git a/docusaurus.config.js b/docusaurus.config.js index 7d77a66e..f7131522 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -25,7 +25,7 @@ const config = { // to replace "en" with "zh-Hans". i18n: { defaultLocale: 'en', - locales: ['en'], + locales: ['en', 'it'], }, presets: [ diff --git a/docs.it/01-introduction.md b/i18n/it/docs/01-introduction.md similarity index 100% rename from docs.it/01-introduction.md rename to i18n/it/docs/01-introduction.md diff --git a/docs.it/02-installation.md b/i18n/it/docs/02-installation.md similarity index 100% rename from docs.it/02-installation.md rename to i18n/it/docs/02-installation.md diff --git a/docs.it/03-quick-start.md b/i18n/it/docs/03-quick-start.md similarity index 100% rename from docs.it/03-quick-start.md rename to i18n/it/docs/03-quick-start.md diff --git a/docs.it/_category_.json b/i18n/it/docs/_category_.json similarity index 100% rename from docs.it/_category_.json rename to i18n/it/docs/_category_.json diff --git a/docs.it/community/01-meet-the-team.md b/i18n/it/docs/community/01-meet-the-team.md similarity index 100% rename from docs.it/community/01-meet-the-team.md rename to i18n/it/docs/community/01-meet-the-team.md diff --git a/docs.it/community/README.md b/i18n/it/docs/community/README.md similarity index 100% rename from docs.it/community/README.md rename to i18n/it/docs/community/README.md diff --git a/docs.it/community/_category_.json b/i18n/it/docs/community/_category_.json similarity index 100% rename from docs.it/community/_category_.json rename to i18n/it/docs/community/_category_.json diff --git a/docs.it/community/faq.md b/i18n/it/docs/community/faq.md similarity index 100% rename from docs.it/community/faq.md rename to i18n/it/docs/community/faq.md diff --git a/docs.it/configuration/01-settings.md b/i18n/it/docs/configuration/01-settings.md similarity index 100% rename from docs.it/configuration/01-settings.md rename to i18n/it/docs/configuration/01-settings.md diff --git a/docs.it/configuration/02-keybindings.md b/i18n/it/docs/configuration/02-keybindings.md similarity index 100% rename from docs.it/configuration/02-keybindings.md rename to i18n/it/docs/configuration/02-keybindings.md diff --git a/docs.it/configuration/03-colorschemes.md b/i18n/it/docs/configuration/03-colorschemes.md similarity index 100% rename from docs.it/configuration/03-colorschemes.md rename to i18n/it/docs/configuration/03-colorschemes.md diff --git a/docs.it/configuration/04-nerd-fonts.md b/i18n/it/docs/configuration/04-nerd-fonts.md similarity index 100% rename from docs.it/configuration/04-nerd-fonts.md rename to i18n/it/docs/configuration/04-nerd-fonts.md diff --git a/docs.it/configuration/05-autocommands.md b/i18n/it/docs/configuration/05-autocommands.md similarity index 100% rename from docs.it/configuration/05-autocommands.md rename to i18n/it/docs/configuration/05-autocommands.md diff --git a/docs.it/configuration/06-statusline.md b/i18n/it/docs/configuration/06-statusline.md similarity index 100% rename from docs.it/configuration/06-statusline.md rename to i18n/it/docs/configuration/06-statusline.md diff --git a/docs.it/configuration/07-ftplugin.md b/i18n/it/docs/configuration/07-ftplugin.md similarity index 100% rename from docs.it/configuration/07-ftplugin.md rename to i18n/it/docs/configuration/07-ftplugin.md diff --git a/docs.it/configuration/08-custom-snippets.md b/i18n/it/docs/configuration/08-custom-snippets.md similarity index 100% rename from docs.it/configuration/08-custom-snippets.md rename to i18n/it/docs/configuration/08-custom-snippets.md diff --git a/docs.it/configuration/README.md b/i18n/it/docs/configuration/README.md similarity index 100% rename from docs.it/configuration/README.md rename to i18n/it/docs/configuration/README.md diff --git a/docs.it/configuration/_category_.json b/i18n/it/docs/configuration/_category_.json similarity index 100% rename from docs.it/configuration/_category_.json rename to i18n/it/docs/configuration/_category_.json diff --git a/docs.it/dev/02-under-the-hood.md b/i18n/it/docs/dev/02-under-the-hood.md similarity index 100% rename from docs.it/dev/02-under-the-hood.md rename to i18n/it/docs/dev/02-under-the-hood.md diff --git a/docs.it/dev/README.md b/i18n/it/docs/dev/README.md similarity index 100% rename from docs.it/dev/README.md rename to i18n/it/docs/dev/README.md diff --git a/docs.it/dev/_category_.json b/i18n/it/docs/dev/_category_.json similarity index 100% rename from docs.it/dev/_category_.json rename to i18n/it/docs/dev/_category_.json diff --git a/docs.it/dev/lunarvim_initialization.png b/i18n/it/docs/dev/lunarvim_initialization.png similarity index 100% rename from docs.it/dev/lunarvim_initialization.png rename to i18n/it/docs/dev/lunarvim_initialization.png diff --git a/docs.it/languages/HCL.md b/i18n/it/docs/languages/HCL.md similarity index 100% rename from docs.it/languages/HCL.md rename to i18n/it/docs/languages/HCL.md diff --git a/docs.it/languages/README.md b/i18n/it/docs/languages/README.md similarity index 100% rename from docs.it/languages/README.md rename to i18n/it/docs/languages/README.md diff --git a/docs.it/languages/Terraform.md b/i18n/it/docs/languages/Terraform.md similarity index 100% rename from docs.it/languages/Terraform.md rename to i18n/it/docs/languages/Terraform.md diff --git a/docs.it/languages/_category_.json b/i18n/it/docs/languages/_category_.json similarity index 100% rename from docs.it/languages/_category_.json rename to i18n/it/docs/languages/_category_.json diff --git a/docs.it/languages/c_cpp.md b/i18n/it/docs/languages/c_cpp.md similarity index 100% rename from docs.it/languages/c_cpp.md rename to i18n/it/docs/languages/c_cpp.md diff --git a/docs.it/languages/csharp.md b/i18n/it/docs/languages/csharp.md similarity index 100% rename from docs.it/languages/csharp.md rename to i18n/it/docs/languages/csharp.md diff --git a/docs.it/languages/go.md b/i18n/it/docs/languages/go.md similarity index 100% rename from docs.it/languages/go.md rename to i18n/it/docs/languages/go.md diff --git a/docs.it/languages/java.md b/i18n/it/docs/languages/java.md similarity index 100% rename from docs.it/languages/java.md rename to i18n/it/docs/languages/java.md diff --git a/docs.it/languages/javascript.md b/i18n/it/docs/languages/javascript.md similarity index 100% rename from docs.it/languages/javascript.md rename to i18n/it/docs/languages/javascript.md diff --git a/docs.it/languages/json.md b/i18n/it/docs/languages/json.md similarity index 100% rename from docs.it/languages/json.md rename to i18n/it/docs/languages/json.md diff --git a/docs.it/languages/julia.md b/i18n/it/docs/languages/julia.md similarity index 100% rename from docs.it/languages/julia.md rename to i18n/it/docs/languages/julia.md diff --git a/docs.it/languages/lua.md b/i18n/it/docs/languages/lua.md similarity index 100% rename from docs.it/languages/lua.md rename to i18n/it/docs/languages/lua.md diff --git a/docs.it/languages/powershell.md b/i18n/it/docs/languages/powershell.md similarity index 100% rename from docs.it/languages/powershell.md rename to i18n/it/docs/languages/powershell.md diff --git a/docs.it/languages/python.md b/i18n/it/docs/languages/python.md similarity index 100% rename from docs.it/languages/python.md rename to i18n/it/docs/languages/python.md diff --git a/docs.it/languages/qml.md b/i18n/it/docs/languages/qml.md similarity index 100% rename from docs.it/languages/qml.md rename to i18n/it/docs/languages/qml.md diff --git a/docs.it/languages/ruby.md b/i18n/it/docs/languages/ruby.md similarity index 100% rename from docs.it/languages/ruby.md rename to i18n/it/docs/languages/ruby.md diff --git a/docs.it/languages/rust.md b/i18n/it/docs/languages/rust.md similarity index 100% rename from docs.it/languages/rust.md rename to i18n/it/docs/languages/rust.md diff --git a/docs.it/languages/scala.md b/i18n/it/docs/languages/scala.md similarity index 100% rename from docs.it/languages/scala.md rename to i18n/it/docs/languages/scala.md diff --git a/docs.it/languages/swift.md b/i18n/it/docs/languages/swift.md similarity index 100% rename from docs.it/languages/swift.md rename to i18n/it/docs/languages/swift.md diff --git a/docs.it/languages/typescript.md b/i18n/it/docs/languages/typescript.md similarity index 100% rename from docs.it/languages/typescript.md rename to i18n/it/docs/languages/typescript.md diff --git a/docs.it/languages/vue.md b/i18n/it/docs/languages/vue.md similarity index 100% rename from docs.it/languages/vue.md rename to i18n/it/docs/languages/vue.md diff --git a/docs.it/plugins/01-core-plugins-list.md b/i18n/it/docs/plugins/01-core-plugins-list.md similarity index 100% rename from docs.it/plugins/01-core-plugins-list.md rename to i18n/it/docs/plugins/01-core-plugins-list.md diff --git a/docs.it/plugins/02-extra-plugins.md b/i18n/it/docs/plugins/02-extra-plugins.md similarity index 100% rename from docs.it/plugins/02-extra-plugins.md rename to i18n/it/docs/plugins/02-extra-plugins.md diff --git a/docs.it/plugins/README.md b/i18n/it/docs/plugins/README.md similarity index 100% rename from docs.it/plugins/README.md rename to i18n/it/docs/plugins/README.md diff --git a/docs.it/plugins/_category_.json b/i18n/it/docs/plugins/_category_.json similarity index 100% rename from docs.it/plugins/_category_.json rename to i18n/it/docs/plugins/_category_.json diff --git a/docs.it/sponsors/01-donate.md b/i18n/it/docs/sponsors/01-donate.md similarity index 100% rename from docs.it/sponsors/01-donate.md rename to i18n/it/docs/sponsors/01-donate.md diff --git a/docs.it/sponsors/README.md b/i18n/it/docs/sponsors/README.md similarity index 100% rename from docs.it/sponsors/README.md rename to i18n/it/docs/sponsors/README.md diff --git a/docs.it/sponsors/_category_.json b/i18n/it/docs/sponsors/_category_.json similarity index 100% rename from docs.it/sponsors/_category_.json rename to i18n/it/docs/sponsors/_category_.json diff --git a/docs.it/troubleshooting/README.md b/i18n/it/docs/troubleshooting/README.md similarity index 100% rename from docs.it/troubleshooting/README.md rename to i18n/it/docs/troubleshooting/README.md diff --git a/docs.it/troubleshooting/_category_.json b/i18n/it/docs/troubleshooting/_category_.json similarity index 100% rename from docs.it/troubleshooting/_category_.json rename to i18n/it/docs/troubleshooting/_category_.json From 2687a1194cf433e0bc477f2abdb1e0f46f69041f Mon Sep 17 00:00:00 2001 From: Gabriele Musco Date: Sun, 2 Oct 2022 11:27:38 +0200 Subject: [PATCH 3/3] fixed i18n file locations; added menu entry for translation --- docusaurus.config.js | 8 ++++++-- .../current}/01-introduction.md | 0 .../current}/02-installation.md | 2 +- .../current}/03-quick-start.md | 0 .../current}/_category_.json | 0 .../current}/community/01-meet-the-team.md | 0 .../current}/community/README.md | 0 .../current}/community/_category_.json | 0 .../current}/community/faq.md | 0 .../current}/configuration/01-settings.md | 0 .../current}/configuration/02-keybindings.md | 0 .../current}/configuration/03-colorschemes.md | 0 .../current}/configuration/04-nerd-fonts.md | 0 .../current}/configuration/05-autocommands.md | 0 .../current}/configuration/06-statusline.md | 0 .../current}/configuration/07-ftplugin.md | 0 .../current}/configuration/08-custom-snippets.md | 0 .../current}/configuration/README.md | 0 .../current}/configuration/_category_.json | 0 .../current}/dev/02-under-the-hood.md | 0 .../current}/dev/README.md | 0 .../current}/dev/_category_.json | 0 .../current}/dev/lunarvim_initialization.png | Bin .../current}/languages/HCL.md | 0 .../current}/languages/README.md | 0 .../current}/languages/Terraform.md | 0 .../current}/languages/_category_.json | 0 .../current}/languages/c_cpp.md | 0 .../current}/languages/csharp.md | 0 .../current}/languages/go.md | 0 .../current}/languages/java.md | 0 .../current}/languages/javascript.md | 0 .../current}/languages/json.md | 0 .../current}/languages/julia.md | 0 .../current}/languages/lua.md | 0 .../current}/languages/powershell.md | 0 .../current}/languages/python.md | 0 .../current}/languages/qml.md | 0 .../current}/languages/ruby.md | 0 .../current}/languages/rust.md | 0 .../current}/languages/scala.md | 0 .../current}/languages/swift.md | 0 .../current}/languages/typescript.md | 0 .../current}/languages/vue.md | 0 .../current}/plugins/01-core-plugins-list.md | 0 .../current}/plugins/02-extra-plugins.md | 0 .../current}/plugins/README.md | 0 .../current}/plugins/_category_.json | 0 .../current}/sponsors/01-donate.md | 0 .../current}/sponsors/README.md | 0 .../current}/sponsors/_category_.json | 0 .../current}/troubleshooting/README.md | 0 .../current}/troubleshooting/_category_.json | 0 53 files changed, 7 insertions(+), 3 deletions(-) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/01-introduction.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/02-installation.md (99%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/03-quick-start.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/community/01-meet-the-team.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/community/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/community/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/community/faq.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/01-settings.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/02-keybindings.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/03-colorschemes.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/04-nerd-fonts.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/05-autocommands.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/06-statusline.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/07-ftplugin.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/08-custom-snippets.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/configuration/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/dev/02-under-the-hood.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/dev/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/dev/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/dev/lunarvim_initialization.png (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/HCL.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/Terraform.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/c_cpp.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/csharp.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/go.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/java.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/javascript.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/json.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/julia.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/lua.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/powershell.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/python.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/qml.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/ruby.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/rust.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/scala.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/swift.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/typescript.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/languages/vue.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/plugins/01-core-plugins-list.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/plugins/02-extra-plugins.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/plugins/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/plugins/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/sponsors/01-donate.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/sponsors/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/sponsors/_category_.json (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/troubleshooting/README.md (100%) rename i18n/it/{docs => docusaurus-plugin-content-docs/current}/troubleshooting/_category_.json (100%) diff --git a/docusaurus.config.js b/docusaurus.config.js index f7131522..658fdd9e 100644 --- a/docusaurus.config.js +++ b/docusaurus.config.js @@ -57,12 +57,12 @@ const config = { customFields: { primaryCTA: { text: "Install", - to: "/docs/installation", + to: "docs/installation", }, // secondary all to action optional secondaryCTA: { text:"Support" , - to: "/docs/sponsors/donate", + to: "docs/sponsors/donate", }, heroImage: { src: "/img/lunarvim_logo.png", @@ -96,6 +96,10 @@ const config = { label: 'GitHub', position: 'right', }, + { + type: 'localeDropdown', + position: 'right', + }, ], }, prism: { diff --git a/i18n/it/docs/01-introduction.md b/i18n/it/docusaurus-plugin-content-docs/current/01-introduction.md similarity index 100% rename from i18n/it/docs/01-introduction.md rename to i18n/it/docusaurus-plugin-content-docs/current/01-introduction.md diff --git a/i18n/it/docs/02-installation.md b/i18n/it/docusaurus-plugin-content-docs/current/02-installation.md similarity index 99% rename from i18n/it/docs/02-installation.md rename to i18n/it/docusaurus-plugin-content-docs/current/02-installation.md index edba3e6c..b44bdda1 100644 --- a/i18n/it/docs/02-installation.md +++ b/i18n/it/docusaurus-plugin-content-docs/current/02-installation.md @@ -107,7 +107,7 @@ E d'ora in poi potrai lanciare in questo modo: ```bash lvim-gui -# or with params +# o con parametri lvim-gui some-file ``` diff --git a/i18n/it/docs/03-quick-start.md b/i18n/it/docusaurus-plugin-content-docs/current/03-quick-start.md similarity index 100% rename from i18n/it/docs/03-quick-start.md rename to i18n/it/docusaurus-plugin-content-docs/current/03-quick-start.md diff --git a/i18n/it/docs/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/_category_.json similarity index 100% rename from i18n/it/docs/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/_category_.json diff --git a/i18n/it/docs/community/01-meet-the-team.md b/i18n/it/docusaurus-plugin-content-docs/current/community/01-meet-the-team.md similarity index 100% rename from i18n/it/docs/community/01-meet-the-team.md rename to i18n/it/docusaurus-plugin-content-docs/current/community/01-meet-the-team.md diff --git a/i18n/it/docs/community/README.md b/i18n/it/docusaurus-plugin-content-docs/current/community/README.md similarity index 100% rename from i18n/it/docs/community/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/community/README.md diff --git a/i18n/it/docs/community/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/community/_category_.json similarity index 100% rename from i18n/it/docs/community/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/community/_category_.json diff --git a/i18n/it/docs/community/faq.md b/i18n/it/docusaurus-plugin-content-docs/current/community/faq.md similarity index 100% rename from i18n/it/docs/community/faq.md rename to i18n/it/docusaurus-plugin-content-docs/current/community/faq.md diff --git a/i18n/it/docs/configuration/01-settings.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/01-settings.md similarity index 100% rename from i18n/it/docs/configuration/01-settings.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/01-settings.md diff --git a/i18n/it/docs/configuration/02-keybindings.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/02-keybindings.md similarity index 100% rename from i18n/it/docs/configuration/02-keybindings.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/02-keybindings.md diff --git a/i18n/it/docs/configuration/03-colorschemes.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/03-colorschemes.md similarity index 100% rename from i18n/it/docs/configuration/03-colorschemes.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/03-colorschemes.md diff --git a/i18n/it/docs/configuration/04-nerd-fonts.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/04-nerd-fonts.md similarity index 100% rename from i18n/it/docs/configuration/04-nerd-fonts.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/04-nerd-fonts.md diff --git a/i18n/it/docs/configuration/05-autocommands.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/05-autocommands.md similarity index 100% rename from i18n/it/docs/configuration/05-autocommands.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/05-autocommands.md diff --git a/i18n/it/docs/configuration/06-statusline.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/06-statusline.md similarity index 100% rename from i18n/it/docs/configuration/06-statusline.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/06-statusline.md diff --git a/i18n/it/docs/configuration/07-ftplugin.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/07-ftplugin.md similarity index 100% rename from i18n/it/docs/configuration/07-ftplugin.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/07-ftplugin.md diff --git a/i18n/it/docs/configuration/08-custom-snippets.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/08-custom-snippets.md similarity index 100% rename from i18n/it/docs/configuration/08-custom-snippets.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/08-custom-snippets.md diff --git a/i18n/it/docs/configuration/README.md b/i18n/it/docusaurus-plugin-content-docs/current/configuration/README.md similarity index 100% rename from i18n/it/docs/configuration/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/README.md diff --git a/i18n/it/docs/configuration/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/configuration/_category_.json similarity index 100% rename from i18n/it/docs/configuration/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/configuration/_category_.json diff --git a/i18n/it/docs/dev/02-under-the-hood.md b/i18n/it/docusaurus-plugin-content-docs/current/dev/02-under-the-hood.md similarity index 100% rename from i18n/it/docs/dev/02-under-the-hood.md rename to i18n/it/docusaurus-plugin-content-docs/current/dev/02-under-the-hood.md diff --git a/i18n/it/docs/dev/README.md b/i18n/it/docusaurus-plugin-content-docs/current/dev/README.md similarity index 100% rename from i18n/it/docs/dev/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/dev/README.md diff --git a/i18n/it/docs/dev/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/dev/_category_.json similarity index 100% rename from i18n/it/docs/dev/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/dev/_category_.json diff --git a/i18n/it/docs/dev/lunarvim_initialization.png b/i18n/it/docusaurus-plugin-content-docs/current/dev/lunarvim_initialization.png similarity index 100% rename from i18n/it/docs/dev/lunarvim_initialization.png rename to i18n/it/docusaurus-plugin-content-docs/current/dev/lunarvim_initialization.png diff --git a/i18n/it/docs/languages/HCL.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/HCL.md similarity index 100% rename from i18n/it/docs/languages/HCL.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/HCL.md diff --git a/i18n/it/docs/languages/README.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/README.md similarity index 100% rename from i18n/it/docs/languages/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/README.md diff --git a/i18n/it/docs/languages/Terraform.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/Terraform.md similarity index 100% rename from i18n/it/docs/languages/Terraform.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/Terraform.md diff --git a/i18n/it/docs/languages/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/languages/_category_.json similarity index 100% rename from i18n/it/docs/languages/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/languages/_category_.json diff --git a/i18n/it/docs/languages/c_cpp.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/c_cpp.md similarity index 100% rename from i18n/it/docs/languages/c_cpp.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/c_cpp.md diff --git a/i18n/it/docs/languages/csharp.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/csharp.md similarity index 100% rename from i18n/it/docs/languages/csharp.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/csharp.md diff --git a/i18n/it/docs/languages/go.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/go.md similarity index 100% rename from i18n/it/docs/languages/go.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/go.md diff --git a/i18n/it/docs/languages/java.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/java.md similarity index 100% rename from i18n/it/docs/languages/java.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/java.md diff --git a/i18n/it/docs/languages/javascript.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/javascript.md similarity index 100% rename from i18n/it/docs/languages/javascript.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/javascript.md diff --git a/i18n/it/docs/languages/json.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/json.md similarity index 100% rename from i18n/it/docs/languages/json.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/json.md diff --git a/i18n/it/docs/languages/julia.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/julia.md similarity index 100% rename from i18n/it/docs/languages/julia.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/julia.md diff --git a/i18n/it/docs/languages/lua.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/lua.md similarity index 100% rename from i18n/it/docs/languages/lua.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/lua.md diff --git a/i18n/it/docs/languages/powershell.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/powershell.md similarity index 100% rename from i18n/it/docs/languages/powershell.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/powershell.md diff --git a/i18n/it/docs/languages/python.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/python.md similarity index 100% rename from i18n/it/docs/languages/python.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/python.md diff --git a/i18n/it/docs/languages/qml.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/qml.md similarity index 100% rename from i18n/it/docs/languages/qml.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/qml.md diff --git a/i18n/it/docs/languages/ruby.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/ruby.md similarity index 100% rename from i18n/it/docs/languages/ruby.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/ruby.md diff --git a/i18n/it/docs/languages/rust.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/rust.md similarity index 100% rename from i18n/it/docs/languages/rust.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/rust.md diff --git a/i18n/it/docs/languages/scala.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/scala.md similarity index 100% rename from i18n/it/docs/languages/scala.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/scala.md diff --git a/i18n/it/docs/languages/swift.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/swift.md similarity index 100% rename from i18n/it/docs/languages/swift.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/swift.md diff --git a/i18n/it/docs/languages/typescript.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/typescript.md similarity index 100% rename from i18n/it/docs/languages/typescript.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/typescript.md diff --git a/i18n/it/docs/languages/vue.md b/i18n/it/docusaurus-plugin-content-docs/current/languages/vue.md similarity index 100% rename from i18n/it/docs/languages/vue.md rename to i18n/it/docusaurus-plugin-content-docs/current/languages/vue.md diff --git a/i18n/it/docs/plugins/01-core-plugins-list.md b/i18n/it/docusaurus-plugin-content-docs/current/plugins/01-core-plugins-list.md similarity index 100% rename from i18n/it/docs/plugins/01-core-plugins-list.md rename to i18n/it/docusaurus-plugin-content-docs/current/plugins/01-core-plugins-list.md diff --git a/i18n/it/docs/plugins/02-extra-plugins.md b/i18n/it/docusaurus-plugin-content-docs/current/plugins/02-extra-plugins.md similarity index 100% rename from i18n/it/docs/plugins/02-extra-plugins.md rename to i18n/it/docusaurus-plugin-content-docs/current/plugins/02-extra-plugins.md diff --git a/i18n/it/docs/plugins/README.md b/i18n/it/docusaurus-plugin-content-docs/current/plugins/README.md similarity index 100% rename from i18n/it/docs/plugins/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/plugins/README.md diff --git a/i18n/it/docs/plugins/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/plugins/_category_.json similarity index 100% rename from i18n/it/docs/plugins/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/plugins/_category_.json diff --git a/i18n/it/docs/sponsors/01-donate.md b/i18n/it/docusaurus-plugin-content-docs/current/sponsors/01-donate.md similarity index 100% rename from i18n/it/docs/sponsors/01-donate.md rename to i18n/it/docusaurus-plugin-content-docs/current/sponsors/01-donate.md diff --git a/i18n/it/docs/sponsors/README.md b/i18n/it/docusaurus-plugin-content-docs/current/sponsors/README.md similarity index 100% rename from i18n/it/docs/sponsors/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/sponsors/README.md diff --git a/i18n/it/docs/sponsors/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/sponsors/_category_.json similarity index 100% rename from i18n/it/docs/sponsors/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/sponsors/_category_.json diff --git a/i18n/it/docs/troubleshooting/README.md b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/README.md similarity index 100% rename from i18n/it/docs/troubleshooting/README.md rename to i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/README.md diff --git a/i18n/it/docs/troubleshooting/_category_.json b/i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/_category_.json similarity index 100% rename from i18n/it/docs/troubleshooting/_category_.json rename to i18n/it/docusaurus-plugin-content-docs/current/troubleshooting/_category_.json