nvim: Remove entire old config; Add new plugins in new format

This commit is contained in:
Andreas Tsouchlos 2025-11-07 22:23:03 +01:00
parent a4b9fc3cf9
commit de2734ba98
65 changed files with 400 additions and 3395 deletions

View File

@ -0,0 +1,8 @@
{
"runtime.version": "LuaJIT",
"rutime.path": ["lua/?.lua", "lua/?/init.lua"],
"diagnostics.globals": ["vim"],
"workspace.checkThirdParty": false,
"workspace.library": ["$VIMRUNTIME"]
}

View File

@ -1,38 +0,0 @@
# neovim config
`neovim` configuration files.
## Usage
1. Install depencencies
* See one of the Dockerfiles in `dockerfiles` for the necessary packages
* Use a patched font (see, e.g., [nerd fonts](https://www.nerdfonts.com/))
2. Clone repository into configuration directory:
```bash
$ git clone ssh://git@git.mercurial-manifold.eu:2224/an.tsouchlos/config-nvim.git ~/.config/nvim
```
3. If desired, configure github copilot by running `:Copilot setup`
## Build docker images
### Arch linux
Because AUR package installation requires the `fakeroot` command, which is
extremely slow when [no limit has been set on the maximum number of file
descriptors](https://github.com/moby/moby/issues/45436), the image has to
be build using the `--ulimit "nofile=1024:1048576"` option:
```bash
$ docker build . -f dockerfiles/Dockerfile.archlinux --ulimit "nofile=1024:1048576" -t config
$ docker run --rm -it config
```
### Ubuntu
Because neovim is installed through an `AppImage`, the container has to be
started with `--privileged` to be able to run `nvim`.
```bash
$ docker build . -f dockerfiles/Dockerfile.ubuntu -t config
$ docker run --rm -it --privileged config
```

View File

@ -1,61 +0,0 @@
FROM archlinux:latest
#
# General boiler plate
#
# Add mock non-root user for AUR package compilation
RUN useradd --no-create-home --shell=/bin/false build && usermod -L build
RUN echo 'build ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers
# Ready image for installation
RUN pacman-key --init
RUN pacman-key --populate archlinux
RUN pacman -Sy archlinux-keyring --noconfirm && pacman -Su --noconfirm
RUN pacman -Syu --noconfirm
# Install generic dependencies
RUN pacman -S git wget sudo base-devel --noconfirm
#
# Neovim specific
#
# Install nvim
RUN pacman -S neovim --noconfirm
# Install nvim module dependencies
RUN pacman -S python-pynvim --noconfirm # python3 provider
RUN pacman -S npm --noconfirm # mason requirements
RUN pacman -S fd ripgrep --noconfirm # Telescope requirements
RUN pacman -S powerline-fonts --noconfirm # vim-airline requirements
#RUN pacman -S autopep8 texlive-binextra \
# perl-yaml-tiny perl-file-homedir --noconfirm # neoformat requirements
WORKDIR /tmp
USER build
ARG HOME=/tmp
RUN wget https://aur.archlinux.org/cgit/aur.git/snapshot/neovim-remote.tar.gz
RUN tar xzvf neovim-remote.tar.gz
RUN cd neovim-remote && makepkg -s --noconfirm
USER root
RUN pacman -U neovim-remote/*.pkg.tar.zst --noconfirm # vimtex requirements
WORKDIR /
# Copy configuration
RUN mkdir -p /root/.config/nvim
COPY . /root/.config/nvim

View File

@ -1,96 +0,0 @@
FROM ubuntu:22.04
#
# General boiler plate
#
# Ready image for installation
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update -y && apt upgrade -y
# Install generic dependencies
RUN apt install git python3 python3-pip sudo -y
# Set up user
ARG UNAME=dev
ARG UID=1000
ARG GID=1000
RUN groupadd -g $GID -o $UNAME
RUN useradd -m -u $UID -g $GID -o -s /bin/bash $UNAME
RUN adduser $UNAME sudo
RUN echo "%sudo ALL=(ALL:ALL) NOPASSWD: ALL" | sudo tee -a /etc/sudoers.d/nopassword
#
# Install neovim
#
# Install neovim
WORKDIR /tmp
RUN git clone https://github.com/neovim/neovim.git
WORKDIR /tmp/neovim
RUN git checkout stable
RUN apt install ninja-build gettext cmake unzip curl -y
RUN make CMAKE_BUILD_TYPE=Release -j `nproc` && make install
WORKDIR /
# Install package dependencies
RUN python3 -m pip install pynvim # python3 provider
RUN python3 -m pip install jupytext # jupytext requirements
RUN apt install fd-find ripgrep -y # Telescope requirements
RUN apt install fonts-powerline -y # vim-airline requirements
RUN python3 -m pip install neovim-remote # vimtex requirements
RUN apt install curl -y # vim-doge requirements
RUN apt install npm python3-venv luarocks -y # mason build requirements
RUN python3 -m pip install cairosvg pnglatex plotly kaleido pyperclip jupyter-client ipykernel # molten requirements
# Configure
RUN mkdir -p "/home/${UNAME}/.config/nvim"
COPY . "/home/${UNAME}/.config/nvim"
RUN chown -R $UNAME:$UNAME "/home/${UNAME}/.config"
USER $UNAME
RUN nvim --headless "+Lazy! sync" +qa
RUN nvim --headless "+MasonInstall clangd pyright cmake-language-server bash-language-server texlab clang-format latexindent mdformat autopep8" +qa
RUN nvim --headless "+TSInstallSync markdown" +qa # For some reason, without this markdown installation fails the first time
USER root
#
# Install other tools
#
# Install firefox
# (Taken from https://askubuntu.com/a/1404401)
RUN apt install software-properties-common -y
RUN add-apt-repository ppa:mozillateam/ppa
RUN echo '\n\
Package: *\n\
Pin: release o=LP-PPA-mozillateam\n\
Pin-Priority: 1001\n\n\
Package: firefox\n\
Pin: version 1:1snap1-0ubuntu2\n\
Pin-Priority: -1\n\
' | tee /etc/apt/preferences.d/mozilla-firefox
RUN apt install firefox -y
RUN echo 'Unattended-Upgrade::Allowed-Origins:: "LP-PPA-mozillateam:${distro_codename}";' | tee /etc/apt/apt.conf.d/51unattended-upgrades-firefox
# Other stuff
RUN apt install fzf xclip -y
USER $UNAME
WORKDIR /home/$UNAME
CMD /bin/bash

View File

@ -1,52 +0,0 @@
FROM ubuntu:22.04
#
# General boiler plate
#
# Ready image for installation
ARG DEBIAN_FRONTEND=noninteractive
RUN apt update -y && apt upgrade -y
# Install generic dependencies
RUN apt install git python3 python3-pip -y
#
# Install neovim
#
# Install neovim
WORKDIR /tmp
RUN git clone https://github.com/neovim/neovim.git
WORKDIR /tmp/neovim
RUN git checkout stable
RUN apt install ninja-build gettext cmake unzip curl -y
RUN make CMAKE_BUILD_TYPE=Release -j `nproc` && make install
WORKDIR /
# Install package dependencies
RUN python3 -m pip install pynvim # python3 provider
RUN python3 -m pip install jupytext # jupytext requirements
RUN apt install fd-find ripgrep -y # Telescope requirements
RUN apt install fonts-powerline -y # vim-airline requirements
RUN python3 -m pip install neovim-remote # vimtex requirements
RUN apt install curl -y # vim-doge requirements
RUN apt install npm python3-venv luarocks -y # mason build requirements
RUN python3 -m pip install cairosvg pnglatex plotly kaleido pyperclip jupyter-client ipykernel # molten requirements
# Configure
RUN mkdir -p /root/.config/nvim
COPY . /root/.config/nvim
RUN nvim --headless "+Lazy! sync" +qa
RUN nvim --headless "+MasonInstall clangd pyright cmake-language-server bash-language-server texlab clang-format latexindent luaformatter mdformat autopep8" +qa
RUN nvim --headless "+TSInstallSync markdown" +qa # For some reason, without this markdown installation fails the first time

View File

@ -1,17 +1,2 @@
require("set")
require("remap")
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
vim.fn.system({
"git",
"clone",
"--filter=blob:none",
"https://github.com/folke/lazy.nvim.git",
"--branch=stable", -- latest stable release
lazypath,
})
end
vim.opt.rtp:prepend(lazypath)
require("lazy").setup("plugins")
require('set')
require('plugins')

View File

@ -1,58 +0,0 @@
{
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
"alpha-nvim": { "branch": "main", "commit": "a35468cd72645dbd52c0624ceead5f301c566dff" },
"auto-session": { "branch": "main", "commit": "fffb13dcbe8731b8650e5bf1caa749a485d20556" },
"cellular-automaton.nvim": { "branch": "main", "commit": "1606e9d5d04ff254023c3f3c62842d065708d6d3" },
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
"cmp-nvim-lsp": { "branch": "main", "commit": "a8912b88ce488f411177fc8aed358b04dc246d7b" },
"cmp-nvim-lsp-signature-help": { "branch": "main", "commit": "031e6ba70b0ad5eee49fd2120ff7a2e325b17fa7" },
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
"copilot.lua": { "branch": "master", "commit": "c1bb86abbed1a52a11ab3944ef00c8410520543d" },
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
"gruvbox.nvim": { "branch": "main", "commit": "00e38a379bab3389e187b3953566d67d494dfddd" },
"harpoon": { "branch": "master", "commit": "1bc17e3e42ea3c46b33c0bbad6a880792692a1b3" },
"image.nvim": { "branch": "master", "commit": "4c51d6202628b3b51e368152c053c3fb5c5f76f2" },
"jupytext.nvim": { "branch": "main", "commit": "c8baf3ad344c59b3abd461ecc17fc16ec44d0f7b" },
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
"lsp-colors.nvim": { "branch": "main", "commit": "2bbe7541747fd339bdd8923fc45631a09bb4f1e5" },
"lsp-zero.nvim": { "branch": "v3.x", "commit": "77550f2f6cbf0959ef1583d845661af075f3442b" },
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
"markdown-preview.nvim": { "branch": "master", "commit": "a923f5fc5ba36a3b17e289dc35dc17f66d0548ee" },
"markdown-toc.nvim": { "branch": "main", "commit": "5f51c86a416d7da6c0708d4ea354722fec7bb2b0" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "bb30c422329e86fcaa4e4920181f6715d634e516" },
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
"molten-nvim": { "branch": "main", "commit": "a286aa914d9a154bc359131aab788b5a077a5a99" },
"neoformat": { "branch": "master", "commit": "9d2e28993e06e86b88c364b6176612b917468f3e" },
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
"nvim-dap": { "branch": "master", "commit": "2edd6375692d9ac1053d50acfe415c1eb2ba92d0" },
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
"nvim-lspconfig": { "branch": "master", "commit": "99d3a0f26bfe402f45257c1398287aef252cbe2d" },
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
"oil.nvim": { "branch": "master", "commit": "08c2bce8b00fd780fb7999dbffdf7cd174e896fb" },
"otter.nvim": { "branch": "main", "commit": "f3a401851c25c64220dcf2470252a1adc28308d5" },
"overseer.nvim": { "branch": "master", "commit": "72c68aab0358c92f451168b704c411c4a3e3410e" },
"pastify.nvim": { "branch": "main", "commit": "4a1d1e03c3ae725ee4af796deca8c7c169ef626e" },
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
"quarto-nvim": { "branch": "main", "commit": "5325af3731ac9840b308791f08ad660958d76163" },
"session-lens": { "branch": "main", "commit": "eae46b472b3150f5ec0f977556e8085683d49eb0" },
"sqlite.nvim": { "branch": "master", "commit": "a8466c830a89794c2eafa41b41dd11fdf4a0d7ca" },
"telescope.nvim": { "branch": "master", "commit": "d90956833d7c27e73c621a61f20b29fdb7122709" },
"time-tracker.nvim": { "branch": "master", "commit": "c84998bbadb1afca8e09943b1c14bafe1711bb9a" },
"todo-comments.nvim": { "branch": "main", "commit": "304a8d204ee787d2544d8bc23cd38d2f929e7cc5" },
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
"trouble.nvim": { "branch": "main", "commit": "3609bb9a82bbab1ef95cf2c27ce7e52267a7d40d" },
"undotree": { "branch": "master", "commit": "b951b87b46c34356d44aa71886aecf9dd7f5788a" },
"vim-doge": { "branch": "master", "commit": "03a84072ef21b205237c77986c78914395d646c3" },
"vim-flog": { "branch": "master", "commit": "665b16ac8915f746bc43c9572b4581a5e9047216" },
"vim-fugitive": { "branch": "master", "commit": "4a745ea72fa93bb15dd077109afbb3d1809383f2" },
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
"vimtex": { "branch": "master", "commit": "e10525a5aa65e2544f11e680dd81c77fba800248" },
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" }
}

View File

@ -1,19 +0,0 @@
return {
"yetone/avante.nvim",
event = "VeryLazy",
lazy = false,
version = false, -- set this if you want to always pull the latest change
opts = {
provider = "copilot"
},
build = "make",
dependencies = {
"stevearc/dressing.nvim",
"nvim-lua/plenary.nvim",
"MunifTanjim/nui.nvim",
--- The below dependencies are optional,
"hrsh7th/nvim-cmp", -- autocompletion for avante commands and mentions
"nvim-tree/nvim-web-devicons", -- or echasnovski/mini.icons
"zbirenbaum/copilot.lua" -- for providers='copilot'
}
}

View File

@ -1,18 +0,0 @@
return {
{
'nvim-tree/nvim-tree.lua',
cmd = {
"NvimTreeToggle",
"NvimTreeFocus"
},
init = function()
vim.opt.termguicolors = true
vim.keymap.set('n', '<leader>e', '<cmd>NvimTreeToggle<cr>', {
noremap = true,
silent = true,
desc = "Explorer"
})
end,
config = function() require("nvim-tree").setup() end
}
}

View File

@ -1,8 +0,0 @@
return {
{
"ThePrimeagen/vim-be-good",
cmd = {
"VimBeGood"
}
}
}

View File

@ -20,5 +20,3 @@ vim.keymap.set("n", "q:", "<nop>")
vim.cmd [[call nvim_create_user_command('W', 'w', {'nargs': 0})]]
vim.keymap.set("n", "QQ", ":q!<CR>")
-- vim.keymap.set("n", "<leader>cb", [[:up | %bd | e#<CR>]])

View File

@ -1,25 +0,0 @@
return {
name = "Cargo Build",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"cargo"
},
args = {
"build"
},
components = {
{
"on_output_quickfix"
},
"default"
}
}
end,
condition = {
filetype = {
"rust",
}
}
}

View File

@ -1,22 +0,0 @@
return {
name = "Cargo Clean",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"cargo"
},
args = {
"clean",
},
components = {
"default"
}
}
end,
condition = {
filetype = {
"rust",
}
}
}

View File

@ -1,22 +0,0 @@
return {
name = "Cargo Run",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"cargo"
},
args = {
"run"
},
components = {
"default"
}
}
end,
condition = {
filetype = {
"rust"
}
}
}

View File

@ -1,24 +0,0 @@
return {
name = "Cargo Test",
builder = function()
return {
cmd = {
"cargo"
},
args = {
"test",
},
components = {
{
"on_output_quickfix"
},
"default"
}
}
end,
condition = {
filetype = {
"rust",
}
}
}

View File

@ -1,28 +0,0 @@
return {
name = "CMake Build",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"cmake"
},
args = {
"--build",
"build",
"-j16"
},
components = {
{
"on_output_quickfix"
},
"default"
}
}
end,
condition = {
filetype = {
"cmake",
"cpp"
}
}
}

View File

@ -1,24 +0,0 @@
return {
name = "CMake Clean",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"rm"
},
args = {
"-r",
"build",
},
components = {
"default"
}
}
end,
condition = {
filetype = {
"cmake",
"cpp"
}
}
}

View File

@ -1,58 +0,0 @@
return {
name = "CMake Generate",
params = {
build_type = {
type = "enum",
choices = {
"Debug",
"Release",
"RelWithDebInfo",
"MinSizeRel"
},
default = "Release"
},
generator = {
type = "enum",
choices = {
"Ninja",
"Unix Makefiles"
},
default = "Ninja"
},
compiler = {
type = "enum",
choices = {
"g++",
"clang++"
},
default = "g++"
}
},
builder = function(params)
return {
cmd = {
"cmake"
},
args = {
"-B",
"build",
"-S",
".",
"-DCMAKE_EXPORT_COMPILE_COMMANDS=ON",
"-DCMAKE_BUILD_TYPE=" .. params.build_type,
"-DCMAKE_CXX_COMPILER=" .. params.compiler,
"-G",
params.generator
},
components = {
"default"
}
}
end,
condition = {
filetype = {
"cmake",
"cpp"
}
}
}

View File

@ -1,27 +0,0 @@
return {
name = "CMake Test",
builder = function()
return {
cmd = {
"ctest"
},
args = {
"--test-dir",
"build",
"--output-on-failure",
},
components = {
{
"on_output_quickfix"
},
"default"
}
}
end,
condition = {
filetype = {
"cmake",
"cpp"
}
}
}

View File

@ -1,22 +0,0 @@
return {
name = "Python Run",
builder = function()
local file = vim.fn.expand("%:p")
return {
cmd = {
"python"
},
args = {
file
},
components = {
"default"
}
}
end,
condition = {
filetype = {
"python"
}
}
}

View File

@ -1,7 +1,8 @@
-------------------
--
--
-- Helper functions
-------------------
local function clamp(x, min, max) return math.max(math.min(x, max), min) end
--
--
local function get_random_image()
local images = {
@ -54,11 +55,11 @@ local function get_random_image()
}
}
local pmf = {0.25, 0.25, 0.25, 0.25}
local pmf = { 0.25, 0.25, 0.25, 0.25 }
local cdf = {}
cdf[1] = 0
for j = 2, #pmf+1 do
for j = 2, #pmf + 1 do
cdf[j] = cdf[j - 1] + pmf[j - 1]
end
@ -73,33 +74,29 @@ local function get_random_image()
for j = 2, #cdf do
if r <= cdf[j] * 100 then
return images[j-1]
return images[j - 1]
end
end
end
-----------------
-- Configurtation
-----------------
--
--
-- Plugin configuration
--
--
return {
{
"goolord/alpha-nvim",
lazy = false,
config = function()
local dashboard = require("alpha.themes.dashboard")
dashboard.section.header.val = get_random_image()
dashboard.section.buttons.val = {
dashboard.button('n', ' New file', ':ene <BAR> startinsert <CR>'),
dashboard.button('r', ' Recent files', ':Telescope oldfiles <CR>'),
dashboard.button('f', '󰥨 Find file', ':Telescope find_files <CR>'),
dashboard.button('g', '󰱼 Find text', ':Telescope live_grep <CR>'),
dashboard.button('p', ' Open project', ':Telescope session-lens search_session<CR>'),
dashboard.button('l', '󰒲 Lazy', ':Lazy<CR>'),
dashboard.button('q', ' Quit', ':qa<CR>')
}
vim.pack.add({ "https://github.com/goolord/alpha-nvim" })
require("alpha").setup(dashboard.opts)
end
}
local dashboard = require("alpha.themes.dashboard")
dashboard.section.header.val = get_random_image()
dashboard.section.buttons.val = {
dashboard.button('n', ' New file', ':ene <BAR> startinsert <CR>'),
dashboard.button('r', ' Recent files', ':Telescope oldfiles <CR>'),
dashboard.button('f', '󰥨 Find file', ':Telescope find_files <CR>'),
dashboard.button('g', '󰱼 Find text', ':Telescope live_grep <CR>'),
dashboard.button('p', ' Open project', ':Telescope session-lens search_session<CR>'),
dashboard.button('l', '󰒲 Lazy', ':Lazy<CR>'),
dashboard.button('q', ' Quit', ':qa<CR>')
}
require("alpha").setup(dashboard.opts)

View File

@ -1,45 +0,0 @@
return {
{
"rmagatti/auto-session",
lazy = false,
dependencies = {
"nvim-lualine/lualine.nvim"
},
event = "VimEnter",
init = function()
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
vim.keymap.set('n', '<leader>ss', '<cmd>SessionSave<CR>', {
desc = "Save"
})
vim.keymap.set('n', '<leader>sd', '<cmd>SessionDelete<CR>', {
desc = "Delete"
})
end,
opts = {
log_level = "error",
auto_save_enabled = false
}
},
{
'rmagatti/session-lens',
cmd = {
"Autosession",
"SearchSession"
},
dependencies = {
'rmagatti/auto-session',
'nvim-telescope/telescope.nvim'
},
init = function()
vim.keymap.set('n', '<leader>sf', function() require('session-lens').search_session() end, {
desc = "Find"
})
end,
config = function()
require('session-lens').setup({
prompt_title = 'Sessions'
})
end
}
}

View File

@ -0,0 +1,30 @@
vim.pack.add({
-- dependencies
{ src = "https://github.com/nvim-lua/plenary.nvim" },
{ src = "https://github.com/nvim-telescope/telescope.nvim" },
{ src = "https://github.com/nvim-lualine/lualine.nvim" },
-- plugin
{ src = "https://github.com/rmagatti/auto-session" }
})
require("auto-session").setup({
suppressed_dirs = { "~/", "~/Projects", "~/Downloads", "/" },
log_level = "error",
auto_save_enabled = false,
session_lens = {
picker = "telescope",
load_on_setup = true,
mappings = {
delete_session = { "i", "<C-d>" },
alternate_session = { "i", "<C-s>" },
copy_session = { "i", "<C-y>" },
},
},
})
vim.o.sessionoptions = "blank,buffers,curdir,folds,help,tabpages,winsize,winpos,terminal,localoptions"
vim.keymap.set('n', '<leader>ss', '<cmd>AutoSession save<CR>', { desc = "Save" })
vim.keymap.set('n', '<leader>sd', '<cmd>AutoSession delete<CR>', { desc = "Delete" })
vim.keymap.set('n', '<leader>fs', '<cmd>Telescope session-lens<CR>', { desc = "Session-lens" })

View File

@ -1,9 +0,0 @@
return {
{
'Eandrju/cellular-automaton.nvim',
cmd = {
"CellularAutomaton"
},
init = function() vim.keymap.set("n", "<leader>fu", "<cmd>CellularAutomaton make_it_rain<CR>") end
}
}

View File

@ -1,26 +0,0 @@
return {
"hat0uma/csvview.nvim",
---@module "csvview"
---@type CsvView.Options
opts = {
parser = { comments = { "#", "//" } },
keymaps = {
-- Text objects for selecting fields
textobject_field_inner = { "if", mode = { "o", "x" } },
textobject_field_outer = { "af", mode = { "o", "x" } },
-- Excel-like navigation:
-- Use <Tab> and <S-Tab> to move horizontally between fields.
-- Use <Enter> and <S-Enter> to move vertically between rows and place the cursor at the end of the field.
-- Note: In terminals, you may need to enable CSI-u mode to use <S-Tab> and <S-Enter>.
jump_next_field_end = { "<Tab>", mode = { "n", "v" } },
jump_prev_field_end = { "<S-Tab>", mode = { "n", "v" } },
jump_next_row = { "<Enter>", mode = { "n", "v" } },
jump_prev_row = { "<S-Enter>", mode = { "n", "v" } },
},
},
cmd = { "CsvViewEnable", "CsvViewDisable", "CsvViewToggle" },
init = function()
vim.keymap.set("n", "<leader>ce", ":CsvViewEnable display_mode=border header_lnum=1<CR>")
vim.keymap.set("n", "<leader>cd", ":CsvViewDisable<CR>")
end
}

View File

@ -1,154 +0,0 @@
return {
{
'mfussenegger/nvim-dap',
config = function()
local dap = require("dap")
dap.adapters.gdb = {
type = "executable",
command = "gdb",
args = {
"-i",
"dap"
}
}
dap.adapters.python = function(cb, config)
if config.request == 'attach' then
local port = (config.connect or config).port
local host = (config.connect or config).host or '127.0.0.1'
cb({
type = 'server',
port = assert(port, '`connect.port` is required for a python `attach` configuration'),
host = host,
options = {
source_filetype = 'python'
}
})
else
cb({
type = 'executable',
command = 'python',
args = {
'-m',
'debugpy.adapter'
},
options = {
source_filetype = 'python'
}
})
end
end
dap.configurations.c = {
{
name = "Launch",
type = "gdb",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = "${workspaceFolder}",
stopAtBeginningOfMainSubprogram = false
}
}
dap.configurations.cpp = {
{
name = "Launch",
type = "gdb",
request = "launch",
program = function()
return vim.fn.input('Path to executable: ', vim.fn.getcwd() .. '/', 'file')
end,
cwd = "${workspaceFolder}",
stopAtBeginningOfMainSubprogram = false
}
}
dap.configurations.python = {
{
type = 'python',
request = 'launch',
name = "Launch file",
program = "${file}",
pythonPath = function()
local cwd = vim.fn.getcwd()
if vim.fn.executable(cwd .. '/venv/bin/python') == 1 then
return cwd .. '/venv/bin/python'
elseif vim.fn.executable(cwd .. '/.venv/bin/python') == 1 then
return cwd .. '/.venv/bin/python'
else
return '/usr/bin/python'
end
end
}
}
vim.keymap.set("n", "<leader>db", "<cmd>DapToggleBreakpoint<cr>", {
desc = "Toggle breakpoint"
})
vim.keymap.set("n", "<leader>dc", "<cmd>DapContinue<cr>", {
desc = "Continue"
})
vim.keymap.set("n", "<leader>dt", "<cmd>DapTerminate<cr>", {
desc = "Terminate"
})
vim.keymap.set("n", "<leader>di", "<cmd>DapStepInto<cr>", {
desc = "Step into"
})
vim.keymap.set("n", "<leader>dn", "<cmd>DapStepOver<cr>", {
desc = "Step over"
})
vim.keymap.set("n", "<leader>do", "<cmd>DapStepOut<cr>", {
desc = "Step out"
})
vim.keymap.set("n", '<Leader>dh', function() require('dap.ui.widgets').hover() end, {
desc = "Hover"
})
end
},
{
"rcarriga/nvim-dap-ui",
dependencies = {
"mfussenegger/nvim-dap",
"nvim-neotest/nvim-nio"
},
config = function()
require("dapui").setup({
controls = {
enabled = false
},
layouts = {
{
elements = {
{
id = "scopes",
size = 0.33
},
{
id = "breakpoints",
size = 0.33
},
{
id = "stacks",
size = 0.33
}
},
position = "left",
size = 60
},
{
elements = {
{
id = "repl",
size = 1
}
},
position = "bottom",
size = 15
}
}
})
vim.keymap.set("n", "<leader>du", function() require("dapui").toggle() end, {
desc = " Toggle UI"
})
end
}
}

View File

@ -1,15 +0,0 @@
return {
{
'kkoomen/vim-doge',
build = ':call doge#install()',
init = function()
vim.g.doge_enable_mappings = 0
vim.g.doge_doc_standard_cpp = 'doxygen_cpp_comment_slash'
vim.g.doge_mapping_comment_jump_forward = '<c-j>'
vim.g.doge_mapping_comment_jump_backward = '<c-k>'
vim.keymap.set('n', '<leader>gd', '<Plug>(doge-generate)', { silent = true, desc = "Generate doc"})
-- nmap <silent> <Leader>d <Plug>(doge-generate)
end
}
}

View File

@ -1,6 +0,0 @@
return {
{
'stevearc/dressing.nvim',
event = 'VimEnter'
}
}

View File

@ -1,22 +1,6 @@
return {
{
'tpope/vim-fugitive',
cmd = {
"Git"
},
init = function() vim.keymap.set("n", "<leader>gs", vim.cmd.Git) end
},
{
'rbong/vim-flog',
cmd = {
"Flog",
"Floggit",
"Flogsplit"
},
dependencies = {
{
'tpope/vim-fugitive'
}
}
}
}
vim.pack.add({
{ src = "https://github.com/tpope/vim-fugitive" },
{ src = "https://github.com/rbong/vim-flog" }
})
vim.keymap.set("n", "<leader>gs", vim.cmd.Git)

View File

@ -1,21 +1,21 @@
return {
vim.pack.add({
{
"ThePrimeagen/harpoon",
-- branch = "harpoon2",
dependencies = {
{
"nvim-lua/plenary.nvim"
}
},
init = function()
vim.keymap.set("n", "<C-e>", function() require("harpoon.ui").toggle_quick_menu() end, {desc = "Toggle harpoon ui"})
vim.keymap.set("n", "<leader>a", function() require("harpoon.mark").add_file() end, {desc = "Add to harpoon list"})
vim.keymap.set("n", "<C-h>", function() require("harpoon.ui").nav_file(1) end)
vim.keymap.set("n", "<C-t>", function() require("harpoon.ui").nav_file(2) end)
vim.keymap.set("n", "<C-n>", function() require("harpoon.ui").nav_file(3) end)
vim.keymap.set("n", "<C-s>", function() require("harpoon.ui").nav_file(4) end)
end
src = "https://github.com/nvim-lua/plenary.nvim"
},
{
src = "https://github.com/ThePrimeagen/harpoon",
version = "harpoon2",
}
})
}
local harpoon = require("harpoon")
harpoon:setup()
vim.keymap.set("n", "<leader>a", function() harpoon:list():add() end)
vim.keymap.set("n", "<C-e>", function() harpoon.ui:toggle_quick_menu(harpoon:list()) end)
vim.keymap.set("n", "<C-h>", function() harpoon:list():select(1) end)
vim.keymap.set("n", "<C-t>", function() harpoon:list():select(2) end)
vim.keymap.set("n", "<C-n>", function() harpoon:list():select(3) end)
vim.keymap.set("n", "<C-s>", function() harpoon:list():select(4) end)

View File

@ -0,0 +1,10 @@
local plugin_dir = vim.fn.stdpath('config') .. '/lua/plugins'
local plugin_files = vim.fn.glob(plugin_dir .. '/*.lua', false, true)
for _, file in ipairs(plugin_files) do
local plugin_name = vim.fn.fnamemodify(file, ':t:r')
if plugin_name ~= "init" then
require('plugins.' .. plugin_name)
end
end

View File

@ -1,6 +0,0 @@
return {
{
"folke/lazy.nvim",
tag = "stable"
}
}

View File

@ -1,193 +1,95 @@
return {
{
{
'VonHeikemen/lsp-zero.nvim',
branch = 'v3.x',
lazy = true,
config = false,
init = function()
-- Disable automatic setup, we are doing it manually
vim.g.lsp_zero_extend_cmp = 0
vim.g.lsp_zero_extend_lspconfig = 0
--
--
-- Plugin config
--
--
vim.pack.add({
{ src = "https://github.com/neovim/nvim-lspconfig" },
{ src = "https://github.com/mason-org/mason-lspconfig.nvim" },
{ src = "https://github.com/mason-org/mason.nvim" },
})
require("mason").setup()
require("mason-lspconfig").setup()
--
--
-- Diagnostic config
--
--
vim.diagnostic.config({
virtual_text = true,
float = true,
severity_sort = true,
})
--
--
-- Completion & Formatting
--
--
vim.o.completeopt = "menu,menuone,noinsert,fuzzy"
vim.api.nvim_set_keymap("i", "<C-Space>", "<C-x><C-o>", { noremap = true })
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('my.lsp', {}),
callback = function(args)
local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
-- Make tab accept the selected completion
vim.keymap.set('i', '<Tab>', function()
if vim.fn.pumvisible() == 1 then
return '<C-y>'
else
return '<Tab>'
end
},
{
'williamboman/mason.nvim',
lazy = false,
opts = {
registries = {
"github:antsouchlos/mason-registry",
"github:mason-org/mason-registry"
}
}
},
end, { expr = true })
-- Autocompletion
{
'hrsh7th/nvim-cmp',
event = 'InsertEnter',
dependencies = {
'L3MON4D3/LuaSnip',
'hrsh7th/cmp-buffer',
'hrsh7th/cmp-path',
'hrsh7th/cmp-cmdline',
'hrsh7th/cmp-nvim-lsp-signature-help',
'saadparwaiz1/cmp_luasnip'
},
config = function()
local lsp_zero = require('lsp-zero')
lsp_zero.extend_cmp()
local cmp = require('cmp')
cmp.setup({
sources = {
-- LuaFormatter off
{ name = 'path' },
{ name = 'nvim_lsp' },
{ name = 'nvim_lua' },
{ name = 'luasnip', keyword_length = 2 },
{ name = 'buffer', keyword_length = 3 },
{ name = 'nvim_lsp_signature_help' }
-- LuaFormatter on
},
formatting = lsp_zero.cmp_format(),
mapping = cmp.mapping.preset.insert({
['<C-p>'] = cmp.mapping.select_prev_item(cmp_select),
['<C-n>'] = cmp.mapping.select_next_item(cmp_select),
['<Tab>'] = cmp.mapping.confirm({
select = true
}),
['<C-Space>'] = cmp.mapping.complete()
}),
snippet = {
expand = function(args) require('luasnip').lsp_expand(args.body) end
}
})
cmp.setup.filetype('gitcommit', {
-- LuaFormatter off
sources = cmp.config.sources(
{ { name = 'git' } },
{ { name = 'buffer' } }
)
-- LuaFormatter on
})
cmp.setup.cmdline({
'/',
'?'
}, {
mapping = cmp.mapping.preset.cmdline(),
sources = {
{
name = 'buffer'
}
}
})
cmp.setup.cmdline(':', {
mapping = cmp.mapping.preset.cmdline(),
sources = cmp.config.sources({
{
name = 'path'
}
}, {
{
name = 'cmdline'
}
})
})
-- Make enter just insert a newline (don't accept completion)
vim.keymap.set('i', '<CR>', function()
if vim.fn.pumvisible() == 1 then
return '<C-e><CR>'
else
return '<CR>'
end
},
end, { expr = true })
-- LSP
{
'neovim/nvim-lspconfig',
cmd = {
'LspInfo',
'LspInstall',
'LspStart'
},
event = {
'BufReadPre',
'BufNewFile'
},
dependencies = {
'hrsh7th/cmp-nvim-lsp',
'williamboman/mason-lspconfig.nvim',
"folke/trouble.nvim"
},
config = function()
local lsp_zero = require('lsp-zero')
lsp_zero.extend_lspconfig()
if client:supports_method('textDocument/completion') then
-- Trigger autocompletion on every keypress
local chars = {}; for i = 32, 126 do table.insert(chars, string.char(i)) end
client.server_capabilities.completionProvider.triggerCharacters = chars
lsp_zero.on_attach(function(client, bufnr)
vim.keymap.set("n", "<leader>ld", function() vim.lsp.buf.definition() end, {
desc = "Go to definition"
})
vim.keymap.set("n", "<leader>lh", function() vim.lsp.buf.hover() end, {
desc = "Hover"
})
vim.keymap.set("n", "<leader>lr", ":Trouble lsp_references<CR>", {
desc = "Show references"
})
vim.keymap.set("n", "<leader>ln", function() vim.lsp.buf.rename() end, {
desc = "Rename"
})
vim.keymap.set("n", "<leader>ls", function() vim.lsp.buf.signature_help() end, {
desc = "Signature help"
})
vim.keymap.set("n", "<leader>la", function() vim.lsp.buf.code_action() end, {
desc = "Code actions"
})
end)
vim.lsp.completion.enable(true, client.id, args.buf, { autotrigger = true })
end
require('mason-lspconfig').setup({
ensure_installed = {
'clangd',
'pyright',
'cmake',
'texlab'
},
handlers = {
lsp_zero.default_setup,
lua_ls = function()
local lua_opts = lsp_zero.nvim_lua_ls()
require('lspconfig').lua_ls.setup(lua_opts)
end
}
})
vim.keymap.set('n', '<M-L>',
function() vim.lsp.buf.format() end,
{
desc = "Format",
noremap = true,
silent = true
})
vim.keymap.set('i', '<M-L>',
function() vim.lsp.buf.format() end,
{
desc = "Format",
noremap = true,
silent = true
})
require('lspconfig')['clangd'].setup {
cmd = {
"clangd",
"--background-index",
"--clang-tidy",
"--completion-style=bundled",
"--cross-file-rename",
"--header-insertion=iwyu",
-- Required for embedded system compilers
"--query-driver=/**/*g++",
"--offset-encoding=utf-16"
-- "-j=8",
-- "--malloc-trim",
-- "--pch-storage=memory"
}
}
vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, {
desc = "Go to definition"
})
-- require('lspconfig').matlab_ls.setup({
-- settings = {
-- filetypes = {
-- "matlab"
-- },
-- matlab = {
-- installPath = "/opt/matlab/R2023a/"
-- }
-- },
-- single_file_support = true
-- })
end
}
}
}
vim.keymap.set("n", "grr", ":Trouble lsp_references<CR>", {
desc = "Show references"
})
end,
})

