diff --git a/.config/nvim/.luarc.json b/.config/nvim/.luarc.json new file mode 100644 index 0000000..ceb1818 --- /dev/null +++ b/.config/nvim/.luarc.json @@ -0,0 +1,12 @@ +{ + "runtime.version": "LuaJIT", + "runtime.path": [ + "lua/?.lua", + "lua/?/init.lua" + ], + "diagnostics.globals": ["vim"], + "workspace.checkThirdParty": false, + "workspace.library": [ + "$VIMRUNTIME" + ] +} diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 471d17d..2c66f44 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -1,14 +1,25 @@ -- Basic settings -vim.o.number = true -- Enable line numbers -vim.o.relativenumber = true -- Enable relative line numbers -vim.o.tabstop = 4 -- Number of spaces a tab represents -vim.o.shiftwidth = 4 -- Number of spaces for each indentation -vim.o.expandtab = true -- Convert tabs to spaces -vim.o.smartindent = true -- Automatically indent new lines -vim.o.wrap = false -- Disable line wrapping -vim.o.cursorline = true -- Highlight the current line +vim.o.number = true -- Enable line numbers +-- vim.o.relativenumber = true -- Enable relative line numbers +vim.o.tabstop = 2 -- Number of spaces a tab represents +vim.o.shiftwidth = 2 -- Number of spaces for each indentation +vim.o.expandtab = true -- Convert tabs to spaces +vim.o.smartindent = true -- Automatically indent new lines +vim.o.wrap = false -- Disable line wrapping +vim.o.cursorline = true -- Highlight the current line vim.o.termguicolors = true -- Enable 24-bit RGB colors vim.filetype.add({extension = {svx = "markdown"}}) +vim.opt.listchars = { tab = "\\│\\", nbsp = "␣", trail = "·", extends = "›", precedes = "‹", leadmultispace = "│ " } +vim.opt.list = true + +require('plugins.nvim-neo-tree') +require('plugins.rose-pine') +require('plugins.treesitter') +require('plugins.conform') +require('plugins.lsp') +require('plugins.diffview') +require('plugins.which-key') +require('plugins.codecompanion') local kitten = vim.fn.expand("~/.local/share/kitty-ssh-kitten/kitty/bin/kitten") vim.opt.clipboard = "unnamedplus" @@ -23,10 +34,34 @@ vim.g.clipboard = { -- ['*'] = require('vim.ui.clipboard.osc52').paste('*'), }, } --- Syntax highlighting and filetype plugins + vim.cmd('syntax enable') -vim.cmd('filetype plugin indent on') -require("config.lazy") ---vim.cmd[[colorscheme tokyonight]] +vim.api.nvim_create_user_command( + "Inlay", + function() + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled()) + end, + { desc = 'Toggles Inlay Hints' } +) +vim.api.nvim_create_autocmd('LspAttach', { + callback = function(ev) + local client = vim.lsp.get_client_by_id(ev.data.client_id) + if client and client:supports_method(vim.lsp.protocol.Methods.textDocument_completion) then + vim.opt.completeopt = { 'menu', 'menuone', 'noinsert', 'fuzzy', 'popup' } + vim.lsp.completion.enable(true, client.id, ev.buf, { autotrigger = true }) + vim.keymap.set('i', '', function() + vim.lsp.completion.get() + end) + end + end, +}) + +vim.diagnostic.config({ + virtual_lines = { + current_line = true, + }, +}) + +vim.cmd.source("~/.config/nvim/.vimrc") diff --git a/.config/nvim/lsp/ts_ls.lua b/.config/nvim/lsp/ts_ls.lua new file mode 100644 index 0000000..5a28926 --- /dev/null +++ b/.config/nvim/lsp/ts_ls.lua @@ -0,0 +1,29 @@ +return { + settings = { + typescript = { + inlayHints = { + includeInlayParameterNameHints = "all", + includeInlayParameterNameHintsWhenArgumentMatchesName = true, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayVariableTypeHintsWhenTypeMatchesName = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + }, + }, + javascript = { + inlayHints = { + includeInlayParameterNameHints = "all", + includeInlayParameterNameHintsWhenArgumentMatchesName = true, + includeInlayFunctionParameterTypeHints = true, + includeInlayVariableTypeHints = true, + includeInlayVariableTypeHintsWhenTypeMatchesName = true, + includeInlayPropertyDeclarationTypeHints = true, + includeInlayFunctionLikeReturnTypeHints = true, + includeInlayEnumMemberValueHints = true, + }, + }, + } +} + diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua deleted file mode 100644 index 65ee338..0000000 --- a/.config/nvim/lua/config/lazy.lua +++ /dev/null @@ -1,35 +0,0 @@ --- Bootstrap lazy.nvim -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - local lazyrepo = "https://github.com/folke/lazy.nvim.git" - local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) - if vim.v.shell_error ~= 0 then - vim.api.nvim_echo({ - { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, - { out, "WarningMsg" }, - { "\nPress any key to exit..." }, - }, true, {}) - vim.fn.getchar() - os.exit(1) - end -end -vim.opt.rtp:prepend(lazypath) - --- Make sure to setup `mapleader` and `maplocalleader` before --- loading lazy.nvim so that mappings are correct. --- This is also a good place to setup other settings (vim.opt) -vim.g.mapleader = " " -vim.g.maplocalleader = "\\" - --- Setup lazy.nvim -require("lazy").setup({ - spec = { - -- import your plugins - { import = "plugins" }, - }, - -- Configure any other settings here. See the documentation for more details. - -- colorscheme that will be used when installing plugins. - install = { colorscheme = {"tokyonight", "habamax" } }, - -- automatically check for plugin updates - checker = { enabled = true, notify = false }, -}) diff --git a/.config/nvim/lua/plugins/codecompanion.lua b/.config/nvim/lua/plugins/codecompanion.lua new file mode 100644 index 0000000..45cc3ac --- /dev/null +++ b/.config/nvim/lua/plugins/codecompanion.lua @@ -0,0 +1,14 @@ +vim.pack.add({ { + src = "https://www.github.com/olimorris/codecompanion.nvim", + version = vim.version.range("^19.0.0") +} }) + +-- Somewhere in your config +require("codecompanion").setup({ + interactions = { + chat = { + adapter = "ollama", + model = "qwen2.5-coder:7b " + }, + }, +}) diff --git a/.config/nvim/lua/plugins/conform.lua b/.config/nvim/lua/plugins/conform.lua new file mode 100644 index 0000000..08ef4ac --- /dev/null +++ b/.config/nvim/lua/plugins/conform.lua @@ -0,0 +1,26 @@ +vim.pack.add({ + 'https://github.com/stevearc/conform.nvim' +}) + +require('conform').setup({ + formatters_by_ft = { + cpp = { "clang-format" }, + python = { "black" }, + typescript = { "prettier" }, + typescriptreact = { "prettier" }, + }, + -- Set default options + default_format_opts = { + lsp_format = "fallback", + }, + -- Set up format-on-save + format_on_save = { timeout_ms = 10000 }, + -- Customize formatters + formatters = { + -- ['clang-format'] = { + -- append_args = function(self, ctx) + -- return { "-style={IndentWidth: 4}" } + -- end, + -- }, + }, +}) diff --git a/.config/nvim/lua/plugins/diffview.lua b/.config/nvim/lua/plugins/diffview.lua new file mode 100644 index 0000000..6248f37 --- /dev/null +++ b/.config/nvim/lua/plugins/diffview.lua @@ -0,0 +1,6 @@ +vim.pack.add({ + 'https://github.com/sindrets/diffview.nvim', +}) + +require('diffview').setup({ +}) diff --git a/.config/nvim/lua/plugins/lsp.lua b/.config/nvim/lua/plugins/lsp.lua index fa9eaad..b990dfe 100644 --- a/.config/nvim/lua/plugins/lsp.lua +++ b/.config/nvim/lua/plugins/lsp.lua @@ -1,67 +1,29 @@ -return { +vim.pack.add({ + 'https://github.com/neovim/nvim-lspconfig', + 'https://github.com/mason-org/mason.nvim', + 'https://github.com/mason-org/mason-lspconfig.nvim', +}) - { - "neovim/nvim-lspconfig", - }, - { - "mason-org/mason.nvim", - opts = { - ui = { - icons = { - package_installed = "✓", - package_pending = "➜", - package_uninstalled = "✗" - } - } - } - }, - { - "williamboman/mason-lspconfig.nvim", - opts = { - ensure_installed = { "clangd" }, - }, - dependencies = { - { "mason-org/mason.nvim", opts = {} }, - "neovim/nvim-lspconfig", - }, - }, - { - 'hrsh7th/nvim-cmp', - opts = { - sources = { - { name = 'nvim_lsp' }, - { name = 'buffer' }, - { name = 'path' }, - } - }, - dependencies = { - {'L3MON4D3/LuaSnip'}, - {'hrsh7th/cmp-buffer'}, - {'hrsh7th/cmp-nvim-lsp'}, - {'saadparwaiz1/cmp_luasnip'}, - }, - }, - { - 'stevearc/conform.nvim', - opts = { - -- Define your formatters - formatters_by_ft = { - cpp = { "clang-format" }, - }, - -- Set default options - default_format_opts = { - lsp_format = "fallback", - }, - -- Set up format-on-save - format_on_save = { timeout_ms = 500 }, - -- Customize formatters - formatters = { - ['clang-format'] = { - append_args = function(self, ctx) - return { "-style={IndentWidth: 4}" } - end, - }, - }, - }, +require('mason').setup({ + ui = { + icons = { + package_installed = "✓", + package_pending = "➜", + package_uninstalled = "✗" } -} + } +}) +require('mason-lspconfig').setup({ + ensure_installed = { + "svelte", + "clangd", + "ts_ls", + "pyright", + "lua_ls" + }, + automatic_enable = true, +}) +vim.lsp.config('svelte', { + -- capabilities = svelte_lsp_capabilities, + filetypes = { "svelte" }, +}) diff --git a/.config/nvim/lua/plugins/nvim-neo-tree.lua b/.config/nvim/lua/plugins/nvim-neo-tree.lua index 8103f54..f1a81cf 100644 --- a/.config/nvim/lua/plugins/nvim-neo-tree.lua +++ b/.config/nvim/lua/plugins/nvim-neo-tree.lua @@ -1,10 +1,11 @@ -return { - "nvim-neo-tree/neo-tree.nvim", - branch = "v3.x", - dependencies = { - "nvim-lua/plenary.nvim", - "nvim-tree/nvim-web-devicons", -- not strictly required, but recommended - "MunifTanjim/nui.nvim", - {"3rd/image.nvim", opts = {}}, -- Optional image support in preview window: See `# Preview Mode` for more information - } -} +vim.pack.add({ + --Neo-Tree + 'https://github.com/MunifTanjim/nui.nvim', + 'https://github.com/nvim-lua/plenary.nvim', + "https://github.com/nvim-tree/nvim-web-devicons", + 'https://github.com/nvim-neo-tree/neo-tree.nvim', +}) + +require("neo-tree").setup({ + close_if_last_window = true, +}) diff --git a/.config/nvim/lua/plugins/rose-pine.lua b/.config/nvim/lua/plugins/rose-pine.lua index f850d40..deaff85 100644 --- a/.config/nvim/lua/plugins/rose-pine.lua +++ b/.config/nvim/lua/plugins/rose-pine.lua @@ -1,17 +1,14 @@ -return { - "rose-pine/neovim", - name = "rose-pine", - - config = function() - local configs = require("rose-pine"); - configs.setup({ - variant = "moon", - styles = { - transparency = true; - } - }) +vim.pack.add({ + 'https://github.com/rose-pine/neovim', +}) - vim.cmd("colorscheme rose-pine") - end -} +require("rose-pine").setup({ + variant = "moon", + styles = { + transparency = true; + } +}) + + +vim.cmd[[colorscheme rose-pine]] diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua index 0b48c5d..0909d9b 100644 --- a/.config/nvim/lua/plugins/treesitter.lua +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -1,20 +1,18 @@ -return{ - "nvim-treesitter/nvim-treesitter", - build = ":TSUpdate", - dependencies = { - -- Automatically install LSPs and related tools to stdpath for Neovim - "williamboman/mason.nvim", - "williamboman/mason-lspconfig.nvim", - }, - config = function () +vim.pack.add({ + 'https://github.com/nvim-treesitter/nvim-treesitter' +}) - local configs = require("nvim-treesitter.configs") +require('nvim-treesitter').setup({ + highlight = { + enable = true + }, +}) +require('nvim-treesitter').install({ 'lua', 'rust', 'javascript', 'zig', "c", "typescript", "cpp", "haskell", "svelte", + "python", "vim", "vimdoc", "html", "wgsl" }) - configs.setup({ - ensure_installed = { "c", "cpp", "lua", "vim", "vimdoc", "query", "elixir", "heex", "javascript", "html" }, - sync_install = false, - highlight = { enable = true }, - indent = { enable = true }, - }) - end - } +vim.api.nvim_create_autocmd('FileType', { + callback = function(args) + pcall(vim.treesitter.start, args.buf) + end, +}) +vim.filetype.add({ extension = { wgsl = "wgsl" } }) diff --git a/.config/nvim/lua/plugins/which-key.lua b/.config/nvim/lua/plugins/which-key.lua new file mode 100644 index 0000000..7c74a25 --- /dev/null +++ b/.config/nvim/lua/plugins/which-key.lua @@ -0,0 +1,7 @@ +vim.pack.add({ + 'https://github.com/folke/which-key.nvim', +}) + +require("which-key").setup({ + +}) diff --git a/.config/nvim/nvim-pack-lock.json b/.config/nvim/nvim-pack-lock.json new file mode 100644 index 0000000..8e70f66 --- /dev/null +++ b/.config/nvim/nvim-pack-lock.json @@ -0,0 +1,57 @@ +{ + "plugins": { + "codecompanion.nvim": { + "rev": "5b87dd95a5b62bbf198ef147b96d22751ccc1faa", + "src": "https://www.github.com/olimorris/codecompanion.nvim", + "version": "19.0.0 - 20.0.0" + }, + "conform.nvim": { + "rev": "40dcec5555f960b0a04340d76eabdf4efe78599d", + "src": "https://github.com/stevearc/conform.nvim" + }, + "diffview.nvim": { + "rev": "4516612fe98ff56ae0415a259ff6361a89419b0a", + "src": "https://github.com/sindrets/diffview.nvim" + }, + "mason-lspconfig.nvim": { + "rev": "a324581a3c83fdacdb9804b79de1cbe00ce18550", + "src": "https://github.com/mason-org/mason-lspconfig.nvim" + }, + "mason.nvim": { + "rev": "44d1e90e1f66e077268191e3ee9d2ac97cc18e65", + "src": "https://github.com/mason-org/mason.nvim" + }, + "neo-tree.nvim": { + "rev": "9d6826582a3e8c84787bd7355df22a2812a1ad59", + "src": "https://github.com/nvim-neo-tree/neo-tree.nvim" + }, + "neovim": { + "rev": "cf2a288696b03d0934da713d66c6d71557b5c997", + "src": "https://github.com/rose-pine/neovim" + }, + "nui.nvim": { + "rev": "de740991c12411b663994b2860f1a4fd0937c130", + "src": "https://github.com/MunifTanjim/nui.nvim" + }, + "nvim-lspconfig": { + "rev": "2163c54bb6cfec53e3e555665ada945b8c8331b9", + "src": "https://github.com/neovim/nvim-lspconfig" + }, + "nvim-treesitter": { + "rev": "5cb05e1b0fa3c469958a2b26f36b3fe930af221c", + "src": "https://github.com/nvim-treesitter/nvim-treesitter" + }, + "nvim-web-devicons": { + "rev": "737cf6c657898d0c697311d79d361288a1343d50", + "src": "https://github.com/nvim-tree/nvim-web-devicons" + }, + "plenary.nvim": { + "rev": "b9fd5226c2f76c951fc8ed5923d85e4de065e509", + "src": "https://github.com/nvim-lua/plenary.nvim" + }, + "which-key.nvim": { + "rev": "3aab2147e74890957785941f0c1ad87d0a44c15a", + "src": "https://github.com/folke/which-key.nvim" + } + } +} diff --git a/.config/xieves-dotfiles b/.config/xieves-dotfiles new file mode 160000 index 0000000..1555dea --- /dev/null +++ b/.config/xieves-dotfiles @@ -0,0 +1 @@ +Subproject commit 1555dea674f8c8ac7f8931199b8de56d0c66c1b4 diff --git a/.gitmodules b/.gitmodules index a6da8cf..f97faf3 100644 --- a/.gitmodules +++ b/.gitmodules @@ -10,3 +10,6 @@ [submodule ".ohmyzsh"] path = .ohmyzsh url = https://github.com/ohmyzsh/ohmyzsh.git +[submodule ".config/xieves-dotfiles"] + path = .config/xieves-dotfiles + url = https://gitlab.com/xieve/dotfiles diff --git a/README.md b/README.md new file mode 100644 index 0000000..ec8a8e2 --- /dev/null +++ b/README.md @@ -0,0 +1,5 @@ +# Personal Dotfiles + +# Nvim + +As I'm using vim.pack for plugin managing, nvim >= 12.0 is required.