Initial commit

This commit is contained in:
2023-08-31 21:58:22 +02:00
parent 61336de4d2
commit 429a03c710
72 changed files with 5130 additions and 0 deletions
+73
View File
@@ -0,0 +1,73 @@
## Requirements:
### Python
- jedi-language-server (https://github.com/pappasam/jedi-language-server)
- diagnostic-languageserver (https://github.com/iamcco/diagnostic-languageserver)
- isort
- debugpy
### Lua
- Lua LSP (https://github.com/sumneko/lua-language-server)
- LuaFormatter (https://github.com/Koihik/LuaFormatter)
### Bash
- bash-language-server
- shellcheck
- shfmt
### XML
- lemminx LSP (https://github.com/eclipse/lemminx)
### Markdown
- yarn (for initial installing through packer)
### Rust
- rust-analyzer
### Go
- go
- gopls
- golangci-lint-langserver
- golangci-lint
### C/C++
- clangd
NOTE: Clang >= 11 is recommended! See: https://github.com/neovim/nvim-lsp/issues/23
The file `compile_commands.json` needs to be available for clangd to work properly.
If using CMake, it can be generated automatically using the following:
`cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1`
See here for more info: https://clangd.llvm.org/installation#compile_commandsjson
- clang-tidy
Reads the `.clang-tidy` configuration file if available in root of project.
To generate a configiration file, run the following:
```
$ clang-tidy -checks='clang-analyzer-*,cppcoreguidelines-*,bugprone-*,modernize-*,performance-*,readability-*' -dum
p-config > .clang-tidy
```
Modify the checks as desirable.
- clang-format
Reads the `.clang-format` configuration file if available in root of project.
### CMake
- cmake
- cmake-language-server (https://github.com/regen100/cmake-language-server)
### Misc
- For clipboard support, one of the following:
- |g:clipboard|
- pbcopy, pbpaste (macOS)
- wl-copy, wl-paste (if $WAYLAND_DISPLAY is set)
- xclip (if $DISPLAY is set)
- xsel (if $DISPLAY is set)
- lemonade (for SSH) https://github.com/pocke/lemonade
- doitclient (for SSH) http://www.chiark.greenend.org.uk/~sgtatham/doit/
- win32yank (Windows)
- For emoji support on Arch, instsall noto-fonts-emoji.
- pynvim (python-neovim on fedora)
- groovy-language-server (https://github.com/prominic/groovy-language-server.git)
## Optional:
- fd https://github.com/sharkdp/fd
- ripgrep https://github.com/BurntSushi/ripgrep
+45
View File
@@ -0,0 +1,45 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local files = { 'globals', 'options', 'autocommands', 'mappings' }
for _, file in ipairs(files) do
local pkg = "core." .. file
local ok, err = pcall(require, pkg)
if not ok then
print("Error while loading package " .. pkg)
print(err)
return
end
end
if vim.g.vscode then
-- VSCode extension
else
local ok, err = pcall(require, 'bootstrap')
if not ok then
print("Error during bootstrap")
print(err:gsub("\t", " "))
return
end
ok, err = pcall(require, 'plugins')
if not ok then
print("Error while loading plugins")
print(err:gsub("\t", " "))
return
end
end
+37
View File
@@ -0,0 +1,37 @@
{
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
"Jenkinsfile-vim-syntax": { "branch": "master", "commit": "0d05729168ea44d60862f17cffa80024ab30bcc9" },
"LuaSnip": { "branch": "master", "commit": "0b4950a237ce441a6a3a947d501622453f6860ea" },
"aerial.nvim": { "branch": "master", "commit": "dc17cfd401689337124c75270677fd3b7639cf23" },
"bufferline.nvim": { "branch": "main", "commit": "9961d87bb3ec008213c46ba14b3f384a5f520eb5" },
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
"cmp-nvim-lsp": { "branch": "main", "commit": "44b16d11215dce86f253ce0c30949813c0a90765" },
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
"cmp_luasnip": { "branch": "master", "commit": "18095520391186d634a0045dacaa346291096566" },
"friendly-snippets": { "branch": "main", "commit": "00e191fea2cfbbdd378243f35b5953296537a116" },
"gitsigns.nvim": { "branch": "main", "commit": "d8b52fc95e3d424e5c09b287ee2c293dcb4e26fb" },
"indentLine": { "branch": "master", "commit": "b96a75985736da969ac38b72a7716a8c57bdde98" },
"lazy.nvim": { "branch": "main", "commit": "3ad55ae678876516156cca2f361c51f7952a924b" },
"lsp_signature.nvim": { "branch": "master", "commit": "58d4e810801da74c29313da86075d6aea537501f" },
"lspkind-nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" },
"lualine.nvim": { "branch": "master", "commit": "45e27ca739c7be6c49e5496d14fcf45a303c3a63" },
"mason-lspconfig.nvim": { "branch": "main", "commit": "dfdd771b792fbb4bad8e057d72558255695aa1a7" },
"mason.nvim": { "branch": "main", "commit": "0942198fb9a998b6ccee36fb8dd7495eb8ba659c" },
"nvim-autopairs": { "branch": "master", "commit": "ae5b41ce880a6d850055e262d6dfebd362bb276e" },
"nvim-cmp": { "branch": "main", "commit": "5dce1b778b85c717f6614e3f4da45e9f19f54435" },
"nvim-dap": { "branch": "master", "commit": "4377a05b9476587b7b485d6a9d9745768c4e4b37" },
"nvim-dap-ui": { "branch": "master", "commit": "85b16ac2309d85c88577cd8ee1733ce52be8227e" },
"nvim-lspconfig": { "branch": "master", "commit": "a27356f1ef9c11e1f459cc96a3fcac5c265e72d6" },
"nvim-tree.lua": { "branch": "master", "commit": "00741206c2df9c4b538055def19b99790f0c95c8" },
"nvim-treesitter": { "branch": "master", "commit": "920b37260ebc720b0399bd12954fd2bf8bd18242" },
"nvim-web-devicons": { "branch": "master", "commit": "cfc8824cc1db316a276b36517f093baccb8e799a" },
"plenary.nvim": { "branch": "master", "commit": "0dbe561ae023f02c2fb772b879e905055b939ce3" },
"telescope.nvim": { "branch": "master", "commit": "2c1ed33a6f6f2db3b69f5421f6b405eda1b07748" },
"vim-flog": { "branch": "master", "commit": "2cfa2e9d67a06a75d3d4e965c6bad558ff41e488" },
"vim-fugitive": { "branch": "master", "commit": "572c8510123cbde02e8a1dafcd376c98e1e13f43" },
"vim-startuptime": { "branch": "master", "commit": "454b3de856b7bd298700de33d79774ca9b9e3875" },
"vscode.nvim": { "branch": "main", "commit": "11b212096a0b2056fc8acaf31c0d62d656b6fd2d" },
"winresizer": { "branch": "master", "commit": "9bd559a03ccec98a458e60c705547119eb5350f3" },
"winshift.nvim": { "branch": "main", "commit": "37468ed6f385dfb50402368669766504c0e15583" }
}
+45
View File
@@ -0,0 +1,45 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local utils = require('utils')
-- Install lazy.nvim
local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
if not vim.loop.fs_stat(lazypath) then
if utils.os_name == "Linux" then
utils.assert_any_available({ 'curl', 'wget' })
utils.assert_available('unzip')
utils.assert_available('gzip')
elseif utils.os_name == "Windows_NT" then
utils.assert_any_available({ 'pwsh', 'powershell' })
utils.assert_any_available({ '7z', 'peazip', 'arc', 'wzzip', 'rar' })
else
error('OS not supported: ' .. utils.os_name)
end
utils.assert_available('git')
utils.assert_available('tar')
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)
+253
View File
@@ -0,0 +1,253 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("aerial").setup({
-- Priority list of preferred backends for aerial.
-- This can be a filetype map (see :help aerial-filetype-map)
backends = { "treesitter", "lsp", "markdown" },
layout = {
-- These control the width of the aerial window.
-- They can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_width and max_width can be a list of mixed types.
-- max_width = {40, 0.2} means "the lesser of 40 columns or 20% of total"
max_width = { 40, 0.2 },
width = nil,
min_width = 40,
-- Determines the default direction to open the aerial window. The 'prefer'
-- options will open the window in the other direction *if* there is a
-- different buffer in the way of the preferred direction
-- Enum: prefer_right, prefer_left, right, left, float
default_direction = "left",
-- Determines where the aerial window will be opened
-- edge - open aerial at the far right/left of the editor
-- window - open aerial to the right/left of the current window
placement = "edge",
},
-- Determines how the aerial window decides which buffer to display symbols for
-- window - aerial window will display symbols for the buffer in the window from which it was opened
-- global - aerial window will display symbols for the current window
attach_mode = "window",
-- List of enum values that configure when to auto-close the aerial window
-- unfocus - close aerial when you leave the original source window
-- switch_buffer - close aerial when you change buffers in the source window
-- unsupported - close aerial when attaching to a buffer that has no symbol source
close_automatic_events = {},
-- Set to false to remove the default keybindings for the aerial buffer
default_bindings = true,
-- Disable aerial on files with this many lines
disable_max_lines = 10000,
-- Disable aerial on files this size or larger (in bytes)
disable_max_size = 10000000, -- Default 2MB
-- A list of all symbols to display. Set to false to display all symbols.
-- This can be a filetype map (see :help aerial-filetype-map)
-- To see all available values, see :help SymbolKind
filter_kind = {
"Class",
"Constructor",
"Enum",
"Function",
"Interface",
"Module",
"Method",
"Struct",
},
-- Determines line highlighting mode when multiple splits are visible.
-- split_width Each open window will have its cursor location marked in the
-- aerial buffer. Each line will only be partially highlighted
-- to indicate which window is at that location.
-- full_width Each open window will have its cursor location marked as a
-- full-width highlight in the aerial buffer.
-- last Only the most-recently focused window will have its location
-- marked in the aerial buffer.
-- none Do not show the cursor locations in the aerial window.
highlight_mode = "split_width",
-- Highlight the closest symbol if the cursor is not exactly on one.
highlight_closest = true,
-- Highlight the symbol in the source buffer when cursor is in the aerial win
highlight_on_hover = true,
-- When jumping to a symbol, highlight the line for this many ms.
-- Set to false to disable
highlight_on_jump = 300,
-- Define symbol icons. You can also specify "<Symbol>Collapsed" to change the
-- icon when the tree is collapsed at that symbol, or "Collapsed" to specify a
-- default collapsed icon. The default icon set is determined by the
-- "nerd_font" option below.
-- If you have lspkind-nvim installed, it will be the default icon set.
-- This can be a filetype map (see :help aerial-filetype-map)
icons = {},
-- Control which windows and buffers aerial should ignore.
-- If attach_mode is "global", focusing an ignored window/buffer will
-- not cause the aerial window to update.
-- If open_automatic is true, focusing an ignored window/buffer will not
-- cause an aerial window to open.
-- If open_automatic is a function, ignore rules have no effect on aerial
-- window opening behavior; it's entirely handled by the open_automatic
-- function.
ignore = {
-- Ignore unlisted buffers. See :help buflisted
unlisted_buffers = true,
-- List of filetypes to ignore.
filetypes = {},
-- Ignored buftypes.
-- Can be one of the following:
-- false or nil - No buftypes are ignored.
-- "special" - All buffers other than normal buffers are ignored.
-- table - A list of buftypes to ignore. See :help buftype for the
-- possible values.
-- function - A function that returns true if the buffer should be
-- ignored or false if it should not be ignored.
-- Takes two arguments, `bufnr` and `buftype`.
buftypes = "special",
-- Ignored wintypes.
-- Can be one of the following:
-- false or nil - No wintypes are ignored.
-- "special" - All windows other than normal windows are ignored.
-- table - A list of wintypes to ignore. See :help win_gettype() for the
-- possible values.
-- function - A function that returns true if the window should be
-- ignored or false if it should not be ignored.
-- Takes two arguments, `winid` and `wintype`.
wintypes = "special",
},
-- When you fold code with za, zo, or zc, update the aerial tree as well.
-- Only works when manage_folds = true
link_folds_to_tree = true,
-- Fold code when you open/collapse symbols in the tree.
-- Only works when manage_folds = true
link_tree_to_folds = true,
-- Use symbol tree for folding. Set to true or false to enable/disable
-- 'auto' will manage folds if your previous foldmethod was 'manual'
manage_folds = false,
-- Set default symbol icns to use patched font icons (see https://www.nerdfonts.com/)
-- "auto" will set it to true if nvim-web-devicons or lspkind-nvim is installed.
nerd_font = "auto",
-- Call this function when aerial attaches to a buffer.
-- Useful for setting keymaps. Takes a single `bufnr` argument.
on_attach = function(bufnr)
-- Toggle the aerial window with <leader>a
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>at', '<cmd>AerialToggle!<CR>', {})
-- Jump forwards/backwards with '{' and '}'
vim.api.nvim_buf_set_keymap(bufnr, 'n', '{', '<cmd>AerialPrev<CR>', {})
vim.api.nvim_buf_set_keymap(bufnr, 'n', '}', '<cmd>AerialNext<CR>', {})
-- Jump up the tree with '[[' or ']]'
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[[', '<cmd>AerialPrevUp<CR>', {})
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']]', '<cmd>AerialNextUp<CR>', {})
end,
-- Call this function when aerial first sets symbols on a buffer.
-- Takes a single `bufnr` argument.
on_first_symbols = nil,
-- Automatically open aerial when entering supported buffers.
-- This can be a function (see :help aerial-open-automatic)
open_automatic = false,
-- Run this command after jumping to a symbol (false will disable)
post_jump_cmd = "normal! zz",
-- When true, aerial will automatically close after jumping to a symbol
close_on_select = false,
-- Show box drawing characters for the tree hierarchy
show_guides = true,
-- The autocmds that trigger symbols update (not used for LSP backend)
update_events = "TextChanged,InsertLeave",
-- Customize the characters used when show_guides = true
guides = {
-- When the child item has a sibling below it
mid_item = "├─",
-- When the child item is the last in the list
last_item = "└─",
-- When there are nested child guides to the right
nested_top = "",
-- Raw indentation
whitespace = " ",
},
-- Options for opening aerial in a floating win
float = {
-- Controls border appearance. Passed to nvim_open_win
border = "rounded",
-- Determines location of floating window
-- cursor - Opens float on top of the cursor
-- editor - Opens float centered in the editor
-- win - Opens float centered in the window
relative = "cursor",
-- These control the height of the floating window.
-- They can be integers or a float between 0 and 1 (e.g. 0.4 for 40%)
-- min_height and max_height can be a list of mixed types.
-- min_height = {8, 0.1} means "the greater of 8 rows or 10% of total"
max_height = 0.9,
height = nil,
min_height = { 8, 0.1 },
override = function(conf, source_winid)
-- This is the config that will be passed to nvim_open_win.
-- Change values here to customize the layout
return conf
end,
},
lsp = {
-- Fetch document symbols when LSP diagnostics update.
-- If false, will update on buffer changes.
diagnostics_trigger_update = true,
-- Set to false to not update the symbols when there are LSP errors
update_when_errors = true,
-- How long to wait (in ms) after a buffer change before updating
-- Only used when diagnostics_trigger_update = false
update_delay = 300,
},
treesitter = {
-- How long to wait (in ms) after a buffer change before updating
update_delay = 300,
},
markdown = {
-- How long to wait (in ms) after a buffer change before updating
update_delay = 300,
},
})
+215
View File
@@ -0,0 +1,215 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local utils = require 'utils'
local hl_CustomHeader
local head_cache
--- @param trunc_width number trunctates component when screen width is less then trunc_width
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param hide_width number hides component when window width is smaller then hide_width
--- @param no_ellipsis boolean whether to disable adding '...' at end after truncation
--- return function that can format the component accordingly
local function trunc(trunc_width, trunc_len, hide_width, no_ellipsis)
return function(str)
local win_width = vim.fn.winwidth(0)
if hide_width and win_width < hide_width then
return ''
elseif trunc_width and trunc_len and win_width < trunc_width and #str >
trunc_len then
return str:sub(1, trunc_len) .. (no_ellipsis and '' or '...')
end
return str
end
end
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
--- return function that can format the component accordingly
local function l_trunc(trunc_len, no_ellipsis)
return function(str)
if #str > trunc_len then
if no_ellipsis then
return str:sub(#str - trunc_len)
else
return '...' .. str:sub(#str - trunc_len + 3)
end
else
return str
end
end
end
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
--- return function that can format the component accordingly
local function r_trunc(trunc_len, no_ellipsis)
return function(str)
if #str > trunc_len then
if no_ellipsis then
return str:sub(1, trunc_len)
elseif #str < trunc_len then
return str
else
return str:sub(1, trunc_len - 3) ..
(no_ellipsis and '' or '...')
end
end
return str
end
end
local function short_path(len)
return function(str)
if #str > len then return vim.fn.pathshorten(str, 1) end
return str
end
end
local function header()
if hl_CustomHeader == nil then
local header_hl = require('utils').get_hl('NvimTreeNormal')
if header_hl ~= nil then
hl_CustomHeader = 'gui=bold guifg=' .. header_hl.foreground ..
' guibg=' .. header_hl.background
vim.api.nvim_command('hi CustomHeader ' .. hl_CustomHeader)
end
end
-- local header = short_path(40)(vim.fn.getcwd())
-- NOTE: Decided not to use this. Probably doesn't work.
local gitdir = vim.fn.FugitiveExtractGitDir(vim.fn.getcwd())
local text = ''
if gitdir == '' then
text = vim.fn.fnamemodify(vim.fn.getcwd(), ':~')
else
text = vim.fn.fnamemodify(gitdir, ':~:h')
-- text = vim.fn.fnamemodify(vim.fn.FugitiveWorkTree(), ':~')
-- local branch = r_trunc(15, false)(vim.fn.FugitiveHead())
local head = vim.fn.FugitiveHead(8, gitdir)
if head == '' then
if head_cache[gitdir] ~= nil then
head = head_cache[gitdir]
else
local f = io.open(gitdir, 'r')
if f then
io.input(f)
local line = io.read('*l')
local head = line:gsub(
'ref: /refs/(heads/|remotes/|tags/)', ''
)
head_cache[gitdir] = head
end
end
end
if head ~= '' then text = text .. '' .. head end
end
-- return l_trunc(40-2, false)(short_path(40-2)(text))
return l_trunc(40 - 2, false)(text)
end
require('bufferline').setup(
{
options = {
mode = 'buffers',
numbers = function(ordinal, id, lower, raise) return '' end,
close_command = 'bdelete %d', -- can be a string | function, see "Mouse actions"
right_mouse_command = 'bdelete %d', -- can be a string | function, see "Mouse actions"
left_mouse_command = 'buffer %d', -- can be a string | function, see "Mouse actions"
middle_mouse_command = nil, -- can be a string | function, see "Mouse actions"
indicator = {
icon = '', -- this should be omitted if indicator style is not 'icon'
style = 'icon'
},
buffer_close_icon = '',
modified_icon = '',
close_icon = '',
left_trunc_marker = '',
right_trunc_marker = '',
--- name_formatter can be used to change the buffer's label in the bufferline.
--- Please note some names can/will break the
--- bufferline so use this at your discretion knowing that it has
--- some limitations that will *NOT* be fixed.
name_formatter = function(buf) -- buf contains:
-- name | str | the basename of the active file
-- path | str | the full path of the active file
-- bufnr (buffer only) | int | the number of the active buffer
-- buffers (tabs only) | table(int) | the numbers of the buffers in the tab
-- tabnr (tabs only) | int | the "handle" of the tab, can be converted to its ordinal number using: `vim.api.nvim_tabpage_get_number(buf.tabnr)`
return buf.name
end,
max_name_length = 18,
max_prefix_length = 15, -- prefix used when a buffer is de-duplicated
truncate_names = true,
tab_size = 18,
diagnostics = 'nvim_lsp',
diagnostics_update_in_insert = false,
diagnostics_indicator = function(count, _, _, _)
return '(' .. count .. ')'
end,
-- NOTE: this will be called a lot so don't do any heavy processing here
custom_filter = function(buf, _)
local disabled_ft = { 'NvimTree', 'fugitive' }
if utils.has_value(disabled_ft, vim.bo[buf].filetype) then
return false
end
return true
end,
offsets = {
{
filetype = 'NvimTree',
text = 'File Explorer', -- header,
text_align = 'center',
seperator = true
-- padding = 1,
-- highlight = "CustomHeader",
},
{
filetype = 'fugitive',
text = 'Fugitive', -- header,
text_align = 'center',
seperator = true
-- padding = 1,
-- highlight = "CustomHeader",
},
{
filetype = 'aerial',
text = 'Aerial', -- header,
text_align = 'center',
seperator = true
-- padding = 1,
-- highlight = "CustomHeader",
}
},
color_icons = true, -- whether or not to add the filetype icon highlights
show_buffer_icons = true, -- disable filetype icons for buffers
show_buffer_close_icons = false,
show_buffer_default_icon = true, -- whether or not an unrecognised filetype should show a default icon
show_close_icon = false,
show_tab_indicators = true,
persist_buffer_sort = true, -- whether or not custom sorted buffers should persist
-- can also be a table containing 2 custom separators
-- [focused and unfocused]. eg: { '|', '|' }
separator_style = 'thin', -- | "thick" | "thin" | { 'any', 'any' },
enforce_regular_tabs = true,
always_show_bufferline = true,
hover = { enabled = true, delay = 200, reveal = { 'close' } },
sort_by = 'id'
}
}
)
+76
View File
@@ -0,0 +1,76 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local colors = require("catppuccin.palettes").get_palette() -- fetch colors from g:catppuccin_flavour palette
vim.g.catppuccin_flavour = "mocha" -- latte, frappe, macchiato, mocha
require("catppuccin").setup({
compile_path = vim.fn.stdpath("cache") .. "/catppuccin",
transparent_background = false,
term_colors = false,
dim_inactive = {
enabled = false,
shade = "dark",
percentage = 0.15,
},
styles = {
comments = {},
conditionals = {},
loops = {},
functions = {},
keywords = {},
strings = {},
variables = {},
numbers = {},
booleans = {},
properties = {},
types = {},
operators = {},
},
integrations = {
cmp = true,
gitsigns = true,
nvimtree = true,
telescope = true,
treesitter = true,
aerial = true,
native_lsp = {
enabled = true,
virtual_text = {
errors = { "italic" },
hints = { "italic" },
warnings = { "italic" },
information = { "italic" },
},
underlines = {
errors = { "underline" },
hints = { "underline" },
warnings = { "underline" },
information = { "underline" },
},
},
-- For more plugins integrations please see https://github.com/catppuccin/nvim#integrations
},
color_overrides = {},
custom_highlights = {
-- Comment = { fg = colors.flamingo },
-- TSConstBuiltin = { fg = colors.peach, style = {} },
-- TSConstant = { fg = colors.sky },
-- TSComment = { fg = colors.surface2, style = { "italic" } }
['@parameter'] = { style = {} }
}
})
vim.cmd("colorscheme catppuccin")
+86
View File
@@ -0,0 +1,86 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('Comment').setup(
{
---Add a space b/w comment and the line
---@type boolean|fun():boolean
padding = true,
---Whether the cursor should stay at its position
---NOTE: This only affects NORMAL mode mappings and doesn't work with dot-repeat
---@type boolean
sticky = true,
---Lines to be ignored while comment/uncomment.
---Could be a regex string or a function that returns a regex string.
---Example: Use '^$' to ignore empty lines
---@type string|fun():string
ignore = '^$',
---LHS of toggle mappings in NORMAL + VISUAL mode
---@type table
toggler = {
---Line-comment toggle keymap
line = 'gcc',
---Block-comment toggle keymap
block = 'gbc',
},
---LHS of operator-pending mappings in NORMAL + VISUAL mode
---@type table
opleader = {
---Line-comment keymap
line = 'gc',
---Block-comment keymap
block = 'gb',
},
---LHS of extra mappings
---@type table
extra = {
---Add comment on the line above
above = 'gcO',
---Add comment on the line below
below = 'gco',
---Add comment at the end of line
eol = 'gcA',
},
---Create basic (operator-pending) and extended mappings for NORMAL + VISUAL mode
---@type table
mappings = {
---Operator-pending mapping
---Includes `gcc`, `gbc`, `gc[count]{motion}` and `gb[count]{motion}`
---NOTE: These mappings can be changed individually by `opleader` and `toggler` config
basic = true,
---Extra mapping
---Includes `gco`, `gcO`, `gcA`
extra = true,
---Extended mapping
---Includes `g>`, `g<`, `g>[count]{motion}` and `g<[count]{motion}`
extended = false,
},
---Pre-hook, called before commenting the line
---@type fun(ctx: Ctx):string
pre_hook = nil,
---Post-hook, called after commenting is done
---@type fun(ctx: Ctx)
post_hook = nil,
}
)
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.cmd("colorscheme darkplus")
+121
View File
@@ -0,0 +1,121 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local cb = require'diffview.config'.diffview_callback
require'diffview'.setup {
diff_binaries = false, -- Show diffs for binaries
enhanced_diff_hl = true, -- See ':h diffview-config-enhanced_diff_hl'
use_icons = true, -- Requires nvim-web-devicons
icons = { -- Only applies when use_icons is true.
folder_closed = "",
folder_open = "",
},
signs = {
fold_closed = "",
fold_open = "",
},
file_panel = {
position = "left", -- One of 'left', 'right', 'top', 'bottom'
width = 35, -- Only applies when position is 'left' or 'right'
height = 10, -- Only applies when position is 'top' or 'bottom'
listing_style = "tree", -- One of 'list' or 'tree'
tree_options = { -- Only applies when listing_style is 'tree'
flatten_dirs = true, -- Flatten dirs that only contain one single dir
folder_statuses = "only_folded", -- One of 'never', 'only_folded' or 'always'.
},
},
file_history_panel = {
position = "bottom",
width = 35,
height = 16,
log_options = {
max_count = 256, -- Limit the number of commits
follow = false, -- Follow renames (only for single file)
all = false, -- Include all refs under 'refs/' including HEAD
merges = false, -- List only merge commits
no_merges = false, -- List no merge commits
reverse = false, -- List commits in reverse order
},
},
default_args = { -- Default args prepended to the arg-list for the listed commands
DiffviewOpen = {},
DiffviewFileHistory = {},
},
hooks = {}, -- See ':h diffview-config-hooks'
key_bindings = {
disable_defaults = false, -- Disable the default key bindings
-- The `view` bindings are active in the diff buffers, only when the current
-- tabpage is a Diffview.
view = {
["<tab>"] = cb("select_next_entry"), -- Open the diff for the next file
["<s-tab>"] = cb("select_prev_entry"), -- Open the diff for the previous file
["gf"] = cb("goto_file"), -- Open the file in a new split in previous tabpage
["<C-w><C-f>"] = cb("goto_file_split"), -- Open the file in a new split
["<C-w>gf"] = cb("goto_file_tab"), -- Open the file in a new tabpage
["<leader>e"] = cb("focus_files"), -- Bring focus to the files panel
["<leader>b"] = cb("toggle_files"), -- Toggle the files panel.
},
file_panel = {
["j"] = cb("next_entry"), -- Bring the cursor to the next file entry
["<down>"] = cb("next_entry"),
["k"] = cb("prev_entry"), -- Bring the cursor to the previous file entry.
["<up>"] = cb("prev_entry"),
["<cr>"] = cb("select_entry"), -- Open the diff for the selected entry.
["o"] = cb("select_entry"),
["<2-LeftMouse>"] = cb("select_entry"),
["-"] = cb("toggle_stage_entry"), -- Stage / unstage the selected entry.
["S"] = cb("stage_all"), -- Stage all entries.
["U"] = cb("unstage_all"), -- Unstage all entries.
["X"] = cb("restore_entry"), -- Restore entry to the state on the left side.
["R"] = cb("refresh_files"), -- Update stats and entries in the file list.
["<tab>"] = cb("select_next_entry"),
["<s-tab>"] = cb("select_prev_entry"),
["gf"] = cb("goto_file"),
["<C-w><C-f>"] = cb("goto_file_split"),
["<C-w>gf"] = cb("goto_file_tab"),
["i"] = cb("listing_style"), -- Toggle between 'list' and 'tree' views
["f"] = cb("toggle_flatten_dirs"), -- Flatten empty subdirectories in tree listing style.
["<leader>e"] = cb("focus_files"),
["<leader>b"] = cb("toggle_files"),
},
file_history_panel = {
["g!"] = cb("options"), -- Open the option panel
["<C-A-d>"] = cb("open_in_diffview"), -- Open the entry under the cursor in a diffview
["y"] = cb("copy_hash"), -- Copy the commit hash of the entry under the cursor
["zR"] = cb("open_all_folds"),
["zM"] = cb("close_all_folds"),
["j"] = cb("next_entry"),
["<down>"] = cb("next_entry"),
["k"] = cb("prev_entry"),
["<up>"] = cb("prev_entry"),
["<cr>"] = cb("select_entry"),
["o"] = cb("select_entry"),
["<2-LeftMouse>"] = cb("select_entry"),
["<tab>"] = cb("select_next_entry"),
["<s-tab>"] = cb("select_prev_entry"),
["gf"] = cb("goto_file"),
["<C-w><C-f>"] = cb("goto_file_split"),
["<C-w>gf"] = cb("goto_file_tab"),
["<leader>e"] = cb("focus_files"),
["<leader>b"] = cb("toggle_files"),
},
option_panel = {
["<tab>"] = cb("select"),
["q"] = cb("close"),
},
},
}
+33
View File
@@ -0,0 +1,33 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.edge_style = 'default'
vim.g.edge_disable_italic_comment = 0
vim.g.edge_enable_italic = 0
vim.g.edge_cursor = 'auto'
vim.g.edge_transparent_background = 0
vim.g.edge_menu_selection_background = 'blue'
vim.g.edge_spell_foreground = 'none'
vim.g.edge_show_eob = 1
vim.g.edge_diagnostic_text_highlight = 0
vim.g.edge_diagnostic_line_highlight = 1
vim.g.edge_diagnostic_virtual_text = 'grey'
vim.g.edge_current_word = 'grey background'
vim.g.edge_disable_terminal_colors = 0
vim.g.edge_lightline_disable_bold = 0
vim.g.edge_better_performance = 1
vim.fn.execute('colorscheme edge')
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.keymap.set('n', "<leader>gl", ":Flog<CR>", { remap = false, silent = true })
+24
View File
@@ -0,0 +1,24 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local function git_status_tab()
vim.fn.execute("tabnew")
vim.fn.execute("leftabove vertical G | vertical resize 60 | set wfw")
end
vim.keymap.set('n', '<leader>gd', ':Gdiffsplit<CR>', { remap = false })
vim.keymap.set('n', '<leader>gg', git_status_tab, { silent = true, remap = false })
vim.keymap.set('n', '<leader>gc', ':G commit<CR>', { remap = false })
+19
View File
@@ -0,0 +1,19 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local gl = require('galaxyline')
-- maybe some other day
+61
View File
@@ -0,0 +1,61 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('github-theme').setup(
{
theme_style = 'dimmed',
transparent = false,
hide_end_of_buffer = false,
hide_inactive_statusline = false,
dark_float = true,
dev = false,
-- styles
comment_style = 'italic',
function_style = 'NONE',
keyword_style = 'NONE',
msg_area_style = 'NONE',
variable_style = 'NONE',
-- sidebars
sidebars = {
'qf',
'vista_kind',
'terminal',
'packer',
'aerial',
'NvimTree'
},
-- Change the "hint" color to the "orange" color, and make the "error" color bright red
-- colors = { hint = 'orange', error = '#ff0000' },
-- Overwrite the highlight groups
-- overrides = function(c)
-- return {
-- htmlTag = {
-- fg = c.red,
-- bg = '#282c34',
-- sp = c.hint,
-- style = 'underline'
-- },
-- DiagnosticHint = { link = 'LspDiagnosticsDefaultHint' },
-- -- this will remove the highlight groups
-- TSField = {}
-- }
-- end
}
)
+61
View File
@@ -0,0 +1,61 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('gitsigns').setup(
{
on_attach = function(bufnr)
local gs = package.loaded.gitsigns
local function map(mode, l, r, opts)
opts = opts or {}
opts.buffer = bufnr
vim.keymap.set(mode, l, r, opts)
end
-- map('n', ']c',
-- function()
-- gs.next_hunk{
-- wrap=false,
-- navigation_message=true,
-- foldopen=true
-- }
-- end
-- )
-- map('n', '[c',
-- function()
-- gs.prev_hunk{
-- wrap=false,
-- navigation_message=true,
-- foldopen=true
-- }
-- end
-- )
map('n', '<leader>gv', gs.select_hunk)
-- map('n', '<C-j>', "&diff ? '<C-j>' : '<cmd>Gitsigns next_hunk<CR>'", {expr=true})
-- map('n', '<C-k>', "&diff ? '<C-k>' : '<cmd>Gitsigns prev_hunk<CR>'", {expr=true})
map({ 'n', 'v' }, '<leader>gr', ':Gitsigns reset_hunk<CR>') -- gs.reset_hunk() doesn't work with selected lines
map('n', '<leader>g?', gs.preview_hunk)
map('n', '<leader>gb', function()
gs.blame_line { full = true }
end)
-- map('n', '<leader>gd', gs.diffthis)
end,
signs = {
-- default
-- untracked = { text = '┆' }
untracked = { text = '' }
}
}
)
+19
View File
@@ -0,0 +1,19 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.opt.termguicolors = true
vim.o.background = "dark" -- or "light" for light mode
vim.fn.execute("colorscheme gruvbox")
+24
View File
@@ -0,0 +1,24 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("indent_blankline").setup({
show_current_context = true,
show_current_context_start = false,
use_treesitter = true,
show_first_indent_level = true,
char = '',
-- context_char = '┃',
})
+22
View File
@@ -0,0 +1,22 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
-- more options at https://www.jetbrains.com/lp/mono/
vim.g.indentLine_char = ''
-- Disable conceal for some syntax plugins
vim.g.vim_json_conceal = 0
vim.g.markdown_syntax_conceal = 0
vim.g.indentLine_fileTypeExclude = { 'NvimTree' }
+34
View File
@@ -0,0 +1,34 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('kanagawa').setup({
undercurl = true, -- enable undercurls
commentStyle = { italic = true },
functionStyle = {},
keywordStyle = {},
statementStyle = { bold = true },
typeStyle = {},
variablebuiltinStyle = {},
specialReturn = true, -- special highlight for the return keyword
specialException = true, -- special highlight for exception handling keywords
transparent = false, -- do not set background color
dimInactive = true, -- dim inactive window `:h hl-NormalNC`
globalStatus = true, -- adjust window separators highlight for laststatus=3
colors = {},
overrides = {},
})
vim.cmd("colorscheme kanagawa")
+21
View File
@@ -0,0 +1,21 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.lazygit_floating_window_winblend = 0 -- transparency of floating window
vim.g.lazygit_floating_window_scaling_factor = 0.9 -- scaling factor for floating window
vim.g.lazygit_floating_window_corner_chars = { '', '', '', '' } -- customize lazygit popup window corner characters
vim.g.lazygit_floating_window_use_plenary = 0 -- use plenary.nvim to manage floating window if available
vim.g.lazygit_use_neovim_remote = 1 -- fallback to 0 if neovim-remote is not installed
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("lsp_signature").setup()
+113
View File
@@ -0,0 +1,113 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
--- @param trunc_width number trunctates component when screen width is less then trunc_width
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param hide_width number hides component when window width is smaller then hide_width
--- @param no_ellipsis boolean whether to disable adding '...' at end after truncation
--- return function that can format the component accordingly
local function trunc(trunc_width, trunc_len, hide_width, no_ellipsis)
return function(str)
local win_width = vim.fn.winwidth(0)
if hide_width and win_width < hide_width then return ''
elseif trunc_width and trunc_len and win_width < trunc_width and #str > trunc_len then
return str:sub(1, trunc_len) .. (no_ellipsis and '' or '...')
end
return str
end
end
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
--- return function that can format the component accordingly
local function l_trunc(trunc_len, no_ellipsis)
return function(str)
if #str > trunc_len then
return (no_ellipsis and '' or '...') .. str:sub(-trunc_len, -1)
end
return str
end
end
--- @param trunc_len number truncates component to trunc_len number of chars
--- @param no_ellipsis boolean whether to disable adding '...' at start before truncation
--- return function that can format the component accordingly
local function r_trunc(trunc_len, no_ellipsis)
return function(str)
if #str > trunc_len then
return str:sub(1, trunc_len) .. (no_ellipsis and '' or '...')
end
return str
end
end
local function short_path(len)
return function(str)
if #str > len then
return vim.fn.pathshorten(str, 1)
end
return str
end
end
local function header()
local text = short_path(40)(vim.fn.getcwd())
local branch = r_trunc(15, false)(vim.fn.FugitiveHead())
if branch ~= '' then
text = text .. '' .. branch
end
return text
end
require('lualine').setup ({
options = {
icons_enabled = true,
-- theme = require('config.nightfox_lualine_custom'),
theme = 'auto',
-- theme = "catppuccin",
component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' },
disabled_filetypes = { 'NvimTree', 'fugitive' },
always_divide_middle = true,
globalstatus = true
},
sections = {
lualine_a = { },
lualine_b = { 'mode' },
lualine_c = { { 'filename', path = 1 }, 'diff', {'diagnostics', sources = {'nvim_lsp'}}},
lualine_x = { 'filetype', 'encoding', 'fileformat', 'progress' },
lualine_y = { 'location' },
lualine_z = { }
},
inactive_sections = {
lualine_a = { },
lualine_b = { },
lualine_c = { 'filename' },
lualine_x = { 'location' },
lualine_y = { },
lualine_z = { }
},
-- tabline = {
-- lualine_a = { { header } },
-- lualine_b = { {'tabs', mode = 0 } },
-- lualine_c = { { 'buffers', show_filename_only = true, filetype_names = { TelescopePrompt = 'Telescope', fugitive = 'Fugitive' } } },
-- lualine_x = {},
-- lualine_y = {},
-- lualine_z = {}
-- },
extensions = { }
})
+31
View File
@@ -0,0 +1,31 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
-- local ls = require"luasnip"
-- local s = ls.snippet
-- local sn = ls.snippet_node
-- local isn = ls.indent_snippet_node
-- local t = ls.text_node
-- local i = ls.insert_node
-- local f = ls.function_node
-- local c = ls.choice_node
-- local d = ls.dynamic_node
-- local r = ls.restore_node
-- local events = require("luasnip.util.events")
-- local ai = require("luasnip.nodes.absolute_indexer")
-- For rafamadriz/friendly-snippets
require("luasnip.loaders.from_vscode").lazy_load()
+32
View File
@@ -0,0 +1,32 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("mason-lspconfig").setup({
-- A list of servers to automatically install if they're not already installed. Example: { "rust_analyzer@nightly", "lua_ls" }
-- This setting has no relation with the `automatic_installation` setting.
---@type string[]
ensure_installed = require('lsp'):language_servers(),
-- Whether servers that are set up (via lspconfig) should be automatically installed if they're not already installed.
-- This setting has no relation with the `ensure_installed` setting.
-- Can either be:
-- - false: Servers are not automatically installed.
-- - true: All servers set up via lspconfig are automatically installed.
-- - { exclude: string[] }: All servers set up via lspconfig, except the ones provided in the list, are automatically installed.
-- Example: automatic_installation = { exclude = { "rust_analyzer", "solargraph" } }
---@type boolean
-- automatic_installation = true
})
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("mason").setup()
+54
View File
@@ -0,0 +1,54 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('material').setup({
contrast = {
sidebars = false, -- Enable contrast for sidebar-like windows ( for example Nvim-Tree )
floating_windows = false, -- Enable contrast for floating windows
line_numbers = false, -- Enable contrast background for line numbers
sign_column = false, -- Enable contrast background for the sign column
cursor_line = false, -- Enable darker background for the cursor line
non_current_windows = false, -- Enable darker background for non-current windows
popup_menu = false, -- Enable lighter background for the popup menu
},
italics = {
comments = false, -- Enable italic comments
keywords = false, -- Enable italic keywords
functions = false, -- Enable italic functions
strings = false, -- Enable italic strings
variables = false -- Enable italic variables
},
contrast_filetypes = { -- Specify which filetypes get the contrasted (darker) background
"terminal", -- Darker terminal background
"packer", -- Darker packer background
"qf" -- Darker qf list background
},
high_visibility = {
lighter = false, -- Enable higher contrast text for lighter style
darker = false -- Enable higher contrast text for darker style
},
disable = {
borders = false, -- Disable borders between verticaly split windows
background = false, -- Prevent the theme from setting the background (NeoVim then uses your teminal background)
term_colors = false, -- Prevent the theme from setting terminal colors
eob_lines = false -- Hide the end-of-buffer lines
},
lualine_style = "default", -- Lualine style ( can be 'stealth' or 'default' )
async_loading = true, -- Load parts of the theme asyncronously for faster startup (turned on by default)
custom_highlights = {} -- Overwrite highlights with your own
})
vim.g.material_style = "deep ocean"
vim.fn.execute("colorscheme material")
+67
View File
@@ -0,0 +1,67 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('nightfox').setup({
options = {
-- Compiled file's destination location
compile_path = vim.fn.stdpath("cache") .. "/nightfox",
compile_file_suffix = "_compiled", -- Compiled file suffix
transparent = false, -- Disable setting background
terminal_colors = true, -- Set terminal colors (vim.g.terminal_color_*) used in `:terminal`
dim_inactive = false, -- Non focused panes set to alternative background
styles = { -- Style to be applied to different syntax groups
comments = "NONE", -- Value is any valid attr-list value `:help attr-list`
functions = "NONE",
keywords = "NONE",
numbers = "NONE",
strings = "NONE",
types = "NONE",
variables = "NONE",
},
inverse = { -- Inverse highlight for different types
match_paren = false,
visual = false,
search = false,
},
modules = { -- List of various plugins and additional options
cmp = true,
diagnostic = {
enable = true,
background = true
},
gitsigns = true,
native_lsp = true,
nvimtree = true,
telescope = true,
treesitter = true,
},
},
groups = {
all = {
-- By default nightfox links some groups together. `CursorColumn` is one of these groups. When overriding
-- Make sure `link` is cleared to `""` so that the link will be removed.
-- see https://github.com/EdenEast/nightfox.nvim/blob/main/lua/nightfox/group/editor.lua
Normal = { bg = "palette.bg0", link = "" },
NormalNC = { bg = "palette.bg0", link = "" },
NormalFloat = { bg = "palette.bg1", link = "" },
CursorLine = { bg = "palette.bg1", link = "" },
StatusLine = { bg = "palette.bg1", link = "" },
StatusLineNC = { bg = "palette.bg1", link = "" }
}
}
})
vim.cmd("colorscheme nightfox")
+47
View File
@@ -0,0 +1,47 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local Color = require("nightfox.lib.color")
local spec = require("nightfox.spec").load("nightfox")
local pal = spec.pallet
local bg = Color.from_hex(spec.bg1)
local fg = spec.fg2
local function generate_mode(color, amount)
amount = amount or 0.3
local fade = bg:blend(Color.from_hex(color), amount):to_css()
local b = bg:to_css()
local f = fg
return {
a = { bg = color, fg = b },
b = { bg = fade, fg = f },
c = { bg = b, fg = f },
}
end
-- stylua: ignore
local nightfox = {
normal = generate_mode(pal.blue.base),
insert = generate_mode(pal.green.base),
command = generate_mode(pal.yellow.base),
visual = generate_mode(pal.magenta.base),
replace = generate_mode(pal.red.base),
inactive = generate_mode(spec.fg3),
}
return nightfox
+22
View File
@@ -0,0 +1,22 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.nord_contrast = true
vim.g.nord_borders = false
vim.g.nord_disable_background = false
vim.g.nord_italic = false
require('nord').set()
+35
View File
@@ -0,0 +1,35 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('nvim-autopairs').setup({
disable_filetype = { "TelescopePrompt" },
disable_in_macro = false, -- disable when recording or executing a macro
disable_in_visualblock = false, -- disable when insert after visual block mode
ignored_next_char = [=[[%w%%%'%[%"%.]]=],
enable_moveright = true,
enable_afterquote = true, -- add bracket pairs after quote
enable_check_bracket_line = true, --- check bracket in same line
enable_bracket_in_quote = true, --
enable_abbr = false, -- trigger abbreviation
break_undo = true, -- switch for basic rule break undo sequence
check_ts = false,
map_cr = true,
map_bs = true, -- map the <BS> key
map_c_h = false, -- Map the <C-h> key to delete a pair
map_c_w = false, -- map <c-w> to delete a pair if possible
})
-- cmp_autopairs.lisp[#cmp_autopairs.lisp+1] = "racket"
+196
View File
@@ -0,0 +1,196 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local has_words_before = function()
unpack = unpack or table.unpack
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end
local cmp = require('cmp')
local luasnip = require('luasnip')
local lspkind = require('lspkind')
cmp.setup({
enabled = function()
-- disable completion in comments
local context = require 'cmp.config.context'
-- keep command mode completion enabled when cursor is in a comment
if vim.api.nvim_get_mode().mode == 'c' then
return true
else
return not context.in_treesitter_capture('comment') and
not context.in_syntax_group('Comment')
end
end,
completion = { keyword_length = 3 },
snippet = {
expand = function(args)
-- vim.fn["vsnip#anonymous"](args.body) -- For `vsnip` users.
luasnip.lsp_expand(args.body) -- For `luasnip` users.
-- require('snippy').expand_snippet(args.body) -- For `snippy` users.
-- vim.fn["UltiSnips#Anon"](args.body) -- For `ultisnips` users.
end
},
formatting = {
format = function(entry, vim_item)
vim_item = lspkind.cmp_format({
mode = 'text', -- show only symbol annotations
maxwidth = 50, -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
ellipsis_char =
'...' -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
-- The function below will be called before any actual modifications from lspkind
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
--[[ before = function(entry, vim_item)
...
return vim_item
end ]]
})(entry, vim_item)
vim_item.dup = 0
return vim_item
end
},
experimental = { ghost_text = true },
mapping = {
['<C-p>'] = cmp.mapping.select_prev_item(),
['<C-n>'] = cmp.mapping.select_next_item(),
['<C-d>'] = cmp.mapping.scroll_docs(-4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<C-e>'] = cmp.mapping.close(),
['<CR>'] = cmp.mapping(
function(fallback)
if cmp.visible() then
cmp.confirm(
{
behavior = cmp.ConfirmBehavior.Replace,
select = true
}
)
-- vim.api.nvim_feedkeys('(', 'i', true)
else
fallback()
end
end, { 'i', 's' }
),
-- ['<Down>'] = cmp.mapping(
-- function(fallback)
-- if cmp.visible() then
-- cmp.select_next_item()
-- elseif luasnip.expand_or_jumpable() then
-- luasnip.expand_or_jump()
-- else
-- fallback()
-- end
-- end, { 'i', 's' }
-- ),
-- ['<Up>'] = cmp.mapping(
-- function(fallback)
-- if cmp.visible() then
-- cmp.select_prev_item()
-- elseif luasnip.jumpable(-1) then
-- luasnip.jump(-1)
-- else
-- fallback()
-- end
-- end, { 'i', 's' }
-- ),
['<Tab>'] = cmp.mapping(
function(fallback)
if cmp.visible() then
cmp.select_next_item()
-- You could replace the expand_or_jumpable() calls within expand_or_locally_jumpable()
-- they way you will only jump inside the snippet region
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
elseif has_words_before() then
cmp.complete()
else
fallback()
end
end, { 'i', 's' }
),
['<S-Tab>'] = cmp.mapping(
function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { 'i', 's' }
)
},
sources = {
-- { name = 'buffer' },
{ name = 'path' },
{ name = 'nvim_lsp' },
-- { name = 'nvim_lsp_signature_help' },
-- { name = 'nvim_lua' },
-- { name = 'vsnip' }, -- For vsnip users.
{ name = 'luasnip' } -- For luasnip users.
-- { name = 'ultisnips' }, -- For ultisnips users.
-- { name = 'snippy' }, -- For snippy users.
}
})
-- see https://github.com/hrsh7th/nvim-cmp/wiki/Menu-Appearance#how-to-add-visual-studio-code-dark-theme-colors-to-the-menu
-- -- gray
-- vim.fn.execute("highlight! CmpItemAbbrDeprecated guibg=NONE gui=strikethrough guifg=#808080")
-- -- blue
-- vim.fn.execute("highlight! CmpItemAbbrMatch guibg=NONE guifg=#569CD6")
-- vim.fn.execute("highlight! CmpItemAbbrMatchFuzzy guibg=NONE guifg=#569CD6")
-- -- light blue
-- vim.fn.execute("highlight! CmpItemKindVariable guibg=NONE guifg=#9CDCFE")
-- vim.fn.execute("highlight! CmpItemKindInterface guibg=NONE guifg=#9CDCFE")
-- vim.fn.execute("highlight! CmpItemKindText guibg=NONE guifg=#9CDCFE")
-- -- pink
-- vim.fn.execute("highlight! CmpItemKindFunction guibg=NONE guifg=#C586C0")
-- vim.fn.execute("highlight! CmpItemKindMethod guibg=NONE guifg=#C586C0")
-- -- front
-- vim.fn.execute("highlight! CmpItemKindKeyword guibg=NONE guifg=#D4D4D4")
-- vim.fn.execute("highlight! CmpItemKindProperty guibg=NONE guifg=#D4D4D4")
-- vim.fn.execute("highlight! CmpItemKindUnit guibg=NONE guifg=#D4D4D4")
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', option = { ignore_cmds = { 'Man', '!' } } } }
)
}
)
local cmp_autopairs = require('nvim-autopairs.completion.cmp')
cmp.event:on(
'confirm_done',
cmp_autopairs.on_confirm_done()
)
+33
View File
@@ -0,0 +1,33 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('nvim_comment').setup({
-- Linters prefer comment and line to have a space in between markers
marker_padding = true,
-- should comment out empty or whitespace only lines
comment_empty = true,
-- Should key mappings be created
create_mappings = true,
-- Normal mode mapping left hand side
-- line_mapping = "<leader>cc",
-- Visual/Operator mapping left hand side
-- operator_mapping = "<leader>c",
-- Hook function to call before commenting takes place
hook = nil
})
vim.keymap.set('n', '<leader>c', ':CommentToggle<CR>')
vim.keymap.set('v', '<leader>c', ":'<, '>CommentToggle<CR>")
+57
View File
@@ -0,0 +1,57 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require("dapui").setup({
icons = { expanded = "", collapsed = "" },
mappings = {
-- Use a table to apply multiple mappings
expand = { "<CR>", "<2-LeftMouse>" },
open = "o",
remove = "d",
edit = "e",
repl = "r",
toggle = "t",
},
layouts = {
{
elements = {
'scopes',
'breakpoints',
'stacks',
'watches',
},
size = 40,
position = 'left',
},
{
elements = {
'repl',
'console',
},
size = 10,
position = 'bottom',
},
},
floating = {
max_height = nil, -- These can be integers or a float between 0 and 1.
max_width = nil, -- Floats will be treated as percentage of your screen.
border = "single", -- Border style. Can be "single", "double" or "rounded"
mappings = {
close = { "q", "<Esc>" },
},
},
windows = { indent = 1 },
})
+102
View File
@@ -0,0 +1,102 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.fn.execute("nnoremap <silent> <F5> :lua require'dap'.continue()<CR>")
vim.fn.execute("nnoremap <silent> <F10> :lua require'dap'.step_over()<CR>")
vim.fn.execute("nnoremap <silent> <F11> :lua require'dap'.step_into()<CR>")
vim.fn.execute("nnoremap <silent> <F12> :lua require'dap'.step_out()<CR>")
vim.fn.execute("nnoremap <leader>dt :lua require'config.nvim-dap'.pytest({'-k', ''})<left><left><left>")
vim.fn.execute("nnoremap <leader>dl :lua require'config.nvim-dap'.launch({''})<left><left><left>")
vim.fn.execute("nnoremap <silent> <leader>db :lua require'dap'.toggle_breakpoint()<CR>")
-- vim.fn.execute("nnoremap <silent> <leader>B :lua require'dap'.set_breakpoint(vim.fn.input('Breakpoint condition: '))<CR>")
-- vim.fn.execute("nnoremap <silent> <leader>lp :lua require'dap'.set_breakpoint(nil, nil, vim.fn.input('Log point message: '))<CR>")
vim.fn.execute("nnoremap <silent> <leader>dr :lua require'dap'.repl.open()<CR>")
-- vim.fn.execute("nnoremap <silent> <leader>dl :lua require'dap'.run_last()<CR>")
local utils = require('utils')
M = {}
local env_ok = false
local dap = nil
local function check_env()
local debugpy = utils.exec('python -m debugpy --version')
assert(debugpy.rc == 0, 'Python module debugpy is required')
env_ok = true
end
local function load_dap()
local ok, p = pcall(require, 'dap')
assert(ok, 'nvim-dap is required')
return p
end
local function start(config)
if not env_ok then
check_env()
end
if not dap then
dap = load_dap()
dap.adapters.python = {
type = 'executable';
command = 'python';
args = { '-m', 'debugpy.adapter' };
cwd = vim.fn.getcwd();
}
end
dap.run(config)
-- List of events described at https://microsoft.github.io/debug-adapter-protocol/specification#Events
-- Also see :h dap-extensions
dap.listeners.after['event_initialized']['nvim-dap.lua'] = function()
dap.set_exception_breakpoints({ 'userUnhandled' })
end
end
function M.launch(args)
assert(type(args) == 'table', 'Args not specified or of wrong type')
local config = {
name = 'Launch file',
type = 'python',
request = 'launch',
program = "${file}";
-- python = 'python';
-- program = vim.fn.getcwd() .. '/.venv/bin/pytest';
console = "integratedTerminal",
args = args
}
start(config)
end
function M.pytest(args)
assert(type(args) == 'table', 'Args not specified or of wrong type')
local config = {
name = 'pytest ' .. table.concat(args, ' '),
type = 'python',
request = 'launch',
-- pythonPath = vim.fn.getcwd() .. '/.venv/bin/python',
module = 'pytest',
-- python = 'python';
-- program = vim.fn.getcwd() .. '/.venv/bin/pytest';
args = args,
console = "integratedTerminal",
-- program = "${file}";
}
start(config)
end
return M
+230
View File
@@ -0,0 +1,230 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local nvim_tree = require('nvim-tree')
nvim_tree.setup({
auto_reload_on_write = true,
create_in_closed_folder = false,
disable_netrw = false,
hijack_cursor = true,
hijack_netrw = false,
hijack_unnamed_buffer_when_opening = false,
-- ignore_buffer_on_setup = false,
-- open_on_setup = false,
-- open_on_setup_file = false,
open_on_tab = false,
ignore_buf_on_tab_change = {},
sort_by = "name",
root_dirs = {},
prefer_startup_root = false,
sync_root_with_cwd = true,
reload_on_bufenter = false,
respect_buf_cwd = false,
on_attach = "disable",
remove_keymaps = false,
select_prompts = false,
view = {
adaptive_size = false,
centralize_selection = false,
width = 40,
hide_root_folder = false,
side = "left",
preserve_window_proportions = true,
number = false,
relativenumber = false,
signcolumn = "yes",
mappings = {
custom_only = false,
-- list = {
-- { key = "q", action = ""},
-- },
},
float = {
enable = false,
quit_on_focus_loss = true,
open_win_config = {
relative = "editor",
border = "rounded",
width = 30,
height = 30,
row = 1,
col = 1,
},
},
},
renderer = {
add_trailing = true,
group_empty = true,
highlight_git = true,
full_name = false,
highlight_opened_files = "name",
root_folder_modifier = ":~",
indent_width = 2,
indent_markers = {
enable = false,
inline_arrows = true,
icons = {
corner = "",
edge = "",
item = "",
bottom = "",
none = " ",
},
},
icons = {
webdev_colors = true,
git_placement = "after",
padding = " ",
symlink_arrow = "",
show = {
file = true,
folder = true,
folder_arrow = false,
git = true,
},
glyphs = {
default = "",
symlink = "",
bookmark = "",
folder = {
arrow_closed = "",
arrow_open = "",
default = "",
open = "",
empty = "",
empty_open = "",
symlink = "",
symlink_open = "",
},
git = {
unstaged = "",
staged = "",
unmerged = "",
renamed = "",
untracked = "",
deleted = "",
ignored = "",
},
},
},
special_files = { "Cargo.toml", "Makefile", "README.md", "readme.md" },
symlink_destination = true,
},
hijack_directories = {
enable = true,
auto_open = true,
},
update_focused_file = {
enable = true,
update_root = true,
ignore_list = {
'help'
},
},
-- ignore_ft_on_setup = {},
system_open = {
cmd = "",
args = {},
},
diagnostics = {
enable = true,
show_on_dirs = false,
debounce_delay = 50,
icons = {
hint = "",
info = "",
warning = "",
error = "",
},
},
filters = {
dotfiles = false,
custom = {},
exclude = {},
},
filesystem_watchers = {
enable = true,
debounce_delay = 50,
},
git = {
enable = true,
ignore = true,
show_on_dirs = true,
timeout = 400,
},
actions = {
use_system_clipboard = true,
change_dir = {
enable = false,
global = false,
restrict_above_cwd = false,
},
expand_all = {
max_folder_discovery = 300,
exclude = {},
},
file_popup = {
open_win_config = {
col = 1,
row = 1,
relative = "cursor",
border = "shadow",
style = "minimal",
},
},
open_file = {
quit_on_open = false,
resize_window = false,
window_picker = {
enable = true,
chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890",
exclude = {
filetype = { "notify", "packer", "qf", "diff", "fugitive", "fugitiveblame" },
buftype = { "nofile", "terminal", "help" },
},
},
},
remove_file = {
close_window = true,
},
},
trash = {
cmd = "trash",
require_confirm = true,
},
live_filter = {
prefix = "[FILTER]: ",
always_show_folders = true,
},
log = {
enable = false,
truncate = false,
types = {
all = false,
config = false,
copy_paste = false,
dev = false,
diagnostics = false,
git = false,
profile = false,
watcher = false,
},
},
})
local opts = { remap = false, silent = true }
vim.keymap.set('n', "<leader>tt", function() nvim_tree.toggle(false, true) end, opts)
+67
View File
@@ -0,0 +1,67 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('nvim-treesitter.configs').setup({
-- One of "all", "maintained" (parsers with maintainers), or a list of languages
ensure_installed = {
"bash",
"c",
"cpp",
"cmake",
"css",
"dockerfile",
"go",
"html",
"java",
"javascript",
"json",
"lua",
"make",
"ninja",
"python",
"rust",
"toml",
"vim",
"yaml",
"yang",
},
indent = {
enable = true
},
-- Install languages synchronously (only applied to `ensure_installed`)
sync_install = false,
-- List of parsers to ignore installing
ignore_install = { },
highlight = {
-- `false` will disable the whole extension
enable = true,
-- list of language that will be disabled
disable = { },
-- Setting this to true will run `:h syntax` and tree-sitter at the same time.
-- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
-- Using this option may slow down your editor, and you may see some duplicate highlights.
-- Instead of true it can also be a list of languages
additional_vim_regex_highlighting = false,
},
})
-- vim.opt.foldmethod = "expr"
-- vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
+49
View File
@@ -0,0 +1,49 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
require('onedark').setup {
-- Main options --
style = 'darker', -- Default theme style. Choose between 'dark', 'darker', 'cool', 'deep', 'warm', 'warmer' and 'light'
transparent = false, -- Show/hide background
term_colors = true, -- Change terminal color as per the selected theme style
ending_tildes = true, -- Show the end-of-buffer tildes. By default they are hidden
-- toggle theme style ---
toggle_style_key = '<leader>ts', -- Default keybinding to toggle
toggle_style_list = {'dark', 'darker', 'cool', 'deep', 'warm', 'warmer', 'light'}, -- List of styles to toggle between
-- Change code style ---
-- Options are italic, bold, underline, none
-- You can configure multiple style with comma seperated, For e.g., keywords = 'italic,bold'
code_style = {
comments = 'italic',
keywords = 'none',
functions = 'none',
strings = 'none',
variables = 'none'
},
-- Custom Highlights --
colors = {}, -- Override default colors
highlights = {}, -- Override highlight groups
-- Plugins Config --
diagnostics = {
darker = true, -- darker colors for diagnostic
undercurl = true, -- use undercurl instead of underline for diagnostics
background = true, -- use background color for virtual text
},
}
require('onedark').load()
+20
View File
@@ -0,0 +1,20 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.sonokai_style = "atlantis"
vim.g.sonokai_enable_italic = 1
vim.g.sonokai_disable_italic_comment = 1
vim.fn.execute("colorscheme sonokai")
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.SuperTabDefaultCompletionType = "<c-n>"
+69
View File
@@ -0,0 +1,69 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.symbols_outline = {
highlight_hovered_item = true,
show_guides = true,
auto_preview = true,
position = 'left',
relative_width = true,
width = 25,
auto_close = false,
show_numbers = true,
show_relative_numbers = true,
show_symbol_details = true,
preview_bg_highlight = 'Pmenu',
keymaps = { -- These keymaps can be a string or a table for multiple keys
close = {"<Esc>", "q"},
goto_location = "<Cr>",
focus_location = "o",
hover_symbol = "<C-space>",
toggle_preview = "K",
rename_symbol = "r",
code_actions = "a",
},
lsp_blacklist = {},
symbol_blacklist = {},
symbols = {
File = {icon = "", hl = "TSURI"},
Module = {icon = "", hl = "TSNamespace"},
Namespace = {icon = "", hl = "TSNamespace"},
Package = {icon = "", hl = "TSNamespace"},
Class = {icon = "𝓒", hl = "TSType"},
Method = {icon = "ƒ", hl = "TSMethod"},
Property = {icon = "", hl = "TSMethod"},
Field = {icon = "", hl = "TSField"},
Constructor = {icon = "", hl = "TSConstructor"},
Enum = {icon = "", hl = "TSType"},
Interface = {icon = "", hl = "TSType"},
Function = {icon = "", hl = "TSFunction"},
Variable = {icon = "", hl = "TSConstant"},
Constant = {icon = "", hl = "TSConstant"},
String = {icon = "𝓐", hl = "TSString"},
Number = {icon = "#", hl = "TSNumber"},
Boolean = {icon = "", hl = "TSBoolean"},
Array = {icon = "", hl = "TSConstant"},
Object = {icon = "⦿", hl = "TSType"},
Key = {icon = "🔐", hl = "TSType"},
Null = {icon = "NULL", hl = "TSType"},
EnumMember = {icon = "", hl = "TSField"},
Struct = {icon = "𝓢", hl = "TSType"},
Event = {icon = "🗲", hl = "TSType"},
Operator = {icon = "+", hl = "TSOperator"},
TypeParameter = {icon = "𝙏", hl = "TSParameter"}
}
}
vim.api.nvim_set_keymap('n', '<leader>o', ':SymbolsOutlineOpen<CR>', { noremap = true, silent = true })
+126
View File
@@ -0,0 +1,126 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local builtin = require('telescope.builtin')
vim.keymap.set(
'n', '<leader>ff', function() builtin.find_files({ hidden = true }) end,
{ remap = false }
)
vim.keymap.set(
'n', '<leader>fr', function() builtin.oldfiles({ hidden = true }) end,
{ remap = false }
)
vim.keymap.set(
'n', '<leader>fg', function()
builtin.live_grep(
{ additional_args = function(_) return { '--hidden' } end }
)
end, { remap = false }
)
vim.keymap.set(
'n', '<leader>fb', function() builtin.buffers() end, { remap = false }
)
--[[ local telescope = require('telescope')
telescope.setup {
extensions = {
command_palette = {
{
'File',
{ 'entire selection (C-a)', ':call feedkeys("GVgg")' },
{ 'save current file (C-s)', ':w' },
{ 'save all files (C-A-s)', ':wa' },
{ 'quit (C-q)', ':qa' },
{
'file browser (C-i)',
':lua require\'telescope\'.extensions.file_browser.file_browser()',
1
},
{
'search word (A-w)',
':lua require(\'telescope.builtin\').live_grep()',
1
},
{
'git files (A-f)',
':lua require(\'telescope.builtin\').git_files()',
1
},
{
'files (C-f)',
':lua require(\'telescope.builtin\').find_files()',
1
}
},
{
'Help',
{ 'tips', ':help tips' },
{ 'cheatsheet', ':help index' },
{ 'tutorial', ':help tutor' },
{ 'summary', ':help summary' },
{ 'quick reference', ':help quickref' },
{
'search help(F1)',
':lua require(\'telescope.builtin\').help_tags()',
1
}
},
{
'Vim',
{ 'reload vimrc', ':source $MYVIMRC' },
{ 'check health', ':checkhealth' },
{
'jumps (Alt-j)',
':lua require(\'telescope.builtin\').jumplist()'
},
{ 'commands', ':lua require(\'telescope.builtin\').commands()' },
{
'command history',
':lua require(\'telescope.builtin\').command_history()'
},
{
'registers (A-e)',
':lua require(\'telescope.builtin\').registers()'
},
{
'colorshceme',
':lua require(\'telescope.builtin\').colorscheme()',
1
},
{
'vim options',
':lua require(\'telescope.builtin\').vim_options()'
},
{ 'keymaps', ':lua require(\'telescope.builtin\').keymaps()' },
{ 'buffers', ':Telescope buffers' },
{
'search history (C-h)',
':lua require(\'telescope.builtin\').search_history()'
},
{ 'paste mode', ':set paste!' },
{ 'cursor line', ':set cursorline!' },
{ 'cursor column', ':set cursorcolumn!' },
{ 'spell checker', ':set spell!' },
{ 'relative number', ':set relativenumber!' },
{ 'search highlighting (F12)', ':set hlsearch!' }
}
}
}
}
require('telescope').load_extension('command_palette') ]]
+26
View File
@@ -0,0 +1,26 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.tokyonight_style = "night"
vim.g.tokyonight_terminal_colors = true
vim.g.tokyonight_italic_comments = true
vim.g.tokyonight_italic_keywords = true
vim.g.tokyonight_sidebars = {'packer', 'terminal'}
vim.g.tokyonight_dark_sidebar = true
vim.g.tokyonight_dark_float = true
vim.g.tokyonight_lualine_bold = true
vim.fn.execute("colorscheme tokyonight")
+27
View File
@@ -0,0 +1,27 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
-- Trigger configuration. You need to change this to something other than <tab> if you use one of the following:
-- - https://github.com/Valloric/YouCompleteMe
-- - https://github.com/nvim-lua/completion-nvim
-- vim.g.UltiSnipsExpandTrigger="<Tab>"
-- vim.g.UltiSnipsJumpForwardTrigger="<C-l>"
-- vim.g.UltiSnipsJumpBackwardTrigger="<C-h>"
vim.g.UltiSnipsExpandTrigger = '<Plug>(ultisnips_expand)'
vim.g.UltiSnipsJumpForwardTrigger = '<Plug>(ultisnips_jump_forward)'
vim.g.UltiSnipsJumpBackwardTrigger = '<Plug>(ultisnips_jump_backward)'
vim.g.UltiSnipsListSnippets = '<c-x><c-s>'
vim.g.UltiSnipsRemoveSelectModeMappings = 0
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.cmd("colorscheme codedark")
+21
View File
@@ -0,0 +1,21 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.vista_sidebar_position = 'vertical topleft'
vim.g.vista_icon_indent = { "╰─▸ ", "├─▸ " }
vim.g.vista_default_executive = 'nvim_lsp'
+52
View File
@@ -0,0 +1,52 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
-- Conservative style of the standard Visual Studio
-- with reduced number of colors
-- vim.g.codedark_conservative = 1
-- vim.g.vscode_style = "dark"
-- vim.g.vscode_transparency = 0
-- vim.g.vscode_italic_comment = 1
-- vim.g.vscode_disable_nvimtree_bg = true
-- vim.fn.execute("colorscheme vscode")
-- local c = require('vscode.colors')
require('vscode').setup({
style = 'dark',
-- Enable transparent background
transparent = false,
-- Enable italic comment
italic_comments = false,
-- Disable nvim-tree background color
disable_nvimtree_bg = false,
-- Override colors (see ./lua/vscode/colors.lua)
-- color_overrides = {
-- vscLineNumber = '#FFFFFF',
-- },
-- Override highlight groups (see ./lua/vscode/theme.lua)
group_overrides = {
-- this supports the same val table as vim.api.nvim_set_hl
-- use colors from this colorscheme by requiring vscode.colors!
-- Cursor = { fg=c.vscDarkBlue, bg=c.vscLightGreen, bold=true },
}
})
require('vscode').load()
+22
View File
@@ -0,0 +1,22 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.winresizer_vert_resize = "5"
vim.g.winresizer_horiz_resize = "5"
vim.g.winresizer_start_key = ""
local opts = { remap = false, silent = true }
vim.keymap.set('n', "<C-W>r", ":WinResizerStartResize<CR>", opts)
+17
View File
@@ -0,0 +1,17 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.keymap.set('n', '<C-W>m', ':WinShift<CR>', { remap = false })
+65
View File
@@ -0,0 +1,65 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local function term_close()
-- Split previous buffer, switching to it
vim.fn.execute("split " .. vim.fn.expand("#"))
-- Close previous window (terminal)
vim.fn.execute(vim.fn.winnr("#") .. "wincmd q")
end
vim.api.nvim_create_autocmd("TermClose", {
pattern = "term://*",
callback = term_close
})
local function my_hl()
-- example (default visual)
-- highlight Visual guifg=NONE guibg=#264F78 gui=none
-- highlight DiffDelete guifg=#414141 guibg=#1E1E1E gui=none
-- highlight GitSignsChange guifg=#0C7D9D
-- highlight IndentBlanklineContextChar guifg=#999999
-- semshi (python highlights)
-- highlight semshiLocal ctermfg=209 guifg=#ff875f
-- highlight semshiGlobal guifg=#dcdcaa
-- highlight semshiImported guifg=#4ec9b0
-- highlight semshiParameter guifg=#9cdcfe
-- highlight semshiParameterUnused guifg=#72a1bb
-- highlight semshiFree ctermfg=218 guifg=#ffafd7
-- highlight semshiBuiltin ctermfg=207 guifg=#dcdcaa
-- highlight semshiAttribute ctermfg=49 guifg=#00ffaf
-- highlight semshiSelf ctermfg=249 guifg=#dcdcaa
-- highlight semshiUnresolved ctermfg=226 guifg=#ffff00 cterm=underline gui=underline
-- highlight semshiSelected ctermfg=231 guifg=#ffffff ctermbg=161 guibg=#d7005f
-- highlight semshiErrorSign ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000
-- highlight semshiErrorChar ctermfg=231 guifg=#ffffff ctermbg=160 guibg=#d70000
-- sign define semshiError text=E> texthl=semshiErrorSign
end
vim.api.nvim_create_augroup("my_colors", { clear = true })
vim.api.nvim_create_autocmd("ColorScheme", {
pattern = "*",
callback = my_hl,
group = "my_colors"
})
vim.api.nvim_create_autocmd("FileType", {
pattern = "go",
callback = function()
vim.opt_local.tabstop = 4
vim.opt_local.expandtab = false
vim.opt_local.listchars = 'tab:▏ '
vim.opt_local.list = true
end
})
+33
View File
@@ -0,0 +1,33 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.g.is_win = vim.fn.has('win32') == 1 or vim.fn.has('win64') == 1
vim.g.is_linux = vim.fn.has('unix') == 1 and vim.fn.has('win64') ~= 1
vim.g.is_mac = vim.fn.has('macunix') == 1
if vim.fn.executable('python3') then
if vim.g.is_win then
vim.g.python3_host_prog=string.gsub(vim.fn.exepath('python3'), '.exe$', '')
elseif vim.g.is_linux or vim.g.is_mac then
vim.g.python3_host_prog=vim.fn.exepath('python3')
end
else
error("Python 3 executable not found! You must install Python 3 and set its PATH correctly!")
end
vim.g.mapleader = " "
vim.g.vimsyn_embed = "1"
vim.fn.execute("language en_US.utf-8")
+80
View File
@@ -0,0 +1,80 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local opts = { remap = false, silent = true }
local opts_expr = { remap = false, silent = true, expr = true }
--- Tab mappings ---
-- vim.keymap.set('n', "tn", ":tabnew <BAR> NvimTreeOpen<CR>", opts)
vim.keymap.set('n', "tn", ":tabnew<CR>", opts)
vim.keymap.set('n', "tq", ":tabclose<CR>", opts)
-- switch tabs with Ctrl+PgUp/Ctrl+PgDwn (default vim mapping)
--- Window mappings ---
vim.keymap.set('n', "<A-h>", ":wincmd h<CR>", opts)
vim.keymap.set('n', "<A-j>", ":wincmd j<CR>", opts)
vim.keymap.set('n', "<A-k>", ":wincmd k<CR>", opts)
vim.keymap.set('n', "<A-l>", ":wincmd l<CR>", opts)
-- Open new window in horizontal split
vim.keymap.set('n', "<C-w>h", ":new<CR>", opts)
-- Open new window in vertical split
vim.keymap.set('n', "<C-w>v", ":vnew<CR>", opts)
-- Open new window in horizontal split at bottom
vim.keymap.set('n', "<C-w><leader>", ":bo new<CR>", opts)
-- Close buffer and window
vim.keymap.set('n', "<C-w>q", ":bd<CR>", opts)
--- Buffer mappings ---
-- Navigate up/down half a screen
vim.keymap.set({'n', 'v'}, "<C-j>", "<C-d>", opts)
vim.keymap.set({'n', 'v'}, "<C-k>", "<C-u>", opts)
-- Center cursorline
vim.keymap.set('n', "<C-Space>", "zz", opts)
-- Save buffer
vim.keymap.set('n', "<C-s>", ":w<CR>", opts)
-- Cycle buffers
vim.keymap.set('n', "<C-End>", ":BufferLineCycleNext<CR>", opts)
vim.keymap.set('n', "<C-Home>", ":BufferLineCyclePrev<CR>", opts)
-- Close buffer without closing window
vim.keymap.set('n', "<leader>q", ":bp<bar>sp<bar>bn<bar>bd<CR>", opts)
--- General mappings ---
-- Remap some swedish keys for easier use
vim.keymap.set('n', "ö", "}", { remap = true })
vim.keymap.set('v', "ö", "}", { remap = true })
vim.keymap.set('n', "ä", "{", { remap = true })
vim.keymap.set('v', "ä", "{", { remap = true })
vim.keymap.set('n', ",", "]", { remap = true })
vim.keymap.set('n', ".", "[", { remap = true })
-- yank/put using named register
vim.keymap.set('n', '<leader>y', '"0y', opts)
vim.keymap.set('v', '<leader>y', '"0y', opts)
vim.keymap.set('n', '<leader>p', '"0p', opts)
vim.keymap.set('v', '<leader>p', '"0p', opts)
-- Allow exiting insert mode in terminal by hitting <ESC>
vim.keymap.set('t', "<Esc>", "<C-\\><C-n>", opts)
-- Navigate forward/backwards
vim.keymap.set('n', "<C-l>", "<C-i>", opts)
vim.keymap.set('n', "<C-h>", "<C-o>", opts)
-- Use :diffput/get instead of normal one to allow staging visual selection
vim.keymap.set('n', "<leader>dp", "&diff ? ':diffput<CR>' : '<leader>dp'", opts_expr)
vim.keymap.set('v', "<leader>dp", "&diff ? ':diffput<CR>' : '<leader>dp'", opts_expr)
vim.keymap.set('n', "<leader>do", "&diff ? ':diffget<CR>' : '<leader>do'", opts_expr)
vim.keymap.set('v', "<leader>do", "&diff ? ':diffget<CR>' : '<leader>do'", opts_expr)
-- Remove default mappings
vim.keymap.set('', "<C-LeftMouse>", "")
vim.keymap.set('', "q", "")
+89
View File
@@ -0,0 +1,89 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.opt.cursorline = true
vim.opt.number = true
vim.opt.relativenumber = true
vim.opt.mouse = "a"
vim.opt.mousemodel = "extend"
vim.opt.fillchars:append("diff: ")
vim.opt.splitbelow = true
vim.opt.splitright = true
-- set tabline=%!MyTabLine()
vim.opt.tabstop = 8
vim.opt.softtabstop = 4
vim.opt.expandtab = true
vim.opt.shiftwidth = 4
vim.opt.smarttab = false
-- Folds are configured in nvim-treesitter, but this needs to be set before
-- loading the first buffer which is not possible in nvim-treesitter.lua due to
-- lazy loading (I think)
vim.opt.foldlevelstart = 99
vim.opt.foldmethod = "indent"
vim.opt.foldignore = ""
vim.opt.guifont = "JetBrains Mono:11"
vim.opt.completeopt:append({ "menu", "menuone", "preview", "noinsert" })
-- Max number of items
vim.opt.pumheight = 20
-- pseudo transparency for completion menu
vim.opt.pumblend = 10
-- pseudo transparency for floating window
vim.opt.winblend = 5
-- set nowrap
vim.opt.clipboard:append("unnamedplus")
vim.opt.matchpairs:append({ "<:>", "':'", "\":\"" })
vim.opt.fileencoding = "utf-8"
-- Only relevant with wrap enabled (default)
vim.opt.linebreak = true
vim.opt.breakindent = true
vim.opt.showbreak = ""
-- Minimum amount of lines to show offset +/- to cursorline
vim.opt.scrolloff = 3
vim.opt.visualbell = true
vim.opt.errorbells = false
-- Persistent undo even after you close a file and re-open it
vim.opt.undofile = true
-- Insert mode key word completion setting, see :h 'compelete'
-- and https://medium.com/usevim/set-complete-e76b9f196f0f#:~:text=When%20in%20Insert%20mode%2C%20you,%2D%2D%20CTRL%2DN%20goes%20backwards.
-- kspell is only relevant if ':set spell' is toggled on, e.g. when editing
-- documents
vim.opt.complete:append("kspell")
vim.opt.complete:remove({ "w", "b", "u", "t" })
vim.opt.spelllang = "en"
-- Align indent to next multiple value of shiftwidth.
-- E.g., only insert as many spaces necessary for reaching the next shiftwidth
vim.opt.shiftround = true
-- Allow virtualedit (editing on empty spaces) in visual block mode (Ctrl+V)
vim.opt.virtualedit = "block"
-- True color support. Avoid if terminal does not support it.
vim.opt.termguicolors = true
vim.opt.signcolumn = "auto"
-- Diff options
vim.opt.diffopt = {}
-- Use vertical split by default
vim.opt.diffopt:append("vertical")
-- Insert filler lines
vim.opt.diffopt:append("filler")
-- Execute :diffoff when only one diff window remain
vim.opt.diffopt:append("closeoff")
-- Use internal diff library
vim.opt.diffopt:append("internal")
-- These make diffs easier to read, please see the following:
-- https://vimways.org/2018/the-power-of-diff/
vim.opt.diffopt:append({ "indent-heuristic", "algorithm:histogram" })
vim.fn.execute("filetype plugin on")
vim.opt.hlsearch = false
vim.opt.laststatus = 3
+23
View File
@@ -0,0 +1,23 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
-- requires shellcheck also (for linting)
return {
cmd = { 'bash-language-server', 'start' },
cmd_env = { GLOB_PATTERN = '*@(.sh|.inc|.bash|.command)' },
single_file_support = true
}
+25
View File
@@ -0,0 +1,25 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = {
'clangd',
'--clang-tidy',
'--enable-config',
'--log=verbose'
},
single_file_support = true,
}
+23
View File
@@ -0,0 +1,23 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'cmake-language-server' },
single_file_support = true,
init_options = {
buildDirectory = "build"
}
}
+176
View File
@@ -0,0 +1,176 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'diagnostic-languageserver', '--stdio' },
single_file_support = true,
-- For more info see https://github.com/iamcco/diagnostic-languageserver
init_options = {
filetypes = { python = 'flake8', lua = 'luaFormatter' },
linters = {
-- some help from this:
-- https://github.com/creativenull/diagnosticls-configs-nvim/blob/main/lua/diagnosticls-configs/linters/flake8.lua
flake8 = {
command = 'flake8',
args = {
'--config',
'tox.ini',
'--format',
'%(row)d,%(col)d,%(code).1s,%(code)s: %(text)s',
'-'
},
rootPatterns = { 'Pipfile', '.git', 'tox.ini' },
isStdout = true,
isStderr = false,
debounce = 100,
offsetLine = 0,
offsetColumn = 0,
sourceName = 'flake8',
formatLines = 1,
formatPattern = {
[[(\d+),(\d+),([A-Z]),(.*)(\r|\n)*$]],
{ line = 1, column = 2, security = 3, message = { 4 } }
},
securities = {
-- Available securities are { 'error', 'warning', 'hint', 'info' }
E = 'error',
W = 'warning',
B = 'hint',
F = 'error',
D = 'info'
}
}
},
formatFiletypes = {
python = { 'black', 'isort' },
lua = { 'luaFormatter' },
sh = { 'shfmt' }
},
formatters = {
black = {
sourceName = 'black',
command = 'black',
args = {
'--stdin-filename',
'%filename',
'-t',
'py39',
'--quiet',
'-'
},
rootPatterns = { 'Pipfile', '.git', 'tox.ini' },
isStdout = true,
isStderr = false,
ignoreExitCode = false
},
isort = {
sourceName = 'isort',
command = 'isort',
args = { '--quiet', '-' },
rootPatterns = { 'Pipfile', '.git', 'tox.ini' },
isStdout = true,
isStderr = false,
ignoreExitCode = false
},
luaFormatter = {
sourceName = 'luaFormatter',
command = 'lua-format',
isStdout = true,
isStderr = false,
ignoreExitCode = false,
args = {
'--column-limit',
'80', -- Column limit of one line
'--indent-width',
'4', -- Number of spaces used for indentation
-- '--use-tab', -- Use tab for indentation
'--no-use-tab', -- Do not use tab for indentation
'--tab-width',
'4', -- Number of spaces used per tab
'--continuation-indent-width',
'4', -- Indent width for continuations line
'--spaces-before-call',
'1', -- Space on function calls
'--keep-simple-control-block-one-line', -- Keep block in one line
-- '--no-keep-simple-control-block-one-line', -- Do not keep block in one line
'--keep-simple-function-one-line', -- Keep function in one line
-- '--no-keep-simple-function-one-line', -- Do not keep function in one line
'--align-args', -- Align the arguments
-- '--no-align-args', -- Do not align the arguments
'--break-after-functioncall-lp', -- Break after '(' of function call
-- '--no-break-after-functioncall-lp', -- Do not break after '(' of function call
'--break-before-functioncall-rp', -- Break before ')' of function call
-- '--no-break-before-functioncall-rp', -- Do not break before ')' of function call
-- '--spaces-inside-functioncall-parens', -- Put spaces on the inside of parens in function calls
'--no-spaces-inside-functioncall-parens', -- Do not put spaces on the inside of parens in function calls
-- '--spaces-inside-functiondef-parens', -- Put spaces on the inside of parens in function headers
'--no-spaces-inside-functiondef-parens', -- Do not put spaces on the inside of parens in function headers
'--align-parameter', -- Align the parameters
-- '--no-align-parameter', -- Do not align the parameters
'--chop-down-parameter', -- Chop down all parameters
-- '--no-chop-down-parameter', -- Do not chop down all parameters
'--break-after-functiondef-lp', -- Break after '(' of function def
-- '--no-break-after-functiondef-lp', -- Do not break after '(' of function def
'--break-before-functiondef-rp', -- Break before ')' of function def
-- '--no-break-before-functiondef-rp', -- Do not break before ')' of function def
'--align-table-field', -- Align fields of table
-- '--no-align-table-field', -- Do not align fields of table
'--break-after-table-lb', -- Break after '{' of table
-- '--no-break-after-table-lb', -- Do not break after '{' of table
'--break-before-table-rb', -- Break before '}' of table
-- '--no-break-before-table-rb', -- Do not break before '}' of table
'--chop-down-table', -- Chop down any table
-- '--no-chop-down-table', -- Do not chop down any table
'--chop-down-kv-table', -- Chop down table if table contains key
-- '--no-chop-down-kv-table', -- Do not chop down table if table contains key
'--table-sep',
',', -- Character to separate table fields
'--column-table-limit',
'80', -- Column limit of each line of a table
-- '--extra-sep-at-table-end', -- Add a extra field separator
'--no-extra-sep-at-table-end', -- Do not add a extra field separator
'--spaces-inside-table-braces', -- Put spaces on the inside of braces in table constructors
-- '--no-spaces-inside-table-braces', -- Do not put spaces on the inside of braces in table constructors
'--break-after-operator', -- Put break after operators
-- '--no-break-after-operator', -- Do not put break after operators
'--double-quote-to-single-quote', -- Transform string literals to use single quote
-- '--no-double-quote-to-single-quote', -- Do not transform string literals to use single quote
-- '--single-quote-to-double-quote', -- Transform string literals to use double
'--no-single-quote-to-double-quote', -- Do not transform string literals to use double
'--spaces-around-equals-in-field', -- Put spaces around the equal sign in key/value fields
-- '--no-spaces-around-equals-in-field', -- Do not put spaces around the equal sign in key/value fields
'--line-breaks-after-function-body',
'1', -- Line brakes after function body
'--line-separator',
'input' -- input(determined by the input content),
-- os(Use line ending of the current Operating system),
-- lf(Unix style "\n"),
-- crlf(Windows style "\r\n"),
-- cr(classic Max style "\r")
}
},
shfmt = {
sourceName = 'shfmt',
command = 'shfmt',
args = { '-s', '-i', '4', '-ci' },
rootPatterns = { 'Pipfile', '.git', 'tox.ini' },
isStdout = true,
isStderr = false,
ignoreExitCode = false
}
}
}
}
+22
View File
@@ -0,0 +1,22 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { "golangci-lint-langserver" },
init_options = {
command = { "golangci-lint", "run", "--out-format", "json" }
}
}
+84
View File
@@ -0,0 +1,84 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { "gopls", "serve" },
-- https://github.com/golang/tools/blob/master/gopls/doc/settings.md
settings = {
gopls = {
gofumpt = true,
codelenses = {
gc_details = true,
generate = true,
regenerate_cgo = true,
run_vulncheck_exp = true,
tidy = true,
upgrade_dependency = true,
vendor = true
},
usePlaceholders = true,
analyses = {
asmdecl = true,
assign = true,
atomic = true,
atomicalign = true,
bools = true,
buildtag = true,
cgocall = true,
composites = true,
copylocks = true,
deepequalerrors = true,
embed = true,
errorsas = true,
fieldalignment = true,
httpresponse = true,
ifaceassert = true,
infertypeargs = true,
loopclosure = true,
lostcancel = true,
nilfunc = true,
nilness = true,
printf = true,
shadow = true,
shift = true,
simplifycompositelit = true,
simplifyrange = true,
simplifyslice = true,
sortslice = true,
stdmethods = true,
stringintconv = true,
structtag = true,
testinggoroutine = true,
tests = true,
timeformat = true,
unmarshal = true,
unreachable = true,
unsafeptr = true,
unusedparams = true,
unusedresult = true,
unusedwrite = true,
useany = true,
fillreturns = true,
nonewvars = true,
noresultvalues = true,
undeclaredname = true,
unusedvariable = true,
fillstruct = true,
stubmethods = true
}
}
}
}
+23
View File
@@ -0,0 +1,23 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = {
'java', '-jar',
'/usr/share/java/groovy-language-server/groovy-language-server-all.jar'
},
single_file_support = true
}
+171
View File
@@ -0,0 +1,171 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'jedi-language-server' },
single_file_support = true,
-- For more info see https://github.com/pappasam/jedi-language-server#configurationSources
-- and https://github.com/pappasam/coc-jedi#configuration (good descriptions)
init_options = {
completion = {
-- If your language client supports CompletionItem snippets but you don't like them,
-- disable them by setting this option to true.
-- type: boolean
-- default: false
disableSnippets = false,
-- Return all completion results in initial completion request.
-- Set to true if your language client does not support completionItem/resolve.
-- type: boolean
-- default: false
resolveEagerly = false,
-- A list of regular expressions.
-- If any regular expression in ignorePatterns matches a completion's name,
-- that completion item is not returned to the client.
-- type: string[]
-- default: []
-- In general, you should prefer the default value for this option.
-- Jedi is very good at filtering values for end users.
-- That said, there are situations where IDE developers,
-- or some programmers in some code bases, may want to filter some completions by name.
-- This flexible interface is provided to accommodate these advanced use cases.
ignorePatterns = {}
},
-- Built-in diagnostics seem to be very basic,
-- to the point where you are wondering if it's even active.
-- Will use iamcco/diagnostic-languageserver instead.
diagnostics = {
-- Enables (or disables) diagnostics provided by Jedi
-- type: boolean
-- default: true
enable = false,
-- When diagnostics are enabled, run on document open
-- type: boolean
-- default: true
didOpen = true,
-- When diagnostics are enabled, run on in-memory document change
-- (eg, while you're editing, without needing to save to disk)
-- type: boolean
-- default: true
didChange = true,
-- When diagnostics are enabled, run on document save (to disk)
-- type: boolean
-- default: true
didSave = true
},
hover = {
-- Enable (or disable) all hover text.
-- If set to false, will cause the hover method not to be registered to the language server.
-- type: boolean
-- default: true
enable = true,
-- disable.[jedi-type].all
-- Disable all hover text of jedi-type specified.
-- type: boolean
-- default: false
-- disable.[jedi-type].names
-- Disable hover text identified by name in list of jedi-type specified.
-- type: string[]
-- default: []
-- disable.[jedi-type].fullNames
-- Disable hover text identified by the fully qualified name in list of jedi-type specified.
-- If no fully qualified name can be found, jedi-language-server will default to
-- the name to prevent any unexpected behavior for users
-- (relevant for jedi types like keywords that don't have full names).
-- type: string[]
-- default: []
disable = {
class = { all = false, names = {}, fullNames = {} },
-- Need to escape lua keyword
['function'] = { all = false, names = {}, fullNames = {} },
instance = { all = false, names = {}, fullNames = {} },
keyword = { all = false, names = {}, fullNames = {} },
module = { all = false, names = {}, fullNames = {} },
param = { all = false, names = {}, fullNames = {} },
path = { all = false, names = {}, fullNames = {} },
property = { all = false, names = {}, fullNames = {} },
statement = { all = false, names = {}, fullNames = {} }
}
},
jediSettings = {
-- Modules that jedi will directly import without analyzing.
-- Improves autocompletion but loses goto definition.
-- type: string[]
-- default: []
-- If you're noticing that modules like numpy and pandas are taking a super long time to load
-- and you value completions / signatures over goto definition,
-- I recommend using this option like this:
-- autoImportModules = { "numpy", "pandas" },
autoImportModules = {},
-- Completions are by default case insensitive.
-- Set to false to make completions case sensitive.
-- type: boolean
-- default: true
caseInsensitiveCompletion = true,
-- Print jedi debugging messages to stderr.
-- type: boolean
-- default: false
debug = false
},
-- The preferred MarkupKind for all jedi-language-server messages that take MarkupContent.
-- type: string
-- accepted values: "markdown", "plaintext"
-- If omitted, jedi-language-server defaults to the client-preferred configuration.
-- If there is no client-preferred configuration, jedi language server users "plaintext".
-- markupKindPreferred = "markdown",
workspace = {
-- Add additional paths for Jedi's analysis.
-- Useful with vendor directories, packages in a non-standard location, etc.
-- You probably won't need to use this, but you'll be happy it's here when you need it!
-- type: string[]
-- default: []
-- Non-absolute paths are relative to your project root.
-- For example, let's say your Python project is structured like this:
-- ├── funky
-- │ └── haha.py
-- ├── poetry.lock
-- ├── pyproject.toml
-- └── test.py
-- Assume that funky/haha.py contains 1 line, x = 12,
-- and your build system does some wizardry that makes haha importable just like os or pathlib.
-- In this example, if you want to have this same non-standard behavior with jedi-language-server,
-- put the following:
-- extraPaths = { "funky" }
-- When editing test.py, you'll get completions, goto definition,
-- and all other lsp features for the line `from haha import ....`
-- Again, you probably don't need this.
extraPaths = {},
symbols = {
-- Performance optimization that sets names of folders that are ignored for workspace/symbols.
-- type: string[]
-- default: { ".nox", ".tox", ".venv", "__pycache__", "venv" }
-- If you manually set this option, it overrides the default.
-- Setting it to an empty array will result in no ignored folders.
ignoreFolders = {
'.nox', '.tox', '.venv', '__pycache__', 'venv',
'artifacts', 'config', '.vscode', '.pytest_cache',
'build', 'scripts', 'incoax_tests.egg-info',
'node_modules'
},
-- Maximum number of symbols returned by a call to workspace/symbols.
-- type: number
-- default: 20
-- A value less than or equal to zero removes the maximum
-- and allows jedi-language-server to return all workplace symbols found by jedi.
maxSymbols = 20
}
}
}
}
+40
View File
@@ -0,0 +1,40 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'lemminx' },
single_file_support = true,
init_options = {
settings = {
xml = {
trace = { server = 'verbose' },
catalogs = {},
logs = {
client = false,
file = '/home/oscar/lsp4xml.log'
},
format = {
splitAttributes = true,
joinCDATALines = false,
joinContentLines = true,
joinCommentLines = false,
spaceBeforeEmptyCloseLine = false,
enabled = true
}
}
}
}
}
+47
View File
@@ -0,0 +1,47 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local runtime_path = vim.split(package.path, ';')
table.insert(runtime_path, 'lua/?.lua')
table.insert(runtime_path, 'lua/?/init.lua')
-- spec: https://luals.github.io/wiki/settings/
return {
cmd = { 'lua-language-server' },
single_file_support = true,
settings = {
Lua = {
runtime = {
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
version = 'LuaJIT',
-- Setup your lua path
path = runtime_path
},
diagnostics = {
-- Get the language server to recognize the `vim` global
globals = { 'vim' }
},
workspace = {
-- Make the server aware of Neovim runtime files
library = vim.api.nvim_get_runtime_file('', true),
checkThirdParty = false
},
-- Do not send telemetry data containing a randomized but unique identifier
telemetry = { enable = false }
}
}
}
+61
View File
@@ -0,0 +1,61 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'pylsp' },
single_file_support = true,
-- Reference: https://github.com/python-lsp/python-lsp-server/blob/develop/CONFIGURATION.md
settings = {
pylsp = {
-- configurationSources = { "flake8", "jedi_completion", "jedi_definition", "jedi_hover", "jedi_references", "jedi_signature_help", "jedi_symbols" },
plugins = {
flake8 = {
config = 'tox.ini',
enabled = true
-- executable = "flake8"
},
pyls_isort = { enabled = true },
jedi_completion = {
enabled = true,
include_params = false,
include_class_objects = true,
fuzzy = true,
eager = true,
resolve_at_most = 25,
cache_for = {
'pandas',
'numpy',
'tensorflow',
'matplotlib'
}
},
jedi_definition = {
enabled = true,
follow_imports = true,
follow_builtin_imports = true
},
jedi_hover = { enabled = true },
jedi_references = { enabled = true },
jedi_signature_help = { enabled = true },
jedi_symbols = {
enabled = true,
all_scopes = true,
include_import_symbols = true
}
}
}
}
}
+39
View File
@@ -0,0 +1,39 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'pyright-langserver', '--stdio' },
single_file_support = true,
-- see https://github.com/microsoft/pyright/blob/main/docs/configuration.md
-- and https://github.com/fannheyward/coc-pyright
settings = {
python = {
disableCompletion = false,
disableDiagnostics = false,
analysis = {
autoImportCompletions = true,
autoSearchPaths = true,
diagnosticMode = 'workspace',
stubPath = 'typings',
typeschedPaths = {},
diagnosticSeverityOverrides = {},
typeCheckingMode = 'off',
useLibraryCodeForTypes = true
},
completion = { importSupport = true, snippetSupport = true }
}
}
}
+38
View File
@@ -0,0 +1,38 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
cmd = { 'rust-analyzer' },
settings = {
-- https://github.com/rust-lang/rust-analyzer/blob/master/docs/user/generated_config.adoc
['rust-analyzer'] = {
cargo = {
-- Extra environment variables that will be set when running cargo, rustc
-- or other commands within the workspace. Useful for setting RUSTFLAGS.
extraEnv = {
OPENSSL_INCLUDE_DIR = '/usr/include/openssl-1.0/',
OPENSSL_LIB_DIR = '/usr/lib/openssl-1.0/'
}
}
--[[ inlayHints = {
closingBraceHints = {
-- Whether to show inlay hints after a closing `}` to indicate what item it belongs to.
enable = false
},
} ]]
}
}
}
+287
View File
@@ -0,0 +1,287 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local P = {}
P._filetypes = nil
P._language_servers = nil
P.capabilities = {}
P.spec = require('lsp.spec')
function P._setup_diagnostic()
vim.diagnostic.config({
underline = true,
signs = true,
virtual_text = false,
-- virtual_text = {
-- format = function(diagnostic)
-- return string.format("%s: %s", diagnostic.user_data.lsp.code, diagnostic.message)
-- end
-- },
float = {
show_header = false,
source = 'if_many',
border = 'rounded',
focusable = false,
format = function(diagnostic)
return string.format('%s', diagnostic.message)
end
},
update_in_insert = false, -- default to false
severity_sort = true -- default to false
})
-- Change diagnostic icons
vim.fn.sign_define('DiagnosticSignError', {
text = 'E',
texthl = 'DiagnosticSignError',
-- culhl = 'DiagnosticSignError',
numhl = 'DiagnosticSignError'
-- linehl = 'LspDiagnosticsUnderlineError'
})
vim.fn.sign_define('DiagnosticSignWarn', {
text = 'W',
texthl = 'DiagnosticSignWarn',
-- culhl = 'DiagnosticSignWarn',
numhl = 'DiagnosticSignWarn'
-- linehl = 'LspDiagnosticsUnderlineWarning'
})
vim.fn.sign_define('DiagnosticSignHint', {
text = 'H',
texthl = 'DiagnosticSignHint',
-- culhl = 'DiagnosticSignHint',
numhl = 'DiagnosticSignHint'
-- linehl = 'LspDiagnosticsUnderlineHint'
})
vim.fn.sign_define('DiagnosticSignInfo', {
text = 'i',
texthl = 'DiagnosticSignInfo',
-- culhl = 'DiagnosticSignInfo',
numhl = 'DiagnosticSignInfo'
-- linehl = 'LspDiagnosticsUnderlineInfo'
})
-- Change some highlights
-- vim.cmd('highlight DiagnosticUnderlineError guifg=' .. utils.get_hl('DiagnosticError').foreground)
-- vim.cmd('highlight DiagnosticUnderlineWarn guifg=' .. utils.get_hl('DiagnosticWarn').foreground)
end
function P.on_attach(client, bufnr)
-- Enable completion triggered by <c-x><c-o>
-- Disabled in favor of nvim-cmp
-- vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')
require('lsp_signature').on_attach({
debug = false, -- set to true to enable debug logging
log_path = vim.fn.stdpath('cache') .. '/lsp_signature.log', -- log dir when debug is on
-- default is ~/.cache/nvim/lsp_signature.log
verbose = false, -- show debug line number
bind = true, -- This is mandatory, otherwise border config won't get registered.
-- If you want to hook lspsaga or other signature handler, pls set to false
doc_lines = 20, -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated);
-- set to 0 if you DO NOT want any API comments be shown
-- This setting only take effect in insert mode, it does not affect signature help in normal
-- mode, 10 by default
max_height = 12, -- max height of signature floating_window
max_width = 80, -- max_width of signature floating_window
noice = false, -- set to true if you using noice to render markdown
wrap = true, -- allow doc/signature text wrap inside floating_window, useful if your lsp return doc/sig is too long
floating_window = true, -- show hint in a floating window, set to false for virtual text only mode
floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note:
-- will set to true when fully tested, set to false will use whichever side has more space
-- this setting will be helpful if you do not want the PUM and floating win overlap
floating_window_off_x = 1, -- adjust float windows x position.
floating_window_off_y = 0, -- adjust float windows y position. e.g -2 move window up 2 lines; 2 move down 2 lines
close_timeout = nil, -- close floating window after ms when laster parameter is entered
fix_pos = false, -- set to true, the floating window will not auto-close until finish all parameters
hint_enable = false, -- virtual hint enable
hint_prefix = '🐼 ', -- Panda for parameter, NOTE: for the terminal not support emoji, might crash
hint_scheme = 'String',
hi_parameter = 'IncSearch', -- default 'LspSignatureActiveParameter', -- how your parameter will be highlight
handler_opts = {
border = 'none' -- double, rounded, single, shadow, none
},
always_trigger = true, -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58
auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil.
extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","}
zindex = 200, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom
padding = '', -- character to pad on left and right of signature can be ' ', or '|' etc
transparency = nil, -- disabled by default, allow floating win transparent value 1~100
shadow_blend = 36, -- if you using shadow as border use this set the opacity
shadow_guibg = 'Black', -- if you using shadow as border use this set the color e.g. 'Green' or '#121315'
timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency
toggle_key = '<C-e>', -- toggle signature on and off in insert mode, e.g. toggle_key = '<M-x>'
select_signature_key = nil, -- cycle to next signature, e.g. '<M-n>' function overloading
move_cursor_key = '<C-s>' -- imap, use nvim_set_current_win to move cursor between current win and floating
}, bufnr)
-- Mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { noremap = true, silent = true }
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'L',
'<cmd>lua vim.diagnostic.open_float()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '[d',
'<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', ']d',
'<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ll',
'<cmd>lua vim.diagnostic.setloclist()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD',
'<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd',
'<cmd>lua vim.lsp.buf.definition()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K',
'<cmd>lua vim.lsp.buf.hover()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi',
'<cmd>lua vim.lsp.buf.implementation()<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>s',
'<cmd>lua vim.lsp.buf.signature_help()<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wa',
'<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wr',
'<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>wl',
'<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gt',
'<cmd>lua vim.lsp.buf.type_definition()<CR>',
opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>rn',
'<cmd>lua vim.lsp.buf.rename()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>ca',
'<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr',
'<cmd>lua vim.lsp.buf.references()<CR>', opts)
vim.api.nvim_buf_set_keymap(bufnr, 'n', '<leader>lf',
'<cmd>lua vim.lsp.buf.format({async = true})<CR>',
opts)
-- if client.server_capabilities.document_range_formatting then
vim.api.nvim_buf_set_keymap(bufnr, 'v', '<leader>lf',
'<cmd>lua vim.lsp.buf.format({async = true})<CR>',
opts)
-- end
-- The below command will highlight the current variable and its usages in the buffer.
if client.server_capabilities.document_highlight then
vim.fn.execute('hi! link LspReferenceRead Visual')
vim.fn.execute('hi! link LspReferenceText Visual')
vim.fn.execute('hi! link LspReferenceWrite Visual')
vim.api.nvim_create_augroup('lsp_document_highlight', { clear = true })
vim.api.nvim_create_autocmd('CursorHold', {
buffer = bufnr,
callback = vim.lsp.buf.document_highlight
})
vim.api.nvim_create_autocmd('CursorMoved', {
buffer = bufnr,
callback = vim.lsp.buf.clear_references
})
end
-- Auto show current line diagnostics after 300 ms
-- vim.cmd('autocmd CursorHold <buffer> lua vim.diagnostic.open_float({ scope = "line" })')
-- vim.api.nvim_create_autocmd("CursorHold", {
-- buffer = bufnr,
-- callback = function()
-- vim.diagnostic.open_float({ scope = "line" })
-- end
-- })
vim.opt.updatetime = 100
end
function P.reload_server_buf(self, name)
local server_spec = self.spec[name]
local ft_map = {}
for _, ft in ipairs(server_spec.filetypes) do
ft_map[ft] = true
end
for _, bufnr in ipairs(vim.api.nvim_list_bufs()) do
if vim.api.nvim_buf_is_loaded(bufnr) then
local buf_ft = vim.api.nvim_get_option_value('filetype', { buf = bufnr })
if ft_map[buf_ft] then
vim.api.nvim_buf_call(
bufnr,
function() vim.cmd('e') end
)
end
end
end
end
function P.filetypes(self)
if not self._filetypes then
self._filetypes = {}
local unique = {}
for _, server_spec in pairs(self.spec) do
for _, ft in ipairs(server_spec.filetypes) do
if not unique[ft] then
table.insert(self._filetypes, ft)
unique[ft] = true
end
end
end
end
return self._filetypes
end
function P.language_servers(self)
if not self._language_servers then
self._language_servers = {}
for server, _ in pairs(self.spec) do
table.insert(self._language_servers, server)
end
end
return self._language_servers
end
function P.setup_server(self, server)
local lspconfig = require('lspconfig')
local server_spec = self.spec[server]
local cfg = require('lsp.config.' .. server)
cfg.filetypes = server_spec.filetypes
cfg.root_dir = lspconfig.util.find_git_ancestor
cfg.capabilities = self.capabilities
cfg.on_attach = self.on_attach
lspconfig[server].setup(cfg)
end
function P.setup(self)
self._setup_diagnostic()
P.capabilities = require('cmp_nvim_lsp').default_capabilities()
require("mason-lspconfig").setup_handlers({
function(name)
self:setup_server(name)
self:reload_server_buf(name)
end
})
end
return P
+88
View File
@@ -0,0 +1,88 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
return {
clangd = {
filetypes = {
'c',
'cpp',
'objc',
'objcpp',
'cuda',
'proto',
}
},
cmake = {
filetypes = {
'cmake'
}
},
diagnosticls = {
filetypes = {
'python',
'lua',
'sh',
}
},
lua_ls = {
filetypes = {
'lua'
}
},
lemminx = {
filetypes = {
'xml',
'xsd',
'xsl',
'xslt',
'svg',
}
},
bashls = {
filetypes = {
'sh'
}
},
groovyls = {
filetypes = {
'groovy'
}
},
rust_analyzer = {
filetypes = {
'rust'
}
},
gopls = {
filetypes = {
"go",
"gomod"
}
},
golangci_lint_ls = {
filetypes = {
"go",
"gomod"
}
},
jedi_language_server = {
filetypes = {
'python'
}
},
-- pyright = { 'python' },
-- pylsp = { 'python' },
}
+213
View File
@@ -0,0 +1,213 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
vim.loader.enable()
local plugins = {
{
'Mofiqul/vscode.nvim',
priority = 1000,
lazy = false,
config = function() require('config.vscode') end
},
{
'rafamadriz/friendly-snippets',
},
{
'L3MON4D3/LuaSnip',
config = function() require('config.luasnip') end,
-- dependencies = { 'rafamadriz/friendly-snippets' },
-- comment out on windows and install jsregexp manually
build = "make install_jsregexp",
version = "2.*",
},
{
'windwp/nvim-autopairs',
config = function() require('config.nvim-autopairs') end
},
{
'saadparwaiz1/cmp_luasnip',
},
{
'hrsh7th/cmp-buffer',
},
{
'hrsh7th/cmp-path',
},
{
'hrsh7th/cmp-cmdline',
},
{
'onsails/lspkind-nvim',
},
{
'hrsh7th/nvim-cmp',
-- dependencies = {
-- 'L3MON4D3/LuaSnip',
-- 'windwp/nvim-autopairs',
-- 'saadparwaiz1/cmp_luasnip',
-- 'hrsh7th/cmp-buffer',
-- 'hrsh7th/cmp-path',
-- 'hrsh7th/cmp-cmdline',
-- 'onsails/lspkind-nvim',
-- },
config = function() require('config.nvim-cmp') end
},
{
'hrsh7th/cmp-nvim-lsp',
-- dependencies = {
-- 'hrsh7th/nvim-cmp'
-- },
},
{
"williamboman/mason.nvim",
config = function() require('config.mason') end
},
{
'williamboman/mason-lspconfig.nvim',
config = function() require('config.mason-lspconfig') end,
-- dependencies = { 'williamboman/mason.nvim' },
},
{
'ray-x/lsp_signature.nvim',
event = "VeryLazy",
config = function() require('config.lsp_signature') end
},
{
'neovim/nvim-lspconfig',
config = function() require('lsp'):setup() end,
lazy = true,
ft = require('lsp'):filetypes(),
-- dependencies = {
-- 'williamboman/mason-lspconfig.nvim',
-- 'ray-x/lsp_signature.nvim',
-- 'hrsh7th/cmp-nvim-lsp'
-- },
},
{
'nvim-treesitter/nvim-treesitter',
config = function() require('config.nvim-treesitter') end,
lazy = true,
event = 'VimEnter',
build = ':TSUpdate'
},
{
'mfussenegger/nvim-dap',
config = function() require('config.nvim-dap') end,
lazy = true,
ft = require('lsp'):filetypes(),
},
{
'rcarriga/nvim-dap-ui',
-- dependencies = { 'mfussenegger/nvim-dap' },
config = function() require('config.nvim-dap-ui') end
},
{
'kyazdani42/nvim-web-devicons'
},
{
'tpope/vim-fugitive',
config = function() require('config.fugitive') end,
lazy = true,
event = 'VimEnter'
},
{
'rbong/vim-flog',
-- dependencies = { 'tpope/vim-fugitive' },
config = function() require('config.flog') end
},
{
'nvim-lualine/lualine.nvim',
-- dependencies = { 'kyazdani42/nvim-web-devicons', 'vim-fugitive' },
config = function() require('config.lualine') end,
lazy = true,
event = 'VimEnter'
},
{
'akinsho/bufferline.nvim',
-- dependencies = { 'kyazdani42/nvim-web-devicons' },
config = function() require('config.bufferline') end,
lazy = true,
event = 'VimEnter'
},
{
'nvim-lua/plenary.nvim'
},
{
'lewis6991/gitsigns.nvim',
-- dependencies = { 'nvim-lua/plenary.nvim' },
config = function() require('config.gitsigns') end,
lazy = true,
event = 'VimEnter'
},
{
'nvim-telescope/telescope.nvim',
-- dependencies = { 'nvim-lua/plenary.nvim' },
config = function() require('config.telescope') end,
lazy = true,
event = 'VimEnter'
},
{
'numToStr/Comment.nvim',
config = function() require('config.comment') end,
lazy = true,
event = 'VimEnter'
},
{
'Yggdroot/indentLine',
config = function() require('config.indentLine') end,
lazy = true,
event = 'VimEnter'
},
{
'simeji/winresizer',
config = function() require('config.winresizer') end,
lazy = true,
keys = { '<C-W>r' }
},
{
'sindrets/winshift.nvim',
config = function() require('config.winshift') end,
lazy = true,
keys = { '<C-W>m' }
},
{
'martinda/Jenkinsfile-vim-syntax',
lazy = true,
ft = { 'jenkinsfile', 'Jenkinsfile' }
},
{
'kyazdani42/nvim-tree.lua',
config = function() require('config.nvim-tree') end
},
{
'dstein64/vim-startuptime',
lazy = true,
event = 'VimEnter'
},
{
'stevearc/aerial.nvim',
config = function() require('config.aerial') end
}
}
local opts = {
-- defaults = {
-- lazy = true
-- }
}
require('lazy').setup(plugins, opts)
+74
View File
@@ -0,0 +1,74 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
local utils = require('utils')
M = {}
local env_ok = false
local dap = nil
local function check_env()
local debugpy = utils.exec('python -m debugpy --version')
assert(debugpy.rc == 0, 'Python module debugpy is required')
local pytest = utils.exec('python -m pytest --version')
assert(pytest.rc == 0, 'Python module pytest is required')
env_ok = true
end
local function load_dap()
local ok, dap = pcall(require, 'dap')
assert(ok, 'nvim-dap is required')
return dap
end
function M.run(args)
assert(type(args) == 'table', 'Args not specified or of wrong type')
if not env_ok then
check_env()
end
if not dap then
dap = load_dap()
dap.adapters.python = {
type = 'executable';
command = 'python';
args = { '-m', 'debugpy.adapter' };
cwd = vim.fn.getcwd();
}
end
local config = {
name = 'pytest ' .. table.concat(args, ' '),
type = 'python',
request = 'launch',
-- pythonPath = vim.fn.getcwd() .. '/.venv/bin/python',
module = 'pytest',
-- python = 'python';
-- program = vim.fn.getcwd() .. '/.venv/bin/pytest';
args = args,
console = "integratedTerminal",
-- program = "${file}";
}
-- session = dap.launch(adapter, config)
dap.run(config)
-- List of events described at https://microsoft.github.io/debug-adapter-protocol/specification#Events
-- Also see :h dap-extensions
dap.listeners.after['event_initialized']['pytest.lua'] = function(session, body)
dap.set_exception_breakpoints({ 'userUnhandled' })
end
end
return M
+86
View File
@@ -0,0 +1,86 @@
--[[
Copyright 2023 Oscar Wallberg
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
]]
M = {}
M.os_name = vim.loop.os_uname().sysname
function M.has_value(tab, val)
for _, value in ipairs(tab) do if value == val then return true end end
return false
end
---@param cmd table: Array of executable + args
function M.exec(cmd)
local out = vim.fn.system(cmd)
local rc = vim.v.shell_error
return { out = out, rc = rc }
end
function M.get_color(group, attr)
return vim.fn.synIDattr(vim.fn.synIDtrans(vim.fn.hlID(group)), attr)
end
function M.get_hl(name)
local ok, hl = pcall(vim.api.nvim_get_hl_by_name, name, true)
if not ok then return end
for _, key in pairs({ 'foreground', 'background', 'special' }) do
if hl[key] then hl[key] = string.format('#%06x', hl[key]) end
end
return hl
end
--- Check that an executable is available
--- @param exe string: Array to look for
--- @return boolean
function M.is_available(exe)
return vim.fn.executable(exe) == 1
end
--- Check that at least one executable is available
--- @param exes table: Array of exes
--- @return boolean
function M.any_available(exes)
for _, e in ipairs(exes) do
if M.is_available(e) then
return true
end
end
return false
end
--- Asserts that an executable is available
--- Raises error if missing.
--- @param exe string: Array to look for
function M.assert_available(exe)
if not M.is_available(exe) then
error("Missing executable '" .. exe .. "'.")
end
end
--- Asserts that at least one executable is available
--- Raises error if missing.
--- @param exes table: Array of exes
function M.assert_any_available(exes)
if not M.any_available(exes) then
error('At least one of the following is required:\n' .. table.concat(exes, ', '))
end
end
return M
+457
View File
@@ -0,0 +1,457 @@
-- Automatically generated packer.nvim plugin loader code
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
return
end
vim.api.nvim_command('packadd packer.nvim')
local no_errors, error_msg = pcall(function()
_G._packer = _G._packer or {}
_G._packer.inside_compile = true
local time
local profile_info
local should_profile = false
if should_profile then
local hrtime = vim.loop.hrtime
profile_info = {}
time = function(chunk, start)
if start then
profile_info[chunk] = hrtime()
else
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
end
end
else
time = function(chunk, start) end
end
local function save_profiles(threshold)
local sorted_times = {}
for chunk_name, time_taken in pairs(profile_info) do
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
end
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
local results = {}
for i, elem in ipairs(sorted_times) do
if not threshold or threshold and elem[2] > threshold then
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
end
end
if threshold then
table.insert(results, '(Only showing plugins that took longer than ' .. threshold .. ' ms ' .. 'to load)')
end
_G._packer.profile_output = results
end
time([[Luarocks path setup]], true)
local package_path_str = "/home/oscar/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/oscar/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/oscar/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/oscar/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
local install_cpath_pattern = "/home/oscar/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
if not string.find(package.path, package_path_str, 1, true) then
package.path = package.path .. ';' .. package_path_str
end
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
package.cpath = package.cpath .. ';' .. install_cpath_pattern
end
time([[Luarocks path setup]], false)
time([[try_loadstring definition]], true)
local function try_loadstring(s, component, name)
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
if not success then
vim.schedule(function()
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
end)
end
return result
end
time([[try_loadstring definition]], false)
time([[Defining packer_plugins]], true)
_G.packer_plugins = {
["Comment.nvim"] = {
config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19config.comment\frequire\0" },
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/Comment.nvim",
url = "https://github.com/numToStr/Comment.nvim"
},
["Jenkinsfile-vim-syntax"] = {
loaded = false,
needs_bufread = true,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/Jenkinsfile-vim-syntax",
url = "https://github.com/martinda/Jenkinsfile-vim-syntax"
},
LuaSnip = {
after = { "nvim-cmp", "friendly-snippets" },
config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19config.luasnip\frequire\0" },
loaded = true,
only_config = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/LuaSnip",
url = "https://github.com/L3MON4D3/LuaSnip"
},
["aerial.nvim"] = {
config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18config.aerial\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/aerial.nvim",
url = "https://github.com/stevearc/aerial.nvim"
},
["bufferline.nvim"] = {
config = { "\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22config.bufferline\frequire\0" },
load_after = {},
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/bufferline.nvim",
url = "https://github.com/akinsho/bufferline.nvim"
},
["cmp-buffer"] = {
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-buffer/after/plugin/cmp_buffer.lua" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-buffer",
url = "https://github.com/hrsh7th/cmp-buffer"
},
["cmp-cmdline"] = {
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-cmdline/after/plugin/cmp_cmdline.lua" },
config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23config.cmp-cmdline\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-cmdline",
url = "https://github.com/hrsh7th/cmp-cmdline"
},
["cmp-nvim-lsp"] = {
after = { "lsp_signature.nvim" },
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp/after/plugin/cmp_nvim_lsp.lua" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-nvim-lsp",
url = "https://github.com/hrsh7th/cmp-nvim-lsp"
},
["cmp-path"] = {
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-path/after/plugin/cmp_path.lua" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp-path",
url = "https://github.com/hrsh7th/cmp-path"
},
cmp_luasnip = {
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp_luasnip/after/plugin/cmp_luasnip.lua" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/cmp_luasnip",
url = "https://github.com/saadparwaiz1/cmp_luasnip"
},
["friendly-snippets"] = {
config = { "\27LJ\2\n8\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\29config.friendly-snippets\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/friendly-snippets",
url = "https://github.com/rafamadriz/friendly-snippets"
},
["gitsigns.nvim"] = {
config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.gitsigns\frequire\0" },
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/gitsigns.nvim",
url = "https://github.com/lewis6991/gitsigns.nvim"
},
["impatient.nvim"] = {
config = { "\27LJ\2\n)\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\14impatient\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/impatient.nvim",
url = "https://github.com/lewis6991/impatient.nvim"
},
indentLine = {
after_files = { "/home/oscar/.local/share/nvim/site/pack/packer/opt/indentLine/after/plugin/indentLine.vim" },
config = { "\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22config.indentLine\frequire\0" },
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/indentLine",
url = "https://github.com/Yggdroot/indentLine"
},
["lsp_signature.nvim"] = {
after = { "nvim-lspconfig" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/lsp_signature.nvim",
url = "https://github.com/ray-x/lsp_signature.nvim"
},
["lspkind-nvim"] = {
load_after = {
["nvim-lspconfig"] = true
},
loaded = false,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/lspkind-nvim",
url = "https://github.com/onsails/lspkind-nvim"
},
["lualine.nvim"] = {
config = { "\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19config.lualine\frequire\0" },
load_after = {
["vim-fugitive"] = true
},
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/lualine.nvim",
url = "https://github.com/nvim-lualine/lualine.nvim"
},
["markdown-preview.nvim"] = {
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/markdown-preview.nvim",
url = "https://github.com/iamcco/markdown-preview.nvim"
},
["nvim-autopairs"] = {
config = { "\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26config.nvim-autopairs\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/nvim-autopairs",
url = "https://github.com/windwp/nvim-autopairs"
},
["nvim-cmp"] = {
after = { "cmp-buffer", "cmp-nvim-lsp", "cmp-path", "cmp-cmdline", "cmp_luasnip", "nvim-autopairs" },
config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.nvim-cmp\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/nvim-cmp",
url = "https://github.com/hrsh7th/nvim-cmp"
},
["nvim-dap"] = {
after = { "nvim-dap-ui" },
config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.nvim-dap\frequire\0" },
loaded = true,
only_config = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/nvim-dap",
url = "https://github.com/mfussenegger/nvim-dap"
},
["nvim-dap-ui"] = {
config = { "\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23config.nvim-dap-ui\frequire\0" },
load_after = {},
loaded = true,
needs_bufread = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/nvim-dap-ui",
url = "https://github.com/rcarriga/nvim-dap-ui"
},
["nvim-lspconfig"] = {
after = { "lspkind-nvim" },
config = { "\27LJ\2\n*\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\15config.lsp\frequire\0" },
load_after = {},
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/nvim-lspconfig",
url = "https://github.com/neovim/nvim-lspconfig"
},
["nvim-tree.lua"] = {
config = { "\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21config.nvim-tree\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
url = "https://github.com/kyazdani42/nvim-tree.lua"
},
["nvim-treesitter"] = {
config = { "\27LJ\2\n6\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\27config.nvim-treesitter\frequire\0" },
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/nvim-treesitter",
url = "https://github.com/nvim-treesitter/nvim-treesitter"
},
["nvim-web-devicons"] = {
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/nvim-web-devicons",
url = "https://github.com/kyazdani42/nvim-web-devicons"
},
["packer.nvim"] = {
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/packer.nvim",
url = "https://github.com/wbthomason/packer.nvim"
},
["plenary.nvim"] = {
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/plenary.nvim",
url = "https://github.com/nvim-lua/plenary.nvim"
},
["telescope.nvim"] = {
config = { "\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21config.telescope\frequire\0" },
loaded = false,
needs_bufread = true,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/telescope.nvim",
url = "https://github.com/nvim-telescope/telescope.nvim"
},
theme = {
after = { "lualine.nvim", "bufferline.nvim" },
config = { "\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18config.vscode\frequire\0" },
loaded = true,
only_config = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/theme",
url = "https://github.com/Mofiqul/vscode.nvim"
},
["vim-flog"] = {
config = { "\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16config.flog\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/vim-flog",
url = "https://github.com/rbong/vim-flog"
},
["vim-fugitive"] = {
after = { "lualine.nvim" },
config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.fugitive\frequire\0" },
loaded = false,
needs_bufread = true,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/vim-fugitive",
url = "https://github.com/tpope/vim-fugitive"
},
["vim-startuptime"] = {
loaded = false,
needs_bufread = false,
only_cond = false,
path = "/home/oscar/.local/share/nvim/site/pack/packer/opt/vim-startuptime",
url = "https://github.com/dstein64/vim-startuptime"
},
winresizer = {
config = { "\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22config.winresizer\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/winresizer",
url = "https://github.com/simeji/winresizer"
},
["winshift.nvim"] = {
config = { "\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.winshift\frequire\0" },
loaded = true,
path = "/home/oscar/.local/share/nvim/site/pack/packer/start/winshift.nvim",
url = "https://github.com/sindrets/winshift.nvim"
}
}
time([[Defining packer_plugins]], false)
-- Config for: vim-flog
time([[Config for vim-flog]], true)
try_loadstring("\27LJ\2\n+\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\16config.flog\frequire\0", "config", "vim-flog")
time([[Config for vim-flog]], false)
-- Config for: theme
time([[Config for theme]], true)
try_loadstring("\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18config.vscode\frequire\0", "config", "theme")
time([[Config for theme]], false)
-- Config for: impatient.nvim
time([[Config for impatient.nvim]], true)
try_loadstring("\27LJ\2\n)\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\14impatient\frequire\0", "config", "impatient.nvim")
time([[Config for impatient.nvim]], false)
-- Config for: nvim-tree.lua
time([[Config for nvim-tree.lua]], true)
try_loadstring("\27LJ\2\n0\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\21config.nvim-tree\frequire\0", "config", "nvim-tree.lua")
time([[Config for nvim-tree.lua]], false)
-- Config for: nvim-dap
time([[Config for nvim-dap]], true)
try_loadstring("\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.nvim-dap\frequire\0", "config", "nvim-dap")
time([[Config for nvim-dap]], false)
-- Config for: winresizer
time([[Config for winresizer]], true)
try_loadstring("\27LJ\2\n1\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\22config.winresizer\frequire\0", "config", "winresizer")
time([[Config for winresizer]], false)
-- Config for: LuaSnip
time([[Config for LuaSnip]], true)
try_loadstring("\27LJ\2\n.\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\19config.luasnip\frequire\0", "config", "LuaSnip")
time([[Config for LuaSnip]], false)
-- Config for: winshift.nvim
time([[Config for winshift.nvim]], true)
try_loadstring("\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.winshift\frequire\0", "config", "winshift.nvim")
time([[Config for winshift.nvim]], false)
-- Config for: aerial.nvim
time([[Config for aerial.nvim]], true)
try_loadstring("\27LJ\2\n-\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\18config.aerial\frequire\0", "config", "aerial.nvim")
time([[Config for aerial.nvim]], false)
-- Load plugins in order defined by `after`
time([[Sequenced loading]], true)
vim.cmd [[ packadd nvim-cmp ]]
-- Config for: nvim-cmp
try_loadstring("\27LJ\2\n/\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\20config.nvim-cmp\frequire\0", "config", "nvim-cmp")
vim.cmd [[ packadd nvim-autopairs ]]
-- Config for: nvim-autopairs
try_loadstring("\27LJ\2\n5\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\26config.nvim-autopairs\frequire\0", "config", "nvim-autopairs")
vim.cmd [[ packadd cmp-path ]]
vim.cmd [[ packadd cmp-cmdline ]]
-- Config for: cmp-cmdline
try_loadstring("\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23config.cmp-cmdline\frequire\0", "config", "cmp-cmdline")
vim.cmd [[ packadd cmp_luasnip ]]
vim.cmd [[ packadd cmp-nvim-lsp ]]
vim.cmd [[ packadd lsp_signature.nvim ]]
vim.cmd [[ packadd cmp-buffer ]]
vim.cmd [[ packadd friendly-snippets ]]
-- Config for: friendly-snippets
try_loadstring("\27LJ\2\n8\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\29config.friendly-snippets\frequire\0", "config", "friendly-snippets")
vim.cmd [[ packadd nvim-dap-ui ]]
-- Config for: nvim-dap-ui
try_loadstring("\27LJ\2\n2\0\0\3\0\2\0\0046\0\0\0'\2\1\0B\0\2\1K\0\1\0\23config.nvim-dap-ui\frequire\0", "config", "nvim-dap-ui")
time([[Sequenced loading]], false)
vim.cmd [[augroup packer_load_aucmds]]
vim.cmd [[au!]]
-- Filetype lazy-loads
time([[Defining lazy-load filetype autocommands]], true)
vim.cmd [[au FileType jenkinsfile ++once lua require("packer.load")({'Jenkinsfile-vim-syntax'}, { ft = "jenkinsfile" }, _G.packer_plugins)]]
vim.cmd [[au FileType Jenkinsfile ++once lua require("packer.load")({'Jenkinsfile-vim-syntax'}, { ft = "Jenkinsfile" }, _G.packer_plugins)]]
vim.cmd [[au FileType python ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "python" }, _G.packer_plugins)]]
vim.cmd [[au FileType sh ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "sh" }, _G.packer_plugins)]]
vim.cmd [[au FileType lua ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "lua" }, _G.packer_plugins)]]
vim.cmd [[au FileType rust ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "rust" }, _G.packer_plugins)]]
vim.cmd [[au FileType cpp ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "cpp" }, _G.packer_plugins)]]
vim.cmd [[au FileType cmake ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "cmake" }, _G.packer_plugins)]]
vim.cmd [[au FileType markdown ++once lua require("packer.load")({'markdown-preview.nvim'}, { ft = "markdown" }, _G.packer_plugins)]]
vim.cmd [[au FileType xml ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "xml" }, _G.packer_plugins)]]
vim.cmd [[au FileType go ++once lua require("packer.load")({'nvim-lspconfig'}, { ft = "go" }, _G.packer_plugins)]]
time([[Defining lazy-load filetype autocommands]], false)
-- Event lazy-loads
time([[Defining lazy-load event autocommands]], true)
vim.cmd [[au VimEnter * ++once lua require("packer.load")({'nvim-treesitter', 'lualine.nvim', 'bufferline.nvim', 'gitsigns.nvim', 'Comment.nvim', 'indentLine', 'vim-fugitive', 'vim-startuptime', 'telescope.nvim'}, { event = "VimEnter *" }, _G.packer_plugins)]]
time([[Defining lazy-load event autocommands]], false)
vim.cmd("augroup END")
vim.cmd [[augroup filetypedetect]]
time([[Sourcing ftdetect script at: /home/oscar/.local/share/nvim/site/pack/packer/opt/Jenkinsfile-vim-syntax/ftdetect/Jenkinsfile.vim]], true)
vim.cmd [[source /home/oscar/.local/share/nvim/site/pack/packer/opt/Jenkinsfile-vim-syntax/ftdetect/Jenkinsfile.vim]]
time([[Sourcing ftdetect script at: /home/oscar/.local/share/nvim/site/pack/packer/opt/Jenkinsfile-vim-syntax/ftdetect/Jenkinsfile.vim]], false)
vim.cmd("augroup END")
_G._packer.inside_compile = false
if _G._packer.needs_bufread == true then
vim.cmd("doautocmd BufRead")
end
_G._packer.needs_bufread = false
if should_profile then save_profiles() end
end)
if not no_errors then
error_msg = error_msg:gsub('"', '\\"')
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
end