View File

@ -1,19 +0,0 @@
return {
"zbirenbaum/copilot.lua",
cmd = "Copilot",
-- event = "InsertEnter",
opts = {
suggestion = {
enabled = true,
auto_trigger = true,
keymap = {
accept = "<C-l>"
-- accept_word = false,
-- accept_line = false,
-- next = "<M-]>",
-- prev = "<M-[>",
-- dismiss = "<C-]>"
}
}
}
}

View File

@ -1,32 +1,18 @@
return {
{
'nvim-lualine/lualine.nvim',
event = "VimEnter",
dependencies = {
'nvim-tree/nvim-web-devicons'
},
opts = {
options = {
theme = 'gruvbox_dark'
},
extensions = {
'nvim-tree',
'trouble',
'mason',
'lazy',
'toggleterm'
},
sections = {
lualine_x = {
{
require("noice").api.statusline.mode.get,
cond = require("noice").api.statusline.mode.has,
color = {
fg = "#ff9e64"
}
}
}
}
}
}
}
vim.pack.add({
{ src = "https://github.com/nvim-tree/nvim-web-devicons" },
{ src = "https://github.com/nvim-lualine/lualine.nvim" }
})
require("lualine").setup({
options = {
theme = 'gruvbox_dark'
},
extensions = {
'nvim-tree',
'trouble',
'mason',
'lazy',
'toggleterm'
},
sections = { lualine_x = { { color = { fg = "#ff9e64" } } } }
})

