diff --git a/README.md b/README.md
index e14cbe222b2..828b975ef7b 100644
--- a/README.md
+++ b/README.md
@@ -71,7 +71,7 @@ too - it's ignored in the kickstart repo to make maintenance easier, but it's
Linux and Mac
```sh
-git clone https://github.com/nvim-lua/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
+git clone https://github.com/sergeylunev/kickstart.nvim.git "${XDG_CONFIG_HOME:-$HOME/.config}"/nvim
```
diff --git a/init.lua b/init.lua
index ea86b792abe..fce82d92fac 100644
--- a/init.lua
+++ b/init.lua
@@ -91,7 +91,7 @@ vim.g.mapleader = ' '
vim.g.maplocalleader = ' '
-- Set to true if you have a Nerd Font installed and selected in the terminal
-vim.g.have_nerd_font = false
+vim.g.have_nerd_font = true
-- [[ Setting options ]]
-- See `:help vim.opt`
@@ -102,7 +102,7 @@ vim.g.have_nerd_font = false
vim.opt.number = true
-- You can also add relative line numbers, to help with jumping.
-- Experiment for yourself to see if you like it!
--- vim.opt.relativenumber = true
+vim.opt.relativenumber = true
-- Enable mouse mode, can be useful for resizing splits for example!
vim.opt.mouse = 'a'
@@ -157,6 +157,10 @@ vim.opt.cursorline = true
-- Minimal number of screen lines to keep above and below the cursor.
vim.opt.scrolloff = 10
+vim.opt.backup = false
+vim.opt.hlsearch = true
+vim.opt.swapfile = false
+
-- [[ Basic Keymaps ]]
-- See `:help vim.keymap.set()`
@@ -190,6 +194,22 @@ vim.keymap.set('n', '', '', { desc = 'Move focus to the right win
vim.keymap.set('n', '', '', { desc = 'Move focus to the lower window' })
vim.keymap.set('n', '', '', { desc = 'Move focus to the upper window' })
+vim.keymap.set('n', '', '', { desc = 'Disable F1' })
+vim.keymap.set('i', '', '', { desc = 'Disable F1' })
+vim.keymap.set('v', '', '', { desc = 'Disable F1' })
+
+vim.keymap.set('n', '', ':resize -2', { desc = 'Resize up' })
+vim.keymap.set('n', '', ':resize +2', { desc = 'Resize down' })
+vim.keymap.set('n', '', ':vertical resize -2', { desc = 'Resize left' })
+vim.keymap.set('n', '', ':vertical resize +2', { desc = 'Resize right' })
+
+vim.keymap.set('n', '', ':bnext', { desc = 'Next buffer' })
+vim.keymap.set('n', '', ':bprevious', { desc = 'Previous buffer' })
+
+vim.keymap.set('n', 'n', 'nzzzv', { desc = 'Center cursor on search' })
+vim.keymap.set('n', 'N', 'Nzzzv', { desc = 'Center cursor on search' })
+
+vim.keymap.set('i', 'jj', '', { desc = 'jj as esc' })
-- [[ Basic Autocommands ]]
-- See `:help lua-guide-autocommands`
@@ -207,7 +227,7 @@ vim.api.nvim_create_autocmd('TextYankPost', {
-- [[ Install `lazy.nvim` plugin manager ]]
-- See `:help lazy.nvim.txt` or https://github.com/folke/lazy.nvim for more info
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
-if not (vim.uv or vim.loop).fs_stat(lazypath) then
+if not vim.uv.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
@@ -274,55 +294,20 @@ require('lazy').setup({
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter', -- Sets the loading event to 'VimEnter'
- opts = {
- icons = {
- -- set icon mappings to true if you have a Nerd Font
- mappings = vim.g.have_nerd_font,
- -- If you are using a Nerd Font: set icons.keys to an empty table which will use the
- -- default whick-key.nvim defined Nerd Font icons, otherwise define a string table
- keys = vim.g.have_nerd_font and {} or {
- Up = ' ',
- Down = ' ',
- Left = ' ',
- Right = ' ',
- C = ' ',
- M = ' ',
- D = ' ',
- S = ' ',
- CR = ' ',
- Esc = ' ',
- ScrollWheelDown = ' ',
- ScrollWheelUp = ' ',
- NL = ' ',
- BS = ' ',
- Space = ' ',
- Tab = ' ',
- F1 = '',
- F2 = '',
- F3 = '',
- F4 = '',
- F5 = '',
- F6 = '',
- F7 = '',
- F8 = '',
- F9 = '',
- F10 = '',
- F11 = '',
- F12 = '',
- },
- },
+ config = function() -- This is the function that runs, AFTER loading
+ require('which-key').setup()
-- Document existing key chains
- spec = {
- { 'c', group = '[C]ode', mode = { 'n', 'x' } },
+ require('which-key').add {
+ { 'c', group = '[C]ode' },
{ 'd', group = '[D]ocument' },
{ 'r', group = '[R]ename' },
{ 's', group = '[S]earch' },
{ 'w', group = '[W]orkspace' },
{ 't', group = '[T]oggle' },
{ 'h', group = 'Git [H]unk', mode = { 'n', 'v' } },
- },
- },
+ }
+ end,
},
-- NOTE: Plugins can specify dependencies.
@@ -505,9 +490,8 @@ require('lazy').setup({
--
-- In this case, we create a function that lets us more easily define mappings specific
-- for LSP related items. It sets the mode, buffer and description for us each time.
- local map = function(keys, func, desc, mode)
- mode = mode or 'n'
- vim.keymap.set(mode, keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
+ local map = function(keys, func, desc)
+ vim.keymap.set('n', keys, func, { buffer = event.buf, desc = 'LSP: ' .. desc })
end
-- Jump to the definition of the word under your cursor.
@@ -541,7 +525,7 @@ require('lazy').setup({
-- Execute a code action, usually your cursor needs to be on top of an error
-- or a suggestion from your LSP for this to activate.
- map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction', { 'n', 'x' })
+ map('ca', vim.lsp.buf.code_action, '[C]ode [A]ction')
-- WARN: This is not Goto Definition, this is Goto Declaration.
-- For example, in C this would take you to the header.
@@ -595,6 +579,8 @@ require('lazy').setup({
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities = vim.tbl_deep_extend('force', capabilities, require('cmp_nvim_lsp').default_capabilities())
+ local util = require 'lspconfig/util'
+
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
--
@@ -606,7 +592,20 @@ require('lazy').setup({
-- For example, to see the options for `lua_ls`, you could go to: https://luals.github.io/wiki/settings/
local servers = {
-- clangd = {},
- -- gopls = {},
+ gopls = {
+ cmd = { 'gopls' },
+ filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' },
+ root_dir = util.root_pattern('go.work', 'go.mod', '.git'),
+ settings = {
+ gopls = {
+ completeUnimported = true,
+ usePlaceholders = true,
+ analyses = {
+ unusedparams = true,
+ },
+ },
+ },
+ },
-- pyright = {},
-- rust_analyzer = {},
-- ... etc. See `:help lspconfig-all` for a list of all the pre-configured LSPs
@@ -614,8 +613,8 @@ require('lazy').setup({
-- Some languages (like typescript) have entire language plugins that can be useful:
-- https://github.com/pmizio/typescript-tools.nvim
--
- -- But for many setups, the LSP (`ts_ls`) will work just fine
- -- ts_ls = {},
+ -- But for many setups, the LSP (`tsserver`) will work just fine
+ -- tsserver = {},
--
lua_ls = {
@@ -647,6 +646,8 @@ require('lazy').setup({
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
'stylua', -- Used to format Lua code
+ 'gopls',
+ 'phpactor',
})
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
@@ -656,7 +657,7 @@ require('lazy').setup({
local server = servers[server_name] or {}
-- This handles overriding only values explicitly passed
-- by the server configuration above. Useful when disabling
- -- certain features of an LSP (for example, turning off formatting for ts_ls)
+ -- certain features of an LSP (for example, turning off formatting for tsserver)
server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
require('lspconfig')[server_name].setup(server)
end,
@@ -673,7 +674,7 @@ require('lazy').setup({
{
'f',
function()
- require('conform').format { async = true, lsp_format = 'fallback' }
+ require('conform').format { async = true, lsp_fallback = true }
end,
mode = '',
desc = '[F]ormat buffer',
@@ -686,19 +687,14 @@ require('lazy').setup({
-- have a well standardized coding style. You can add additional
-- languages here or re-enable it for the disabled ones.
local disable_filetypes = { c = true, cpp = true }
- local lsp_format_opt
- if disable_filetypes[vim.bo[bufnr].filetype] then
- lsp_format_opt = 'never'
- else
- lsp_format_opt = 'fallback'
- end
return {
timeout_ms = 500,
- lsp_format = lsp_format_opt,
+ lsp_fallback = not disable_filetypes[vim.bo[bufnr].filetype],
}
end,
formatters_by_ft = {
lua = { 'stylua' },
+ go = { 'gofumpt', 'goimports_reviser', 'golines' },
-- Conform can also run multiple formatters sequentially
-- python = { "isort", "black" },
--
@@ -779,9 +775,9 @@ require('lazy').setup({
-- If you prefer more traditional completion keymaps,
-- you can uncomment the following lines
- --[''] = cmp.mapping.confirm { select = true },
- --[''] = cmp.mapping.select_next_item(),
- --[''] = cmp.mapping.select_prev_item(),
+ [''] = cmp.mapping.confirm { select = true },
+ [''] = cmp.mapping.select_next_item(),
+ [''] = cmp.mapping.select_prev_item(),
-- Manually trigger a completion from nvim-cmp.
-- Generally you don't need this, because nvim-cmp will display
@@ -829,13 +825,13 @@ require('lazy').setup({
-- change the command in the config to whatever the name of that colorscheme is.
--
-- If you want to see what colorschemes are already installed, you can use `:Telescope colorscheme`.
- 'folke/tokyonight.nvim',
+ 'aliqyan-21/darkvoid.nvim',
priority = 1000, -- Make sure to load this before all the other start plugins.
init = function()
-- Load the colorscheme here.
-- Like many other themes, this one has different styles, and you could load
-- any other, such as 'tokyonight-storm', 'tokyonight-moon', or 'tokyonight-day'.
- vim.cmd.colorscheme 'tokyonight-night'
+ vim.cmd.colorscheme 'darkvoid'
-- You can configure highlights by doing something like:
vim.cmd.hi 'Comment gui=none'
@@ -885,8 +881,6 @@ require('lazy').setup({
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
build = ':TSUpdate',
- main = 'nvim-treesitter.configs', -- Sets main module to use for opts
- -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
opts = {
ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' },
-- Autoinstall languages that are not installed
@@ -900,12 +894,19 @@ require('lazy').setup({
},
indent = { enable = true, disable = { 'ruby' } },
},
- -- There are additional nvim-treesitter modules that you can use to interact
- -- with nvim-treesitter. You should go explore a few and see what interests you:
- --
- -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
- -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
- -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
+ config = function(_, opts)
+ -- [[ Configure Treesitter ]] See `:help nvim-treesitter`
+
+ ---@diagnostic disable-next-line: missing-fields
+ require('nvim-treesitter.configs').setup(opts)
+
+ -- There are additional nvim-treesitter modules that you can use to interact
+ -- with nvim-treesitter. You should go explore a few and see what interests you:
+ --
+ -- - Incremental selection: Included, see `:help nvim-treesitter-incremental-selection-mod`
+ -- - Show your current context: https://github.com/nvim-treesitter/nvim-treesitter-context
+ -- - Treesitter + textobjects: https://github.com/nvim-treesitter/nvim-treesitter-textobjects
+ end,
},
-- The following two comments only work if you have downloaded the kickstart repo, not just copy pasted the
@@ -920,9 +921,9 @@ require('lazy').setup({
-- require 'kickstart.plugins.debug',
-- require 'kickstart.plugins.indent_line',
-- require 'kickstart.plugins.lint',
- -- require 'kickstart.plugins.autopairs',
- -- require 'kickstart.plugins.neo-tree',
- -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
+ require 'kickstart.plugins.autopairs',
+ require 'kickstart.plugins.neo-tree',
+ require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
@@ -930,6 +931,13 @@ require('lazy').setup({
-- Uncomment the following line and add your plugins to `lua/custom/plugins/*.lua` to get going.
-- For additional information, see `:help lazy.nvim-lazy.nvim-structuring-your-plugins`
-- { import = 'custom.plugins' },
+ {
+ 'numToStr/Comment.nvim',
+ opts = {
+ -- add any options here
+ },
+ },
+ {},
}, {
ui = {
-- If you are using a Nerd Font: set icons to an empty table which will use the