aboutsummaryrefslogtreecommitdiff
path: root/vim/.config/nvim/lua
diff options
context:
space:
mode:
Diffstat (limited to 'vim/.config/nvim/lua')
-rw-r--r--vim/.config/nvim/lua/custom-lualine.lua4
-rw-r--r--vim/.config/nvim/lua/diagnostics.lua2
-rw-r--r--vim/.config/nvim/lua/native-lsp.lua48
-rw-r--r--vim/.config/nvim/lua/plugins/blink_config.lua11
-rw-r--r--vim/.config/nvim/lua/plugins/init.lua157
-rw-r--r--vim/.config/nvim/lua/plugins/lualine-config.lua4
-rw-r--r--vim/.config/nvim/lua/plugins/marks-config.lua36
-rw-r--r--vim/.config/nvim/lua/plugins/rust-config.lua30
-rw-r--r--vim/.config/nvim/lua/plugins/ts.lua41
-rw-r--r--vim/.config/nvim/lua/remap.lua77
-rw-r--r--vim/.config/nvim/lua/standard-lint.lua12
-rw-r--r--vim/.config/nvim/lua/westwood-lint.lua20
12 files changed, 442 insertions, 0 deletions
diff --git a/vim/.config/nvim/lua/custom-lualine.lua b/vim/.config/nvim/lua/custom-lualine.lua
new file mode 100644
index 0000000..9bed3a6
--- /dev/null
+++ b/vim/.config/nvim/lua/custom-lualine.lua
@@ -0,0 +1,4 @@
+require('lualine').setup {
+ options = { theme = "solarized_dark" }
+}
+
diff --git a/vim/.config/nvim/lua/diagnostics.lua b/vim/.config/nvim/lua/diagnostics.lua
new file mode 100644
index 0000000..55dede6
--- /dev/null
+++ b/vim/.config/nvim/lua/diagnostics.lua
@@ -0,0 +1,2 @@
+vim.diagnostic.config({ virtual_text = true })
+
diff --git a/vim/.config/nvim/lua/native-lsp.lua b/vim/.config/nvim/lua/native-lsp.lua
new file mode 100644
index 0000000..9bc4856
--- /dev/null
+++ b/vim/.config/nvim/lua/native-lsp.lua
@@ -0,0 +1,48 @@
+vim.lsp.config('luals', {
+ on_attach = function()
+ print('luals is now active in this file')
+ end,
+})
+if not string.match(vim.g.hostname, "cs.purdue.edu") then
+ vim.lsp.enable("luals")
+end
+
+
+vim.lsp.config('pyright', {
+ on_attach = function()
+ print('pyright is now active in this file')
+ end,
+})
+
+vim.lsp.enable("pyright")
+
+
+vim.lsp.config('clangd', {
+ on_attach = function()
+ print('clangd is now active in this file')
+ end,
+})
+
+vim.lsp.enable("clangd")
+
+vim.lsp.config('tailwind-ls', {
+ on_attach = function()
+ print('tailwind-ls is now active in this file')
+ end,
+})
+
+vim.lsp.enable("tailwind-ls")
+
+vim.lsp.config('zls', {
+ on_attach = function()
+ print('zls is now active in this file')
+ end,
+})
+
+vim.lsp.enable("zls")
+
+-- https://lsp-zero.netlify.app/blog/lsp-client-features.html
+
+vim.opt.completeopt = {'menu', 'menuone', 'noselect', 'noinsert'}
+vim.opt.shortmess:append('c')
+
diff --git a/vim/.config/nvim/lua/plugins/blink_config.lua b/vim/.config/nvim/lua/plugins/blink_config.lua
new file mode 100644
index 0000000..3c8f4cb
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/blink_config.lua
@@ -0,0 +1,11 @@
+require("blink.cmp").setup({
+ fuzzy = {
+ implementation = "prefer_rust",
+ prebuilt_binaries = {
+ download = true,
+ force_version = 'v1.2.0',
+ },
+ },
+ keymap = { preset = "enter" },
+})
+
diff --git a/vim/.config/nvim/lua/plugins/init.lua b/vim/.config/nvim/lua/plugins/init.lua
new file mode 100644
index 0000000..c6a418d
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/init.lua
@@ -0,0 +1,157 @@
+vim.cmd [[packadd packer.nvim]]
+
+local ensure_packer = function()
+ 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
+ fn.system({'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path})
+ vim.cmd [[packadd packer.nvim]]
+ return true
+ end
+ return false
+end
+
+local packer_bootstrap = ensure_packer()
+
+return require('packer').startup(function(use)
+ use 'wbthomason/packer.nvim'
+
+
+
+ use {
+ 'maxmx03/solarized.nvim',
+ config = function()
+ vim.o.background = 'dark'
+ ---@type solarized
+ local solarized = require('solarized')
+ vim.o.termguicolors = true
+ vim.o.background = 'dark'
+ solarized.setup({})
+ vim.cmd.colorscheme 'solarized'
+ end
+ }
+ use {
+ 'nvim-telescope/telescope.nvim', tag = '0.1.x',
+ requires = { {'nvim-lua/plenary.nvim'} }
+ }
+
+ use {
+ 'nvim-treesitter/nvim-treesitter',
+ config = function() require("plugins/ts") end
+ }
+
+ use 'mbbill/undotree'
+ use 'mfussenegger/nvim-lint'
+ use {
+ 'nvim-lualine/lualine.nvim',
+ requires = { 'nvim-tree/nvim-web-devicons', opt = true },
+ config = function() require('plugins/lualine-config') end
+ }
+ use {
+ 'm4xshen/autoclose.nvim',
+ config = function() require("autoclose").setup() end
+ }
+
+ use {
+ 'CRAG666/betterTerm.nvim',
+ config = function() require('betterTerm').setup() end
+ }
+
+ use {
+ 'anurag3301/nvim-platformio.lua',
+ requires = {
+ {'akinsho/nvim-toggleterm.lua'},
+ {'nvim-telescope/telescope.nvim'},
+ {'nvim-lua/plenary.nvim'},
+ },
+ config = function()
+ if not vim.g.is_purdue then
+ require('platformio').setup({
+ lsp = "clangd" --default: ccls, other option: clangd
+ -- If you pick clangd, it also creates compile_commands.json
+ })
+ end
+ end
+ }
+
+ use {
+ "chentoast/marks.nvim",
+ config = function() require('plugins/marks-config') end
+ }
+
+ use {
+ "nvim-neo-tree/neo-tree.nvim",
+ branch = "v3.x",
+ requires = {
+ "nvim-lua/plenary.nvim",
+ "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended
+ "MunifTanjim/nui.nvim",
+ -- "3rd/image.nvim", -- Optional image support in preview window: See `# Preview Mode` for more information
+ }
+ }
+
+
+ use { "nvim-tree/nvim-web-devicons" }
+ use { "MunifTanjim/nui.nvim" }
+
+ use { 'rafamadriz/friendly-snippets' }
+ use {
+ 'saghen/blink.cmp',
+ run = 'cargo build --release',
+ config = function()
+ require("plugins/blink_config")
+ end
+ }
+
+ use {
+ 'f-person/git-blame.nvim',
+ config = function ()
+ require("gitblame").setup {
+ gitblame_delay = 1
+ }
+ end
+ }
+
+ use {
+ 'mrcjkb/rustaceanvim',
+ config = function() require('plugins/rust-config') end
+ }
+ use {
+ 'pwntester/octo.nvim',
+ requires = {
+ 'nvim-lua/plenary.nvim',
+ 'nvim-telescope/telescope.nvim',
+ -- OR 'ibhagwan/fzf-lua',
+ -- OR 'folke/snacks.nvim',
+ 'nvim-tree/nvim-web-devicons',
+ },
+ config = function ()
+ require"octo".setup()
+ end
+ }
+
+ use {
+ "NeogitOrg/neogit",
+ config = function ()
+ require("neogit").setup {}
+ end
+ }
+
+ use "mfussenegger/nvim-dap"
+ use 'theHamsta/nvim-dap-virtual-text'
+ use { "rcarriga/nvim-dap-ui", requires = {"mfussenegger/nvim-dap", "nvim-neotest/nvim-nio"} }
+
+ use 'wakatime/vim-wakatime'
+
+ use { "geigerzaehler/tree-sitter-jinja2" }
+
+ use "echasnovski/mini.base16"
+
+
+ ------------------------
+
+ if packer_bootstrap then
+ require('packer').sync()
+ end
+end)
+
diff --git a/vim/.config/nvim/lua/plugins/lualine-config.lua b/vim/.config/nvim/lua/plugins/lualine-config.lua
new file mode 100644
index 0000000..f8a6442
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/lualine-config.lua
@@ -0,0 +1,4 @@
+require('lualine').setup {
+ options = { theme = "solarized" }
+}
+
diff --git a/vim/.config/nvim/lua/plugins/marks-config.lua b/vim/.config/nvim/lua/plugins/marks-config.lua
new file mode 100644
index 0000000..d1b4c82
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/marks-config.lua
@@ -0,0 +1,36 @@
+require'marks'.setup {
+ -- whether to map keybinds or not. default true
+ default_mappings = true,
+ -- which builtin marks to show. default {}
+ builtin_marks = { ".", "<", ">", "^" },
+ -- whether movements cycle back to the beginning/end of buffer. default true
+ cyclic = true,
+ -- whether the shada file is updated after modifying uppercase marks. default false
+ force_write_shada = false,
+ -- how often (in ms) to redraw signs/recompute mark positions.
+ -- higher values will have better performance but may cause visual lag,
+ -- while lower values may cause performance penalties. default 150.
+ refresh_interval = 250,
+ -- sign priorities for each type of mark - builtin marks, uppercase marks, lowercase
+ -- marks, and bookmarks.
+ -- can be either a table with all/none of the keys, or a single number, in which case
+ -- the priority applies to all marks.
+ -- default 10.
+ sign_priority = { lower=10, upper=15, builtin=8, bookmark=20 },
+ -- disables mark tracking for specific filetypes. default {}
+ excluded_filetypes = {},
+ -- disables mark tracking for specific buftypes. default {}
+ excluded_buftypes = {},
+ -- marks.nvim allows you to configure up to 10 bookmark groups, each with its own
+ -- sign/virttext. Bookmarks can be used to group together positions and quickly move
+ -- across multiple buffers. default sign is '!@#$%^&*()' (from 0 to 9), and
+ -- default virt_text is "".
+ bookmark_0 = {
+ sign = "⚑",
+ virt_text = "hello world",
+ -- explicitly prompt for a virtual line annotation when setting a bookmark from this group.
+ -- defaults to false.
+ annotate = false,
+ },
+ mappings = {}
+}
diff --git a/vim/.config/nvim/lua/plugins/rust-config.lua b/vim/.config/nvim/lua/plugins/rust-config.lua
new file mode 100644
index 0000000..e83007c
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/rust-config.lua
@@ -0,0 +1,30 @@
+local bufnr = vim.api.nvim_get_current_buf()
+vim.keymap.set(
+ "n",
+ "<leader>a",
+ function()
+ vim.cmd.RustLsp('codeAction') -- supports rust-analyzer's grouping
+ -- or vim.lsp.buf.codeAction() if you don't want grouping.
+ end,
+ { silent = true, buffer = bufnr }
+)
+vim.keymap.set(
+ "n",
+ "K", -- Override Neovim's built-in hover keymap with rustaceanvim's hover actions
+ function()
+ vim.cmd.RustLsp({'hover', 'actions'})
+ end,
+ { silent = true, buffer = bufnr }
+)
+
+vim.g.rustaceanvim = {
+ server = {
+ settings = {
+ ["rust-analyzer"] = {
+ checkOnSave = {
+ command = "clippy",
+ },
+ },
+ },
+ },
+}
diff --git a/vim/.config/nvim/lua/plugins/ts.lua b/vim/.config/nvim/lua/plugins/ts.lua
new file mode 100644
index 0000000..5f1b8b0
--- /dev/null
+++ b/vim/.config/nvim/lua/plugins/ts.lua
@@ -0,0 +1,41 @@
+require'nvim-treesitter.configs'.setup {
+ -- A list of parser names, or "all" (the listed parsers MUST always be installed)
+ ensure_installed = { "c", "lua", "vim", "vimdoc", "query", "markdown", "markdown_inline" },
+
+ -- Install parsers synchronously (only applied to `ensure_installed`)
+ sync_install = false,
+
+ -- Automatically install missing parsers when entering buffer
+ -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally
+ auto_install = true,
+
+ -- List of parsers to ignore installing (or "all")
+ -- ignore_install = { "javascript" },
+
+ ---- If you need to change the installation directory of the parsers (see -> Advanced Setup)
+ -- parser_install_dir = "/some/path/to/store/parsers", -- Remember to run vim.opt.runtimepath:append("/some/path/to/store/parsers")!
+
+ highlight = {
+ enable = true,
+
+ -- NOTE: these are the names of the parsers and not the filetype. (for example if you want to
+ -- disable highlighting for the `tex` filetype, you need to include `latex` in this list as this is
+ -- the name of the parser)
+ -- list of language that will be disabled
+ -- disable = { "c", "rust" },
+ -- Or use a function for more flexibility, e.g. to disable slow treesitter highlight for large files
+ disable = function(lang, buf)
+ local max_filesize = 100 * 1024 -- 100 KB
+ local ok, stats = pcall(vim.loop.fs_stat, vim.api.nvim_buf_get_name(buf))
+ if ok and stats and stats.size > max_filesize then
+ return true
+ end
+ end,
+
+ -- Setting this to true will run `:h syntax` and tree-sitter at the same time.
+ -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation).
+ -- Using this option may slow down your editor, and you may see some duplicate highlights.
+ -- Instead of true it can also be a list of languages
+ additional_vim_regex_highlighting = false,
+ },
+}
diff --git a/vim/.config/nvim/lua/remap.lua b/vim/.config/nvim/lua/remap.lua
new file mode 100644
index 0000000..c2cefa7
--- /dev/null
+++ b/vim/.config/nvim/lua/remap.lua
@@ -0,0 +1,77 @@
+vim.g.mapleader = "\\"
+vim.keymap.set("n", "<leader>\\", ":nohlsearch<CR>")
+
+vim.keymap.set("n", "<leader>vv", ":vsplit<CR>")
+vim.keymap.set("n", "<leader>vt", ":tabnew<CR>")
+
+-- easier to move windows
+vim.keymap.set("n", "`h", "<C-w>h")
+vim.keymap.set("n", "`j", "<C-w>j")
+vim.keymap.set("n", "`k", "<C-w>k")
+vim.keymap.set("n", "`l", "<C-w>l")
+
+vim.keymap.set("n", "<leader>qr", vim.lsp.buf.rename)
+vim.keymap.set("n", "<leader>qf", vim.lsp.buf.format)
+vim.keymap.set("n", "<leader>dd", vim.diagnostic.open_float)
+
+-------- PLUGINS -------
+
+-- Telescope
+local ts_builtins = require('telescope.builtin')
+vim.keymap.set('n', '<leader>ff', ts_builtins.find_files, { desc = 'Telescope find files' })
+vim.keymap.set('n', '<leader>fg', ts_builtins.git_files, { desc = 'Telescope find git files' })
+vim.keymap.set('n', '<leader>fb', ts_builtins.buffers, { desc = 'Telescope buffers' })
+vim.keymap.set('n', '<leader>fh', ts_builtins.help_tags, { desc = 'Telescope help tags' })
+vim.keymap.set('n', '<leader>fs', ts_builtins.lsp_workspace_symbols, { desc = 'Telescope find symbols' })
+vim.keymap.set('n', '<leader>fts', ts_builtins.treesitter, { desc = 'Telescope find treesitter' })
+vim.keymap.set('n', '<leader>fd', ts_builtins.lsp_definitions, { desc = 'Telescope find definition' })
+vim.keymap.set('n', '<leader>ftd', ts_builtins.lsp_type_definitions, { desc = 'Telescope find type definition' })
+
+-- Undo Tree
+vim.keymap.set('n', '<leader>u', vim.cmd.UndotreeToggle)
+
+-- Better Term
+
+local betterTerm = require('betterTerm')
+-- toggle firts term
+vim.keymap.set({"n", "t"}, "<leader>tt", betterTerm.open, { desc = "Open terminal"})
+-- Select term focus
+-- vim.keymap.set({"n"}, "<leader>tf", betterTerm.select, { desc = "Select terminal"})
+-- Create new term
+local current = 2
+vim.keymap.set(
+ {"n"}, "<leader>tn",
+ function()
+ betterTerm.open(current)
+ current = current + 1
+ end,
+ { desc = "New terminal"}
+)
+
+-- Neotree
+
+local ntc = require('neo-tree.command')
+vim.keymap.set('n', '<C-b>', function()
+ local reveal_file = vim.fn.expand('%:p')
+ if (reveal_file == '') then
+ reveal_file = vim.fn.getcwd()
+ else
+ local f = io.open(reveal_file, "r")
+ if (f) then
+ f.close(f)
+ else
+ reveal_file = vim.fn.getcwd()
+ end
+ end
+ ntc.execute({
+ action = "focus", -- OPTIONAL, this is the default value
+ source = "filesystem", -- OPTIONAL, this is the default value
+ position = "right", -- OPTIONAL, this is the default value
+ reveal_file = reveal_file, -- path to file or folder to reveal
+ reveal_force_cwd = true, -- change cwd without asking if needed
+ toggle = true,
+ }) end,
+ { desc = "Show Sidebar" }
+)
+
+
diff --git a/vim/.config/nvim/lua/standard-lint.lua b/vim/.config/nvim/lua/standard-lint.lua
new file mode 100644
index 0000000..b46004e
--- /dev/null
+++ b/vim/.config/nvim/lua/standard-lint.lua
@@ -0,0 +1,12 @@
+vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost", "InsertLeave", "TextChanged" }, {
+ callback = function()
+
+ -- try_lint without arguments runs the linters defined in `linters_by_ft`
+ -- for the current filetype
+ require("lint").try_lint()
+
+ -- You can call `try_lint` with a linter name or a list of names to always
+ -- run specific linters, independent of the `linters_by_ft` configuration
+ -- require("lint").try_lint("cspell")
+ end,
+})
diff --git a/vim/.config/nvim/lua/westwood-lint.lua b/vim/.config/nvim/lua/westwood-lint.lua
new file mode 100644
index 0000000..0ffc8d8
--- /dev/null
+++ b/vim/.config/nvim/lua/westwood-lint.lua
@@ -0,0 +1,20 @@
+local lint = require("lint")
+
+local errorformat = "%WWARNING: %m,%Z%\\s%\\s%\\s%\\s%\\s%\\s%\\s%\\s%\\sat (stdin) from line %l column %c to line %e column %k"
+lint.linters.westwood = {
+ cmd = '/homes/kkasad/share/westwood',
+ stdin = true,
+ args = {'-f', 'machine', '-'},
+ stream = both,
+ ignore_exitcode = false,
+ env = nil,
+ parser = require('lint.parser').from_errorformat(errorformat)
+}
+
+lint.linters_by_ft.c = {"westwood", "clangtidy"}
+lint.linters_by_ft.cpp = {"westwood"}
+vim.list_extend(lint.linters_by_ft.c, { "westwood", "clangtidy" })
+vim.list_extend(lint.linters_by_ft.cpp, { "westwood" })
+
+local ns = lint.get_namespace("westwood")
+vim.diagnostic.config({ virtual_text = true }, ns)