View File

@ -1,48 +0,0 @@
return {
{
"L3MON4D3/LuaSnip",
dependencies = {
{
'rafamadriz/friendly-snippets'
}
},
version = "v2.*",
build = "make install_jsregexp",
event = {
"InsertEnter"
},
init = function()
vim.keymap.set({
"i"
}, "<c-j>", function() require("luasnip").expand() end, {
silent = true
})
vim.keymap.set({
"i",
"s"
}, "<c-j>", function() require("luasnip").jump(1) end, {
silent = true
})
vim.keymap.set({
"i",
"s"
}, "<c-k>", function() require("luasnip").jump(-1) end, {
silent = true
})
end,
config = function()
local loader = require("luasnip.loaders.from_lua")
loader.lazy_load({
paths = {
"./snippets"
}
})
require("luasnip").config.set_config({
enable_autosnippets = true,
store_selection_keys = "<leader>v"
})
end
}
}

View File

@ -1,27 +0,0 @@
return {
-- Install markdown preview, use npx if available.
"iamcco/markdown-preview.nvim",
cmd = {
"MarkdownPreviewToggle",
"MarkdownPreview",
"MarkdownPreviewStop"
},
ft = {
"markdown"
},
build = function(plugin)
if vim.fn.executable "npx" then
vim.cmd("!cd " .. plugin.dir .. " && cd app && npx --yes yarn install")
else
vim.cmd [[Lazy load markdown-preview.nvim]]
vim.fn["mkdp#util#install"]()
end
end,
init = function()
if vim.fn.executable "npx" then
vim.g.mkdp_filetypes = {
"markdown"
}
end
end
}

