Initial commit
This commit is contained in:
@@ -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,
|
||||
},
|
||||
})
|
||||
@@ -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'
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -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")
|
||||
@@ -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,
|
||||
}
|
||||
)
|
||||
@@ -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")
|
||||
@@ -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"),
|
||||
},
|
||||
},
|
||||
}
|
||||
@@ -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')
|
||||
@@ -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 })
|
||||
@@ -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 })
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
)
|
||||
@@ -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 = '│' }
|
||||
}
|
||||
}
|
||||
)
|
||||
@@ -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")
|
||||
@@ -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 = '┃',
|
||||
})
|
||||
@@ -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' }
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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 = { }
|
||||
})
|
||||
|
||||
@@ -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()
|
||||
@@ -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
|
||||
})
|
||||
@@ -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()
|
||||
@@ -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")
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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()
|
||||
@@ -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"
|
||||
|
||||
@@ -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()
|
||||
)
|
||||
@@ -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>")
|
||||
|
||||
@@ -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 },
|
||||
})
|
||||
@@ -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
|
||||
@@ -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)
|
||||
@@ -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()"
|
||||
@@ -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()
|
||||
@@ -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")
|
||||
@@ -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>"
|
||||
@@ -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 })
|
||||
@@ -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') ]]
|
||||
@@ -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")
|
||||
@@ -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
|
||||
@@ -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")
|
||||
@@ -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'
|
||||
|
||||
@@ -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()
|
||||
@@ -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)
|
||||
@@ -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 })
|
||||
Reference in New Issue
Block a user