Compare commits
3 Commits
f71eb472e2
...
43785d7323
Author | SHA1 | Date |
---|---|---|
|
43785d7323 | |
|
9ed0387ce2 | |
|
4e2f5a8bd6 |
|
@ -0,0 +1,9 @@
|
||||||
|
# Nvim Config Rewrite - TODO
|
||||||
|
-[ ] LSP for:
|
||||||
|
-[ ] Python
|
||||||
|
-[ ] Kotlin
|
||||||
|
-[ ] Bash/Shell scripts
|
||||||
|
-[ ] JavaScript
|
||||||
|
-[ ] Java
|
||||||
|
-[ ] Auto close neogit/nvimtree panes when they are the only thing left.
|
||||||
|
-[ ] Start with file focused instead of nvimtree.
|
|
@ -0,0 +1,124 @@
|
||||||
|
# Add ~/bin and ~/bin/scripts to my path
|
||||||
|
export PATH=$PATH:$HOME/bin/:$HOME/bin/scripts/
|
||||||
|
|
||||||
|
# Prompt stuff
|
||||||
|
#
|
||||||
|
# LINEAGE:
|
||||||
|
#
|
||||||
|
# Based on work by woods and sundeepgupta
|
||||||
|
#
|
||||||
|
# https://gist.github.com/31967
|
||||||
|
# https://gist.github.com/sundeepgupta/b099c31ee2cc1eb31b6d
|
||||||
|
|
||||||
|
# The various escape codes that we can use to color our prompt.
|
||||||
|
RED="\[\033[0;31m\]"
|
||||||
|
YELLOW="\[\033[0;33m\]"
|
||||||
|
GREEN="\[\033[0;32m\]"
|
||||||
|
BLUE="\[\033[1;34m\]"
|
||||||
|
LIGHT_RED="\[\033[1;31m\]"
|
||||||
|
LIGHT_GREEN="\[\033[1;32m\]"
|
||||||
|
WHITE="\[\033[1;37m\]"
|
||||||
|
LIGHT_GRAY="\[\033[0;37m\]"
|
||||||
|
CYAN="\[\033[0;36m\]"
|
||||||
|
PURPLE="\[\033[0;35m\]"
|
||||||
|
|
||||||
|
COLOR_NONE="\[\e[0m\]"
|
||||||
|
|
||||||
|
|
||||||
|
# Detect whether the current directory is a git repository.
|
||||||
|
function is_git_repository {
|
||||||
|
git branch > /dev/null 2>&1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Determine the branch/state information for this git repository.
|
||||||
|
function set_git_branch {
|
||||||
|
# Capture the output of the "git status" command.
|
||||||
|
git_status="$(git status 2> /dev/null)"
|
||||||
|
|
||||||
|
|
||||||
|
# Set color based on clean/staged/dirty.
|
||||||
|
if [[ ${git_status} =~ "working tree clean" ]]; then
|
||||||
|
state="${GREEN}"
|
||||||
|
elif [[ ${git_status} =~ "Changes to be committed" ]]; then
|
||||||
|
state="${YELLOW}"
|
||||||
|
else
|
||||||
|
state="${RED}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set arrow icon based on status against remote.
|
||||||
|
remote_pattern="Your branch is (.*) of"
|
||||||
|
if [[ ${git_status} =~ ${remote_pattern} ]]; then
|
||||||
|
if [[ ${BASH_REMATCH[1]} == "ahead" ]]; then
|
||||||
|
remote="↑"
|
||||||
|
else
|
||||||
|
remote="↓"
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
remote=""
|
||||||
|
fi
|
||||||
|
diverge_pattern="Your branch and (.*) have diverged"
|
||||||
|
if [[ ${git_status} =~ ${diverge_pattern} ]]; then
|
||||||
|
remote="↕"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Get the name of the branch.
|
||||||
|
branch_pattern="^(# )?On branch ([^${IFS}]*)"
|
||||||
|
if [[ ${git_status} =~ ${branch_pattern} ]]; then
|
||||||
|
branch=${BASH_REMATCH[2]}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the final branch string.
|
||||||
|
BRANCH="${state}(${branch})${remote}${COLOR_NONE} "
|
||||||
|
}
|
||||||
|
|
||||||
|
# Return the prompt symbol to use, colorized based on the return value of the
|
||||||
|
# previous command.
|
||||||
|
function set_prompt_symbol () {
|
||||||
|
if test $1 -eq 0 ; then
|
||||||
|
PROMPT_SYMBOL="\$"
|
||||||
|
else
|
||||||
|
PROMPT_SYMBOL="${LIGHT_RED}\$${COLOR_NONE}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Set the full bash prompt.
|
||||||
|
function set_bash_prompt () {
|
||||||
|
# Set the PROMPT_SYMBOL variable. We do this first so we don't lose the
|
||||||
|
# return value of the last command.
|
||||||
|
set_prompt_symbol $?
|
||||||
|
|
||||||
|
# Set the BRANCH variable.
|
||||||
|
if is_git_repository ; then
|
||||||
|
set_git_branch
|
||||||
|
else
|
||||||
|
BRANCH=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set the bash prompt variable.
|
||||||
|
PS1="
|
||||||
|
${BLUE}[\t] ${CYAN}\w ${COLOR_NONE}${BRANCH}
|
||||||
|
${PROMPT_SYMBOL} "
|
||||||
|
}
|
||||||
|
|
||||||
|
# Tell bash to execute this function just before displaying its prompt.
|
||||||
|
PROMPT_COMMAND=set_bash_prompt
|
||||||
|
|
||||||
|
# fzf is love, fzf is life.
|
||||||
|
source /usr/share/bash-completion/completions/fzf-key-bindings
|
||||||
|
|
||||||
|
function cdl() {
|
||||||
|
cd $@
|
||||||
|
ls
|
||||||
|
}
|
||||||
|
|
||||||
|
# Functions
|
||||||
|
function cd-projects {
|
||||||
|
dir=$(find ~/Projects -maxdepth 3 -type d | fzf)
|
||||||
|
cd $dir
|
||||||
|
}
|
||||||
|
|
||||||
|
# Aliases
|
||||||
|
alias gg="git log --graph --abbrev-commit --decorate --format=format:'%C(bold blue)%h%C(reset) - %C(bold cyan)%aD%C(reset) %C(bold green)(%ar)%C(reset)%C(bold yellow)%d%C(reset)%n'' %C(white)%s%C(reset) %C(dim white)- %an (%ae)%C(reset)' --all"
|
||||||
|
alias gca="git add -A; git commit -a --amend --no-edit"
|
||||||
|
alias gs="git status"
|
||||||
|
alias proj="cd-projects"
|
|
@ -0,0 +1,58 @@
|
||||||
|
local options = vim.o -- For the globals options
|
||||||
|
local window_options = vim.wo -- For the window local options
|
||||||
|
local buffer_options = vim.bo -- For the buffer local options
|
||||||
|
|
||||||
|
-- window_options.colorcolumn = [[100]]
|
||||||
|
options.termguicolors = true
|
||||||
|
options.clipboard = 'unnamed,unnamedplus'
|
||||||
|
options.timeoutlen = 300
|
||||||
|
options.mouse = 'a'
|
||||||
|
options.undodir = vim.fn.expand('~/.cache/vim/undo')
|
||||||
|
options.listchars = 'tab:▸ ,extends:❯,precedes:❮'
|
||||||
|
|
||||||
|
window_options.relativenumber = true
|
||||||
|
window_options.list = true
|
||||||
|
|
||||||
|
buffer_options.autoindent = true
|
||||||
|
buffer_options.expandtab = true
|
||||||
|
buffer_options.softtabstop = 4
|
||||||
|
buffer_options.shiftwidth = 4
|
||||||
|
buffer_options.tabstop = 4
|
||||||
|
buffer_options.smartindent = true
|
||||||
|
buffer_options.modeline = true
|
||||||
|
|
||||||
|
buffer_options.undofile = true
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
|
||||||
|
-- Load utilities
|
||||||
|
require('kalle.utils')
|
||||||
|
|
||||||
|
-- Load plugins
|
||||||
|
require('kalle.plugins')
|
||||||
|
|
||||||
|
-- Load config
|
||||||
|
require('kalle.config')
|
||||||
|
|
||||||
|
vim.cmd('colorscheme nightfox')
|
||||||
|
|
||||||
|
|
||||||
|
-- TODO: Move to a better place at some point
|
||||||
|
local nvimtree = require('nvim-tree')
|
||||||
|
local nvimtree_reloaders = require('nvim-tree.actions.reloaders')
|
||||||
|
|
||||||
|
local function keepFileTree()
|
||||||
|
nvimtree_reloaders.reload_explorer()
|
||||||
|
nvimtree.open(false)
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd(
|
||||||
|
"TabNewEntered",
|
||||||
|
{
|
||||||
|
pattern = "*",
|
||||||
|
callback = keepFileTree,
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
|
-- Automatically start nvim tree with vim
|
||||||
|
nvimtree.open()
|
|
@ -0,0 +1,2 @@
|
||||||
|
require('kalle.config.keybinds')
|
||||||
|
require('kalle.config.plugin-config')
|
|
@ -0,0 +1,19 @@
|
||||||
|
Keybind.g({
|
||||||
|
-- [ space + h ] move cursor to left window
|
||||||
|
{ 'n', '<Leader>h', '<Cmd>wincmd h<CR>', { noremap = true, desc = 'Window left' } },
|
||||||
|
-- [ space + l ] move cursor to bottom window
|
||||||
|
{ 'n', '<Leader>j', '<Cmd>wincmd j<CR>', { noremap = true, desc = 'Window down' } },
|
||||||
|
-- [ space + j ] move cursor to top window
|
||||||
|
{ 'n', '<Leader>k', '<Cmd>wincmd k<CR>', { noremap = true, desc = 'Window up' } },
|
||||||
|
-- [ space + k ] move cursor to right window
|
||||||
|
{ 'n', '<Leader>l', '<Cmd>wincmd l<CR>', { noremap = true, desc = 'Window right' } },
|
||||||
|
|
||||||
|
-- [ space + t ] Toggles
|
||||||
|
{ 'n', '<Leader>t', '', { noremap = true, desc = '+Toggle' } },
|
||||||
|
-- [ space + t + t] Toggle file tree
|
||||||
|
{ 'n', '<Leader>tt', '<Cmd>NvimTreeToggle<CR>', { noremap = true, desc = 'Open file tree' } },
|
||||||
|
-- [ space + t + g] Neogit
|
||||||
|
{ 'n', '<Leader>tg', '<Cmd>Neogit<CR>', { noremap = true, desc = 'Open git status' } },
|
||||||
|
|
||||||
|
|
||||||
|
})
|
|
@ -0,0 +1,31 @@
|
||||||
|
require('which-key').setup {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
require('nvim-tree').setup {
|
||||||
|
sort_by = 'case_sensitive',
|
||||||
|
view = {
|
||||||
|
adaptive_size = true,
|
||||||
|
mappings = {
|
||||||
|
custom_only = false,
|
||||||
|
list = {},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
renderer = {
|
||||||
|
group_empty = true,
|
||||||
|
highlight_git = true,
|
||||||
|
highlight_opened_files = "name",
|
||||||
|
indent_markers = {
|
||||||
|
enable = true,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
filters = {
|
||||||
|
dotfiles = true,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
require('neogit').setup {}
|
||||||
|
|
||||||
|
require('lualine').setup {}
|
||||||
|
|
||||||
|
require('tabline').setup {}
|
|
@ -0,0 +1,30 @@
|
||||||
|
local fn = vim.fn
|
||||||
|
local install_path = fn.stdpath('data')..'/site/pack/packer/start/packer.nvim'
|
||||||
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
|
packer_bootstrap = fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
|
||||||
|
end
|
||||||
|
|
||||||
|
return require('packer').startup(function(use)
|
||||||
|
use 'EdenEast/nightfox.nvim'
|
||||||
|
use 'folke/which-key.nvim'
|
||||||
|
|
||||||
|
use {
|
||||||
|
'kyazdani42/nvim-tree.lua',
|
||||||
|
requires = {
|
||||||
|
'kyazdani42/nvim-web-devicons',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
use('TimUntersberger/neogit')
|
||||||
|
use('nvim-lua/plenary.nvim')
|
||||||
|
|
||||||
|
use('nvim-lualine/lualine.nvim')
|
||||||
|
|
||||||
|
use('kdheepak/tabline.nvim')
|
||||||
|
|
||||||
|
-- Automatically set up your configuration after cloning packer.nvim
|
||||||
|
-- Put this at the end after all plugins
|
||||||
|
if packer_bootstrap then
|
||||||
|
require('packer').sync()
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,5 @@
|
||||||
|
Keybind = require('kalle.utils.keybind')
|
||||||
|
|
||||||
|
Vim = {
|
||||||
|
Keybind = Keybind,
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
local Keybind = {}
|
||||||
|
|
||||||
|
Keybind.add_global_keybinds = function (keybinds)
|
||||||
|
for _, keybind in pairs(keybinds) do
|
||||||
|
if(keybind[4] == nil) then
|
||||||
|
keybind[4] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_set_keymap(
|
||||||
|
keybind[1],
|
||||||
|
keybind[2],
|
||||||
|
keybind[3],
|
||||||
|
keybind[4]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Keybind.add_buffer_keybinds = function (keybinds)
|
||||||
|
for _, keybind in pairs(keybinds) do
|
||||||
|
if(keybind[5] == nil) then
|
||||||
|
keybind[5] = {}
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_buf_set_keymap(
|
||||||
|
keybind[1],
|
||||||
|
keybind[2],
|
||||||
|
keybind[3],
|
||||||
|
keybind[4],
|
||||||
|
keybind[5]
|
||||||
|
)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Keybind.g = Keybind.add_global_keybinds
|
||||||
|
Keybind.b = Keybind.add_buffer_keybinds
|
||||||
|
|
||||||
|
return Keybind
|
|
@ -0,0 +1,117 @@
|
||||||
|
-- Automatically generated packer.nvim plugin loader code
|
||||||
|
|
||||||
|
if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
|
||||||
|
vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
vim.api.nvim_command('packadd packer.nvim')
|
||||||
|
|
||||||
|
local no_errors, error_msg = pcall(function()
|
||||||
|
|
||||||
|
local time
|
||||||
|
local profile_info
|
||||||
|
local should_profile = false
|
||||||
|
if should_profile then
|
||||||
|
local hrtime = vim.loop.hrtime
|
||||||
|
profile_info = {}
|
||||||
|
time = function(chunk, start)
|
||||||
|
if start then
|
||||||
|
profile_info[chunk] = hrtime()
|
||||||
|
else
|
||||||
|
profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
|
||||||
|
end
|
||||||
|
end
|
||||||
|
else
|
||||||
|
time = function(chunk, start) end
|
||||||
|
end
|
||||||
|
|
||||||
|
local function save_profiles(threshold)
|
||||||
|
local sorted_times = {}
|
||||||
|
for chunk_name, time_taken in pairs(profile_info) do
|
||||||
|
sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
|
||||||
|
end
|
||||||
|
table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
|
||||||
|
local results = {}
|
||||||
|
for i, elem in ipairs(sorted_times) do
|
||||||
|
if not threshold or threshold and elem[2] > threshold then
|
||||||
|
results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
_G._packer = _G._packer or {}
|
||||||
|
_G._packer.profile_output = results
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[Luarocks path setup]], true)
|
||||||
|
local package_path_str = "/home/kalle/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/kalle/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/kalle/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/kalle/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
|
||||||
|
local install_cpath_pattern = "/home/kalle/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
|
||||||
|
if not string.find(package.path, package_path_str, 1, true) then
|
||||||
|
package.path = package.path .. ';' .. package_path_str
|
||||||
|
end
|
||||||
|
|
||||||
|
if not string.find(package.cpath, install_cpath_pattern, 1, true) then
|
||||||
|
package.cpath = package.cpath .. ';' .. install_cpath_pattern
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[Luarocks path setup]], false)
|
||||||
|
time([[try_loadstring definition]], true)
|
||||||
|
local function try_loadstring(s, component, name)
|
||||||
|
local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
|
||||||
|
if not success then
|
||||||
|
vim.schedule(function()
|
||||||
|
vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
|
||||||
|
end)
|
||||||
|
end
|
||||||
|
return result
|
||||||
|
end
|
||||||
|
|
||||||
|
time([[try_loadstring definition]], false)
|
||||||
|
time([[Defining packer_plugins]], true)
|
||||||
|
_G.packer_plugins = {
|
||||||
|
neogit = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/neogit",
|
||||||
|
url = "https://github.com/TimUntersberger/neogit"
|
||||||
|
},
|
||||||
|
["nightfox.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/nightfox.nvim",
|
||||||
|
url = "https://github.com/EdenEast/nightfox.nvim"
|
||||||
|
},
|
||||||
|
["nvim-tree.lua"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/nvim-tree.lua",
|
||||||
|
url = "https://github.com/kyazdani42/nvim-tree.lua"
|
||||||
|
},
|
||||||
|
["nvim-web-devicons"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/nvim-web-devicons",
|
||||||
|
url = "https://github.com/kyazdani42/nvim-web-devicons"
|
||||||
|
},
|
||||||
|
["plenary.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/plenary.nvim",
|
||||||
|
url = "https://github.com/nvim-lua/plenary.nvim"
|
||||||
|
},
|
||||||
|
["stickybuf.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/stickybuf.nvim",
|
||||||
|
url = "https://github.com/stevearc/stickybuf.nvim"
|
||||||
|
},
|
||||||
|
["which-key.nvim"] = {
|
||||||
|
loaded = true,
|
||||||
|
path = "/home/kalle/.local/share/nvim/site/pack/packer/start/which-key.nvim",
|
||||||
|
url = "https://github.com/folke/which-key.nvim"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
time([[Defining packer_plugins]], false)
|
||||||
|
if should_profile then save_profiles() end
|
||||||
|
|
||||||
|
end)
|
||||||
|
|
||||||
|
if not no_errors then
|
||||||
|
error_msg = error_msg:gsub('"', '\\"')
|
||||||
|
vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
|
||||||
|
end
|
|
@ -0,0 +1,14 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
set -x
|
||||||
|
|
||||||
|
echo "Looking up playlist name..."
|
||||||
|
pl_line=$(youtube-dl --flat-playlist "$1" | grep "\[download\] Downloading playlist: ")
|
||||||
|
pl_name=$(echo ${pl_line:33} | tr '/' ' ')
|
||||||
|
|
||||||
|
echo "Found playlist by name: $pl_name"
|
||||||
|
echo "Downloading it into directory: $pl_name"
|
||||||
|
|
||||||
|
mkdir "$pl_name"
|
||||||
|
cd "$pl_name"
|
||||||
|
youtube-dl --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s" "$1"
|
||||||
|
cd ../
|
5
setup.sh
5
setup.sh
|
@ -12,11 +12,6 @@ if [ -d $NVIM_DIR ]; then
|
||||||
else
|
else
|
||||||
# Symlink the config.
|
# Symlink the config.
|
||||||
ln -s $DOTS_DIR/nvim $NVIM_DIR
|
ln -s $DOTS_DIR/nvim $NVIM_DIR
|
||||||
|
|
||||||
# Install dein.vim
|
|
||||||
curl https://raw.githubusercontent.com/Shougo/dein.vim/master/bin/installer.sh > /tmp/dein_installer.sh
|
|
||||||
chmod +x /tmp/dein_installer.sh
|
|
||||||
/tmp/dein_installer.sh ~/.local/share/dein
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# i3-gaps
|
# i3-gaps
|
||||||
|
|
Loading…
Reference in New Issue