View File

@ -1,7 +0,0 @@
return {
"hedyhli/markdown-toc.nvim",
cmd = {
"Mtoc"
}, -- Or, lazy load on "Mtoc" command
opts = {}
}

View File

@ -1,90 +0,0 @@
return {
{ -- Ability to show images in the output
"3rd/image.nvim",
opts = {}
}, { -- Use LSP in markdown files
"quarto-dev/quarto-nvim",
dependencies = {"jmbuhr/otter.nvim", "nvim-treesitter/nvim-treesitter"},
ft = {"quarto", "markdown"},
init = function()
vim.api.nvim_create_autocmd('FileType', {
pattern = 'markdown',
callback = function()
require("quarto").activate()
end
})
-- local runner = require("quarto.runner")
-- vim.keymap.set("n", "<localleader>rc", runner.run_cell, {
-- desc = "run cell",
-- silent = true
-- })
-- vim.keymap.set("n", "<localleader>ra", runner.run_above, {
-- desc = "run cell and above",
-- silent = true
-- })
-- vim.keymap.set("n", "<localleader>rA", runner.run_all, {
-- desc = "run all cells",
-- silent = true
-- })
-- vim.keymap.set("n", "<localleader>rl", runner.run_line, {
-- desc = "run line",
-- silent = true
-- })
-- vim.keymap.set("v", "<localleader>r", runner.run_range, {
-- desc = "run visual range",
-- silent = true
-- })
-- vim.keymap.set("n", "<localleader>RA", function() runner.run_all(true) end, {
-- desc = "run all cells of all languages",
-- silent = true
-- })
end,
opts = {
lspFeatures = {
languages = {"r", "python", "rust", "julia"},
chunks = "all",
diagnostics = {enabled = true, triggers = {"BufWritePost"}},
completion = {enabled = true}
},
keymap = {
hover = "H",
definition = "gd",
rename = "<leader>rn",
references = "gr",
format = "<leader>gf"
},
codeRunner = {enabled = true, default_method = "molten"}
}
}, { -- Convert ipynb to markdown and back
"GCBallesteros/jupytext.nvim",
opts = {
style = "markdown",
output_extension = "md",
force_ft = "markdown"
}
}, { -- Interactive code evaluation
"benlubas/molten-nvim",
version = "^1.0.0", -- use version <2.0.0 to avoid breaking changes
build = ":UpdateRemotePlugins",
init = function()
vim.keymap.set("n", "<localleader>mi", ":MoltenInit<CR>",
{silent = true, desc = "Initialize the plugin"})
vim.keymap.set("n", "<localleader>e", ":MoltenEvaluateOperator<CR>",
{silent = true, desc = "run operator selection"})
vim.keymap.set("n", "<localleader>rl", ":MoltenEvaluateLine<CR>",
{silent = true, desc = "evaluate line"})
vim.keymap.set("n", "<localleader>rr", ":MoltenReevaluateCell<CR>",
{silent = true, desc = "re-evaluate cell"})
vim.keymap.set("v", "<localleader>r",
":<C-u>MoltenEvaluateVisual<CR>gv",
{silent = true, desc = "evaluate visual selection"})
vim.g.molten_image_provider = "image.nvim"
vim.g.molten_auto_open_output = false
vim.g.molten_virt_text_output = true
vim.g.molten_virt_text_max_lines = 32
end
}
}

