mirror of
https://github.com/halfdan/dotfiles.git
synced 2025-09-10 19:56:24 +00:00
Compare commits
9 Commits
814000d6e8
...
main
Author | SHA1 | Date | |
---|---|---|---|
|
b8c42f92c7 | ||
|
c30a121b99 | ||
|
bbece9eade | ||
|
e735b5a167 | ||
|
784a956cf8 | ||
|
d36811ef6f | ||
|
6c380f3a94 | ||
|
49caa17eef | ||
|
5782602a20 |
@@ -1 +0,0 @@
|
|||||||
source ~/.asdf/asdf.fish
|
|
@@ -1,5 +1,6 @@
|
|||||||
if status is-interactive
|
if status is-interactive
|
||||||
# Commands to run in interactive sessions can go here
|
# Commands to run in interactive sessions can go here
|
||||||
|
# atuin init fish | source
|
||||||
end
|
end
|
||||||
function multicd
|
function multicd
|
||||||
echo cd (string repeat -n (math (string length -- $argv[1]) - 1) ../)
|
echo cd (string repeat -n (math (string length -- $argv[1]) - 1) ../)
|
||||||
@@ -8,4 +9,27 @@ abbr --add dotdot --regex '^\.\.+$' --function multicd
|
|||||||
abbr -a -- gst 'git status'
|
abbr -a -- gst 'git status'
|
||||||
abbr -a -- gca 'git commit --amend'
|
abbr -a -- gca 'git commit --amend'
|
||||||
abbr -a -- gpf 'git push -f'
|
abbr -a -- gpf 'git push -f'
|
||||||
abbr -a -- gp 'git pull'
|
abbr -a -- gp 'git push'
|
||||||
|
abbr -a -- gl 'git pull'
|
||||||
|
abbr -a -- gl 'git rebase develop'
|
||||||
|
abbr -a -- gcd 'git checkout develop'
|
||||||
|
abbr -a -- gc- 'git checkout -'
|
||||||
|
abbr -a -- gc 'git checkout'
|
||||||
|
|
||||||
|
abbr -a -- api 'kubectl get pods -n backend | fzf | awk \'{print $1}\' | xargs -o -I {} kubectl exec -i -t -n backend {} --container api -- /opt/app/api/bin/api remote'
|
||||||
|
|
||||||
|
|
||||||
|
function preview_shell
|
||||||
|
set PR $(gh pr status --json number | jq '.currentBranch.number')
|
||||||
|
|
||||||
|
kubectl get pods -n backend | awk '{print $1}' | grep "$PR-api" | head -1 | xargs -o -I {} kubectl exec -i -t -n backend {} --container api -- /opt/app/api/bin/api remote
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function preview_db
|
||||||
|
gh pr status --json number | jq '.currentBranch.number' | xargs -o -I {} devops db connect frameio-pr-{}-cluster
|
||||||
|
end
|
||||||
|
|
||||||
|
function mix_test_changed
|
||||||
|
git status -s | awk '{print $2}' | grep '_test.exs' | xargs mix test
|
||||||
|
end
|
||||||
|
@@ -1,14 +1,14 @@
|
|||||||
# This file contains fish universal variable definitions.
|
# This file contains fish universal variable definitions.
|
||||||
# VERSION: 3.0
|
# VERSION: 3.0
|
||||||
SETUVAR __fish_initialized:3400
|
SETUVAR __fish_initialized:3400
|
||||||
SETUVAR fish_color_autosuggestion:4c566a
|
SETUVAR fish_color_autosuggestion:969896
|
||||||
SETUVAR fish_color_cancel:\x2d\x2dreverse
|
SETUVAR fish_color_cancel:\x2d\x2dreverse
|
||||||
SETUVAR fish_color_command:81a1c1
|
SETUVAR fish_color_command:b294bb
|
||||||
SETUVAR fish_color_comment:434c5e
|
SETUVAR fish_color_comment:f0c674
|
||||||
SETUVAR fish_color_cwd:green
|
SETUVAR fish_color_cwd:green
|
||||||
SETUVAR fish_color_cwd_root:red
|
SETUVAR fish_color_cwd_root:red
|
||||||
SETUVAR fish_color_end:88c0d0
|
SETUVAR fish_color_end:b294bb
|
||||||
SETUVAR fish_color_error:ebcb8b
|
SETUVAR fish_color_error:cc6666
|
||||||
SETUVAR fish_color_escape:00a6b2
|
SETUVAR fish_color_escape:00a6b2
|
||||||
SETUVAR fish_color_history_current:\x2d\x2dbold
|
SETUVAR fish_color_history_current:\x2d\x2dbold
|
||||||
SETUVAR fish_color_host:normal
|
SETUVAR fish_color_host:normal
|
||||||
@@ -18,9 +18,9 @@ SETUVAR fish_color_match:\x2d\x2dbackground\x3dbrblue
|
|||||||
SETUVAR fish_color_normal:normal
|
SETUVAR fish_color_normal:normal
|
||||||
SETUVAR fish_color_operator:00a6b2
|
SETUVAR fish_color_operator:00a6b2
|
||||||
SETUVAR fish_color_option:\x1d
|
SETUVAR fish_color_option:\x1d
|
||||||
SETUVAR fish_color_param:eceff4
|
SETUVAR fish_color_param:81a2be
|
||||||
SETUVAR fish_color_quote:a3be8c
|
SETUVAR fish_color_quote:b5bd68
|
||||||
SETUVAR fish_color_redirection:b48ead
|
SETUVAR fish_color_redirection:8abeb7
|
||||||
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
|
SETUVAR fish_color_search_match:bryellow\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
SETUVAR fish_color_selection:white\x1e\x2d\x2dbold\x1e\x2d\x2dbackground\x3dbrblack
|
||||||
SETUVAR fish_color_status:red
|
SETUVAR fish_color_status:red
|
||||||
|
9
.config/k9s/aliases.yaml
Normal file
9
.config/k9s/aliases.yaml
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
aliases:
|
||||||
|
dp: deployments
|
||||||
|
sec: v1/secrets
|
||||||
|
jo: jobs
|
||||||
|
cr: clusterroles
|
||||||
|
crb: clusterrolebindings
|
||||||
|
ro: roles
|
||||||
|
rb: rolebindings
|
||||||
|
np: networkpolicies
|
@@ -0,0 +1,4 @@
|
|||||||
|
benchmarks:
|
||||||
|
defaults:
|
||||||
|
concurrency: 2
|
||||||
|
requests: 200
|
@@ -0,0 +1,13 @@
|
|||||||
|
k9s:
|
||||||
|
cluster: teleport.sharedservices.frame.io
|
||||||
|
namespace:
|
||||||
|
active: backend
|
||||||
|
lockFavorites: false
|
||||||
|
favorites:
|
||||||
|
- backend
|
||||||
|
- default
|
||||||
|
view:
|
||||||
|
active: po
|
||||||
|
featureGates:
|
||||||
|
nodeShell: false
|
||||||
|
portForwardAddress: localhost
|
8
.config/k9s/config.yaml
Normal file
8
.config/k9s/config.yaml
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
k9s:
|
||||||
|
liveViewAutoRefresh: false
|
||||||
|
|
||||||
|
ui:
|
||||||
|
headless: false
|
||||||
|
logoless: true
|
||||||
|
crumbsless: true
|
||||||
|
|
49
.config/kitty/keymap.conf
Normal file
49
.config/kitty/keymap.conf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# Window
|
||||||
|
map ctrl+\ new_window_with_cwd
|
||||||
|
|
||||||
|
# Tab
|
||||||
|
map ctrl+1 goto_tab 1
|
||||||
|
map ctrl+2 goto_tab 2
|
||||||
|
map ctrl+3 goto_tab 3
|
||||||
|
map ctrl+4 goto_tab 4
|
||||||
|
map ctrl+t new_tab
|
||||||
|
map ctrl+w close_tab
|
||||||
|
|
||||||
|
# Supper power keys
|
||||||
|
map ctrl+; kitten toggle_term.py
|
||||||
|
|
||||||
|
# kitty-scrollback.nvim Kitten alias
|
||||||
|
# action_alias kitty_scrollback_nvim kitten /home/tieu/.local/share/nvim/lazy/kitty-scrollback.nvim/python/kitty_scrollback_nvim.py
|
||||||
|
|
||||||
|
# Browse scrollback buffer in nvim
|
||||||
|
map kitty_mod+h kitty_scrollback_nvim
|
||||||
|
# Browse output of the last shell command in nvim
|
||||||
|
map kitty_mod+g kitty_scrollback_nvim --config ksb_builtin_last_cmd_output
|
||||||
|
# Show clicked command output in nvim
|
||||||
|
# mouse_map ctrl+shift+right press ungrabbed combine : mouse_select_command_output : kitty_scrollback_nvim --config ksb_builtin_last_visited_cmd_output
|
||||||
|
|
||||||
|
# ----------
|
||||||
|
# smart-split
|
||||||
|
map ctrl+j neighboring_window down
|
||||||
|
map ctrl+k neighboring_window up
|
||||||
|
map ctrl+h neighboring_window left
|
||||||
|
map ctrl+l neighboring_window right
|
||||||
|
|
||||||
|
# Unset the mapping to pass the keys to neovim
|
||||||
|
map --when-focus-on var:IS_NVIM ctrl+j
|
||||||
|
map --when-focus-on var:IS_NVIM ctrl+k
|
||||||
|
map --when-focus-on var:IS_NVIM ctrl+h
|
||||||
|
map --when-focus-on var:IS_NVIM ctrl+l
|
||||||
|
|
||||||
|
# the 3 here is the resize amount, adjust as needed
|
||||||
|
map alt+j kitten relative_resize.py down 3
|
||||||
|
map alt+k kitten relative_resize.py up 3
|
||||||
|
map alt+h kitten relative_resize.py left 3
|
||||||
|
map alt+l kitten relative_resize.py right 3
|
||||||
|
|
||||||
|
map --when-focus-on var:IS_NVIM alt+j
|
||||||
|
map --when-focus-on var:IS_NVIM alt+k
|
||||||
|
map --when-focus-on var:IS_NVIM alt+h
|
||||||
|
map --when-focus-on var:IS_NVIM alt+l
|
||||||
|
|
||||||
|
map f1 launch_tab nvim
|
21
.config/kitty/kitty.conf
Normal file
21
.config/kitty/kitty.conf
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
font_size 15
|
||||||
|
window_padding_width 1
|
||||||
|
background_opacity 1
|
||||||
|
|
||||||
|
font_family JetBrainsMono Nerd Font Mono
|
||||||
|
|
||||||
|
tab_bar_edge top
|
||||||
|
tab_bar_style separator
|
||||||
|
tab_separator " "
|
||||||
|
tab_title_template " {index} {title[-20:]} {bell_symbol}"
|
||||||
|
|
||||||
|
remember_window_size yes
|
||||||
|
|
||||||
|
allow_remote_control yes
|
||||||
|
listen_on unix:@mykitty
|
||||||
|
|
||||||
|
#include theme.conf
|
||||||
|
include rose_pine.conf
|
||||||
|
include keymap.conf
|
||||||
|
|
||||||
|
shell_integration enabled
|
53
.config/kitty/rose_pine.conf
Normal file
53
.config/kitty/rose_pine.conf
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
## name: Rosé Pine
|
||||||
|
## author: mvllow
|
||||||
|
## license: MIT
|
||||||
|
## upstream: https://github.com/rose-pine/kitty/blob/main/dist/rose-pine.conf
|
||||||
|
## blurb: All natural pine, faux fur and a bit of soho vibes for the classy minimalist
|
||||||
|
|
||||||
|
foreground #e0def4
|
||||||
|
background #191724
|
||||||
|
selection_foreground #e0def4
|
||||||
|
selection_background #403d52
|
||||||
|
|
||||||
|
cursor #524f67
|
||||||
|
cursor_text_color #e0def4
|
||||||
|
|
||||||
|
url_color #c4a7e7
|
||||||
|
|
||||||
|
active_tab_foreground #e0def4
|
||||||
|
active_tab_background #26233a
|
||||||
|
inactive_tab_foreground #6e6a86
|
||||||
|
inactive_tab_background #191724
|
||||||
|
|
||||||
|
# black
|
||||||
|
color0 #26233a
|
||||||
|
color8 #6e6a86
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #eb6f92
|
||||||
|
color9 #eb6f92
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #31748f
|
||||||
|
color10 #31748f
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #f6c177
|
||||||
|
color11 #f6c177
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #9ccfd8
|
||||||
|
color12 #9ccfd8
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #c4a7e7
|
||||||
|
color13 #c4a7e7
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #ebbcba
|
||||||
|
color14 #ebbcba
|
||||||
|
|
||||||
|
# white
|
||||||
|
color7 #e0def4
|
||||||
|
color15 #e0def4
|
||||||
|
|
49
.config/kitty/theme.conf
Normal file
49
.config/kitty/theme.conf
Normal file
@@ -0,0 +1,49 @@
|
|||||||
|
# gruvbox dark by morhetz, https://github.com/morhetz/gruvbox
|
||||||
|
# This work is licensed under the terms of the MIT license.
|
||||||
|
# For a copy, see https://opensource.org/licenses/MIT.
|
||||||
|
|
||||||
|
background #282828
|
||||||
|
foreground #ebdbb2
|
||||||
|
|
||||||
|
cursor #928374
|
||||||
|
|
||||||
|
selection_foreground #928374
|
||||||
|
selection_background #3c3836
|
||||||
|
|
||||||
|
color0 #282828
|
||||||
|
color8 #928374
|
||||||
|
|
||||||
|
# red
|
||||||
|
color1 #cc241d
|
||||||
|
# light red
|
||||||
|
color9 #fb4934
|
||||||
|
|
||||||
|
# green
|
||||||
|
color2 #98971a
|
||||||
|
# light green
|
||||||
|
color10 #b8bb26
|
||||||
|
|
||||||
|
# yellow
|
||||||
|
color3 #d79921
|
||||||
|
# light yellow
|
||||||
|
color11 #fabd2d
|
||||||
|
|
||||||
|
# blue
|
||||||
|
color4 #458588
|
||||||
|
# light blue
|
||||||
|
color12 #83a598
|
||||||
|
|
||||||
|
# magenta
|
||||||
|
color5 #b16286
|
||||||
|
# light magenta
|
||||||
|
color13 #d3869b
|
||||||
|
|
||||||
|
# cyan
|
||||||
|
color6 #689d6a
|
||||||
|
# lighy cyan
|
||||||
|
color14 #8ec07c
|
||||||
|
|
||||||
|
# light gray
|
||||||
|
color7 #a89984
|
||||||
|
# dark gray
|
||||||
|
color15 #928374
|
33
.config/kitty/toggle_term.py
Normal file
33
.config/kitty/toggle_term.py
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
from kittens.tui.handler import result_handler
|
||||||
|
|
||||||
|
|
||||||
|
def main(args):
|
||||||
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
def toggle_term(boss):
|
||||||
|
tab = boss.active_tab
|
||||||
|
|
||||||
|
all_another_wins = tab.all_window_ids_except_active_window
|
||||||
|
have_only_one = len(all_another_wins) == 0
|
||||||
|
|
||||||
|
if have_only_one:
|
||||||
|
boss.launch('--cwd=current', '--location=hsplit')
|
||||||
|
tab.neighboring_window("bottom")
|
||||||
|
else:
|
||||||
|
if tab.current_layout.name == 'stack':
|
||||||
|
tab.last_used_layout()
|
||||||
|
tab.neighboring_window("bottom")
|
||||||
|
else:
|
||||||
|
tab.neighboring_window("top")
|
||||||
|
tab.goto_layout('stack')
|
||||||
|
|
||||||
|
|
||||||
|
@result_handler(no_ui=True)
|
||||||
|
def handle_result(args, result, target_window_id, boss):
|
||||||
|
window = boss.window_id_map.get(target_window_id)
|
||||||
|
|
||||||
|
if window is None:
|
||||||
|
return
|
||||||
|
|
||||||
|
toggle_term(boss)
|
@@ -1,120 +0,0 @@
|
|||||||
if vim.g.vscode then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local Worktree = require("git-worktree")
|
|
||||||
local Job = require("plenary.job")
|
|
||||||
local FTerm = require("FTerm")
|
|
||||||
|
|
||||||
local function file_exists(name)
|
|
||||||
local f=io.open(name,"r")
|
|
||||||
if f~=nil then io.close(f) return true else return false end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function schedule_notify(message, level)
|
|
||||||
vim.schedule(function()
|
|
||||||
vim.notify.notify(message, level or "info")
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function is_elixir_project()
|
|
||||||
return file_exists(vim.loop.cwd() .. "/" .. "mix.exs")
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Run mix compile
|
|
||||||
local compile_job = Job:new({
|
|
||||||
command = "mix",
|
|
||||||
args = { "compile" },
|
|
||||||
on_start = function()
|
|
||||||
schedule_notify("Compiling...", "debug")
|
|
||||||
end,
|
|
||||||
on_exit = function(_j, _return_val)
|
|
||||||
schedule_notify("Compiling done")
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
-- Run mix deps.get
|
|
||||||
local deps_job = Job:new({
|
|
||||||
command = "mix",
|
|
||||||
args = { "deps.get" },
|
|
||||||
on_start = function()
|
|
||||||
schedule_notify("Fetching dependencies...")
|
|
||||||
end,
|
|
||||||
on_exit = function(_j, _return_val)
|
|
||||||
schedule_notify("Fetched dependencies")
|
|
||||||
end
|
|
||||||
})
|
|
||||||
|
|
||||||
local function create_docker_up_job(path)
|
|
||||||
return Job:new({
|
|
||||||
command = "docker-compose",
|
|
||||||
args = { "up" },
|
|
||||||
cwd = path,
|
|
||||||
detached = true,
|
|
||||||
on_start = function ()
|
|
||||||
schedule_notify("Running docker in " .. path, "debug")
|
|
||||||
end,
|
|
||||||
on_exit = function (_j, return_val)
|
|
||||||
if return_val ~= 0 then
|
|
||||||
schedule_notify("Error running docker for " .. path, "error")
|
|
||||||
end
|
|
||||||
end
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
local function create_docker_down_job(path)
|
|
||||||
return Job:new({
|
|
||||||
command = "docker-compose",
|
|
||||||
args = { "down" },
|
|
||||||
cwd = path,
|
|
||||||
on_start = function ()
|
|
||||||
schedule_notify("Shutting down containers at " .. path, "debug")
|
|
||||||
end,
|
|
||||||
on_exit = function ()
|
|
||||||
schedule_notify("Shut down containers at " .. path, "debug")
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
local iex = FTerm:new({
|
|
||||||
cmd = { "iex", "-S", "mix" },
|
|
||||||
dimensions = {
|
|
||||||
height = 0.9,
|
|
||||||
width = 0.9
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.keymap.set('t', '<A-t>', function ()
|
|
||||||
iex:toggle()
|
|
||||||
end)
|
|
||||||
vim.keymap.set('n', '<A-t>', function ()
|
|
||||||
iex:toggle()
|
|
||||||
end)
|
|
||||||
|
|
||||||
Worktree.on_tree_change(function(op, metadata)
|
|
||||||
if op == Worktree.Operations.Create and is_elixir_project() then
|
|
||||||
deps_job:and_then(compile_job)
|
|
||||||
deps_job:start()
|
|
||||||
end
|
|
||||||
|
|
||||||
if op == Worktree.Operations.Switch and is_elixir_project() then
|
|
||||||
local docker_down = create_docker_down_job(metadata.prev_path)
|
|
||||||
local docker_up = create_docker_up_job(metadata.path)
|
|
||||||
|
|
||||||
docker_down:and_then(docker_up)
|
|
||||||
compile_job:start()
|
|
||||||
docker_down:start()
|
|
||||||
|
|
||||||
iex:close(true)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
|
|
||||||
local group = vim.api.nvim_create_augroup('MyCustomNeogitEvents', { clear = true })
|
|
||||||
vim.api.nvim_create_autocmd('User', {
|
|
||||||
pattern = 'NeogitPullComplete',
|
|
||||||
group = group,
|
|
||||||
callback = function ()
|
|
||||||
deps_job:and_then(compile_job)
|
|
||||||
deps_job:start()
|
|
||||||
end,
|
|
||||||
})
|
|
@@ -1,39 +0,0 @@
|
|||||||
if vim.g.vscode then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local nnoremap = require('halfdan.keymap').nnoremap
|
|
||||||
local actions = require("telescope.actions")
|
|
||||||
local action_state = require "telescope.actions.state"
|
|
||||||
local worktree = require("git-worktree")
|
|
||||||
|
|
||||||
local function create_workspace_for_issue()
|
|
||||||
require'telescope'.extensions.jira.live_search({
|
|
||||||
attach_mappings =function ()
|
|
||||||
actions.select_default:replace(
|
|
||||||
function ()
|
|
||||||
local selection = action_state.get_selected_entry()
|
|
||||||
local branch_name = "fb/" .. selection.key:lower()
|
|
||||||
vim.schedule(function ()
|
|
||||||
-- Create worktree
|
|
||||||
worktree.create_worktree(branch_name, branch_name, "origin")
|
|
||||||
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
)
|
|
||||||
return true
|
|
||||||
end,
|
|
||||||
assignee = "fbecker@adobe.com",
|
|
||||||
})
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
nnoremap("<leader>jw", function ()
|
|
||||||
create_workspace_for_issue()
|
|
||||||
end)
|
|
||||||
|
|
||||||
nnoremap("<leader>js", function ()
|
|
||||||
require'telescope'.extensions.jira.live_search({
|
|
||||||
project="BES"
|
|
||||||
})
|
|
||||||
end)
|
|
@@ -3,6 +3,7 @@ local Remap = require("halfdan.keymap")
|
|||||||
local nnoremap = Remap.nnoremap
|
local nnoremap = Remap.nnoremap
|
||||||
local vnoremap = Remap.vnoremap
|
local vnoremap = Remap.vnoremap
|
||||||
local inoremap = Remap.inoremap
|
local inoremap = Remap.inoremap
|
||||||
|
local tnoremap = Remap.tnoremap
|
||||||
local xnoremap = Remap.xnoremap
|
local xnoremap = Remap.xnoremap
|
||||||
local nmap = Remap.nmap
|
local nmap = Remap.nmap
|
||||||
|
|
||||||
@@ -38,11 +39,23 @@ nnoremap('<A-l>', '<C-w>l')
|
|||||||
nnoremap('<leader>th', '<C-w>t<C-w>H')
|
nnoremap('<leader>th', '<C-w>t<C-w>H')
|
||||||
nnoremap('<leader>tk', '<C-w>t<C-w>K')
|
nnoremap('<leader>tk', '<C-w>t<C-w>K')
|
||||||
|
|
||||||
|
nnoremap("<leader>\\", ":vsplit<CR>")
|
||||||
|
nnoremap("<leader>/", ":split<CR>")
|
||||||
|
|
||||||
-- Keybindings below this are neovim cli only
|
-- Keybindings below this are neovim cli only
|
||||||
if vim.g.vscode then
|
if vim.g.vscode then
|
||||||
|
-- Toggle Comment
|
||||||
|
vim.keymap.set('x', 'gc', '<Plug>VSCodeCommentary', {})
|
||||||
|
vim.keymap.set('n', 'gc', '<Plug>VSCodeCommentary', {})
|
||||||
|
vim.keymap.set('o', 'gc', '<Plug>VSCodeCommentary', {})
|
||||||
|
vim.keymap.set('n', 'gcc', '<Plug>VSCodeCommentaryLine', {})
|
||||||
|
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
|
tnoremap('<ESC>', '<C-\\><C-n>')
|
||||||
|
|
||||||
|
nnoremap('<C-B>', ':Neotree right toggle<CR>')
|
||||||
-- resize with arrows
|
-- resize with arrows
|
||||||
nnoremap('<C-Up>', ':resize -2<CR>')
|
nnoremap('<C-Up>', ':resize -2<CR>')
|
||||||
nnoremap('<C-Down>', ':resize +2<CR>')
|
nnoremap('<C-Down>', ':resize +2<CR>')
|
||||||
@@ -65,6 +78,16 @@ nnoremap('<S-TAB>', ':bprevious<CR>')
|
|||||||
nnoremap('[q', ':cprev<CR>')
|
nnoremap('[q', ':cprev<CR>')
|
||||||
nnoremap(']q', ':cnext<CR>')
|
nnoremap(']q', ':cnext<CR>')
|
||||||
|
|
||||||
|
-- no arrow keys
|
||||||
|
nnoremap("<up>", "<nop>")
|
||||||
|
nnoremap("<down>", "<nop>")
|
||||||
|
nnoremap("<left>", "<nop>")
|
||||||
|
nnoremap("<right>", "<nop>")
|
||||||
|
|
||||||
|
inoremap("<up>", "<nop>")
|
||||||
|
inoremap("<down>", "<nop>")
|
||||||
|
inoremap("<left>", "<nop>")
|
||||||
|
inoremap("<right>", "<nop>")
|
||||||
|
|
||||||
-- Tagbar
|
-- Tagbar
|
||||||
nnoremap('<Leader>hl', ':nohl<CR>')
|
nnoremap('<Leader>hl', ':nohl<CR>')
|
||||||
@@ -82,15 +105,35 @@ nnoremap('<leader>a', ':A<CR>')
|
|||||||
-- Reload init.lua
|
-- Reload init.lua
|
||||||
nnoremap('<leader>sv', ':source $MYVIMRC<CR>')
|
nnoremap('<leader>sv', ':source $MYVIMRC<CR>')
|
||||||
|
|
||||||
nnoremap('<C-p>', ':Lspsaga diagnostic_jump_prev<CR>')
|
local builtin = require("telescope.builtin")
|
||||||
nnoremap('<C-y>', ':Lspsaga diagnostic_jump_next<CR>')
|
|
||||||
|
|
||||||
-- Harpoon
|
nnoremap("<leader>gg", function()
|
||||||
nnoremap("<leader>m", function() require("harpoon.mark").add_file() end)
|
-- builtin.live_grep()
|
||||||
nnoremap("<C-e>", function() require("harpoon.ui").toggle_quick_menu() end)
|
require "telescope".extensions.egrepify.egrepify { sorting_strategy = 'ascending' }
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<C-p>", function()
|
||||||
|
builtin.find_files()
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<Leader>ff", function()
|
||||||
|
require('telescope').extensions.smart_open.smart_open({cwd_only = true})
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<Leader>fh", function()
|
||||||
|
builtin.find_files{cwd=vim.fn.expand('%:p:h')}
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<leader>gw", function()
|
||||||
|
builtin.grep_string { search = vim.fn.expand("<cword>") }
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<leader>fb", function()
|
||||||
|
builtin.buffers()
|
||||||
|
end)
|
||||||
|
|
||||||
|
nnoremap("<leader>gc", function()
|
||||||
|
builtin.git_branches()
|
||||||
|
end)
|
||||||
|
|
||||||
nnoremap("<C-h>", function() require("harpoon.ui").nav_file(1) end)
|
|
||||||
nnoremap("<C-t>", function() require("harpoon.ui").nav_file(2) end)
|
|
||||||
nnoremap("<C-n>", function() require("harpoon.ui").nav_file(3) end)
|
|
||||||
nnoremap("<C-s>", function() require("harpoon.ui").nav_file(4) end)
|
|
||||||
|
|
||||||
|
@@ -6,10 +6,16 @@ local Remap = require("halfdan.keymap")
|
|||||||
local nnoremap = Remap.nnoremap
|
local nnoremap = Remap.nnoremap
|
||||||
local inoremap = Remap.inoremap
|
local inoremap = Remap.inoremap
|
||||||
|
|
||||||
vim.fn.sign_define("DiagnosticSignError", {text = "", texthl = "DiagnosticSignError"})
|
vim.diagnostic.config({
|
||||||
vim.fn.sign_define("DiagnosticSignWarn", {text = "", texthl = "DiagnosticSignWarn"})
|
signs = {
|
||||||
vim.fn.sign_define("DiagnosticSignInfo", {text = "", texthl = "DiagnosticSignInfo"})
|
text = {
|
||||||
-- vim.fn.sign_define("DiagnosticSignHint", {text = "", texthl = "DiagnosticSignHint"})
|
[vim.diagnostic.severity.ERROR] = "",
|
||||||
|
[vim.diagnostic.severity.WARN] = "",
|
||||||
|
[vim.diagnostic.severity.INFO] = "",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
-- Set Default Prefix.
|
-- Set Default Prefix.
|
||||||
-- Note: You can set a prefix per lsp server in the lv-globals.lua file
|
-- Note: You can set a prefix per lsp server in the lv-globals.lua file
|
||||||
@@ -80,15 +86,13 @@ vim.lsp.protocol.CompletionItemKind = {
|
|||||||
|
|
||||||
|
|
||||||
-- Diagnostic keymaps
|
-- Diagnostic keymaps
|
||||||
vim.api.nvim_set_keymap('n', '<leader>e', '<cmd>Lspsaga show_line_diagnostics<CR>', { noremap = true, silent = true })
|
-- Show Lspsaga line diagnostics
|
||||||
vim.api.nvim_set_keymap('n', '<leader>q', '<cmd>lua vim.diagnostic.setloclist()<CR>', { noremap = true, silent = true })
|
vim.keymap.set('n', '<leader>e', '<cmd>Lspsaga show_line_diagnostics<CR>', { noremap = true, silent = true })
|
||||||
|
|
||||||
-- LSP settings
|
-- Send diagnostics to location list
|
||||||
local lsp_status = require('lsp-status')
|
vim.keymap.set('n', '<leader>q', function()
|
||||||
lsp_status.register_progress()
|
vim.diagnostic.setloclist()
|
||||||
|
end, { noremap = true, silent = true })
|
||||||
local lspconfig = require 'lspconfig'
|
|
||||||
local configs = require 'lspconfig.configs'
|
|
||||||
|
|
||||||
-- Global mappings.
|
-- Global mappings.
|
||||||
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
|
||||||
@@ -128,113 +132,53 @@ vim.api.nvim_create_autocmd('LspAttach', {
|
|||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
local on_attach = function(client, bufnr)
|
vim.lsp.config("lua_ls", {
|
||||||
nnoremap("gd", "<cmd>Lspsaga peek_definition<CR>")
|
|
||||||
nnoremap("<leader>gd", function ()
|
|
||||||
vim.lsp.buf.definition()
|
|
||||||
end)
|
|
||||||
nnoremap("gD", function() vim.lsp.buf.declaration() end)
|
|
||||||
nnoremap("K", "<cmd>Lspsaga hover_doc<CR>")
|
|
||||||
nnoremap("gW", function() vim.lsp.buf.workspace_symbol() end)
|
|
||||||
nnoremap("<leader>vd", function() vim.diagnostic.open_float() end)
|
|
||||||
nnoremap("[d", "<cmd>Lspsaga diagnostic_jump_next<CR>")
|
|
||||||
nnoremap("]d", "<cmd>Lspsaga diagnostic_jump_prev<CR>")
|
|
||||||
nnoremap("<leader>ca", "<cmd>Lspsaga code_action<CR>")
|
|
||||||
nnoremap("gr", function() vim.lsp.buf.references() end)
|
|
||||||
nnoremap("<leader>rn", "<cmd>Lspsaga rename<CR>")
|
|
||||||
nnoremap("<leader>cl", function() vim.lsp.codelens.run() end)
|
|
||||||
nnoremap("<leader>fa", function() vim.lsp.buf.format{async = true} end)
|
|
||||||
inoremap("<C-h>", function() vim.lsp.buf.signature_help() end)
|
|
||||||
|
|
||||||
lsp_status.on_attach(client, bufnr)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function config(_config)
|
|
||||||
_config = vim.tbl_deep_extend("force", {
|
|
||||||
log_level = vim.lsp.protocol.MessageType.Log,
|
|
||||||
message_level = vim.lsp.protocol.MessageType.Log,
|
|
||||||
capabilities = require("cmp_nvim_lsp").default_capabilities(vim.lsp.protocol.make_client_capabilities()),
|
|
||||||
on_attach = on_attach,
|
|
||||||
}, _config or {})
|
|
||||||
|
|
||||||
-- Set default client capabilities plus window/workDoneProgress
|
|
||||||
_config.capabilities = vim.tbl_extend('keep', _config.capabilities or {}, lsp_status.capabilities)
|
|
||||||
|
|
||||||
return _config
|
|
||||||
end
|
|
||||||
|
|
||||||
-- Enable the following language servers
|
|
||||||
-- local servers = { 'gopls', 'julials', 'rust_analyzer', 'pyright' }
|
|
||||||
-- for _, lsp in ipairs(servers) do
|
|
||||||
-- lspconfig[lsp].setup(config())
|
|
||||||
-- end
|
|
||||||
|
|
||||||
require'lspconfig'.lua_ls.setup {
|
|
||||||
settings = {
|
settings = {
|
||||||
Lua = {
|
Lua = {
|
||||||
runtime = {
|
runtime = {
|
||||||
-- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim)
|
-- Tell the language server which version of Lua you're using
|
||||||
version = 'LuaJIT',
|
version = "LuaJIT",
|
||||||
},
|
},
|
||||||
diagnostics = {
|
diagnostics = {
|
||||||
-- Get the language server to recognize the `vim` global
|
-- Get the language server to recognize the `vim` global
|
||||||
globals = {'vim'},
|
globals = { "vim" },
|
||||||
},
|
},
|
||||||
workspace = {
|
workspace = {
|
||||||
-- Make the server aware of Neovim runtime files
|
-- Make the server aware of Neovim runtime files
|
||||||
library = vim.api.nvim_get_runtime_file("", true),
|
library = vim.api.nvim_get_runtime_file("", true),
|
||||||
},
|
},
|
||||||
-- Do not send telemetry data containing a randomized but unique identifier
|
|
||||||
telemetry = {
|
telemetry = {
|
||||||
|
-- Do not send telemetry data containing a randomized but unique identifier
|
||||||
enable = false,
|
enable = false,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
|
||||||
|
|
||||||
require('rust-tools').setup({
|
|
||||||
tools = {
|
|
||||||
runnables = {
|
|
||||||
use_telescope = true,
|
|
||||||
},
|
|
||||||
inlay_hints = {
|
|
||||||
auto = true,
|
|
||||||
parameter_hints_prefix = "",
|
|
||||||
other_hints_prefix = "",
|
|
||||||
}
|
|
||||||
},
|
|
||||||
server = {
|
|
||||||
on_attach = on_attach,
|
|
||||||
settings = {
|
|
||||||
["rust-analyzer"] = {
|
|
||||||
checkOnSave = {
|
|
||||||
command = "clippy",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
})
|
||||||
|
|
||||||
|
-- Enable it
|
||||||
|
vim.lsp.enable("lua_ls")
|
||||||
|
|
||||||
local lexical_config = {
|
vim.lsp.config('gopls', {
|
||||||
filetypes = { "elixir", "eelixir", "heex" },
|
cmd = { "gopls" },
|
||||||
cmd = { "/Users/halfdan/code/lexical/_build/dev/package/lexical/bin/start_lexical.sh" },
|
filetypes = { "go", "gomod", "gowork", "gotmpl" },
|
||||||
settings = {},
|
root_markers = { "go.work", "go.mod", ".git" },
|
||||||
}
|
settings = {
|
||||||
|
gopls = {
|
||||||
if not configs.lexical then
|
analyses = {
|
||||||
configs.lexical = {
|
unusedparams = true,
|
||||||
default_config = {
|
shadow = true,
|
||||||
filetypes = lexical_config.filetypes,
|
|
||||||
cmd = lexical_config.cmd,
|
|
||||||
root_dir = function(fname)
|
|
||||||
return lspconfig.util.root_pattern("mix.exs", ".git")(fname) or vim.loop.os_homedir()
|
|
||||||
end,
|
|
||||||
-- optional settings
|
|
||||||
settings = lexical_config.settings,
|
|
||||||
},
|
},
|
||||||
}
|
staticcheck = true,
|
||||||
end
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
lspconfig.lexical.setup({})
|
vim.lsp.enable 'gopls'
|
||||||
|
|
||||||
|
vim.lsp.config('expert', {
|
||||||
|
cmd = { 'expert' },
|
||||||
|
root_markers = { 'mix.exs', '.git' },
|
||||||
|
filetypes = { 'elixir', 'eelixir', 'heex' },
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.lsp.enable 'expert'
|
||||||
|
@@ -1,51 +0,0 @@
|
|||||||
if vim.g.vscode then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local function get_file_name(include_path)
|
|
||||||
local file_name = require('lspsaga.symbolwinbar').get_file_name()
|
|
||||||
if vim.fn.bufname '%' == '' then return '' end
|
|
||||||
if include_path == false then return file_name end
|
|
||||||
-- Else if include path: ./lsp/saga.lua -> lsp > saga.lua
|
|
||||||
local sep = vim.loop.os_uname().sysname == 'Windows' and '\\' or '/'
|
|
||||||
local path_list = vim.split(string.gsub(vim.fn.expand '%:~:.:h', '%%', ''), sep)
|
|
||||||
local file_path = ''
|
|
||||||
for _, cur in ipairs(path_list) do
|
|
||||||
file_path = (cur == '.' or cur == '~') and '' or
|
|
||||||
file_path .. cur .. ' ' .. '%#LspSagaWinbarSep#>%*' .. ' %*'
|
|
||||||
end
|
|
||||||
return file_path .. file_name
|
|
||||||
end
|
|
||||||
|
|
||||||
local function config_winbar()
|
|
||||||
local exclude = {
|
|
||||||
['teminal'] = true,
|
|
||||||
['toggleterm'] = true,
|
|
||||||
['prompt'] = true,
|
|
||||||
['NvimTree'] = true,
|
|
||||||
['help'] = true,
|
|
||||||
} -- Ignore float windows and exclude filetype
|
|
||||||
if vim.api.nvim_win_get_config(0).zindex or exclude[vim.bo.filetype] then
|
|
||||||
vim.wo.winbar = ''
|
|
||||||
else
|
|
||||||
local ok, lspsaga = pcall(require, 'lspsaga.symbolwinbar')
|
|
||||||
local sym
|
|
||||||
if ok then sym = lspsaga.get_symbol_node() end
|
|
||||||
local win_val = ''
|
|
||||||
win_val = get_file_name(true) -- set to true to include path
|
|
||||||
if sym ~= nil then win_val = win_val .. sym end
|
|
||||||
vim.wo.winbar = win_val
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- local events = { 'BufEnter', 'BufWinEnter', 'CursorMoved' }
|
|
||||||
--
|
|
||||||
-- vim.api.nvim_create_autocmd(events, {
|
|
||||||
-- pattern = '*',
|
|
||||||
-- callback = function() config_winbar() end,
|
|
||||||
-- })
|
|
||||||
--
|
|
||||||
-- vim.api.nvim_create_autocmd('User', {
|
|
||||||
-- pattern = 'LspsagaUpdateSymbol',
|
|
||||||
-- callback = function() config_winbar() end,
|
|
||||||
-- })
|
|
@@ -4,6 +4,17 @@ end
|
|||||||
|
|
||||||
local nnoremap = require('halfdan.keymap').nnoremap
|
local nnoremap = require('halfdan.keymap').nnoremap
|
||||||
local neotest = require('neotest')
|
local neotest = require('neotest')
|
||||||
|
local neotest_ns = vim.api.nvim_create_namespace("neotest")
|
||||||
|
|
||||||
|
vim.diagnostic.config({
|
||||||
|
virtual_text = {
|
||||||
|
format = function(diagnostic)
|
||||||
|
local message =
|
||||||
|
diagnostic.message:gsub("\n", " "):gsub("\t", " "):gsub("%s+", " "):gsub("^%s+", "")
|
||||||
|
return message
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}, neotest_ns)
|
||||||
|
|
||||||
neotest.setup({
|
neotest.setup({
|
||||||
log_level = vim.log.levels.DEBUG,
|
log_level = vim.log.levels.DEBUG,
|
||||||
@@ -14,6 +25,7 @@ neotest.setup({
|
|||||||
}),
|
}),
|
||||||
require("neotest-rust"),
|
require("neotest-rust"),
|
||||||
-- require("neotest-vim-test")({ allow_file_types = { "haskell"} }),
|
-- require("neotest-vim-test")({ allow_file_types = { "haskell"} }),
|
||||||
|
require("neotest-golang")
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -1,16 +0,0 @@
|
|||||||
if vim.g.vscode then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local ok, nls = pcall(require, 'null-ls')
|
|
||||||
|
|
||||||
if not ok then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
nls.setup({
|
|
||||||
sources = {
|
|
||||||
nls.builtins.formatting.stylua,
|
|
||||||
nls.builtins.diagnostics.credo,
|
|
||||||
},
|
|
||||||
})
|
|
@@ -2,11 +2,11 @@ if vim.g.vscode then
|
|||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
vim.cmd([[
|
-- Sneak
|
||||||
let g:sneak#label = 1
|
vim.g["sneak#label"] = 1
|
||||||
let g:sneak#prompt = '🔎'
|
vim.g["sneak#prompt"] = "🔎"
|
||||||
let g:sneak#s_next = 1
|
vim.g["sneak#s_next"] = 1
|
||||||
|
|
||||||
let test#strategy = "neovim"
|
-- Vim-Test
|
||||||
let test#neovim#term_position = "vert rightbelow 80"
|
vim.g["test#strategy"] = "neovim"
|
||||||
]])
|
vim.g["test#neovim#term_position"] = "vert rightbelow 80"
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
vim.g.tagbar_ctags_bin = '/usr/local/bin/ctags'
|
|
@@ -1,49 +0,0 @@
|
|||||||
if vim.g.vscode then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
local Remap = require("halfdan.keymap")
|
|
||||||
local nnoremap = Remap.nnoremap
|
|
||||||
local builtin = require("telescope.builtin")
|
|
||||||
|
|
||||||
nnoremap("<leader>gg", function()
|
|
||||||
builtin.live_grep()
|
|
||||||
end)
|
|
||||||
nnoremap("<C-p>", function()
|
|
||||||
builtin.commands()
|
|
||||||
end)
|
|
||||||
|
|
||||||
nnoremap("<Leader>ff", function()
|
|
||||||
require('telescope').extensions.smart_open.smart_open({cwd_only = true})
|
|
||||||
-- builtin.find_files({
|
|
||||||
-- hidden=true,
|
|
||||||
-- })
|
|
||||||
end)
|
|
||||||
nnoremap("<Leader>fh", function()
|
|
||||||
builtin.find_files{cwd=vim.fn.expand('%:p:h')}
|
|
||||||
end)
|
|
||||||
|
|
||||||
nnoremap("<Leader>fs", function()
|
|
||||||
builtin.lsp_workspace_symbols()
|
|
||||||
end)
|
|
||||||
nnoremap("<leader>gw", function()
|
|
||||||
builtin.grep_string { search = vim.fn.expand("<cword>") }
|
|
||||||
end)
|
|
||||||
nnoremap("<leader>fb", function()
|
|
||||||
builtin.buffers()
|
|
||||||
end)
|
|
||||||
nnoremap("<leader>vh", function()
|
|
||||||
builtin.help_tags()
|
|
||||||
end)
|
|
||||||
|
|
||||||
nnoremap("<leader>wc", function()
|
|
||||||
require('telescope').extensions.git_worktree.create_git_worktree()
|
|
||||||
end)
|
|
||||||
nnoremap("<leader>ws", function()
|
|
||||||
require('telescope').extensions.git_worktree.git_worktrees()
|
|
||||||
end)
|
|
||||||
nnoremap("<leader>gc", function()
|
|
||||||
builtin.git_branches()
|
|
||||||
end)
|
|
||||||
|
|
||||||
|
|
@@ -1,63 +1,68 @@
|
|||||||
{
|
{
|
||||||
"Comment.nvim": { "branch": "master", "commit": "0236521ea582747b58869cb72f70ccfa967d2e89" },
|
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||||
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
"FTerm.nvim": { "branch": "master", "commit": "d1320892cc2ebab472935242d9d992a2c9570180" },
|
||||||
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
|
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
|
||||||
"cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" },
|
"bufferline.nvim": { "branch": "main", "commit": "655133c3b4c3e5e05ec549b9f8cc2894ac6f51b3" },
|
||||||
"cmp-cmdline": { "branch": "main", "commit": "8ee981b4a91f536f52add291594e89fb6645e451" },
|
"cmp-buffer": { "branch": "main", "commit": "b74fab3656eea9de20a9b8116afa3cfc4ec09657" },
|
||||||
"cmp-git": { "branch": "main", "commit": "f900a4cf117300fdc3ba31d26f8b6223ccd9c574" },
|
"cmp-cmdline": { "branch": "main", "commit": "d126061b624e0af6c3a556428712dd4d4194ec6d" },
|
||||||
"cmp-nvim-lsp": { "branch": "main", "commit": "5af77f54de1b16c34b23cba810150689a3a90312" },
|
"cmp-git": { "branch": "main", "commit": "b24309c386c9666c549a1abaedd4956541676d06" },
|
||||||
|
"cmp-nvim-lsp": { "branch": "main", "commit": "bd5a7d6db125d4654b50eeae9f5217f24bb22fd3" },
|
||||||
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||||
"cmp-path": { "branch": "main", "commit": "91ff86cd9c29299a64f968ebb45846c485725f23" },
|
"cmp-path": { "branch": "main", "commit": "c642487086dbd9a93160e1679a1327be111cbc25" },
|
||||||
"diffview.nvim": { "branch": "main", "commit": "3dc498c9777fe79156f3d32dddd483b8b3dbd95f" },
|
"diffview.nvim": { "branch": "main", "commit": "4516612fe98ff56ae0415a259ff6361a89419b0a" },
|
||||||
"editorconfig-vim": { "branch": "master", "commit": "95cb75e21d11206dad4bd3895c99459bdaa13dd1" },
|
"editorconfig-vim": { "branch": "master", "commit": "6a58b7c11f79c0e1d0f20533b3f42f2a11490cf8" },
|
||||||
"elixir-tools.nvim": { "branch": "main", "commit": "6f1138f754ffded9979ffb4520fede8dea233ccc" },
|
"fzf-lua": { "branch": "main", "commit": "c2d9b8693792c6dd810162d9e8c90782cec19404" },
|
||||||
"git-worktree.nvim": { "branch": "master", "commit": "f247308e68dab9f1133759b05d944569ad054546" },
|
"git-blame.nvim": { "branch": "master", "commit": "9874ec1ec8bc53beb33b7cd82c092b85271a578b" },
|
||||||
"gruvbox": { "branch": "master", "commit": "78112ab9ec270e4cd886ec6d5c58d887ece282de" },
|
"gruvbox-baby": { "branch": "main", "commit": "bd52e62d8134647090108189e69c8b3cd18bdbbf" },
|
||||||
"gruvbox-baby": { "branch": "main", "commit": "be47338877e0536360290d66d26854e90dbc0004" },
|
"hardtime.nvim": { "branch": "main", "commit": "6d7664d5bdfaea44c5f50b29f5239fab7b00c273" },
|
||||||
"harpoon": { "branch": "master", "commit": "867e212ac153e793f95b316d1731f3ca1894625e" },
|
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||||
"lazy.nvim": { "branch": "main", "commit": "96584866b9c5e998cbae300594d0ccfd0c464627" },
|
|
||||||
"lsp-status.nvim": { "branch": "master", "commit": "54f48eb5017632d81d0fd40112065f1d062d0629" },
|
"lsp-status.nvim": { "branch": "master", "commit": "54f48eb5017632d81d0fd40112065f1d062d0629" },
|
||||||
"lspkind.nvim": { "branch": "master", "commit": "57610d5ab560c073c465d6faf0c19f200cb67e6e" },
|
"lspkind.nvim": { "branch": "master", "commit": "d79a1c3299ad0ef94e255d045bed9fa26025dab6" },
|
||||||
"lspsaga.nvim": { "branch": "main", "commit": "68d42e24295b4254fdf82a8a686fcf951f8a8d9a" },
|
"lspsaga.nvim": { "branch": "main", "commit": "8efe00d6aed9db6449969f889170f1a7e43101a1" },
|
||||||
"lualine.nvim": { "branch": "master", "commit": "2248ef254d0a1488a72041cfb45ca9caada6d994" },
|
"lua-utils.nvim": { "branch": "main", "commit": "e565749421f4bbb5d2e85e37c3cef9d56553d8bd" },
|
||||||
"monokai-pro.nvim": { "branch": "main", "commit": "8ba1fea7774e7c522b006091a9adb32b5cef95b9" },
|
"lualine.nvim": { "branch": "master", "commit": "b8c23159c0161f4b89196f74ee3a6d02cdc3a955" },
|
||||||
"neo-tree.nvim": { "branch": "v3.x", "commit": "230ff118613fa07138ba579b89d13ec2201530b9" },
|
"neo-tree.nvim": { "branch": "v3.x", "commit": "f1deac7ecec88c28a250d890ba7bb35843e69cbd" },
|
||||||
"neogit": { "branch": "master", "commit": "37d5d9f94ef4ecee62202876bc5f1bc0738062a6" },
|
"neogit": { "branch": "master", "commit": "6617978288d58eb121754b5dd890e893d9a7e8d6" },
|
||||||
"neotest": { "branch": "master", "commit": "8782d83869c64700fa419bd5278f4f62c80a2c1a" },
|
"neorg": { "branch": "main", "commit": "e206c9642f4a115cd836e76c98ef785623d335bc" },
|
||||||
"neotest-elixir": { "branch": "master", "commit": "3117ca5442c02998847131c39551b76a6ceac9d7" },
|
"neorg-telescope": { "branch": "main", "commit": "7fb6ca6a632c3c095601d379a664c0c1f802dc6c" },
|
||||||
"neotest-rust": { "branch": "main", "commit": "48c1e146ed0eb775fef6aca75903baf3cedadc01" },
|
"neoscroll.nvim": { "branch": "master", "commit": "f957373912e88579e26fdaea4735450ff2ef5c9c" },
|
||||||
|
"neotest": { "branch": "master", "commit": "2cf3544fb55cdd428a9a1b7154aea9c9823426e8" },
|
||||||
|
"neotest-elixir": { "branch": "master", "commit": "a242aebeaa6997c1c149138ff77f6cacbe33b6fc" },
|
||||||
|
"neotest-golang": { "branch": "main", "commit": "0ada81e50429a071cc7d349301762e4ee04dcb2a" },
|
||||||
|
"neotest-rust": { "branch": "main", "commit": "2c9941d4a358839918fac21d20fc8fef0e1ad05f" },
|
||||||
"neotest-vim-test": { "branch": "master", "commit": "75c4228882ae4883b11bfce9b8383e637eb44192" },
|
"neotest-vim-test": { "branch": "master", "commit": "75c4228882ae4883b11bfce9b8383e637eb44192" },
|
||||||
"nui.nvim": { "branch": "main", "commit": "c9b4de623d19a85b353ff70d2ae9c77143abe69c" },
|
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||||
"null-ls.nvim": { "branch": "main", "commit": "0010ea927ab7c09ef0ce9bf28c2b573fc302f5a7" },
|
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||||
"nvim-cmp": { "branch": "main", "commit": "41d7633e4146dce1072de32cea31ee31b056a131" },
|
"nvim-dap": { "branch": "master", "commit": "7523676a4be17644587aa47e4d42f6f7646d4727" },
|
||||||
"nvim-dap": { "branch": "master", "commit": "bbe2c6f3438542a37cc2141a8e385f7dfe07d87d" },
|
"nvim-dap-ui": { "branch": "master", "commit": "cf91d5e2d07c72903d052f5207511bf7ecdb7122" },
|
||||||
"nvim-dap-ui": { "branch": "master", "commit": "34160a7ce6072ef332f350ae1d4a6a501daf0159" },
|
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "57f1dbd0458dd84a286b27768c142e1567f3ce3b" },
|
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||||
"nvim-lsp-installer": { "branch": "main", "commit": "17e0bfa5f2c8854d1636fcd036dc8284db136baa" },
|
"nvim-notify": { "branch": "master", "commit": "8701bece920b38ea289b457f902e2ad184131a5d" },
|
||||||
"nvim-lspconfig": { "branch": "master", "commit": "bd405e45c5fb122c16af8f87fa2dd7ab1981b243" },
|
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||||
"nvim-notify": { "branch": "master", "commit": "e4a2022f4fec2d5ebc79afa612f96d8b11c627b3" },
|
"nvim-treesitter-textobjects": { "branch": "master", "commit": "71385f191ec06ffc60e80e6b0c9a9d5daed4824c" },
|
||||||
"nvim-treesitter": { "branch": "master", "commit": "b6b9ca448b7f236e2e60f8393a729902511f9db9" },
|
"nvim-web-devicons": { "branch": "master", "commit": "6e51ca170563330e063720449c21f43e27ca0bc1" },
|
||||||
"nvim-treesitter-textobjects": { "branch": "master", "commit": "ec1c5bdb3d87ac971749fa6c7dbc2b14884f1f6a" },
|
"outline.nvim": { "branch": "main", "commit": "6b62f73a6bf317531d15a7ae1b724e85485d8148" },
|
||||||
"nvim-web-devicons": { "branch": "master", "commit": "8b2e5ef9eb8a717221bd96cb8422686d65a09ed5" },
|
"pathlib.nvim": { "branch": "main", "commit": "57e5598af6fe253761c1b48e0b59b7cd6699e2c1" },
|
||||||
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
|
"playground": { "branch": "master", "commit": "ba48c6a62a280eefb7c85725b0915e021a1a0749" },
|
||||||
"plenary.nvim": { "branch": "master", "commit": "55d9fe89e33efd26f532ef20223e5f9430c8b0c0" },
|
"plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" },
|
||||||
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
"popup.nvim": { "branch": "master", "commit": "b7404d35d5d3548a82149238289fa71f7f6de4ac" },
|
||||||
"rust-tools.nvim": { "branch": "master", "commit": "0cc8adab23117783a0292a0c8a2fbed1005dc645" },
|
"rose-pine": { "branch": "main", "commit": "72a04c4065345b51b56aed4859ea1d884f734097" },
|
||||||
"rust.vim": { "branch": "master", "commit": "889b9a7515db477f4cb6808bef1769e53493c578" },
|
"rust.vim": { "branch": "master", "commit": "889b9a7515db477f4cb6808bef1769e53493c578" },
|
||||||
"smart-open.nvim": { "branch": "0.2.x", "commit": "026091fe7f9b283aa1f5f4bb8c56aa5bcad43dbd" },
|
"rustaceanvim": { "branch": "master", "commit": "12504405821c05874d2d1f6b5ec919f9808e2c99" },
|
||||||
"sqlite.lua": { "branch": "master", "commit": "b7e28c8463254c46a8e61c52d27d6a2040492fc3" },
|
"smart-open.nvim": { "branch": "0.2.x", "commit": "560d8f16e17977c8303db6f9660db58a4415ca41" },
|
||||||
"symbols-outline.nvim": { "branch": "master", "commit": "512791925d57a61c545bc303356e8a8f7869763c" },
|
"sqlite.lua": { "branch": "master", "commit": "50092d60feb242602d7578398c6eb53b4a8ffe7b" },
|
||||||
"tagbar": { "branch": "master", "commit": "5d6990e4fc5b3e3b88a3af90146f2561c4f6d828" },
|
"telescope-dap.nvim": { "branch": "master", "commit": "783366bd6c1e7fa0a5c59c07db37f49c805a28df" },
|
||||||
"telescope-dap.nvim": { "branch": "master", "commit": "4e2d5efb92062f0b865fe59b200b5ed7793833bf" },
|
"telescope-egrepify.nvim": { "branch": "master", "commit": "8da5e3ba5faf3bdd6bbfaccb3eb3b8e7ebf9b131" },
|
||||||
"telescope-fzf-native.nvim": { "branch": "main", "commit": "6c921ca12321edaa773e324ef64ea301a1d0da62" },
|
"telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" },
|
||||||
"telescope.nvim": { "branch": "master", "commit": "6213322ab56eb27356fdc09a5078e41e3ea7f3bc" },
|
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
|
||||||
"vim-dispatch": { "branch": "master", "commit": "6cc2691576f97d43f8751664d1a1a908b99927e5" },
|
"toggleterm.nvim": { "branch": "main", "commit": "50ea089fc548917cc3cc16b46a8211833b9e3c7c" },
|
||||||
"vim-easy-align": { "branch": "master", "commit": "12dd6316974f71ce333e360c0260b4e1f81169c3" },
|
"vim-dispatch": { "branch": "master", "commit": "a2ff28abdb2d89725192db5b8562977d392a4d3f" },
|
||||||
"vim-fugitive": { "branch": "master", "commit": "46eaf8918b347906789df296143117774e827616" },
|
"vim-easy-align": { "branch": "master", "commit": "9815a55dbcd817784458df7a18acacc6f82b1241" },
|
||||||
"vim-gitgutter": { "branch": "main", "commit": "4b49965897b8264cd6f90fa47ddb917f4296c469" },
|
"vim-fugitive": { "branch": "master", "commit": "61b51c09b7c9ce04e821f6cf76ea4f6f903e3cf4" },
|
||||||
"vim-highlightedyank": { "branch": "master", "commit": "fa3f57b097e9521ce41a66b6c7cf5d9adea70ea3" },
|
"vim-gitgutter": { "branch": "main", "commit": "488c0555e47e2aabe273c635f7dd233e985311a6" },
|
||||||
"vim-projectionist": { "branch": "master", "commit": "e292c4e33b2c44074c47c06e8ce8b309fd8099bc" },
|
"vim-highlightedyank": { "branch": "master", "commit": "285a61425e79742997bbde76a91be6189bc988fb" },
|
||||||
"vim-sneak": { "branch": "master", "commit": "29ec9167d4a609f74c130b46265aa17eb2736e6a" },
|
"vim-projectionist": { "branch": "master", "commit": "5ff7bf79a6ef741036d2038a226bcb5f8b1cd296" },
|
||||||
|
"vim-sneak": { "branch": "master", "commit": "18b1faf020e6a66c1ce09b3ff5e6b6feb182973b" },
|
||||||
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
"vim-surround": { "branch": "master", "commit": "3d188ed2113431cf8dac77be61b842acb64433d9" },
|
||||||
"vim-test": { "branch": "master", "commit": "84373ffca386edd667e09f2bf1024b1de7bdfdf1" }
|
"vim-test": { "branch": "master", "commit": "5ee3c0b3734eab612b9f70bbc8a4f69f17f8e8ef" }
|
||||||
}
|
}
|
@@ -1 +1,10 @@
|
|||||||
|
local vim = vim
|
||||||
|
local api = vim.api
|
||||||
|
|
||||||
vim.cmd([[autocmd TermOpen * setlocal nonumber norelativenumber]])
|
vim.cmd([[autocmd TermOpen * setlocal nonumber norelativenumber]])
|
||||||
|
|
||||||
|
local format_group = api.nvim_create_augroup("FormatGroup", { clear = true })
|
||||||
|
api.nvim_create_autocmd(
|
||||||
|
{ "BufWinEnter", "BufReadPost" },
|
||||||
|
{ pattern = "*", command = "normal zR", group = format_group }
|
||||||
|
)
|
||||||
|
@@ -6,7 +6,6 @@ local source_mapping = {
|
|||||||
nvim_lsp = "[LSP]",
|
nvim_lsp = "[LSP]",
|
||||||
nvim_lua = "[Lua]",
|
nvim_lua = "[Lua]",
|
||||||
path = "[Path]",
|
path = "[Path]",
|
||||||
jira = "[Jira]",
|
|
||||||
}
|
}
|
||||||
|
|
||||||
local has_words_before = function()
|
local has_words_before = function()
|
||||||
@@ -21,23 +20,24 @@ cmp.setup({
|
|||||||
snippet = {
|
snippet = {
|
||||||
expand = function(args)
|
expand = function(args)
|
||||||
vim.snippet.expand(args.body)
|
vim.snippet.expand(args.body)
|
||||||
end
|
end,
|
||||||
},
|
},
|
||||||
mapping = {
|
mapping = {
|
||||||
['<C-p>'] = cmp.mapping(cmp.mapping.select_prev_item(), { 'i', 'c' }),
|
["<C-p>"] = cmp.mapping.select_prev_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
['<C-n>'] = cmp.mapping(cmp.mapping.select_next_item(), { 'i', 'c' }),
|
["<C-n>"] = cmp.mapping.select_next_item({ behavior = cmp.SelectBehavior.Insert }),
|
||||||
['<C-d>'] = cmp.mapping.scroll_docs(-4),
|
["<C-d>"] = cmp.mapping.scroll_docs(-4),
|
||||||
['<C-f>'] = cmp.mapping.scroll_docs(4),
|
["<C-f>"] = cmp.mapping.scroll_docs(4),
|
||||||
['<C-Space>'] = cmp.mapping.complete(),
|
["<C-Space>"] = cmp.mapping.complete(),
|
||||||
['<C-e>'] = cmp.mapping.close(),
|
["<C-e>"] = cmp.mapping.close(),
|
||||||
['<CR>'] = cmp.mapping.confirm {
|
["<CR>"] = cmp.mapping.confirm {
|
||||||
behavior = cmp.ConfirmBehavior.Replace,
|
behavior = cmp.ConfirmBehavior.Replace,
|
||||||
select = false, -- only replace if explicitly selected
|
select = false, -- only confirm if explicitly selected
|
||||||
},
|
},
|
||||||
|
|
||||||
["<Tab>"] = cmp.mapping(function(fallback)
|
["<Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_next_item()
|
cmp.select_next_item()
|
||||||
elseif vim.snippet.jumpable(1) then
|
elseif vim.snippet.active({ direction = 1 }) then
|
||||||
vim.snippet.jump(1)
|
vim.snippet.jump(1)
|
||||||
elseif has_words_before() then
|
elseif has_words_before() then
|
||||||
cmp.complete()
|
cmp.complete()
|
||||||
@@ -49,32 +49,33 @@ cmp.setup({
|
|||||||
["<S-Tab>"] = cmp.mapping(function(fallback)
|
["<S-Tab>"] = cmp.mapping(function(fallback)
|
||||||
if cmp.visible() then
|
if cmp.visible() then
|
||||||
cmp.select_prev_item()
|
cmp.select_prev_item()
|
||||||
elseif vim.snippet.jumpable(-1) then
|
elseif vim.snippet.active({ direction = -1 }) then
|
||||||
vim.snippet.jump(-1)
|
vim.snippet.jump(-1)
|
||||||
else
|
else
|
||||||
fallback()
|
fallback()
|
||||||
end
|
end
|
||||||
end, { "i", "s" })
|
end, { "i", "s" }),
|
||||||
},
|
},
|
||||||
|
|
||||||
sources = cmp.config.sources({
|
sources = cmp.config.sources({
|
||||||
{ name = 'luasnip' },
|
{ name = "nvim_lsp" },
|
||||||
{ name = 'nvim_lsp' },
|
|
||||||
}, {
|
}, {
|
||||||
{ name = 'buffer'}
|
{ name = "buffer" },
|
||||||
}),
|
}),
|
||||||
|
|
||||||
formatting = {
|
formatting = {
|
||||||
format = function(entry, vim_item)
|
format = function(entry, vim_item)
|
||||||
vim_item.kind = lspkind.presets.default[vim_item.kind]
|
vim_item.kind = lspkind.presets.default[vim_item.kind]
|
||||||
local menu = source_mapping[entry.source.name]
|
local menu = source_mapping[entry.source.name]
|
||||||
vim_item.menu = menu
|
vim_item.menu = menu
|
||||||
return vim_item
|
return vim_item
|
||||||
end
|
end,
|
||||||
},
|
},
|
||||||
experimental = {
|
|
||||||
ghost_text = false,
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
|
experimental = {
|
||||||
|
ghost_text = true,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
-- Use buffer source for `/` (if you enabled `native_menu`, this won't work anymore).
|
||||||
cmp.setup.cmdline({ '/', '?' }, {
|
cmp.setup.cmdline({ '/', '?' }, {
|
||||||
|
@@ -1,5 +1,2 @@
|
|||||||
vim.cmd('let g:nvcode_termcolors=256')
|
vim.g.nvcode_termcolors = 256
|
||||||
|
vim.cmd.colorscheme("gruvbox-baby")
|
||||||
vim.cmd('colorscheme ' .. O.colorscheme)
|
|
||||||
|
|
||||||
-- vim.cmd('highlight Normal guibg=NONE ctermbg=NONE')
|
|
||||||
|
@@ -6,7 +6,7 @@ O = {
|
|||||||
clipboard = 'unnamedplus',
|
clipboard = 'unnamedplus',
|
||||||
incsearch = true,
|
incsearch = true,
|
||||||
termguicolors = true,
|
termguicolors = true,
|
||||||
colorscheme = 'monokaipro',
|
colorscheme = 'monokai-pro',
|
||||||
hidden_files = true,
|
hidden_files = true,
|
||||||
wrap_lines = false,
|
wrap_lines = false,
|
||||||
number = true,
|
number = true,
|
||||||
|
125
.config/nvim/lua/halfdan/icons.lua
Normal file
125
.config/nvim/lua/halfdan/icons.lua
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
return {
|
||||||
|
diagnostics = {
|
||||||
|
error = "",
|
||||||
|
warn = "",
|
||||||
|
hint = "",
|
||||||
|
info = "",
|
||||||
|
},
|
||||||
|
git = {
|
||||||
|
added = "",
|
||||||
|
modified = "",
|
||||||
|
removed = "",
|
||||||
|
renamed = "➜",
|
||||||
|
untracked = "",
|
||||||
|
ignored = "",
|
||||||
|
unstaged = "U",
|
||||||
|
staged = "",
|
||||||
|
conflict = "",
|
||||||
|
deleted = "",
|
||||||
|
},
|
||||||
|
gitsigns = {
|
||||||
|
add = "┃",
|
||||||
|
change = "┋",
|
||||||
|
delete = "",
|
||||||
|
topdelhfe = "",
|
||||||
|
changedelete = "┃",
|
||||||
|
untracked = "┃",
|
||||||
|
},
|
||||||
|
kinds = {
|
||||||
|
Array = "",
|
||||||
|
Boolean = "",
|
||||||
|
Class = "",
|
||||||
|
Color = "",
|
||||||
|
Constant = "",
|
||||||
|
Constructor = "",
|
||||||
|
Copilot = "",
|
||||||
|
Enum = "",
|
||||||
|
EnumMember = "",
|
||||||
|
Event = "",
|
||||||
|
Field = "",
|
||||||
|
File = "",
|
||||||
|
Folder = "",
|
||||||
|
Function = "",
|
||||||
|
Interface = "",
|
||||||
|
Key = "",
|
||||||
|
Keyword = "",
|
||||||
|
Method = "",
|
||||||
|
Module = "",
|
||||||
|
Namespace = "",
|
||||||
|
Null = "",
|
||||||
|
Number = "",
|
||||||
|
Object = "",
|
||||||
|
Operator = "",
|
||||||
|
Package = "",
|
||||||
|
Property = "",
|
||||||
|
Reference = "",
|
||||||
|
Snippet = "",
|
||||||
|
String = "",
|
||||||
|
Struct = "",
|
||||||
|
Text = "",
|
||||||
|
TypeParameter = "",
|
||||||
|
Unit = "",
|
||||||
|
Value = "",
|
||||||
|
Variable = "",
|
||||||
|
Macro = "", -- Macro
|
||||||
|
},
|
||||||
|
borders = {
|
||||||
|
--- @class BorderIcons
|
||||||
|
single = {
|
||||||
|
top = "─",
|
||||||
|
right = "│",
|
||||||
|
bottom = "─",
|
||||||
|
left = "│",
|
||||||
|
top_left = "╭",
|
||||||
|
top_right = "╮",
|
||||||
|
bottom_right = "╯",
|
||||||
|
bottom_left = "╰",
|
||||||
|
},
|
||||||
|
double = {
|
||||||
|
top = '═',
|
||||||
|
right = "║",
|
||||||
|
bottom = '═',
|
||||||
|
left = "║",
|
||||||
|
top_left = "╔",
|
||||||
|
top_right = "╗",
|
||||||
|
bottom_right = "╝",
|
||||||
|
bottom_left = "╚",
|
||||||
|
},
|
||||||
|
--- @class BorderIcons
|
||||||
|
thin = {
|
||||||
|
top = "▔",
|
||||||
|
right = "▕",
|
||||||
|
bottom = "▁",
|
||||||
|
left = "▏",
|
||||||
|
top_left = "🭽",
|
||||||
|
top_right = "🭾",
|
||||||
|
bottom_right = "🭿",
|
||||||
|
bottom_left = "🭼",
|
||||||
|
},
|
||||||
|
---@type BorderIcons
|
||||||
|
empty = {
|
||||||
|
top = " ",
|
||||||
|
right = " ",
|
||||||
|
bottom = " ",
|
||||||
|
left = " ",
|
||||||
|
top_left = " ",
|
||||||
|
top_right = " ",
|
||||||
|
bottom_right = " ",
|
||||||
|
bottom_left = " ",
|
||||||
|
},
|
||||||
|
---@type BorderIcons
|
||||||
|
thick = {
|
||||||
|
top = "▄",
|
||||||
|
right = "█",
|
||||||
|
bottom = "▀",
|
||||||
|
left = "█",
|
||||||
|
top_left = "▄",
|
||||||
|
top_right = "▄",
|
||||||
|
bottom_right = "▀",
|
||||||
|
bottom_left = "▀",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
misc = {
|
||||||
|
codeium = " ",
|
||||||
|
},
|
||||||
|
}
|
@@ -4,15 +4,13 @@ if vim.g.vscode then
|
|||||||
-- VSCode extension
|
-- VSCode extension
|
||||||
else
|
else
|
||||||
-- ordinary Neovim
|
-- ordinary Neovim
|
||||||
vim.notify = require("notify")
|
|
||||||
require("halfdan.lazy")
|
require("halfdan.lazy")
|
||||||
|
vim.notify = require("notify")
|
||||||
|
|
||||||
require("halfdan.neogit")
|
require("halfdan.neogit")
|
||||||
-- require("halfdan.neorg")
|
-- require('halfdan.globals')
|
||||||
require('halfdan.globals')
|
|
||||||
require('halfdan.keymap')
|
require('halfdan.keymap')
|
||||||
require('halfdan.cmp')
|
require('halfdan.cmp')
|
||||||
-- require('halfdan.luasnip')
|
|
||||||
require('halfdan.colorscheme')
|
require('halfdan.colorscheme')
|
||||||
require('halfdan.treesitter')
|
require('halfdan.treesitter')
|
||||||
require('halfdan.telescope')
|
require('halfdan.telescope')
|
||||||
|
@@ -16,5 +16,6 @@ M.nnoremap = bind("n")
|
|||||||
M.vnoremap = bind("v")
|
M.vnoremap = bind("v")
|
||||||
M.xnoremap = bind("x")
|
M.xnoremap = bind("x")
|
||||||
M.inoremap = bind("i")
|
M.inoremap = bind("i")
|
||||||
|
M.tnoremap = bind("t")
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
@@ -11,13 +11,36 @@ if not vim.loop.fs_stat(lazypath) then
|
|||||||
end
|
end
|
||||||
vim.opt.rtp:prepend(lazypath)
|
vim.opt.rtp:prepend(lazypath)
|
||||||
|
|
||||||
|
if vim.g.vscode then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
require("lazy").setup({
|
require("lazy").setup({
|
||||||
{'TimUntersberger/neogit', dependencies = {'sindrets/diffview.nvim' } },
|
{
|
||||||
|
"NeogitOrg/neogit",
|
||||||
|
dependencies = {
|
||||||
|
"nvim-lua/plenary.nvim", -- required
|
||||||
|
"nvim-telescope/telescope.nvim", -- optional
|
||||||
|
"sindrets/diffview.nvim", -- optional
|
||||||
|
"ibhagwan/fzf-lua", -- optional
|
||||||
|
},
|
||||||
|
config = true
|
||||||
|
},
|
||||||
{'airblade/vim-gitgutter'},
|
{'airblade/vim-gitgutter'},
|
||||||
|
|
||||||
-- Load .editorconfig files
|
-- Load .editorconfig files
|
||||||
{'editorconfig/editorconfig-vim'},
|
{'editorconfig/editorconfig-vim'},
|
||||||
|
|
||||||
|
{
|
||||||
|
"m4xshen/hardtime.nvim",
|
||||||
|
lazy = false,
|
||||||
|
dependencies = { "MunifTanjim/nui.nvim" },
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"karb94/neoscroll.nvim",
|
||||||
|
opts = {},
|
||||||
|
},
|
||||||
{'junegunn/vim-easy-align'},
|
{'junegunn/vim-easy-align'},
|
||||||
|
|
||||||
-- Goodies
|
-- Goodies
|
||||||
@@ -38,44 +61,112 @@ require("lazy").setup({
|
|||||||
{
|
{
|
||||||
"nvim-neotest/neotest",
|
"nvim-neotest/neotest",
|
||||||
dependencies = {
|
dependencies = {
|
||||||
|
"nvim-neotest/nvim-nio",
|
||||||
"nvim-lua/plenary.nvim",
|
"nvim-lua/plenary.nvim",
|
||||||
"nvim-treesitter/nvim-treesitter",
|
"nvim-treesitter/nvim-treesitter",
|
||||||
"antoinemadec/FixCursorHold.nvim",
|
"antoinemadec/FixCursorHold.nvim",
|
||||||
|
-- plugins
|
||||||
|
"fredrikaverpil/neotest-golang",
|
||||||
"jfpedroza/neotest-elixir",
|
"jfpedroza/neotest-elixir",
|
||||||
"rouge8/neotest-rust",
|
"rouge8/neotest-rust",
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{"nvim-neotest/neotest-vim-test" },
|
{"nvim-neotest/neotest-vim-test" },
|
||||||
|
{'akinsho/toggleterm.nvim', version = "*", config = function()
|
||||||
|
require('toggleterm').setup({
|
||||||
|
open_mapping = [[<C-\>]],
|
||||||
|
start_in_insert = true,
|
||||||
|
direction = "horizontal",
|
||||||
|
autochdir = false,
|
||||||
|
size = 20,
|
||||||
|
highlights = {
|
||||||
|
FloatBorder = { link = "ToggleTermBorder" },
|
||||||
|
Normal = { link = "ToggleTerm" },
|
||||||
|
NormalFloat = { link = "ToggleTerm" },
|
||||||
|
},
|
||||||
|
winbar = {
|
||||||
|
enabled = true,
|
||||||
|
name_formatter = function(term)
|
||||||
|
return term.name
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
})
|
||||||
|
end},
|
||||||
|
|
||||||
|
{'f-person/git-blame.nvim'},
|
||||||
{'preservim/tagbar'},
|
|
||||||
|
|
||||||
-- Status Line and Bufferline
|
-- Status Line and Bufferline
|
||||||
{
|
{
|
||||||
'nvim-lualine/lualine.nvim',
|
'nvim-lualine/lualine.nvim',
|
||||||
dependencies = {'kyazdani42/nvim-web-devicons'}
|
dependencies = {'kyazdani42/nvim-web-devicons'},
|
||||||
|
event = { "BufReadPost", "BufNewFile" },
|
||||||
|
opts = function()
|
||||||
|
local monokai_opts = require("halfdan.util").opts("monokai-pro.nvim")
|
||||||
|
return {
|
||||||
|
float = vim.tbl_contains(monokai_opts.background_clear or {}, "neo-tree"),
|
||||||
|
separator = "bubble", -- bubble | triangle
|
||||||
|
---@type any
|
||||||
|
colorful = true,
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
config = function(_, opts)
|
||||||
|
local lualine_config = require("halfdan.lualine")
|
||||||
|
lualine_config.setup(opts)
|
||||||
|
lualine_config.load()
|
||||||
|
end,
|
||||||
},
|
},
|
||||||
|
|
||||||
{'rcarriga/nvim-notify'},
|
{'rcarriga/nvim-notify'},
|
||||||
|
|
||||||
-- { "nvim-neorg/neorg" },
|
{
|
||||||
-- {'nvim-neorg/neorg-telescope'},
|
"nvim-neorg/neorg",
|
||||||
|
lazy = false, -- Disable lazy loading as some `lazy.nvim` distributions set `lazy = true` by default
|
||||||
|
version = "*", -- Pin Neorg to the latest stable release
|
||||||
|
config = function()
|
||||||
|
require('neorg').setup({
|
||||||
|
load = {
|
||||||
|
["core.defaults"] = {},
|
||||||
|
["core.dirman"] = {
|
||||||
|
config = {
|
||||||
|
workspaces = {
|
||||||
|
work = "~/org/work",
|
||||||
|
home = "~/org/home",
|
||||||
|
},
|
||||||
|
index = "index.norg",
|
||||||
|
}
|
||||||
|
},
|
||||||
|
["core.completion"] = {
|
||||||
|
config = {
|
||||||
|
engine = "nvim-cmp",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["core.concealer"] = {},
|
||||||
|
["core.journal"] = {
|
||||||
|
config = {
|
||||||
|
strategy = "flat",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
["core.integrations.telescope"] = {},
|
||||||
|
}
|
||||||
|
})
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
{'nvim-neorg/neorg-telescope'},
|
||||||
|
|
||||||
{'justinmk/vim-sneak'},
|
{'justinmk/vim-sneak'},
|
||||||
|
|
||||||
{'machakann/vim-highlightedyank'},
|
{'machakann/vim-highlightedyank'},
|
||||||
|
|
||||||
-- LSP / Language Server Protocol
|
|
||||||
{
|
|
||||||
'neovim/nvim-lspconfig',
|
|
||||||
'williamboman/nvim-lsp-installer',
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
{
|
||||||
'nvimdev/lspsaga.nvim',
|
'nvimdev/lspsaga.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
require('lspsaga').setup({})
|
require('lspsaga').setup({
|
||||||
|
symbol_in_winbar = {
|
||||||
|
enable = false,
|
||||||
|
},
|
||||||
|
lightbulb = {
|
||||||
|
enable = false,
|
||||||
|
}
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
dependencies = {
|
dependencies = {
|
||||||
'nvim-treesitter/nvim-treesitter', -- optional
|
'nvim-treesitter/nvim-treesitter', -- optional
|
||||||
@@ -99,16 +190,17 @@ require("lazy").setup({
|
|||||||
-- Used to display LSP status in Lualine
|
-- Used to display LSP status in Lualine
|
||||||
{'nvim-lua/lsp-status.nvim'},
|
{'nvim-lua/lsp-status.nvim'},
|
||||||
|
|
||||||
-- null-ls for a collection of LSP-like plugins
|
|
||||||
{
|
{
|
||||||
"jose-elias-alvarez/null-ls.nvim",
|
"hedyhli/outline.nvim",
|
||||||
config = function()
|
lazy = true,
|
||||||
require("null-ls").setup()
|
cmd = { "Outline", "OutlineOpen" },
|
||||||
end,
|
keys = { -- Example mapping to toggle outline
|
||||||
dependencies = { "nvim-lua/plenary.nvim" },
|
{ "<leader>o", "<cmd>Outline<CR>", desc = "Toggle outline" },
|
||||||
|
},
|
||||||
|
opts = {
|
||||||
|
-- Your setup opts here
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
{'simrat39/symbols-outline.nvim'},
|
|
||||||
{
|
{
|
||||||
'numToStr/Comment.nvim',
|
'numToStr/Comment.nvim',
|
||||||
config = function()
|
config = function()
|
||||||
@@ -119,6 +211,10 @@ require("lazy").setup({
|
|||||||
-- Telescope fuzzy find files/grep
|
-- Telescope fuzzy find files/grep
|
||||||
{'nvim-lua/popup.nvim'},
|
{'nvim-lua/popup.nvim'},
|
||||||
{'nvim-lua/plenary.nvim'},
|
{'nvim-lua/plenary.nvim'},
|
||||||
|
{
|
||||||
|
"fdschmidt93/telescope-egrepify.nvim",
|
||||||
|
dependencies = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" }
|
||||||
|
},
|
||||||
{'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
|
{'nvim-telescope/telescope-fzf-native.nvim', build = 'make' },
|
||||||
{'nvim-telescope/telescope.nvim'},
|
{'nvim-telescope/telescope.nvim'},
|
||||||
{'nvim-telescope/telescope-dap.nvim'},
|
{'nvim-telescope/telescope-dap.nvim'},
|
||||||
@@ -129,55 +225,87 @@ require("lazy").setup({
|
|||||||
},
|
},
|
||||||
|
|
||||||
{'numToStr/FTerm.nvim'},
|
{'numToStr/FTerm.nvim'},
|
||||||
{'theprimeagen/git-worktree.nvim'},
|
|
||||||
{'theprimeagen/harpoon'},
|
|
||||||
|
|
||||||
-- Debugging
|
-- Debugging
|
||||||
"mfussenegger/nvim-dap",
|
"mfussenegger/nvim-dap",
|
||||||
"rcarriga/nvim-dap-ui",
|
"rcarriga/nvim-dap-ui",
|
||||||
|
"nvim-neotest/nvim-nio",
|
||||||
"theHamsta/nvim-dap-virtual-text",
|
"theHamsta/nvim-dap-virtual-text",
|
||||||
|
|
||||||
-- => Language Support
|
-- => Language Support
|
||||||
{'rust-lang/rust.vim'},
|
{'rust-lang/rust.vim'},
|
||||||
{'simrat39/rust-tools.nvim'},
|
|
||||||
{
|
{
|
||||||
"elixir-tools/elixir-tools.nvim",
|
'mrcjkb/rustaceanvim',
|
||||||
version = "*",
|
version = '^6', -- Recommended
|
||||||
event = { "BufReadPre", "BufNewFile" },
|
lazy = false, -- This plugin is already lazy
|
||||||
-- config = function()
|
|
||||||
-- local elixir = require("elixir")
|
|
||||||
-- local elixirls = require("elixir.elixirls")
|
|
||||||
|
|
||||||
-- elixir.setup {
|
|
||||||
-- nextls = {enable = true},
|
|
||||||
-- credo = {},
|
|
||||||
-- elixirls = {
|
|
||||||
-- enable = false,
|
|
||||||
-- settings = elixirls.settings {
|
|
||||||
-- dialyzerEnabled = false,
|
|
||||||
-- enableTestLenses = false,
|
|
||||||
-- },
|
|
||||||
-- on_attach = function(client, bufnr)
|
|
||||||
-- vim.keymap.set("n", "<space>fp", ":ElixirFromPipe<cr>", { buffer = true, noremap = true })
|
|
||||||
-- vim.keymap.set("n", "<space>tp", ":ElixirToPipe<cr>", { buffer = true, noremap = true })
|
|
||||||
-- vim.keymap.set("v", "<space>em", ":ElixirExpandMacro<cr>", { buffer = true, noremap = true })
|
|
||||||
-- end,
|
|
||||||
-- }
|
|
||||||
-- }
|
|
||||||
-- end,
|
|
||||||
dependencies = {
|
|
||||||
"nvim-lua/plenary.nvim",
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
{'tpope/vim-projectionist'},
|
{'tpope/vim-projectionist'},
|
||||||
-- themes & colorschemes
|
|
||||||
{'gruvbox-community/gruvbox'},
|
|
||||||
{'luisiacc/gruvbox-baby'},
|
|
||||||
{
|
|
||||||
'https://gitlab.com/__tpb/monokai-pro.nvim',
|
|
||||||
as = 'monokai-pro.nvim'
|
|
||||||
},
|
|
||||||
|
|
||||||
|
-- themes & colorschemes
|
||||||
|
{ "rose-pine/neovim", name = "rose-pine" },
|
||||||
|
{'luisiacc/gruvbox-baby'},
|
||||||
|
{'akinsho/bufferline.nvim', version = "*", dependencies = 'nvim-tree/nvim-web-devicons',
|
||||||
|
keys = {
|
||||||
|
{ "<C-1>", "<Cmd>BufferLineGoToBuffer 1<CR>", desc = "Go to buffer 1" },
|
||||||
|
{ "<C-2>", "<Cmd>BufferLineGoToBuffer 2<CR>", desc = "Go to buffer 2" },
|
||||||
|
{ "<C-3>", "<Cmd>BufferLineGoToBuffer 3<CR>", desc = "Go to buffer 3" },
|
||||||
|
{ "<C-4>", "<Cmd>BufferLineGoToBuffer 4<CR>", desc = "Go to buffer 4" },
|
||||||
|
{ "<C-5>", "<Cmd>BufferLineGoToBuffer 5<CR>", desc = "Go to buffer 5" },
|
||||||
|
{ "<C-6>", "<Cmd>BufferLineGoToBuffer 6<CR>", desc = "Go to buffer 6" },
|
||||||
|
{ "<C-7>", "<Cmd>BufferLineGoToBuffer 7<CR>", desc = "Go to buffer 7" },
|
||||||
|
{ "<C-8>", "<Cmd>BufferLineGoToBuffer 8<CR>", desc = "Go to buffer 8" },
|
||||||
|
{ "<C-9>", "<Cmd>BufferLineGoToBuffer 9<CR>", desc = "Go to buffer 9" },
|
||||||
|
{ "<S-l>", "<Cmd>BufferLineCycleNext<CR>", desc = "Next buffer" },
|
||||||
|
{ "<S-h>", "<Cmd>BufferLineCyclePrev<CR>", desc = "Previous buffer" },
|
||||||
|
{ "<A-S-l>", "<Cmd>BufferLineMoveNext<CR>", desc = "Move buffer right" },
|
||||||
|
{ "<A-S-h>", "<Cmd>BufferLineMovePrev<CR>", desc = "Move buffer left" },
|
||||||
|
},
|
||||||
|
opts = function()
|
||||||
|
local monokai_opts = require("halfdan.util").opts("monokai-pro.nvim")
|
||||||
|
return {
|
||||||
|
options = {
|
||||||
|
diagnostics = "nvim_lsp", -- | "nvim_lsp" | "coc",
|
||||||
|
-- separator_style = "", -- | "thick" | "thin" | "slope" | { 'any', 'any' },
|
||||||
|
separator_style = { "", "" }, -- | "thick" | "thin" | { 'any', 'any' },
|
||||||
|
-- separator_style = "slant", -- | "thick" | "thin" | { 'any', 'any' },
|
||||||
|
indicator = {
|
||||||
|
-- icon = " ",
|
||||||
|
-- style = 'icon',
|
||||||
|
style = "underline",
|
||||||
|
},
|
||||||
|
close_command = "Bdelete! %d", -- can be a string | function, see "Mouse actions"
|
||||||
|
diagnostics_indicator = function(count, _, _, _)
|
||||||
|
if count > 9 then
|
||||||
|
return "9+"
|
||||||
|
end
|
||||||
|
return tostring(count)
|
||||||
|
end,
|
||||||
|
numbers = function(opts)
|
||||||
|
return string.format('%s', opts.raise(opts.ordinal))
|
||||||
|
end,
|
||||||
|
offsets = {
|
||||||
|
{
|
||||||
|
filetype = "neo-tree",
|
||||||
|
text = "EXPLORER",
|
||||||
|
text_align = "center",
|
||||||
|
separator = vim.tbl_contains(monokai_opts.background_clear or {}, "neo-tree"), -- set to `true` if clear background of neo-tree
|
||||||
|
},
|
||||||
|
{
|
||||||
|
filetype = "NvimTree",
|
||||||
|
text = "EXPLORER",
|
||||||
|
text_align = "center",
|
||||||
|
separator = vim.tbl_contains(monokai_opts.background_clear or {}, "nvim-tree"), -- set to `true` if clear background of neo-tree
|
||||||
|
},
|
||||||
|
},
|
||||||
|
hover = {
|
||||||
|
enabled = true,
|
||||||
|
delay = 0,
|
||||||
|
reveal = { "close" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
"nvim-neo-tree/neo-tree.nvim",
|
"nvim-neo-tree/neo-tree.nvim",
|
||||||
branch = "v3.x",
|
branch = "v3.x",
|
||||||
|
@@ -1,52 +0,0 @@
|
|||||||
|
|
||||||
local function formatted_status()
|
|
||||||
local status = require'lsp-status'.status()
|
|
||||||
status = string.gsub(status, "%%", "%%%%")
|
|
||||||
return status
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
require 'lualine'.setup {
|
|
||||||
options = {
|
|
||||||
icons_enabled = true,
|
|
||||||
theme = 'monokaipro',
|
|
||||||
--component_separators = {'', ''},
|
|
||||||
--section_separators = {'', ''},
|
|
||||||
disabled_filetypes = {}
|
|
||||||
},
|
|
||||||
sections = {
|
|
||||||
lualine_a = { 'mode' },
|
|
||||||
lualine_b = { 'branch', 'diff', 'diagnostics' },
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = {
|
|
||||||
{"require'lsp-status'.status()", fmt = function (str)
|
|
||||||
return string.gsub(str, "%%", "%%%%")
|
|
||||||
end},
|
|
||||||
'filetype'
|
|
||||||
},
|
|
||||||
lualine_y = { 'progress' },
|
|
||||||
lualine_z = { 'location' }
|
|
||||||
},
|
|
||||||
inactive_sections = {
|
|
||||||
lualine_a = {},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = { 'location' },
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
tabline = {},
|
|
||||||
extensions = {},
|
|
||||||
winbar = {
|
|
||||||
lualine_a = {
|
|
||||||
},
|
|
||||||
lualine_b = {},
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
lualine_x = {},
|
|
||||||
lualine_y = {},
|
|
||||||
lualine_z = {}
|
|
||||||
},
|
|
||||||
inactive_winbar = {
|
|
||||||
lualine_c = { 'filename' },
|
|
||||||
}
|
|
||||||
}
|
|
160
.config/nvim/lua/halfdan/lualine/components.lua
Normal file
160
.config/nvim/lua/halfdan/lualine/components.lua
Normal file
@@ -0,0 +1,160 @@
|
|||||||
|
local config = require("halfdan.lualine.config").options
|
||||||
|
local icons = require("halfdan.icons")
|
||||||
|
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local hl_str = function(str, hl_cur, hl_after)
|
||||||
|
if hl_after == nil then
|
||||||
|
return "%#" .. hl_cur .. "#" .. str .. "%*"
|
||||||
|
end
|
||||||
|
return "%#" .. hl_cur .. "#" .. str .. "%*" .. "%#" .. hl_after .. "#"
|
||||||
|
end
|
||||||
|
|
||||||
|
local function hide_in_width()
|
||||||
|
return vim.fn.winwidth(0) > 85
|
||||||
|
end
|
||||||
|
|
||||||
|
local prev_branch = ""
|
||||||
|
M.branch = {
|
||||||
|
"branch",
|
||||||
|
icons_enabled = false,
|
||||||
|
icon = hl_str("", "SLGitIcon", "SLBranchName"),
|
||||||
|
colored = false,
|
||||||
|
fmt = function(str)
|
||||||
|
if vim.bo.filetype == "toggleterm" then
|
||||||
|
str = prev_branch
|
||||||
|
elseif str == "" or str == nil then
|
||||||
|
str = "!=vcs"
|
||||||
|
end
|
||||||
|
prev_branch = str
|
||||||
|
local icon = hl_str(" ", "SLGitIcon", "SLBranchName")
|
||||||
|
return hl_str(config.separator_icon.left, "SLSeparator")
|
||||||
|
.. hl_str(icon, "SLGitIcon")
|
||||||
|
.. hl_str(str, "SLBranchName")
|
||||||
|
.. hl_str(config.separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
M.position = function()
|
||||||
|
-- print(vim.inspect(config.separator_icon))
|
||||||
|
local current_line = vim.fn.line(".")
|
||||||
|
local current_column = vim.fn.col(".")
|
||||||
|
local left_sep = hl_str(config.separator_icon.left, "SLSeparator")
|
||||||
|
local right_sep = hl_str(config.separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
local str = "Ln " .. current_line .. ", Col " .. current_column
|
||||||
|
return left_sep .. hl_str(str, "SLPosition", "SLPosition") .. right_sep
|
||||||
|
end
|
||||||
|
|
||||||
|
M.spaces = function()
|
||||||
|
local left_sep = hl_str(config.separator_icon.left, "SLSeparator")
|
||||||
|
local right_sep = hl_str(config.separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
local str = "Spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth")
|
||||||
|
return left_sep .. hl_str(str, "SLShiftWidth", "SLShiftWidth") .. right_sep
|
||||||
|
end
|
||||||
|
|
||||||
|
M.diagnostics = function()
|
||||||
|
local function nvim_diagnostic()
|
||||||
|
local diagnostics = vim.diagnostic.get(0)
|
||||||
|
local count = { 0, 0, 0, 0 }
|
||||||
|
for _, diagnostic in ipairs(diagnostics) do
|
||||||
|
count[diagnostic.severity] = count[diagnostic.severity] + 1
|
||||||
|
end
|
||||||
|
return count[vim.diagnostic.severity.ERROR],
|
||||||
|
count[vim.diagnostic.severity.WARN],
|
||||||
|
count[vim.diagnostic.severity.INFO],
|
||||||
|
count[vim.diagnostic.severity.HINT]
|
||||||
|
end
|
||||||
|
|
||||||
|
local error_count, warn_count, info_count, hint_count = nvim_diagnostic()
|
||||||
|
local error_hl = hl_str(icons.diagnostics.Error .. " " .. error_count, "SLError", "SLError")
|
||||||
|
local warn_hl = hl_str(icons.diagnostics.Warn .. " " .. warn_count, "SLWarning", "SLWarning")
|
||||||
|
local info_hl = hl_str(icons.diagnostics.Info .. " " .. info_count, "SLInfo", "SLInfo")
|
||||||
|
local hint_hl = hl_str(icons.diagnostics.Hint .. " " .. hint_count, "SLInfo", "SLInfo")
|
||||||
|
local left_sep = hl_str(config.thin_separator_icon.left, "SLSeparator")
|
||||||
|
local right_sep = hl_str(config.thin_separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
return left_sep .. error_hl .. " " .. warn_hl .. " " .. hint_hl .. right_sep
|
||||||
|
end
|
||||||
|
|
||||||
|
M.diff = {
|
||||||
|
"diff",
|
||||||
|
colored = true,
|
||||||
|
diff_color = {
|
||||||
|
added = "SLDiffAdd",
|
||||||
|
modified = "SLDiffChange",
|
||||||
|
removed = "SLDiffDelete",
|
||||||
|
},
|
||||||
|
symbols = {
|
||||||
|
added = icons.git.added .. " ",
|
||||||
|
modified = icons.git.modified .. " ",
|
||||||
|
removed = icons.git.removed .. " ",
|
||||||
|
}, -- changes diff symbols
|
||||||
|
fmt = function(str)
|
||||||
|
if str == "" then
|
||||||
|
return ""
|
||||||
|
end
|
||||||
|
local left_sep = hl_str(config.thin_separator_icon.left, "SLSeparator")
|
||||||
|
local right_sep = hl_str(config.thin_separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
return left_sep .. str .. right_sep
|
||||||
|
end,
|
||||||
|
cond = hide_in_width,
|
||||||
|
}
|
||||||
|
|
||||||
|
M.mode = {
|
||||||
|
"mode",
|
||||||
|
fmt = function(str)
|
||||||
|
local left_sep = hl_str(config.separator_icon.left, "SLSeparator", "SLPadding")
|
||||||
|
local right_sep = hl_str(config.separator_icon.right, "SLSeparator", "SLPadding")
|
||||||
|
return left_sep .. hl_str(str, "SLMode") .. right_sep
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
local prev_filetype = ""
|
||||||
|
M.filetype = {
|
||||||
|
"filetype",
|
||||||
|
icons_enabled = false,
|
||||||
|
icons_only = false,
|
||||||
|
fmt = function(str)
|
||||||
|
local ui_filetypes = {
|
||||||
|
"help",
|
||||||
|
"packer",
|
||||||
|
"neogitstatus",
|
||||||
|
"NvimTree",
|
||||||
|
"Trouble",
|
||||||
|
"lir",
|
||||||
|
"Outline",
|
||||||
|
"spectre_panel",
|
||||||
|
"toggleterm",
|
||||||
|
"DressingSelect",
|
||||||
|
"neo-tree",
|
||||||
|
"",
|
||||||
|
}
|
||||||
|
local filetype_str = ""
|
||||||
|
|
||||||
|
if str == "toggleterm" then
|
||||||
|
--
|
||||||
|
filetype_str = "ToggleTerm " .. vim.api.nvim_buf_get_var(0, "toggle_number")
|
||||||
|
elseif str == "TelescopePrompt" then
|
||||||
|
filetype_str = ""
|
||||||
|
elseif str == "neo-tree" or str == "neo-tree-popup" then
|
||||||
|
if prev_filetype == "" then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
filetype_str = prev_filetype
|
||||||
|
elseif str == "help" then
|
||||||
|
filetype_str = ""
|
||||||
|
elseif vim.tbl_contains(ui_filetypes, str) then
|
||||||
|
return
|
||||||
|
else
|
||||||
|
prev_filetype = str
|
||||||
|
filetype_str = str
|
||||||
|
end
|
||||||
|
local left_sep = hl_str(config.separator_icon.left, "SLSeparator")
|
||||||
|
local right_sep = hl_str(config.separator_icon.right, "SLSeparator", "SLSeparator")
|
||||||
|
-- Upper case first character
|
||||||
|
filetype_str = filetype_str:gsub("%a", string.upper, 1)
|
||||||
|
local filetype_hl = hl_str(filetype_str, "SLFiletype", "SLFiletype")
|
||||||
|
return left_sep .. filetype_hl .. right_sep
|
||||||
|
end,
|
||||||
|
}
|
||||||
|
|
||||||
|
return M
|
40
.config/nvim/lua/halfdan/lualine/config.lua
Normal file
40
.config/nvim/lua/halfdan/lualine/config.lua
Normal file
@@ -0,0 +1,40 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
---@class LualineConfig
|
||||||
|
local default = {
|
||||||
|
float = true,
|
||||||
|
separator = "bubble", -- bubble | triangle
|
||||||
|
---@type any
|
||||||
|
colorful = true,
|
||||||
|
separator_icon = { left = "", right = " " },
|
||||||
|
thin_separator_icon = { left = "", right = " " },
|
||||||
|
-- separator_icon = { left = "█", right = "█" },
|
||||||
|
-- thin_separator_icon = { left = " ", right = " " },
|
||||||
|
}
|
||||||
|
|
||||||
|
---@type LualineConfig
|
||||||
|
M.options = {}
|
||||||
|
|
||||||
|
---@param type "bubble" | "triangle"
|
||||||
|
local function make_separator(type)
|
||||||
|
if type == "bubble" then
|
||||||
|
M.options.separator_icon = { left = "█", right = "█" }
|
||||||
|
M.options.thin_separator_icon = { left = " ", right = " " }
|
||||||
|
elseif type == "triangle" then
|
||||||
|
M.options.separator_icon = { left = "█", right = "█" }
|
||||||
|
M.options.thin_separator_icon = { left = " ", right = " " }
|
||||||
|
else
|
||||||
|
return
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
M.setup = function(opts)
|
||||||
|
M.options = vim.tbl_deep_extend("force", {}, default, opts or {})
|
||||||
|
if M.options.float then
|
||||||
|
make_separator(M.options.separator)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
M.setup()
|
||||||
|
|
||||||
|
return M
|
111
.config/nvim/lua/halfdan/lualine/highlights.lua
Normal file
111
.config/nvim/lua/halfdan/lualine/highlights.lua
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
local M = {}
|
||||||
|
local util = require("halfdan.util")
|
||||||
|
|
||||||
|
local function draw(groups)
|
||||||
|
if groups == nil then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for group, value in pairs(groups) do
|
||||||
|
vim.api.nvim_set_hl(0, group, value)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function generate(config, palette)
|
||||||
|
local float = config.float
|
||||||
|
local colorful = config.colorful
|
||||||
|
if colorful then
|
||||||
|
palette.yellow = util.get_highlight_value("String").foreground or "#ffff00"
|
||||||
|
palette.white = util.get_highlight_value("Normal").foreground or "#ffffff"
|
||||||
|
palette.red = util.get_highlight_value("DiagnosticError").foreground or "#ff0000"
|
||||||
|
palette.orange = util.get_highlight_value("DiagnosticWarn").foreground or "#ff7700"
|
||||||
|
palette.blue = util.get_highlight_value("DiagnosticHint").foreground or "#00ffff"
|
||||||
|
palette.magenta = util.get_highlight_value("Statement").foreground or "#ff00ff"
|
||||||
|
palette.green = util.get_highlight_value("healthSuccess").foreground or "#00ff00"
|
||||||
|
end
|
||||||
|
return {
|
||||||
|
SLGitIcon = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.white or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLBranchName = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.yellow or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLError = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.red or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLWarning = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.orange or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLInfo = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.blue or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLDiffAdd = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.green or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLDiffChange = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.yellow or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLDiffDelete = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.red or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLPosition = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.magenta or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLFiletype = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.blue or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLShiftWidth = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.yellow or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLEncoding = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.green or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLMode = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.green or palette.statusbar_fg,
|
||||||
|
bold = true,
|
||||||
|
},
|
||||||
|
SLSeparatorUnused = {
|
||||||
|
bg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
fg = colorful and palette.editor_bg or palette.statusbar_fg,
|
||||||
|
},
|
||||||
|
SLSeparator = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = float and palette.float_background or palette.statusbar_bg,
|
||||||
|
},
|
||||||
|
SLPadding = {
|
||||||
|
bg = float and palette.editor_bg or palette.statusbar_bg,
|
||||||
|
fg = palette.editor_bg,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param config LualineConfig
|
||||||
|
M.custom = function(config)
|
||||||
|
local statusline_hl = util.get_highlight_value("StatusLine")
|
||||||
|
local palette = {
|
||||||
|
float_background = util.get_highlight_value("CursorLine").background,
|
||||||
|
editor_bg = util.get_highlight_value("Normal").background or "NONE",
|
||||||
|
statusbar_bg = statusline_hl.background or "#000000",
|
||||||
|
statusbar_fg = statusline_hl.foreground or "#505050",
|
||||||
|
}
|
||||||
|
local groups = generate(config, palette)
|
||||||
|
|
||||||
|
draw(groups)
|
||||||
|
-- clear theme if float ortherwhise, make it auto
|
||||||
|
local theme = config.float and { normal = { c = { bg = palette.editor_bg } } } or "auto"
|
||||||
|
return theme
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
60
.config/nvim/lua/halfdan/lualine/init.lua
Normal file
60
.config/nvim/lua/halfdan/lualine/init.lua
Normal file
@@ -0,0 +1,60 @@
|
|||||||
|
local config = require("halfdan.lualine.config")
|
||||||
|
|
||||||
|
local git_blame = require('gitblame')
|
||||||
|
local M = {}
|
||||||
|
|
||||||
|
local function setup()
|
||||||
|
local cpn = require("halfdan.lualine.components")
|
||||||
|
local theme = require("halfdan.lualine.highlights").custom(config.options)
|
||||||
|
|
||||||
|
require("lualine").setup({
|
||||||
|
options = {
|
||||||
|
theme = theme,
|
||||||
|
icons_enabled = true,
|
||||||
|
component_separators = { left = "", right = "" },
|
||||||
|
section_separators = { left = "", right = "" },
|
||||||
|
disabled_filetypes = {
|
||||||
|
statusline = { "dashboard", "lazy", "alpha" },
|
||||||
|
},
|
||||||
|
ignore_focus = {},
|
||||||
|
always_divide_middle = true,
|
||||||
|
globalstatus = true,
|
||||||
|
refresh = {
|
||||||
|
statusline = 1000,
|
||||||
|
tabline = 1000,
|
||||||
|
-- winbar = 100,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
sections = {
|
||||||
|
lualine_a = { cpn.branch },
|
||||||
|
lualine_b = { cpn.diagnostics },
|
||||||
|
lualine_c = { "lsp_status" },
|
||||||
|
lualine_x = { { git_blame.get_current_blame_text, cond = git_blame.is_blame_text_available }, cpn.diff },
|
||||||
|
lualine_y = { cpn.position, cpn.filetype },
|
||||||
|
lualine_z = { cpn.spaces, cpn.mode },
|
||||||
|
},
|
||||||
|
inactive_sections = {
|
||||||
|
lualine_a = {},
|
||||||
|
lualine_b = {},
|
||||||
|
lualine_c = { "filename" },
|
||||||
|
lualine_x = { "location" },
|
||||||
|
lualine_y = {},
|
||||||
|
lualine_z = {},
|
||||||
|
},
|
||||||
|
tabline = {},
|
||||||
|
extensions = {},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.setup = config.setup
|
||||||
|
|
||||||
|
M.load = function()
|
||||||
|
setup()
|
||||||
|
vim.api.nvim_create_autocmd("ColorScheme", {
|
||||||
|
callback = function()
|
||||||
|
setup()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
@@ -1,6 +0,0 @@
|
|||||||
-- local luasnip = require('luasnip')
|
|
||||||
luasnip.config.set_config {
|
|
||||||
history = true,
|
|
||||||
updateevents = "TextChanged,TextChangedI"
|
|
||||||
}
|
|
||||||
|
|
@@ -8,5 +8,5 @@ neogit.setup {
|
|||||||
}
|
}
|
||||||
|
|
||||||
nnoremap("<leader>gs", function()
|
nnoremap("<leader>gs", function()
|
||||||
neogit.open({ })
|
neogit.open({kind='split'})
|
||||||
end)
|
end)
|
||||||
|
@@ -1,27 +0,0 @@
|
|||||||
local neorg = require("neorg")
|
|
||||||
|
|
||||||
neorg.setup({
|
|
||||||
load = {
|
|
||||||
["core.defaults"] = {},
|
|
||||||
["core.dirman"] = {
|
|
||||||
config = {
|
|
||||||
workspaces = {
|
|
||||||
work = "~/org/work",
|
|
||||||
home = "~/org/home",
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
["core.completion"] = {
|
|
||||||
config = {
|
|
||||||
engine = "nvim-cmp",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
["core.concealer"] = {},
|
|
||||||
["core.journal"] = {
|
|
||||||
config = {
|
|
||||||
strategy = "flat",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
["core.integrations.telescope"] = {},
|
|
||||||
}
|
|
||||||
})
|
|
@@ -7,6 +7,25 @@ vim.o.titlestring="%<%F%=%l/%L - nvim"
|
|||||||
vim.wo.wrap = false -- Display long lines as just one line
|
vim.wo.wrap = false -- Display long lines as just one line
|
||||||
-- vim.cmd('set whichwrap+=<,>,[,],h,l') -- move to next line with theses keys
|
-- vim.cmd('set whichwrap+=<,>,[,],h,l') -- move to next line with theses keys
|
||||||
-- vim.cmd('syntax on') -- syntax highlighting
|
-- vim.cmd('syntax on') -- syntax highlighting
|
||||||
|
vim.o.foldmethod = "manual"
|
||||||
|
vim.o.fillchars = [[eob: ,fold: ,foldopen:,foldsep: ,foldclose:]]
|
||||||
|
local fcs = vim.opt.fillchars:get()
|
||||||
|
|
||||||
|
-- Stolen from Akinsho
|
||||||
|
local function get_fold(lnum)
|
||||||
|
if vim.fn.foldlevel(lnum) <= vim.fn.foldlevel(lnum - 1) then return ' ' end
|
||||||
|
return vim.fn.foldclosed(lnum) == -1 and fcs.foldopen or fcs.foldclose
|
||||||
|
end
|
||||||
|
|
||||||
|
_G.get_statuscol = function()
|
||||||
|
return "%s%=" .. get_fold(vim.v.lnum) .. " %l "
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
vim.o.statuscolumn = "%!v:lua.get_statuscol()"
|
||||||
|
vim.o.foldcolumn = '0'
|
||||||
|
vim.o.foldlevelstart = 99
|
||||||
|
vim.o.foldlevel = 99 -- Keep folds open by default
|
||||||
vim.o.pumheight = 10 -- Makes popup menu smaller
|
vim.o.pumheight = 10 -- Makes popup menu smaller
|
||||||
vim.o.fileencoding = "utf-8" -- The encoding written to file
|
vim.o.fileencoding = "utf-8" -- The encoding written to file
|
||||||
vim.o.cmdheight = 1 -- More space for displaying messages
|
vim.o.cmdheight = 1 -- More space for displaying messages
|
||||||
@@ -21,7 +40,7 @@ vim.o.shiftwidth = 2 -- Change the number of space characters inserted for inden
|
|||||||
vim.o.expandtab = true -- Converts tabs to spaces
|
vim.o.expandtab = true -- Converts tabs to spaces
|
||||||
vim.bo.smartindent = false -- Makes indenting smart
|
vim.bo.smartindent = false -- Makes indenting smart
|
||||||
vim.wo.number = true -- set numbered lines
|
vim.wo.number = true -- set numbered lines
|
||||||
vim.wo.relativenumber = true -- set relative number
|
-- vim.wo.relativenumber = true -- set relative number
|
||||||
vim.wo.cursorline = true -- Enable highlighting of the current line
|
vim.wo.cursorline = true -- Enable highlighting of the current line
|
||||||
vim.o.showtabline = 1 -- Always show tabs
|
vim.o.showtabline = 1 -- Always show tabs
|
||||||
vim.o.showmode = false -- We don't need to see things like -- INSERT -- anymore
|
vim.o.showmode = false -- We don't need to see things like -- INSERT -- anymore
|
||||||
@@ -34,8 +53,8 @@ vim.o.clipboard = "unnamedplus" -- Copy paste between vim and everything else
|
|||||||
vim.o.laststatus = 3 -- Set global status bar
|
vim.o.laststatus = 3 -- Set global status bar
|
||||||
vim.b.did_ftplugin = 1
|
vim.b.did_ftplugin = 1
|
||||||
-- Enable telescope theme
|
-- Enable telescope theme
|
||||||
vim.g.gruvbox_baby_telescope_theme = 1
|
-- vim.g.gruvbox_baby_telescope_theme = 1
|
||||||
vim.g.gruvbox_baby_background_color = "dark"
|
-- vim.g.gruvbox_baby_background_color = "dark"
|
||||||
|
|
||||||
vim.g.mapleader = ' '
|
vim.g.mapleader = ' '
|
||||||
|
|
||||||
@@ -43,3 +62,7 @@ vim.g.netrw_preview = 1 -- Split preview vertically
|
|||||||
vim.g.netrw_alo = 1 -- Show preview window to the right
|
vim.g.netrw_alo = 1 -- Show preview window to the right
|
||||||
vim.g.netrw_winsize = 30 -- Have the preview window take up 70%
|
vim.g.netrw_winsize = 30 -- Have the preview window take up 70%
|
||||||
-- vim.g.netrw_liststyle = 3 -- Use tree style
|
-- vim.g.netrw_liststyle = 3 -- Use tree style
|
||||||
|
--
|
||||||
|
vim.g.gitblame_display_virtual_text = 0
|
||||||
|
vim.g.gitblame_date_format = '%r'
|
||||||
|
vim.g.gitblame_message_template = '<author> • <date>'
|
||||||
|
@@ -8,6 +8,7 @@ require('telescope').setup {
|
|||||||
prompt_prefix = " ",
|
prompt_prefix = " ",
|
||||||
selection_caret = " ",
|
selection_caret = " ",
|
||||||
entry_prefix = " ",
|
entry_prefix = " ",
|
||||||
|
-- borderchars = { "█", " ", "▀", "█", "█", " ", " ", "▀" },
|
||||||
file_sorter = require 'telescope'.extensions.fzf.get_fzf_sorter,
|
file_sorter = require 'telescope'.extensions.fzf.get_fzf_sorter,
|
||||||
-- Developer configurations: Not meant for general override
|
-- Developer configurations: Not meant for general override
|
||||||
mappings = {
|
mappings = {
|
||||||
@@ -60,7 +61,7 @@ require('telescope').setup {
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
require("telescope").load_extension("git_worktree")
|
|
||||||
require('telescope').load_extension("fzf")
|
require('telescope').load_extension("fzf")
|
||||||
require('telescope').load_extension("dap")
|
require('telescope').load_extension("dap")
|
||||||
require('telescope').load_extension("smart_open")
|
require('telescope').load_extension("smart_open")
|
||||||
|
require('telescope').load_extension("egrepify")
|
||||||
|
@@ -3,7 +3,7 @@ if vim.g.vscode then
|
|||||||
end
|
end
|
||||||
|
|
||||||
require('nvim-treesitter.configs').setup({
|
require('nvim-treesitter.configs').setup({
|
||||||
ensure_installed = { "python", "go", "elixir", "heex", "rust", "gomod", "json", "lua", "yaml", "norg", "query", "markdown", "markdown_inline"},
|
ensure_installed = { "python", "go", "elixir", "heex", "rust", "gomod", "json", "lua", "yaml", "norg", "query", "markdown", "markdown_inline", "gleam", "zig", "odin"},
|
||||||
ignore_install = { "haskell" },
|
ignore_install = { "haskell" },
|
||||||
highlight = {
|
highlight = {
|
||||||
enable = true,
|
enable = true,
|
||||||
|
245
.config/nvim/lua/halfdan/util.lua
Normal file
245
.config/nvim/lua/halfdan/util.lua
Normal file
@@ -0,0 +1,245 @@
|
|||||||
|
local M = {}
|
||||||
|
|
||||||
|
M.root_patterns = { ".git", "lua", "package.json", "mvnw", "gradlew", "pom.xml", "build.gradle", "release", ".project" }
|
||||||
|
|
||||||
|
M.augroup = function(name)
|
||||||
|
return vim.api.nvim_create_augroup("halfdan_" .. name, { clear = true })
|
||||||
|
end
|
||||||
|
|
||||||
|
M.has = function(plugin)
|
||||||
|
return require("lazy.core.config").plugins[plugin] ~= nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function M.get_clients(...)
|
||||||
|
local fn = vim.lsp.get_clients or vim.lsp.get_active_clients
|
||||||
|
return fn(...)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- @param on_attach fun(client, buffer)
|
||||||
|
M.on_attach = function(on_attach)
|
||||||
|
vim.api.nvim_create_autocmd("LspAttach", {
|
||||||
|
callback = function(args)
|
||||||
|
local buffer = args.buf
|
||||||
|
local client = vim.lsp.get_client_by_id(args.data.client_id)
|
||||||
|
on_attach(client, buffer)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.get_highlight_value = function(group)
|
||||||
|
local found, hl = pcall(vim.api.nvim_get_hl_by_name, group, true)
|
||||||
|
if not found then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
local hl_config = {}
|
||||||
|
for key, value in pairs(hl) do
|
||||||
|
_, hl_config[key] = pcall(string.format, "#%06x", value)
|
||||||
|
end
|
||||||
|
return hl_config
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param name string
|
||||||
|
function M.opts(name)
|
||||||
|
local plugin = require("lazy.core.config").plugins[name]
|
||||||
|
if not plugin then
|
||||||
|
return {}
|
||||||
|
end
|
||||||
|
local Plugin = require("lazy.core.plugin")
|
||||||
|
return Plugin.values(plugin, "opts", false)
|
||||||
|
end
|
||||||
|
|
||||||
|
-- returns the root directory based on:
|
||||||
|
-- * lsp workspace folders
|
||||||
|
-- * lsp root_dir
|
||||||
|
-- * root pattern of filename of the current buffer
|
||||||
|
-- * root pattern of cwd
|
||||||
|
---@return string
|
||||||
|
M.get_root = function()
|
||||||
|
---@type string?
|
||||||
|
local path = vim.api.nvim_buf_get_name(0)
|
||||||
|
path = path ~= "" and vim.loop.fs_realpath(path) or nil
|
||||||
|
---@type string[]
|
||||||
|
local roots = {}
|
||||||
|
if path then
|
||||||
|
for _, client in pairs(vim.lsp.get_active_clients({ bufnr = 0 })) do
|
||||||
|
local workspace = client.config.workspace_folders
|
||||||
|
local paths = workspace
|
||||||
|
and vim.tbl_map(function(ws)
|
||||||
|
return vim.uri_to_fname(ws.uri)
|
||||||
|
end, workspace)
|
||||||
|
or client.config.root_dir and { client.config.root_dir }
|
||||||
|
or {}
|
||||||
|
for _, p in ipairs(paths) do
|
||||||
|
local r = vim.loop.fs_realpath(p)
|
||||||
|
if path:find(r, 1, true) then
|
||||||
|
roots[#roots + 1] = r
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
table.sort(roots, function(a, b)
|
||||||
|
return #a > #b
|
||||||
|
end)
|
||||||
|
---@type string?
|
||||||
|
local root = roots[1]
|
||||||
|
if not root then
|
||||||
|
path = path and vim.fs.dirname(path) or vim.loop.cwd()
|
||||||
|
---@type string?
|
||||||
|
root = vim.fs.find(M.root_patterns, { path = path, upward = true })[1]
|
||||||
|
root = root and vim.fs.dirname(root) or vim.loop.cwd()
|
||||||
|
end
|
||||||
|
---@cast root string
|
||||||
|
return root
|
||||||
|
end
|
||||||
|
|
||||||
|
M.set_root = function(dir)
|
||||||
|
vim.api.nvim_set_current_dir(dir)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param type "ivy" | "dropdown" | "cursor" | nil
|
||||||
|
--- @param borderType "thin" | "thick" | "double" | "single" | "empty" | nil
|
||||||
|
M.telescope_theme = function(type, borderType)
|
||||||
|
if type == nil then
|
||||||
|
return {
|
||||||
|
borderchars = M.generate_borderchars(borderType),
|
||||||
|
layout_config = {
|
||||||
|
width = 80,
|
||||||
|
height = 0.5,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
end
|
||||||
|
return require("telescope.themes")["get_" .. type]({
|
||||||
|
cwd = M.get_root(),
|
||||||
|
borderchars = M.generate_borderchars(borderType, nil, { top = "█", top_left = "█", top_right = "█" }),
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param builtin "find_files" | "live_grep" | "buffers"
|
||||||
|
---@param type "ivy" | "dropdown" | "cursor" | nil
|
||||||
|
M.telescope = function(builtin, type, opts)
|
||||||
|
local params = { builtin = builtin, type = type, opts = opts }
|
||||||
|
return function()
|
||||||
|
builtin = params.builtin
|
||||||
|
type = params.type
|
||||||
|
opts = params.opts
|
||||||
|
opts = vim.tbl_deep_extend("force", { cwd = M.get_root() }, opts or {})
|
||||||
|
local theme
|
||||||
|
if vim.tbl_contains({ "ivy", "dropdown", "cursor" }, type) then
|
||||||
|
theme = M.telescope_theme(type)
|
||||||
|
else
|
||||||
|
theme = opts
|
||||||
|
end
|
||||||
|
require("telescope.builtin")[builtin](theme)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---@param name "autocmds" | "options" | "keymaps"
|
||||||
|
M.load = function(name)
|
||||||
|
local Util = require("lazy.core.util")
|
||||||
|
-- always load lazyvim, then user file
|
||||||
|
local mod = "halfdan.core." .. name
|
||||||
|
Util.try(function()
|
||||||
|
require(mod)
|
||||||
|
end, {
|
||||||
|
msg = "Failed loading " .. mod,
|
||||||
|
on_error = function(msg)
|
||||||
|
local modpath = require("lazy.core.cache").find(mod)
|
||||||
|
if modpath then
|
||||||
|
Util.error(msg)
|
||||||
|
end
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.on_very_lazy = function(fn)
|
||||||
|
vim.api.nvim_create_autocmd("User", {
|
||||||
|
pattern = "VeryLazy",
|
||||||
|
callback = function()
|
||||||
|
fn()
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
M.capabilities = function(ext)
|
||||||
|
return vim.tbl_deep_extend(
|
||||||
|
"force",
|
||||||
|
{},
|
||||||
|
ext or {},
|
||||||
|
require("cmp_nvim_lsp").default_capabilities(),
|
||||||
|
{ textDocument = { foldingRange = { dynamicRegistration = false, lineFoldingOnly = true } } }
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
|
M.notify = function(msg, level, opts)
|
||||||
|
opts = opts or {}
|
||||||
|
level = vim.log.levels[level:upper()]
|
||||||
|
if type(msg) == "table" then
|
||||||
|
msg = table.concat(msg, "\n")
|
||||||
|
end
|
||||||
|
local nopts = { title = "Nvim" }
|
||||||
|
if opts.once then
|
||||||
|
return vim.schedule(function()
|
||||||
|
vim.notify_once(msg, level, nopts)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.notify(msg, level, nopts)
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
|
||||||
|
--- @param type "thin" | "thick" | "double" | "single" | "empty" | nil
|
||||||
|
--- @param order "t-r-b-l-tl-tr-br-bl" | "tl-t-tr-r-br-b-bl-l" | nil
|
||||||
|
--- @param opts BorderIcons | nil
|
||||||
|
M.generate_borderchars = function(type, order, opts)
|
||||||
|
if order == nil then
|
||||||
|
order = "t-r-b-l-tl-tr-br-bl"
|
||||||
|
end
|
||||||
|
local border_icons = require("halfdan.icons").borders
|
||||||
|
--- @type BorderIcons
|
||||||
|
local border = vim.tbl_deep_extend("force", border_icons[type or "empty"], opts or {})
|
||||||
|
|
||||||
|
local borderchars = {}
|
||||||
|
|
||||||
|
local extractDirections = (function()
|
||||||
|
local index = 1
|
||||||
|
return function()
|
||||||
|
if index == nil then
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
-- Find the next occurence of `char`
|
||||||
|
local nextIndex = string.find(order, "-", index)
|
||||||
|
-- Extract the first direction
|
||||||
|
local direction = string.sub(order, index, nextIndex and nextIndex - 1)
|
||||||
|
-- Update the index to nextIndex
|
||||||
|
index = nextIndex and nextIndex + 1 or nil
|
||||||
|
return direction
|
||||||
|
end
|
||||||
|
end)()
|
||||||
|
|
||||||
|
local mappings = {
|
||||||
|
t = "top",
|
||||||
|
r = "right",
|
||||||
|
b = "bottom",
|
||||||
|
l = "left",
|
||||||
|
tl = "top_left",
|
||||||
|
tr = "top_right",
|
||||||
|
br = "bottom_right",
|
||||||
|
bl = "bottom_left",
|
||||||
|
}
|
||||||
|
local direction = extractDirections()
|
||||||
|
while direction do
|
||||||
|
if mappings[direction] == nil then
|
||||||
|
M.notify(string.format("Invalid direction '%s'", direction), "error")
|
||||||
|
end
|
||||||
|
borderchars[#borderchars + 1] = border[mappings[direction]]
|
||||||
|
direction = extractDirections()
|
||||||
|
end
|
||||||
|
|
||||||
|
if #borderchars ~= 8 then
|
||||||
|
M.notify(string.format("Invalid order '%s'", order), "error")
|
||||||
|
end
|
||||||
|
|
||||||
|
return borderchars
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
@@ -1,6 +1,8 @@
|
|||||||
elixir 1.14.4-otp-25
|
elixir 1.18.2-otp-27
|
||||||
golang 1.19.3
|
golang 1.24.0
|
||||||
erlang 25.3.2
|
erlang 27.2.3
|
||||||
python 3.11.0
|
python 3.13.2
|
||||||
neovim 0.9.4
|
neovim 0.10.4
|
||||||
java openjdk-19
|
java openjdk-19
|
||||||
|
awscli 2.24.7
|
||||||
|
nodejs 18.20.4
|
||||||
|
Reference in New Issue
Block a user