diff --git a/.aliases b/.aliases index 4412170..deef585 100644 --- a/.aliases +++ b/.aliases @@ -1,3 +1,9 @@ +# Complex aliasses +## Open notes folder in nvim then return +function notes() {cd $HOME/Notes; nvim; cd -;}; +function sb() {cd $HOME/second-brain/; git pull; nvim; git add .; git commit; git push; cd -;}; + +# simple alias clj='rlwrap java -cp ~/Clojure/clojure-1.8.0.jar clojure.main' alias ll='ls -l' alias la='ls -A' @@ -7,34 +13,13 @@ alias cdclip="cd \$(xclip -o -selection clipboard)" alias clipi='xclip -i -selection clipboard' alias clipo='xclip -o -selection clipboard' alias ssh-agent='ssh-agent -t 1h' -alias ssh-home='ssh home-server' -alias tmh='ssh home-server -t "tmux new -A -s sys"' -alias tm='tmux new -A -s ' -alias tms='tmux new -A -s sys' -alias hsfs='sshfs andrei@home-server:/utility /hsfs' -alias uhsfs='sudo umount /hsfs' +alias saa='eval $(ssh-agent) && ssh-add' +alias tm='tmux new -A' alias exfs='sudo zpool import external' alias uexfs='sudo zpool export external' -alias ta-media='rsync -avr /home/andrei/CSCI_4160/ home-server:/home/andrei/backups/school/TA/CSCI_4160_w19;' -alias ta-web='rsync -avr /home/andrei/CSCI_3230/ home-server:/home/andrei/backups/school/TA/CSCI_3230_w19;' -alias photo='rsync -avr /home/andrei/Pictures/* home-server:/utility/Photos/XPS_2018_VACATION/ --exclude="*_CR2_embedded.jpg"' -alias photo-local='rsync -avr ~/Pictures/* /media/andrei/External/Photos --exclude="*_CR2_embedded.jpg"' alias socks='ssh -D 8081 -C -q -N home-server' alias gmonitor='while [ true ] ; do nvidia-smi; nvidia-settings -q gpucoretemp | grep gpu; sensors| grep CPU; sleep 1; clear; done' -alias saa='ssh-agent && ssh-add' -alias gssh='gcloud compute ssh' -alias gc='gcloud compute' -alias gci='gcloud compute instances' -alias gcls='gcloud compute instances list' -alias gcstart='gcloud compute instances start' -alias gcstop='gcloud compute instances stop' -alias gcstopall="gcls | grep RUNNING | awk '{print \$1}' | xargs -I{} gcloud compute instances stop {}" -alias gct='gcloud compute tpus' -alias gctls='gcloud compute tpus list' -alias gctstart='gcloud compute tpus start' -alias gctstop='gcloud compute tpus stop' alias code='code-oss' -alias tf-docker='docker run --runtime=nvidia -it --rm -p 8888:8888 -v $PWD:/tf/local andrei/dev' alias conda-activate='source /opt/anaconda/bin/activate' alias conda-deactivete='source /opt/anaconda/bin/deactivate' alias venv='python -m venv' @@ -44,4 +29,3 @@ alias dotvenv='source .venv/bin/activate' alias todo='rusty-tasks' alias ccat='bat' alias we='watchexec' - diff --git a/.gitconfig b/.gitconfig index 8ec8a94..2a9cabf 100644 --- a/.gitconfig +++ b/.gitconfig @@ -16,7 +16,7 @@ lg = log --pretty=format:'%C(auto) %h,%C(green) \"%s\"%Creset, %aN,%C(blue) %cD' [core] - editor = vim + editor = nvim autocrlf = input [init] defaultBranch = main diff --git a/.nvchad-custom/configs/nvim-ufo.lua b/.nvchad-custom/configs/nvim-ufo.lua new file mode 100644 index 0000000..0c13c6a --- /dev/null +++ b/.nvchad-custom/configs/nvim-ufo.lua @@ -0,0 +1,72 @@ +local desc = require('utils').plugin_keymap_desc('ufo') + +-- Custom fold text handler for ufo showing line count folded +local handler = function(virtText, lnum, endLnum, width, truncate) + local newVirtText = {} + local suffix = (' 󰁂 %d '):format(endLnum - lnum) + local sufWidth = vim.fn.strdisplaywidth(suffix) + local targetWidth = width - sufWidth + local curWidth = 0 + + for _, chunk in ipairs(virtText) do + local chunkText = chunk[1] + local chunkWidth = vim.fn.strdisplaywidth(chunkText) + if targetWidth > curWidth + chunkWidth then + table.insert(newVirtText, chunk) + else + chunkText = truncate(chunkText, targetWidth - curWidth) + local hlGroup = chunk[2] + table.insert(newVirtText, {chunkText, hlGroup}) + chunkWidth = vim.fn.strdisplaywidth(chunkText) + -- str width returned from truncate() may less than 2nd argument, need padding + if curWidth + chunkWidth < targetWidth then + suffix = suffix .. (' '):rep(targetWidth - curWidth - chunkWidth) + end + break + end + curWidth = curWidth + chunkWidth + end + + table.insert(newVirtText, {suffix, 'MoreMsg'}) + return newVirtText +end + +return { + { + 'luukvbaal/statuscol.nvim', + config = function() + local builtin = require('statuscol.builtin') + require('statuscol').setup({ + segments = { + {text = {builtin.foldfunc}, click = 'v:lua.ScFa'}, + {text = {' %s'}, click = 'v:lua.ScSa'}, + {text = {builtin.lnumfunc, ' '}, condition = {true, builtin.not_empty}, click = 'v:lua.ScLa'}, + }, + }) + end, + }, + + { + 'kevinhwang91/nvim-ufo', + dependencies = {'kevinhwang91/promise-async'}, + opts = { + fold_virt_text_handler = handler, + provider_selector = function(bufnr, filetype, buftype) + return {'treesitter', 'indent'} + end, + }, + config = function(_, opts) + local ufo = require('ufo') + ufo.setup(opts) + + vim.keymap.set('n', 'zR', ufo.openAllFolds, {desc = desc('Open all folds')}) + vim.keymap.set('n', 'zM', ufo.closeAllFolds, {desc = desc('Close all folds')}) + vim.keymap.set('n', 'K', function() + local winid = ufo.peekFoldedLinesUnderCursor(true) + if not winid then + vim.lsp.buf.hover() + end + end, {desc = 'LSP: Show hover documentation and folded code'}) + end + }, +} diff --git a/.nvchad-custom/init.lua b/.nvchad-custom/init.lua index 5d06722..ed1e7fa 100644 --- a/.nvchad-custom/init.lua +++ b/.nvchad-custom/init.lua @@ -12,7 +12,6 @@ vim.opt.expandtab = true vim.opt.number = true vim.opt.linebreak = true vim.opt.showbreak = "+++" -vim.opt.textwidth = 100 vim.opt.showmatch = true vim.opt.visualbell = true vim.opt.hlsearch = true diff --git a/.nvchad-custom/mappings.lua b/.nvchad-custom/mappings.lua index 4aa4cee..de0e5e8 100644 --- a/.nvchad-custom/mappings.lua +++ b/.nvchad-custom/mappings.lua @@ -1,24 +1,84 @@ ---@type MappingsTable local M = {} +local function toggle_telescope(harpoon_files) + local conf = require("telescope.config").values + local file_paths = {} + for _, item in ipairs(harpoon_files.items) do + table.insert(file_paths, item.value) + end + + require("telescope.pickers").new({}, { + prompt_title = "Harpoon", + finder = require("telescope.finders").new_table({ + results = file_paths, + }), + previewer = conf.file_previewer({}), + sorter = conf.generic_sorter({}), + }):find() +end + M.general = { n = { -- harpoon - ["H"] = {function() require("harpoon.ui").toggle_quick_menu() end, "Open Harpoon" }, - ["ha"] = {function() require("harpoon.mark").add_file() end, "Add file to Harpoon"}, - ["hs"] = {function() require("harpoon.ui").nav_file(1) end, "Switch to file 1"}, - ["hd"] = {function() require("harpoon.ui").nav_file(2) end, "Switch to file 2"}, - ["hf"] = {function() require("harpoon.ui").nav_file(3) end, "Switch to file 3"}, - ["hg"] = {function() require("harpoon.ui").nav_file(4) end, "Switch to file 4"}, + ["H"] = { + function() + local harpoon = require("harpoon") + toggle_telescope(harpoon:list()) + --harpoon.ui:toggle_quick_menu(harpoon:list()) + end, + "Open Harpoon in telescope", + }, + ["hh"] = { + function() + local harpoon = require("harpoon") + harpoon.ui:toggle_quick_menu(harpoon:list()) + end, + "Open Harpoon", + }, + ["ha"] = { + function() + local harpoon = require("harpoon") + harpoon:list():append() + end, + "Add file to Harpoon", + }, + ["hs"] = { + function() + local harpoon = require("harpoon") + harpoon:list():select(1) + end, + "Switch to file 1", + }, + ["hd"] = { + function() + local harpoon = require("harpoon") + harpoon:list():select(2) + end, + "Switch to file 2", + }, + ["hf"] = { + function() + local harpoon = require("harpoon") + harpoon:list():select(3) + end, + "Switch to file 3", + }, + ["hg"] = { + function() + local harpoon = require("harpoon") + harpoon:list():select(4) + end, + "Switch to file 4", + }, -- navigation - [""] = {"zz", "1/2 page down"}, - [""] = {"zz", "1/2 page up" }, - ["n"] = {"nzz", "find next"}, - ["N"] = {"Nzz", "find prev"}, - - ["Zm"] = {":ZenMode", "Enter ZenMode"} + [""] = { "zz", "1/2 page down" }, + [""] = { "zz", "1/2 page up" }, + ["n"] = { "nzz", "find next" }, + ["N"] = { "Nzz", "find prev" }, + ["Zm"] = { ":ZenMode", "Enter ZenMode" }, }, } diff --git a/.nvchad-custom/plugins.lua b/.nvchad-custom/plugins.lua index eca4631..c766803 100644 --- a/.nvchad-custom/plugins.lua +++ b/.nvchad-custom/plugins.lua @@ -2,101 +2,116 @@ local overrides = require("custom.configs.overrides") ---@type NvPluginSpec[] local plugins = { - { - "folke/twilight.nvim", - opts = { - context = 20, - expand = { - "function", - }, - }, - lazy = false, - }, - { - "folke/zen-mode.nvim", - opts = { - tmux = { - enable = false, - }, - }, - lazy = false, - }, - { - "alexghergh/nvim-tmux-navigation", - lazy = false, - }, - -- Override plugin definition options + { + "folke/twilight.nvim", + opts = { + context = 20, + expand = { + "function", + }, + }, + lazy = false, + }, + { + "folke/zen-mode.nvim", + opts = { + tmux = { + enable = false, + }, + }, + lazy = false, + }, + { + "alexghergh/nvim-tmux-navigation", + lazy = false, + }, + -- Override plugin definition options - { - "hrsh7th/nvim-cmp", - opts = overrides.cmp, - }, + { + "hrsh7th/nvim-cmp", + opts = overrides.cmp, + }, - { - "neovim/nvim-lspconfig", - dependencies = { - -- format & linting - { - "jose-elias-alvarez/null-ls.nvim", - config = function() - require("custom.configs.null-ls") - end, - }, - }, - config = function() - require("plugins.configs.lspconfig") - require("custom.configs.lspconfig") - end, -- Override to setup mason-lspconfig - }, + { + "neovim/nvim-lspconfig", + dependencies = { + -- format & linting + { + "jose-elias-alvarez/null-ls.nvim", + config = function() + require("custom.configs.null-ls") + end, + }, + }, + config = function() + require("plugins.configs.lspconfig") + require("custom.configs.lspconfig") + end, -- Override to setup mason-lspconfig + }, + -- override plugin configs + { + "williamboman/mason.nvim", + opts = overrides.mason, + }, - -- override plugin configs - { - "williamboman/mason.nvim", - opts = overrides.mason, - }, + { + "williamboman/mason-lspconfig.nvim", + setup = { + ensure_installed = { "jedi" }, + }, + }, - { - "williamboman/mason-lspconfig.nvim", - setup = { - ensure_installed = { "jedi" }, - }, - }, + { + "nvim-treesitter/nvim-treesitter", + opts = overrides.treesitter, + }, - { - "nvim-treesitter/nvim-treesitter", - opts = overrides.treesitter, - }, + { + "nvim-tree/nvim-tree.lua", + opts = overrides.nvimtree, + }, - { - "nvim-tree/nvim-tree.lua", - opts = overrides.nvimtree, - }, + -- Install a plugin + { + "max397574/better-escape.nvim", + event = "InsertEnter", + config = function() + require("better_escape").setup() + end, + }, - -- Install a plugin - { - "max397574/better-escape.nvim", - event = "InsertEnter", - config = function() - require("better_escape").setup() - end, - }, + { "nvim-treesitter/nvim-treesitter-context", lazy = false }, - { "nvim-treesitter/nvim-treesitter-context", lazy = false }, + { + "theprimeagen/harpoon", + branch = "harpoon2", + dependencies = { "nvim-lua/plenary.nvim" }, + config = function(_, opts) + local harpoon = require("harpoon") + harpoon:setup({ + settings = { + save_on_toggle = true, + }, + }) + end, + }, - { - "theprimeagen/harpoon", - }, + { + "simrat39/rust-tools.nvim", + }, - { - "simrat39/rust-tools.nvim", - }, + { + "ellisonleao/glow.nvim", + config = true, + cmd = "Glow", + event = "BufEnter *.md", + }, - { - "ellisonleao/glow.nvim", - config = true, - cmd = "Glow", - event = "BufEnter *.md", - }, + { + "kevinhwang91/nvim-ufo", + requires = "kevinhwang91/promise-async", + lazy = false, + }, { "epwalsh/obsidian.nvim", @@ -110,76 +125,87 @@ local plugins = { dependencies = { "nvim-lua/plenary.nvim" }, opts = { workspaces = { - { name = "personal", path = "~/Notes/personal" }, - { name = "work", path = "~/Notes/work" }, + { name = "second-brain", path = "~/second-brain" }, }, new_notes_location = "notes_subdir", daily_notes = { folder = "notes/dailies" }, }, }, -- Disable nvchad plugins + { + "folke/todo-comments.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + lazy = false, + opts = { + -- your configuration comes here + -- or leave it empty to use the default settings + -- refer to the configuration section below + }, + }, - { - "tpope/vim-sleuth", - lazy = false, - }, + -- Disable nvchad plugins - { - "debugloop/telescope-undo.nvim", - dependencies = { -- note how they're inverted to above example - { - "nvim-telescope/telescope.nvim", - dependencies = { "nvim-lua/plenary.nvim" }, - }, - }, - keys = { - { -- lazy style key map - "u", - "Telescope undo", - desc = "undo history", - }, - }, - opts = { - -- don't use `defaults = { }` here, do this in the main telescope spec - extensions = { - undo = { - -- telescope-undo.nvim config, see below - }, - -- no other extensions here, they can have their own spec too - }, - }, - config = function(_, opts) - -- Calling telescope's setup from multiple specs does not hurt, it will happily merge the - -- configs for us. We won't use data, as everything is in it's own namespace (telescope - -- defaults, as well as each extension). - require("telescope").setup(opts) - require("telescope").load_extension("undo") - end, - }, + { + "tpope/vim-sleuth", + lazy = false, + }, - { - "sindrets/diffview.nvim", - lazy = false, - }, + { + "debugloop/telescope-undo.nvim", + dependencies = { -- note how they're inverted to above example + { + "nvim-telescope/telescope.nvim", + dependencies = { "nvim-lua/plenary.nvim" }, + }, + }, + keys = { + { -- lazy style key map + "u", + "Telescope undo", + desc = "undo history", + }, + }, + opts = { + -- don't use `defaults = { }` here, do this in the main telescope spec + extensions = { + undo = { + -- telescope-undo.nvim config, see below + }, + -- no other extensions here, they can have their own spec too + }, + }, + config = function(_, opts) + -- Calling telescope's setup from multiple specs does not hurt, it will happily merge the + -- configs for us. We won't use data, as everything is in it's own namespace (telescope + -- defaults, as well as each extension). + require("telescope").setup(opts) + require("telescope").load_extension("undo") + end, + }, - { - "NvChad/nvterm", - enabled = false, - }, + { + "sindrets/diffview.nvim", + lazy = false, + }, - -- To make a plugin not be loaded - -- { - -- "NvChad/nvim-colorizer.lua", - -- enabled = false - -- }, + { + "NvChad/nvterm", + enabled = false, + }, - -- All NvChad plugins are lazy-loaded by default - -- For a plugin to be loaded, you will need to set either `ft`, `cmd`, `keys`, `event`, or set `lazy = false` - -- If you want a plugin to load on startup, add `lazy = false` to a plugin spec, for example - -- { - -- "mg979/vim-visual-multi", - -- lazy = false, - -- } + -- To make a plugin not be loaded + -- { + -- "NvChad/nvim-colorizer.lua", + -- enabled = false + -- }, + + -- All NvChad plugins are lazy-loaded by default + -- For a plugin to be loaded, you will need to set either `ft`, `cmd`, `keys`, `event`, or set `lazy = false` + -- If you want a plugin to load on startup, add `lazy = false` to a plugin spec, for example + -- { + -- "mg979/vim-visual-multi", + -- lazy = false, + -- } } return plugins diff --git a/.zshrc b/.zshrc index 23529d6..d2bbef7 100644 --- a/.zshrc +++ b/.zshrc @@ -126,10 +126,6 @@ function work() { } -# Open notes folder in nvim then return -function notes() {cd $HOME/Notes; nvim; cd -;}; - - # JINA_CLI_BEGIN ## autocomplete