View File

@ -1,127 +0,0 @@
return {
{
'sbdchd/neoformat',
event = {
"BufReadPost",
"BufNewFile"
},
init = function()
----------------
-- Formatters
----------------
vim.api.nvim_create_autocmd("FileType", {
pattern = "python",
callback = function()
-- vim.g.neoformat_python_autopep8 = {
-- exe = 'autopep8',
-- args = {'--max-line-length', '79', '--experimental'},
-- -- replace = 1
-- }
-- vim.g.neoformat_enabled_python = {
-- 'autopep8'
-- }
vim.g.neoformat_enabled_python = {
'ruff'
}
end
})
vim.api.nvim_create_autocmd("FileType", {
pattern = {
"cpp",
"c"
},
callback = function()
vim.g.neoformat_enabled_cpp = {
'clangformat'
}
vim.g.neoformat_enabled_c = {
'clangformat'
}
end
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "lua",
callback = function()
vim.g.neoformat_enable_lua = {
'luaformatter'
}
end
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "cmake",
callback = function()
vim.g.neoformat_enabled_cmake = {
'cmake-format'
}
end
})
-- Commented out rust formatter
-- vim.api.nvim_create_autocmd("FileType", {
-- pattern = "rust",
-- callback = function()
-- vim.g.neoformat_enabled_rust = {'rustfmt'}
-- end
-- })
vim.api.nvim_create_autocmd("FileType", {
pattern = "markdown",
callback = function()
vim.g.neoformat_markdown_mdformat = {
exe = 'mdformat',
args = {
'--wrap=79',
'--number'
},
replace = 1
}
vim.g.neoformat_enabled_markdown = {
'mdformat'
}
end
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "tex",
callback = function()
vim.g.neoformat_tex_texfmt = {
exe = "tex-fmt",
args = {
"--stdin",
"--tabsize",
"4"
},
stdin = 1
}
vim.g.neoformat_enabled_tex = {
"texfmt"
}
end
})
----------------
-- Other
----------------
-- vim.cmd([[
-- augroup Neoformat
-- autocmd!
-- autocmd BufWritePre * undojoin | Neoformat
-- augroup END
-- ]])
vim.api.nvim_set_keymap('n', '<M-L>', '<cmd>Neoformat<cr>', {
noremap = true,
silent = true
})
vim.api.nvim_set_keymap('i', '<M-L>', '<cmd>Neoformat<cr>', {
noremap = true,
silent = true
})
end
}
}

View File

@ -1,38 +0,0 @@
-- lazy.nvim
return {
"folke/noice.nvim",
event = "VeryLazy",
opts = {
lsp = {
signature = {
enabled = false
},
hover = {
enabled = false
}
},
views = {
cmdline_popup = {
backend = "popup",
relative = "editor",
position = {
row = -1,
col = "0%"
},
border = {
style = "none"
}
},
cmdline_popupmenu = {
relative = "editor",
position = {
row = -2,
col = "0%"
}
}
}
},
dependencies = {
"MunifTanjim/nui.nvim"
}
}

View File

@ -1,13 +1,4 @@
return {
'stevearc/oil.nvim',
opts = {},
dependencies = {
"nvim-tree/nvim-web-devicons"
},
init = function()
vim.keymap.set("n", "-", "<CMD>Oil<CR>", {
desc = "Open parent directory"
})
end,
lazy = false
}
vim.pack.add({"https://github.com/stevearc/oil.nvim"})
require("oil").setup()
vim.keymap.set("n", "-", "<CMD>Oil<CR>", { desc = "Open parent directory" })

View File

@ -1,32 +0,0 @@
return {
"stevearc/overseer.nvim",
config = function()
require("overseer").setup({
templates = {
-- "builtin",
"user.cargo_build",
"user.cargo_clean",
"user.cargo_run",
"user.cargo_test",
"user.cmake_generate",
"user.cmake_build",
"user.cmake_clean",
"user.cmake_test",
"user.python_run"
}
})
vim.keymap.set("n", "<leader>oo", function() require("overseer").toggle() end, {
desc = "Toggle"
})
vim.keymap.set("n", "<leader>or", ":OverseerRun<CR>", {
desc = "Run"
})
vim.keymap.set("n", "<leader>oq", ":OverseerQuickAction<CR>", {
desc = "Quick Action"
})
vim.keymap.set("n", "<leader>of", ":OverseerQuickAction open float<CR>", {
desc = "Open Float"
})
end
}

View File

@ -1,41 +0,0 @@
return {
'TobinPalmer/pastify.nvim',
cmd = {
'Pastify',
'PastifyAfter'
},
-- event = {
-- 'BufReadPost'
-- }, -- Load after the buffer is read, I like to be able to paste right away
keys = {
{
noremap = true,
mode = "x",
'<leader>v',
"<cmd>PastifyAfter<CR>"
},
{
noremap = true,
mode = "n",
'<leader>v',
"<cmd>PastifyAfter<CR>"
},
{
noremap = true,
mode = "n",
'<leader>V',
"<cmd>Pastify<CR>"
}
},
config = function()
require('pastify').setup {
opts = {
local_path = '/res/'
},
ft = {
markdown = "![image]($IMG$)"
}
}
end
}

View File

@ -1,6 +1 @@
return {
{
"tpope/vim-surround",
event = "InsertEnter"
}
}
vim.pack.add({"https://github.com/tpope/vim-surround"})

View File

