diff --git a/nvim/m-housh/lua/config/autocmd.lua b/nvim/m-housh/lua/config/autocmd.lua new file mode 100755 index 0000000..a9f30b3 --- /dev/null +++ b/nvim/m-housh/lua/config/autocmd.lua @@ -0,0 +1,50 @@ +local defaultGroupOptions = { clear = true } +local markdownGroup = vim.api.nvim_create_augroup("MyMarkdownGroup", defaultGroupOptions) +local spellGroup = vim.api.nvim_create_augroup("SpellGroup", defaultGroupOptions) +local createCmd = vim.api.nvim_create_autocmd + +-- Spell check +createCmd("BufEnter", { + pattern = { "*.md", "*.markdown", "*.txt", "*.tex" }, + group = spellGroup, + callback = function(_) + vim.cmd.setlocal("textwidth=80") + vim.cmd.setlocal("spell spelllang=en_us") + end, +}) + +-- Markdown +createCmd("BufWritePost", { + pattern = { "*.md", "*.markdown" }, + group = markdownGroup, + callback = function(_) + local cursor = vim.fn.getpos(".") + vim.cmd("FormatWrite") + vim.fn.setpos(".", cursor) + end, +}) + +-- Go +createCmd("BufWritePre", { + pattern = "*.go", + callback = function() + require("go.format").goimport() + end, + group = vim.api.nvim_create_augroup("GoFormat", defaultGroupOptions), +}) + +vim.api.nvim_exec2( + [[ + autocmd BufNewFile,BufRead /private/**/gopass** setlocal noswapfile nobackup noundofile shada="" + ]], + {} +) + +-- Highlight when yanking. +createCmd("TextYankPost", { + desc = "Highlight when yanking text.", + group = vim.api.nvim_create_augroup("highlight-yank", { clear = true }), + callback = function() + vim.highlight.on_yank() + end, +}) diff --git a/nvim/m-housh/lua/config/keymaps.lua b/nvim/m-housh/lua/config/keymaps.lua new file mode 100755 index 0000000..a486023 --- /dev/null +++ b/nvim/m-housh/lua/config/keymaps.lua @@ -0,0 +1,52 @@ +vim.g.mapleader = " " +vim.g.maplocalleader = " " + +local keymap = vim.keymap.set +local default_options = { noremap = true, silent = true } +local wk = require("which-key") + +local wk_add = function(mode, keymaps) + wk.add(keymaps, { mode = mode, silent = true }) +end + +-------------------------------------------------------------------------------- +-- Insert Mode +-------------------------------------------------------------------------------- +-- easier escape key mapping +keymap("i", "jk", "", default_options) +wk_add("i", { + { "", ":writea", desc = "[S]ave" }, +}) + +-------------------------------------------------------------------------------- +-- Normal Mode +-------------------------------------------------------------------------------- +wk_add("n", { + { "", ":vertical resize +1", desc = "Resize Pane Left" }, + { "", ":vertical resize -1", desc = "Resize Pane Right" }, + { "", "resize -1", desc = "Resize Pane Up" }, + { "", "resize +1", desc = "Resize Pane Down" }, + + { "n", ":noh", desc = "[N]o highlighting" }, + { "s", ":set spell!", desc = "[S]pell check toggle" }, + { "", ":write", desc = "[S]ave" }, + + { "J", ":move .+1==", desc = "Move line down" }, + { "K", ":move .-2==", desc = "Move line up" }, + + { "z", ":ZenMode", desc = "[Z]en Mode" }, +}) + +-------------------------------------------------------------------------------- +-- Visual Mode +-------------------------------------------------------------------------------- + +vim.keymap.set("v", "K", ":move '<-2gv=gv", { desc = "Move selected block up.", silent = true, noremap = true }) +vim.keymap.set("v", "J", ":move '>+1gv=gv", { desc = "Move selected block up.", silent = true, noremap = true }) + +-- Toggle term key maps, that get attached when terminal is opened. +function _G.set_terminal_keymaps() + local opts = { buffer = 0 } + keymap("t", "", [[]], opts) +end +vim.cmd("autocmd! TermOpen term://* lua set_terminal_keymaps()") diff --git a/nvim/m-housh/lua/config/lazy.lua b/nvim/m-housh/lua/config/lazy.lua new file mode 100755 index 0000000..98308a5 --- /dev/null +++ b/nvim/m-housh/lua/config/lazy.lua @@ -0,0 +1,47 @@ +-- Bootstrap Lazy. +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not vim.loop.fs_stat(lazypath) then + vim.fn.system({ + "git", + "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", -- latest stable release + lazypath, + }) +end +vim.opt.rtp:prepend(lazypath) + +require("lazy").setup({ + dev = { + path = "~/LocalProjects/plugins", + fallback = true, + }, + -- Import all the plugin configs in the 'plugin' directory + { import = "plugins" }, + -- Plugins that don't have a configuration file. + { + "folke/zen-mode.nvim", + opts = {}, + }, + { + "christoomey/vim-tmux-navigator", + lazy = false, + }, + { "NoahTheDuke/vim-just", ft = { "just" } }, + { + "chipsenkbeil/distant.nvim", + version = "v0.*", + event = "VeryLazy", + }, +}, { + checker = { + enabled = true, + notify = false, + }, + change_detection = { + notify = false, + }, +}) + +vim.keymap.set("n", "ll", "Lazy", { desc = "Open [L]azy" }) diff --git a/nvim/m-housh/lua/config/settings.lua b/nvim/m-housh/lua/config/settings.lua new file mode 100755 index 0000000..96ec45b --- /dev/null +++ b/nvim/m-housh/lua/config/settings.lua @@ -0,0 +1,66 @@ +local o = vim.opt +local wo = vim.wo +local fn = vim.fn + +vim.cmd.set("inccommand=split") +o.filetype = "on" +o.updatetime = 500 -- faster completion +o.timeoutlen = 800 -- time to wait for a mapped sequence to complete (in milliseconds) +o.ttimeoutlen = 300 -- Time in milliseconds to wait for a key code sequence to complete +o.backup = false -- creates a backup file +o.swapfile = false -- enable/disable swap file creation +o.dir = fn.stdpath("data") .. "/swp" -- swap file directory +o.undofile = false -- enable/disable undo file creation +o.undodir = fn.stdpath("data") .. "/undodir" -- set undo directory +o.history = 500 -- Use the 'history' option to set the number of lines from command mode that are remembered. +o.hidden = true -- required to keep multiple buffers and open multiple buffers +o.clipboard = "unnamedplus" -- allows neovim to access the system clipboard +o.fileencoding = "utf-8" -- the encoding written to a file +o.conceallevel = 0 -- so that `` is visible in markdown files +o.number = true -- set numbered lines +o.relativenumber = true -- set relative numbered lines +o.cmdheight = 1 -- space for displaying messages/commands +o.showmode = false -- we don't need to see things like -- INSERT -- anymore +o.showtabline = 2 -- always show tabs +o.laststatus = 2 -- The value of this option influences when the last window will have a status line (2 always) +o.smartcase = true -- smart case +o.smartindent = true -- make indenting smarter again +o.splitbelow = true -- force all horizontal splits to go below current window +o.splitright = true -- force all vertical splits to go to the right of current window +o.autoindent = true -- turn on auto indent. +o.expandtab = true -- convert tabs to spaces +o.smarttab = true -- turn on smart tab +o.shiftwidth = 2 -- the number of spaces inserted for each indentation +o.tabstop = 2 -- how many columns a tab counts for +o.termguicolors = true -- set term gui colors (most terminals support this) +o.cursorline = true -- highlight the current line +o.scrolloff = 20 -- Minimal number of screen lines to keep above and below the cursor +o.sidescrolloff = 5 -- The minimal number of columns to scroll horizontally +o.hlsearch = false -- highlight all matches on previous search pattern +o.ignorecase = true -- ignore case in search patterns +o.foldenable = false -- disable folding; enable with zi +o.foldmethod = "expr" +o.foldexpr = "nvim_treesitter#foldexpr()" +-- o.listchars = "eol:¬,tab:>·,trail:~,extends:>,precedes:<" +o.listchars = "eol:¬,tab:>·,trail:~,extends:>,precedes:<,space:␣" +o.shortmess = o.shortmess + "c" -- prevent "pattern not found" messages +wo.colorcolumn = "99999" +o.wildmode = "full" +o.lazyredraw = false -- do not redraw screen while running macros +o.grepprg = "rg --hidden --vimgrep --smart-case --" +o.completeopt = { "menu", "menuone", "noselect", "noinsert" } -- A comma separated list of options for Insert mode completion +o.wildignorecase = true -- When set case is ignored when completing file names and directories +o.wildignore = [[ +.git,.hg,.svn +*.aux,*.out,*.toc +*.o,*.obj,*.exe,*.dll,*.manifest,*.rbc,*.class +*.ai,*.bmp,*.gif,*.ico,*.jpg,*.jpeg,*.png,*.psd,*.webp +*.avi,*.divx,*.mp4,*.webm,*.mov,*.m2ts,*.mkv,*.vob,*.mpg,*.mpeg +*.mp3,*.oga,*.ogg,*.wav,*.flac +*.eot,*.otf,*.ttf,*.woff +*.doc,*.pdf,*.cbr,*.cbz +*.zip,*.tar.gz,*.tar.bz2,*.rar,*.tar.xz,*.kgb +*.swp,.lock,.DS_Store,._* +*/tmp/*,*.so,*.swp,*.zip,**/node_modules/**,**/target/**,**.terraform/**" +]] +o.viminfo = "" -- disable viminfo from copying information from current session, for security. diff --git a/nvim/m-housh/lua/config/theme.lua b/nvim/m-housh/lua/config/theme.lua new file mode 100755 index 0000000..79a299d --- /dev/null +++ b/nvim/m-housh/lua/config/theme.lua @@ -0,0 +1,4 @@ +-- Nightfox +--require('nightfox').load('terrafox') +vim.cmd.colorscheme "catppuccin" +