@ -1,50 +1,17 @@
-- -----------------
-- -- Helper Functions
-- -------------------
-- -- If in a git repo, execute the given function with the option
-- -- "cwd=<git root>". Otherwise, execute the function with no options.
-- local function execute_in_repo_root(func)
-- local function is_git_repo()
-- vim.fn.system("git rev-parse --is-inside-work-tree")
--
-- return vim.v.shell_error == 0
-- end
--
-- local function get_git_root()
-- local dot_git_path = vim.fn.finddir(".git", ".;")
-- return vim.fn.fnamemodify(dot_git_path, ":h")
-- end
--
-- local opts = {}
--
-- if is_git_repo() then opts = {cwd = get_git_root()} end
--
-- func(opts)
-- end
-----------------------
-- Plugin Configuration
-----------------------
return {
vim.pack.add({
{
'nvim-telescope/telescope.nvim',
version = '0.1.5',
dependencies = {
{
'nvim-lua/plenary.nvim'
}
},
cmd = "Telescope",
init = function()
-- LuaFormatter off
vim.keymap.set('n', '<leader>ff', function() require("telescope.builtin").find_files() end,{desc = "Files"})
vim.keymap.set('n', '<leader>fg', function() require("telescope.builtin").live_grep() end,{desc = "grep"})
vim.keymap.set('n', '<leader>fa', function()
require("telescope.builtin").find_files({hidden = true})
end, {desc = "All files"})
vim.keymap.set('n', '<leader>fb', function() require("telescope.builtin").buffers() end, {desc = "Buffers"})
vim.keymap.set('n', '<leader>fh', function() require("telescope.builtin").help_tags() end, {desc = "Help tags"})
-- LuaFormatter on
end
src = "https://github.com/nvim-lua/plenary.nvim"
},
{
src = "https://github.com/nvim-telescope/telescope.nvim"
}
}
})
vim.pack.add({})
vim.keymap.set('n', '<leader>ff', function() require("telescope.builtin").find_files() end, { desc = "Files" })
vim.keymap.set('n', '<leader>fg', function() require("telescope.builtin").live_grep() end, { desc = "grep" })
vim.keymap.set('n', '<leader>fa', function() require("telescope.builtin").find_files({ hidden = true }) end, { desc = "All files" })
vim.keymap.set('n', '<leader>fb', function() require("telescope.builtin").buffers() end, { desc = "Buffers" })
vim.keymap.set('n', '<leader>fh', function() require("telescope.builtin").help_tags() end, { desc = "Help tags" })

View File

@ -0,0 +1,10 @@
vim.pack.add({"https://github.com/ellisonleao/gruvbox.nvim"})
require("gruvbox").setup({
contrast = "hard",
transparent_mode = true,
})
vim.cmd("colorscheme gruvbox")
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })

View File

@ -1,63 +0,0 @@
return {
-- {'doums/darcula', config = function() vim.cmd('colorscheme darcula') end}
-- {
-- "folke/tokyonight.nvim",
-- lazy = false,
-- priority = 1000,
-- opts = {},
-- config = function() vim.cmd('colorscheme tokyonight-moon') end
-- }
-- {
-- 'rose-pine/neovim',
-- config = function()
-- vim.cmd('colorscheme rose-pine-moon')
-- -- LuaFormatter off
-- vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
-- vim.api.nvim_set_hl(0, "FloatBorder", { bg = "none", fg = "none" })
-- vim.api.nvim_set_hl(0, "TelescopeNormal", { bg = "none" })
-- vim.api.nvim_set_hl(0, "TelescopeBorder", { bg = "none" })
-- -- LuaFormatter on
-- end
-- }
-- {
-- 'AlexvZyl/nordic.nvim',
-- lazy = false,
-- priority = 1000,
-- init = function()
-- require('nordic').setup {
-- telescope = {
-- style = 'classic'
-- -- style = 'flat'
-- }
-- }
-- require'nordic'.load()
-- end
-- }
-- {
-- "briones-gabriel/darcula-solid.nvim",
-- dependencies = "rktjmp/lush.nvim",
-- config = function()
-- vim.cmd 'colorscheme darcula-solid'
-- vim.cmd 'set termguicolors'
-- end
-- }
{
"ellisonleao/gruvbox.nvim",
priority = 1000,
config = true,
opts = {
contrast = "hard"
},
init = function()
vim.cmd("colorscheme gruvbox")
-- LuaFormatter off
vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" })
vim.api.nvim_set_hl(0, "NoiceCmdlineIcon", { bg = "#1d2021" })
vim.api.nvim_set_hl(0, "NoiceCmdlinePopupBorder", { bg = "#1d2021" })
vim.api.nvim_set_hl(0, "NoiceCmdlinePopupTitle", { bg = "#1d2021" })
-- LuaFormatter on
end
}
}

View File

@ -0,0 +1,8 @@
vim.pack.add({
{ src = "https://github.com/3rd/sqlite.nvim" },
{ src = "https://github.com/3rd/time-tracker.nvim" }
})
require("time-tracker").setup({
data_file = vim.fn.stdpath("data") .. "/time-tracker.db"
})

View File

@ -1,10 +0,0 @@
return {
"3rd/time-tracker.nvim",
dependencies = {
"3rd/sqlite.nvim"
},
event = "VeryLazy",
opts = {
data_file = vim.fn.stdpath("data") .. "/time-tracker.db"
}
}

View File

@ -0,0 +1,8 @@
vim.pack.add({
{ src = "https://github.com/nvim-lua/plenary.nvim" },
{ src = "https://github.com/folke/todo-comments.nvim" }
})
require("todo-comments").setup()
vim.keymap.set("n", "<leader>ft", ":TodoTelescope<CR>")

View File

@ -1,9 +0,0 @@
return {
{
"folke/todo-comments.nvim",
dependencies = {
"nvim-lua/plenary.nvim"
},
opts = {}
}
}

View File

@ -1,21 +1,6 @@
return {
{
"akinsho/toggleterm.nvim",
version = '*',
opts = {
size = 30,
open_mapping = [[<c-\>]]
},
cmd = {
"ToggleTerm",
"TermExec",
"ToggleTermToggleAll",
"ToggleTermSendCurrentLine",
"ToggleTermSendVisualLines",
"ToggleTermSendVisualSelection"
},
keys = {
[[<c-\>]]
}
}
}
vim.pack.add({ "https://github.com/akinsho/toggleterm.nvim" })
require("toggleterm").setup({
size = 30,
open_mapping = [[<c-\>]]
})

View File

@ -1,42 +1,21 @@
return {
{
"nvim-treesitter/nvim-treesitter",
build = ":TSUpdate",
event = {
"BufReadPost",
"BufNewFile"
},
cmd = {
"TSInstall",
"TSBufEnable",
"TSBufDisable",
"TSModuleInfo",
"TSInstallSync"
},
config = function(_, opts)
require("nvim-treesitter.configs").setup({
ensure_installed = {
"cpp",
"c",
"lua",
"vim",
"vimdoc",
"query"
},
sync_install = false,
auto_install = true,
vim.pack.add({ "https://github.com/nvim-treesitter/nvim-treesitter" })
highlight = {
enable = true,
-- additional_vim_regex_highlighting = false,
-- disable = {
-- "latex"
-- },
additional_vim_regex_highlighting = {
"latex"
}
}
})
end
require("nvim-treesitter.configs").setup({
ensure_installed = {
"cpp",
"c",
"lua",
"vim",
"vimdoc",
"query"
},
sync_install = false,
auto_install = true,
highlight = {
enable = true,
additional_vim_regex_highlighting = {
"latex"
}
}
}
})

View File

@ -1,59 +0,0 @@
return {
{
"folke/trouble.nvim",
tag="v3.4.1",
dependencies = {
{
"nvim-tree/nvim-web-devicons"
},
{
'folke/lsp-colors.nvim'
},
{
'nvim-telescope/telescope.nvim'
}
},
opts = {
modes = {
symbols = {
win = {
size = 50,
}
}
}
},
cmd = "Trouble",
keys = {
{
"<leader>xw",
"<cmd>Trouble diagnostics toggle<cr>",
desc = "Diagnostics (Trouble)",
},
{
"<leader>xd",
"<cmd>Trouble diagnostics toggle filter.buf=0<cr>",
desc = "Buffer Diagnostics (Trouble)",
},
{
"<leader>xs",
"<cmd>Trouble symbols toggle focus=false<cr>",
desc = "Symbols (Trouble)",
},
-- {
-- "<leader>cl",
-- "<cmd>Trouble lsp toggle focus=false win.position=right<cr>",
-- desc = "LSP Definitions / references / ... (Trouble)",
-- },
-- {
-- "<leader>xl",
-- "<cmd>Trouble loclist toggle<cr>",
-- desc = "Location List (Trouble)",
-- },
{
"<leader>xq",
"<cmd>Trouble qflist toggle<cr>",
desc = "Quickfix List (Trouble)",
},
},
}
}

View File

@ -1,17 +1,3 @@
return {
{
'mbbill/undotree',
cmd = {
"UndotreeToggle",
"UndotreeHide",
"UndotreeShow",
"UndotreeFocus",
"UndotreePersistUndo"
},
init = function()
vim.keymap.set("n", "<leader>u", "<cmd>UndotreeToggle<CR>", {
desc = "Undotree"
})
end
}
}
vim.pack.add({"https://github.com/mbbill/undotree"})
vim.keymap.set("n", "<leader>u", "<cmd>UndotreeToggle<CR>", { desc = "Undotree" })

View File

@ -1,63 +0,0 @@
return {
{
"lervag/vimtex",
ft = {
"tex",
"bib"
},
config = function()
-- General configuration
vim.cmd("syntax enable")
vim.g.vimtex_compiler_latexmk = {
out_dir = 'build',
options = {
'-shell-escape',
'-verbose',
'-file-line-error',
'-interaction=nonstopmode',
'-synctex=1'
}
}
vim.g.vimtex_view_method = 'zathura'
vim.g.vimtex_quickfix_mode = 0
-- Concealment
vim.cmd([[set conceallevel=1]])
vim.cmd([[
let g:vimtex_syntax_conceal = {
\ 'accents': 1,
\ 'ligatures': 1,
\ 'cites': 1,
\ 'fancy': 1,
\ 'spacing': 0,
\ 'greek': 1,
\ 'math_bounds': 1,
\ 'math_delimiters': 1,
\ 'math_fracs': 1,
\ 'math_super_sub': 0,
\ 'math_symbols': 1,
\ 'sections': 0,
\ 'styles': 0,
\}
let g:vimtex_syntax_custom_cmds = [
\ {'name': 'bm', 'mathmode': 1, 'argstyle': 'bold', 'conceal': 1},
\]
]])
-- Synctex configuration
vim.g.vimtex_compiler_progname = 'nvr'
local options = string.format(
'--reuse-window --inverse-search="nvr --servername %s +%%2 %%1" --forward-search-file @tex --forward-search-line @line @pdf',
vim.v.servername)
local command = string.format("let g:vimtex_view_general_options='%s'", options)
vim.cmd(command)
end
}
}

View File

@ -1,46 +1,19 @@
return {
{
"folke/which-key.nvim",
event = "VeryLazy",
init = function()
vim.o.timeout = true
vim.o.timeoutlen = 300
end,
opts = {
defaults = {
["<leader>x"] = {
name = "+Trouble"
}
}
},
config = function()
local wk = require("which-key")
wk.add({
{
"<leader>d",
group = "Debug"
},
{
"<leader>f",
group = "Find"
},
{
"<leader>l",
group = "LSP"
},
{
"<leader>o",
group = "Overseer"
},
{
"<leader>s",
group = "Session"
},
{
"<leader>x",
group = "Trouble"
}
})
end
}
}
vim.pack.add({ "https://github.com/folke/which-key.nvim" })
vim.o.timeout = true
vim.o.timeoutlen = 300
require("which-key").setup({
-- defaults = {
-- ["<leader>x"] = { name = "+Trouble" }
-- }
})
require("which-key").add({
{ "<leader>d", group = "Debug" },
{ "<leader>f", group = "Find" },
{ "<leader>l", group = "LSP" },
{ "<leader>o", group = "Overseer" },
{ "<leader>s", group = "Session" },
{ "<leader>x", group = "Trouble" }
})

View File

@ -1,64 +1,23 @@
vim.g.mapleader = " "
vim.opt.nu = true
vim.opt.relativenumber = true
vim.opt.tabstop = 4
vim.opt.softtabstop = 4
vim.opt.shiftwidth = 4
vim.opt.expandtab = true
vim.opt.smartindent = true
vim.opt.wrap = false
vim.opt.swapfile = false
vim.opt.backup = false
vim.opt.undodir = os.getenv("HOME") .. "/.vim/undodir"
vim.opt.undofile = true
vim.opt.signcolumn = "yes"
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.hlsearch = false
vim.opt.incsearch = true
vim.opt.termguicolors = true
vim.opt.scrolloff = 8
vim.opt.signcolumn = "yes"
vim.opt.updatetime = 50
vim.opt.exrc = true
vim.api.nvim_create_autocmd('FileType', {
pattern = 'cpp',
callback = function() vim.bo.commentstring = '// %s' end
})
vim.api.nvim_create_autocmd('FileType', {
pattern = 'rust',
callback = function()
vim.cmd [[
let &efm = ''
" Random non issue stuff
let &efm .= '%-G%.%#aborting due to previous error%.%#,'
let &efm .= '%-G%.%#test failed, to rerun pass%.%#,'
" Capture enter directory events for doc tests
let &efm .= '%D%*\sDoc-tests %f%.%#,'
" Doc Tests
let &efm .= '%E---- %f - %o (line %l) stdout ----,'
let &efm .= '%Cerror%m,'
let &efm .= '%-Z%*\s--> %f:%l:%c,'
" Unit tests && `tests/` dir failures
" This pattern has to come _after_ the doc test one
let &efm .= '%E---- %o stdout ----,'
let &efm .= '%Zthread %.%# panicked at %m\, %f:%l:%c,'
let &efm .= '%Cthread %.%# panicked at %m,'
let &efm .= '%+C%*\sleft: %.%#,'
let &efm .= '%+Z%*\sright: %.%#\, %f:%l:%c,'
" Compiler Errors and Warnings
let &efm .= '%Eerror%m,'
let &efm .= '%Wwarning: %m,'
let &efm .= '%-Z%*\s--> %f:%l:%c,'
]]
end
})
vim.opt.exrc = true

View File

@ -0,0 +1,97 @@
{
"plugins": {
"alpha-nvim": {
"rev": "3979b01",
"src": "https://github.com/goolord/alpha-nvim"
},
"auto-session": {
"rev": "292492a",
"src": "https://github.com/rmagatti/auto-session"
},
"gruvbox.nvim": {
"rev": "5e0a460",
"src": "https://github.com/ellisonleao/gruvbox.nvim"
},
"harpoon": {
"rev": "87b1a35",
"src": "https://github.com/ThePrimeagen/harpoon",
"version": "'harpoon2'"
},
"lualine.nvim": {
"rev": "3946f01",
"src": "https://github.com/nvim-lualine/lualine.nvim"
},
"mason-lspconfig.nvim": {
"rev": "d7b5feb",
"src": "https://github.com/mason-org/mason-lspconfig.nvim"
},
"mason.nvim": {
"rev": "ad7146a",
"src": "https://github.com/mason-org/mason.nvim"
},
"nvim-lspconfig": {
"rev": "2010fc6",
"src": "https://github.com/neovim/nvim-lspconfig"
},
"nvim-treesitter": {
"rev": "42fc28ba",
"src": "https://github.com/nvim-treesitter/nvim-treesitter"
},
"nvim-web-devicons": {
"rev": "8dcb311",
"src": "https://github.com/nvim-tree/nvim-web-devicons"
},
"oil.nvim": {
"rev": "7e1cd77",
"src": "https://github.com/stevearc/oil.nvim"
},
"plenary.nvim": {
"rev": "b9fd522",
"src": "https://github.com/nvim-lua/plenary.nvim"
},
"session-lens": {
"rev": "eae46b4",
"src": "https://github.com/rmagatti/session-lens"
},
"sqlite.nvim": {
"rev": "a8466c8",
"src": "https://github.com/3rd/sqlite.nvim"
},
"telescope.nvim": {
"rev": "0294ae3",
"src": "https://github.com/nvim-telescope/telescope.nvim"
},
"time-tracker.nvim": {
"rev": "4127c4b",
"src": "https://github.com/3rd/time-tracker.nvim"
},
"todo-comments.nvim": {
"rev": "411503d",
"src": "https://github.com/folke/todo-comments.nvim"
},
"toggleterm.nvim": {
"rev": "9a88eae",
"src": "https://github.com/akinsho/toggleterm.nvim"
},
"undotree": {
"rev": "0f1c981",
"src": "https://github.com/mbbill/undotree"
},
"vim-flog": {
"rev": "665b16a",
"src": "https://github.com/rbong/vim-flog"
},
"vim-fugitive": {
"rev": "61b51c0",
"src": "https://github.com/tpope/vim-fugitive"
},
"vim-surround": {
"rev": "3d188ed",
"src": "https://github.com/tpope/vim-surround"
},
"which-key.nvim": {
"rev": "3aab214",
"src": "https://github.com/folke/which-key.nvim"
}
}
}

View File

@ -1,83 +0,0 @@
----------------
-- Abbreviations
----------------
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
local line_begin = require("luasnip.extras.expand_conditions").line_begin
-----------
-- Snippets
-----------
return {
s({trig="()", wordTrig=false, snippetType="autosnippet"},
{
t("("),
i(1),
t(")"),
i(0),
}
),
s({trig="[]", wordTrig=false, snippetType="autosnippet"},
{
t("["),
i(1),
t("]"),
i(0),
}
),
s({trig="{}", wordTrig=false, snippetType="autosnippet"},
{
t("{"),
i(1),
t("}"),
i(0),
}
),
s({trig="<>", wordTrig=false, snippetType="autosnippet"},
{
t("<"),
i(1),
t(">"),
i(0),
}
),
s({trig="\"\"", wordTrig=false, snippetType="autosnippet"},
{
t("\""),
i(1),
t("\""),
i(0),
}
),
s({trig="''", wordTrig=false, snippetType="autosnippet"},
{
t("'"),
i(1),
t("'"),
i(0),
}
),
} -- return

View File

@ -1,285 +0,0 @@
----------------
-- Abbreviations
----------------
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
local conds = require("luasnip.extras.expand_conditions")
---------------
-- Environments
---------------
local tex_utils = {}
tex_utils.in_mathzone = function() -- math context detection
return vim.fn['vimtex#syntax#in_mathzone']() == 1
end
tex_utils.in_text = function()
return not tex_utils.in_mathzone()
end
tex_utils.in_comment = function() -- comment detection
return vim.fn['vimtex#syntax#in_comment']() == 1
end
tex_utils.in_env = function(name) -- generic environment detection
local is_inside = vim.fn['vimtex#env#is_inside'](name)
return (is_inside[1] > 0 and is_inside[2] > 0)
end
local get_visual = function(args, parent)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
else
return sn(nil, i(1))
end
end
-----------
-- Snippets
-----------
return {
s({trig="notes"},
fmta(
[[
\documentclass[dvipsnames]{article}
\usepackage{float}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mleftright}
\usepackage{bm}
\usepackage{tikz}
\usepackage{xcolor}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\title{<>}
\author{<>}
\date{<>}
\begin{document}
\maketitle
<>
\end{document}
]],
{
i(1, "Notes"),
i(2, "Andreas Tsouchlos"),
i(3, os.date("%d.%m.%y")),
i(0),
}
)
),
s({trig="beg", wordTrig=true, snippetType="autosnippet", condition=conds.line_begin},
fmta(
[[
\begin{<>}
<>
\end{<>}
]],
{
i(1),
i(2),
rep(1),
}
)
),
s({trig="item", wordTrig=true, snippetType="autosnippet",
condition = function(line_to_cursor, matched_trigger, captures)
return tex_utils.in_env("itemize") and conds.line_begin(line_to_cursor, matched_trigger, captures)
end},
fmta(
[[
\item <>
]],
{
i(0),
}
)
),
s({trig="item", wordTrig=true, snippetType="autosnippet", condition=conds.line_begin},
fmta(
[[
\begin{itemize}
\item <>
\end{itemize}
]],
{
i(0),
}
)
),
s({trig="frame", wordTrig=true, snippetType="autosnippet", condition=conds.line_begin},
fmta(
[[
\begin{frame}
\frametitle{<>}
\end{frame}
]],
{
i(0),
}
)
),
s({trig="sec"},
fmta(
[[
\section{<>}
\label{sec:<>}
]],
{
i(1),
rep(1),
}
)
),
s({trig="ssec"},
fmta(
[[
\subsection{<>}
\label{subsec:<>}
]],
{
i(1),
rep(1),
}
)
),
s({trig="sssec"},
fmta(
[[
\subsubsection{<>}
\label{subsubsec:<>}
]],
{
i(1),
rep(1),
}
)
),
s({trig="csec"},
fmta(
[[
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{<>}
\label{sec:<>}
]],
{
i(1),
rep(1),
}
)
),
s({trig="cssec"},
fmta(
[[
%%%%%%%%%%%%%%%%
\subsection{<>}
\label{subsec:<>}
]],
{
i(1),
rep(1),
}
)
),
s({trig="csssec"},
fmta(
[[
%%%%%%%%
\subsubsection{<>}
\label{subsubsec:<>}
]],
{
i(1),
rep(1),
}
)
),
-- s({trig="()", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("("),
-- i(1),
-- t(")"),
-- i(0),
-- }
-- ),
--
-- s({trig="[]", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("["),
-- i(1),
-- t("]"),
-- i(0),
-- }
-- ),
--
-- s({trig="{}", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("{"),
-- i(1),
-- t("}"),
-- i(0),
-- }
-- ),
--
-- s({trig="<>", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("<"),
-- i(1),
-- t(">"),
-- i(0),
-- }
-- ),
--
-- s({trig="\"\"", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("\""),
-- i(1),
-- t("\""),
-- i(0),
-- }
-- ),
--
-- s({trig="''", wordTrig=false, snippetType="autosnippet"},
-- {
-- t("'"),
-- i(1),
-- t("'"),
-- i(0),
-- }
-- ),
} -- return

View File

@ -1,439 +0,0 @@
----------------
-- Abbreviations
----------------
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
---------------
-- Environments
---------------
local tex_utils = {}
tex_utils.in_mathzone = function() -- math context detection
return vim.fn['vimtex#syntax#in_mathzone']() == 1
end
tex_utils.in_text = function()
return not tex_utils.in_mathzone()
end
tex_utils.in_comment = function() -- comment detection
return vim.fn['vimtex#syntax#in_comment']() == 1
end
tex_utils.in_env = function(name) -- generic environment detection
local is_inside = vim.fn['vimtex#env#is_inside'](name)
return (is_inside[1] > 0 and is_inside[2] > 0)
end
local get_visual = function(args, parent)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
else
return sn(nil, i(1))
end
end
-----------
-- Snippets
-----------
return {
s({trig="´a", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\alpha ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´b", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\beta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´g", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\gamma ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´d", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\delta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´e", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\epsilon ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´z", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\zeta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´h", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\eta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´q", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\theta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´i", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\iota ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´k", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\kappa ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´l", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\lambda ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´m", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\mu ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´n", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\nu ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´x", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\xi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´p", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\pi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´r", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\rho ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´s", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\sigma ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´t", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\tau ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´u", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\upsilon ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´f", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\phi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´c", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\chi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´y", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\psi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´w", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\omega ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´A", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Alpha ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´B", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Beta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´G", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Gamma ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´D", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Delta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´E", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Epsilon ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´Z", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Zeta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´H", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Eta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´Q", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Theta ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´I", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Iota ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´K", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Kappa ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´L", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Lambda ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´M", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Mu ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´N", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Nu ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´X", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Xi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´P", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Pi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´R", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Rho ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´S", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Sigma ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´T", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Tau ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´U", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Upsilon ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´F", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Phi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´C", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Chi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´Y", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Psi ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="´W", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Omega ]],
{}
),
{condition = tex_utils.in_mathzone}
),
-- Strictly speaking not greek characters, but very similar snippets
s({trig="´6", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\partial ]],
{}
),
{condition = tex_utils.in_mathzone}
),
} -- return

View File

@ -1,418 +0,0 @@
----------------
-- Abbreviations
----------------
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
local conds = require("luasnip.extras.expand_conditions")
---------------
-- Environments
---------------
local tex_utils = {}
tex_utils.in_mathzone = function() -- math context detection
return vim.fn['vimtex#syntax#in_mathzone']() == 1
end
tex_utils.in_text = function()
return not tex_utils.in_mathzone()
end
tex_utils.in_comment = function() -- comment detection
return vim.fn['vimtex#syntax#in_comment']() == 1
end
tex_utils.in_env = function(name) -- generic environment detection
local is_inside = vim.fn['vimtex#env#is_inside'](name)
return (is_inside[1] > 0 and is_inside[2] > 0)
end
local get_visual = function(args, parent)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
else
return sn(nil, i(1))
end
end
-----------
-- Snippets
-----------
return {
s({trig="ali", wordTrig=true, snippetType="autosnippet", condition=conds.line_begin},
fmta(
[[
\begin{align*}
<>
<>%
\end{align*}
]],
{
i(0),
i(1, "."),
}
)
),
s({trig="cases"},
fmta(
[[
\begin{cases}
<>
\end{cases}
]],
{
i(0),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="matb"},
fmta(
[[
\begin{bmatrix}
<>
\end{bmatrix}
]],
{
i(0),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="matp"},
fmta(
[[
\begin{pmatrix}
<>
\end{pmatrix}
]],
{
i(0),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])array", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[
<>\begin{array}{c}
<>
\end{array}
]],
{
f( function(_, snip) return snip.captures[1] end ),
i(0),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])int', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\int_{<>}^{<>} <> d<> ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1, "-\\infty"),
i(2, "\\infty"),
i(4),
i(3, "x"),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])prod', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\prod_{<>}^{<>} ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1, "-\\infty"),
i(2, "\\infty"),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])sum', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\sum_{<>}^{<>} ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1, "n=0"),
i(2, "N-1"),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])sqrt', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\sqrt{<>} ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])log', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\log_{<>} ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1, "2"),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig='([^%a])ln', regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\ln ]],
{
f( function(_, snip) return snip.captures[1] end ),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig = '([^%a])ff', regTrig = true, wordTrig = false, snippetType = "autosnippet"},
fmta(
[[<>\frac{<>}{<>} ]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
i(2)
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])mcal", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\mathcal{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])mbb", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\mathbb{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])tt", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\text{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
-- s({trig=".", snippetType="autosnippet"},
-- fmta(
-- [[\cdot ]],
-- {}
-- ),
-- {condition = tex_utils.in_mathzone}
-- ),
s({trig="$$", snippetType="autosnippet"},
fmta(
[[$<>$]],
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])bm", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\bm{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="__", wordTrig=false, snippetType="autosnippet"},
fmta(
[[_{<>}]],
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="^^", wordTrig=false, snippetType="autosnippet"},
fmta(
[[^{<>}]],
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])oo", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\infty]],
{
f( function(_, snip) return snip.captures[1] end ),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="((", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\mleft( <> \mright)]],
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="[[", wordTrig=false, snippetType="autosnippet"},
fmta(
"\\mleft[ <> \\mright]",
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="{{", wordTrig=false, snippetType="autosnippet"},
fmta(
"\\mleft\\{ <> \\mright\\}",
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="||", wordTrig=false, snippetType="autosnippet"},
fmta(
"\\lvert <> \\rvert ",
{
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])hat", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\hat{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])tld", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\tilde{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])bar", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\overline{<>}]],
{
f( function(_, snip) return snip.captures[1] end ),
i(1),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([%a])([%d])", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>_<>]],
{
f( function(_, snip) return snip.captures[1] end ),
f( function(_, snip) return snip.captures[2] end ),
}
),
{condition = tex_utils.in_mathzone}
),
s({trig="=>", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\Rightarrow ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="->", wordTrig=false, snippetType="autosnippet"},
fmta(
[[\rightarrow ]],
{}
),
{condition = tex_utils.in_mathzone}
),
s({trig="([^%a])nab", regTrig=true, wordTrig=false, snippetType="autosnippet"},
fmta(
[[<>\nabla ]],
{
f( function(_, snip) return snip.captures[1] end ),
}
),
{condition = tex_utils.in_mathzone}
),
} -- return

View File

@ -1,132 +0,0 @@
----------------
-- Abbreviations
----------------
local ls = require("luasnip")
local s = ls.snippet
local sn = ls.snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local d = ls.dynamic_node
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local rep = require("luasnip.extras").rep
---------------
-- Environments
---------------
local tex_utils = {}
tex_utils.in_mathzone = function() -- math context detection
return vim.fn['vimtex#syntax#in_mathzone']() == 1
end
tex_utils.in_text = function()
return not tex_utils.in_mathzone()
end
tex_utils.in_comment = function() -- comment detection
return vim.fn['vimtex#syntax#in_comment']() == 1
end
tex_utils.in_env = function(name) -- generic environment detection
local is_inside = vim.fn['vimtex#env#is_inside'](name)
return (is_inside[1] > 0 and is_inside[2] > 0)
end
local get_visual = function(args, parent)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1, parent.snippet.env.LS_SELECT_RAW))
else
return sn(nil, i(1))
end
end
-----------
-- Snippets
-----------
return {
s({trig="funcplot"},
fmta(
[[
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}[
domain=<>,
width=\textwidth,
height=0.75\textwidth,
]
\addplot+[mark=none, line width=1pt]
{<>};
\end{axis}
\end{tikzpicture}
\end{figure}
]],
{
i(1, "-5:5"),
i(2),
}
)
),
s({trig="csvplot"},
fmta(
[[
\begin{figure}[H]
\centering
\begin{tikzpicture}
\begin{axis}[
width=\textwidth,
height=0.75\textwidth,
]
\addplot+[mark=none, line width=1pt]
table[col sep=comma, x=<>, y=<>]
{<>};
\end{axis}
\end{tikzpicture}
\end{figure}
]],
{
i(1, "x"),
i(2, "y"),
i(3),
}
)
),
s({trig="fig"},
fmta(
[[
\begin{figure}[H]
\centering
<>
\caption{<>}
\label{fig:<>}
\end{figure}
]],
{
i(0),
i(1),
i(2),
}
)
),
} -- return