2024-05-27 20:12:04 +08:00
vim.cmd ( " set encoding=utf-8 " )
vim.cmd ( " set exrc " )
2024-05-07 17:27:20 +08:00
vim.cmd ( " set pumblend=40 " )
vim.cmd ( " set winblend=40 " )
2024-02-21 23:47:12 +08:00
vim.cmd ( " set expandtab " )
2024-03-08 22:03:39 +08:00
vim.cmd ( " set tabstop=4 " )
vim.cmd ( " set softtabstop=4 " )
vim.cmd ( " set shiftwidth=4 " )
2024-02-21 23:47:12 +08:00
vim.cmd ( " set splitright " )
vim.cmd ( " set splitbelow " )
vim.cmd ( " set selectmode=key " )
vim.cmd ( " set keymodel=startsel " )
vim.cmd ( " set number " )
vim.cmd ( " set cursorline " )
vim.cmd ( " set termguicolors " )
2024-02-22 00:13:31 +08:00
vim.cmd ( " set clipboard+=unnamedplus " )
2024-03-08 22:03:39 +08:00
vim.cmd ( " set updatetime=700 " )
2024-02-22 11:57:27 +08:00
vim.cmd ( " set whichwrap+=<,>,[,] " )
2024-02-26 20:01:57 +08:00
vim.cmd ( " set relativenumber " )
2024-03-08 20:06:09 +08:00
vim.cmd ( " set signcolumn=yes " )
-- vim.cmd("set iskeyword-=_")
vim.cmd ( " set noequalalways " )
2024-05-07 17:27:20 +08:00
vim.cmd ( " set cmdheight=0 " )
2024-05-27 20:12:04 +08:00
vim.cmd ( " set scrolloff=10 " )
vim.cmd ( " set foldmethod=expr " )
vim.cmd ( " set foldexpr=nvim_treesitter#foldexpr() " )
vim.cmd ( " set foldlevelstart=99 " )
2024-06-01 16:28:14 +08:00
-- vim.cmd("set guicursor=i:ver25-blinkon500-blinkoff500,a:ver25-iCursor")
2024-05-28 15:09:37 +08:00
vim.cmd ( " set noshowmode " )
2024-02-22 11:57:27 +08:00
vim.diagnostic . config ( {
update_in_insert = true ,
2024-05-07 17:27:20 +08:00
float = {
border = " none " ,
focusable = false ,
} ,
2024-02-22 11:57:27 +08:00
} )
2024-03-08 22:03:39 +08:00
vim.cmd ( [[au CursorHold * lua vim.diagnostic.open_float(0,{scope = "cursor"})]] )
2024-03-22 01:07:19 +08:00
vim.g . mapleader = " " ;
vim.g [ ' cph#dir ' ] = ' /home/user/RustIsBestLang/ ' ;
2024-05-01 23:31:38 +08:00
vim.filetype . add ( {
extension = {
ct = ' cpp ' ,
} ,
} )
2024-02-21 23:47:12 +08:00
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 )
local plugins = {
2024-05-31 00:05:21 +08:00
{ ' nvim-lua/plenary.nvim ' } ,
{ ' rcarriga/nvim-notify ' } ,
2024-02-21 23:47:12 +08:00
{
2024-03-08 22:03:39 +08:00
' nvim-telescope/telescope.nvim ' , tag = ' 0.1.5 ' ,
2024-04-18 10:52:27 +08:00
dependencies = {
{
" isak102/telescope-git-file-history.nvim " ,
dependencies = { " tpope/vim-fugitive " }
}
}
2024-02-21 23:47:12 +08:00
} ,
{ " nvim-treesitter/nvim-treesitter " , build = " :TSUpdate " } ,
{
" nvim-neo-tree/neo-tree.nvim " ,
2024-03-08 22:03:39 +08:00
branch = " v3.x " ,
2024-02-21 23:47:12 +08:00
dependencies = {
" nvim-tree/nvim-web-devicons " , -- not strictly required, but recommended
" MunifTanjim/nui.nvim " ,
2024-06-04 18:02:32 +08:00
" 3rd/image.nvim " ,
2024-02-21 23:47:12 +08:00
}
} ,
{
' neovim/nvim-lspconfig ' ,
dependencies = {
-- Automatically install LSPs to stdpath for neovim
{ ' williamboman/mason.nvim ' , config = true } ,
' williamboman/mason-lspconfig.nvim ' ,
-- Useful status updates for LSP
-- NOTE: `opts = {}` is the same as calling `require('fidget').setup({})`
{ ' j-hui/fidget.nvim ' , tag = ' legacy ' , opts = { } } ,
-- Additional lua configuration, makes nvim stuff amazing!
2024-06-04 18:02:32 +08:00
-- 'folke/neodev.nvim',
2024-02-21 23:47:12 +08:00
} ,
2024-05-02 13:31:31 +08:00
opts = {
2024-05-24 13:33:42 +08:00
inlay_hints = { enabled = true , } ,
2024-05-02 13:31:31 +08:00
-- codelens = { enabled = true, },
} ,
config = function ( _ , servers )
for server , opts in pairs ( servers ) do
require ( ' lspconfig ' ) [ server ] . setup ( opts )
end
end ,
2024-02-21 23:47:12 +08:00
} ,
{
2024-03-08 22:03:39 +08:00
" hrsh7th/nvim-cmp " ,
2024-02-21 23:47:12 +08:00
dependencies = {
2024-03-08 22:03:39 +08:00
" hrsh7th/cmp-nvim-lsp " ,
" hrsh7th/cmp-buffer " ,
" hrsh7th/cmp-path " ,
" hrsh7th/cmp-cmdline " ,
" L3MON4D3/LuaSnip " ,
" saadparwaiz1/cmp_luasnip " ,
" hrsh7th/cmp-emoji " ,
2024-05-28 15:09:37 +08:00
" chrisgrieser/cmp-nerdfont " ,
" hrsh7th/cmp-calc " ,
2024-02-21 23:47:12 +08:00
} ,
} ,
{
' romgrk/barbar.nvim ' ,
dependencies = {
2024-03-08 22:03:39 +08:00
' lewis6991/gitsigns.nvim ' , -- OPTIONAL: for git status
2024-02-21 23:47:12 +08:00
' nvim-tree/nvim-web-devicons ' , -- OPTIONAL: for file icons
} ,
init = function ( ) vim.g . barbar_auto_setup = false end ,
opts = {
-- lazy.nvim will automatically call setup for you. put your options here, anything missing will use the default:
2024-05-31 00:05:21 +08:00
animation = false ,
2024-02-21 23:47:12 +08:00
-- insert_at_start = true,
-- …etc.
} ,
2024-03-08 22:03:39 +08:00
version = ' ^1.0.0 ' , -- optional: only update when a new 1.x version is released
2024-02-21 23:47:12 +08:00
} ,
{
2024-06-04 18:02:32 +08:00
" ray-x/lsp_signature.nvim " , -- Show signature on `K` stroke
2024-02-21 23:47:12 +08:00
event = " VeryLazy " ,
opts = { } ,
config = function ( _ , opts ) require ' lsp_signature ' . setup ( opts ) end
} ,
{
" folke/which-key.nvim " ,
event = " VeryLazy " ,
init = function ( )
vim.o . timeout = true
2024-03-08 22:03:39 +08:00
vim.o . timeoutlen = 300
2024-02-21 23:47:12 +08:00
end ,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
} ,
2024-06-04 18:02:32 +08:00
{
' jdhao/better-escape.vim ' -- `jk` without causing `j` to have delay
} ,
2024-05-28 15:09:37 +08:00
{
2024-03-08 22:03:39 +08:00
' Pocco81/auto-save.nvim ' ,
2024-02-21 23:47:12 +08:00
opts = {
enabled = true ,
}
} ,
{
" windwp/nvim-autopairs " ,
event = " InsertEnter " ,
opts = { }
} ,
{
2024-06-04 18:02:32 +08:00
" dhruvasagar/vim-prosession " , -- save sessions
2024-02-21 23:47:12 +08:00
dependencies = {
" tpope/vim-obsession " ,
} ,
} ,
{
2024-06-04 18:02:32 +08:00
" arielherself/arshamiser.nvim " , -- status bar
2024-05-27 20:12:04 +08:00
branch = " dev " ,
2024-02-21 23:47:12 +08:00
dependencies = {
" arsham/arshlib.nvim " ,
" famiu/feline.nvim " ,
" rebelot/heirline.nvim " ,
2024-03-08 22:03:39 +08:00
" kyazdani42/nvim-web-devicons " ,
2024-05-31 00:05:21 +08:00
" lewis6991/gitsigns.nvim " ,
" nanotee/sqls.nvim " ,
" arsham/listish.nvim " ,
2024-02-21 23:47:12 +08:00
} ,
config = function ( )
2024-05-24 13:33:42 +08:00
require ( ' gitsigns ' ) . setup ( )
2024-02-21 23:47:12 +08:00
-- ignore any parts you don't want to use
2024-06-01 16:28:14 +08:00
vim.cmd . colorscheme ( " arshamiser_dark " )
2024-05-24 13:33:42 +08:00
-- require("arshamiser.feliniser")
2024-02-21 23:47:12 +08:00
-- or:
2024-05-24 13:33:42 +08:00
require ( " arshamiser.heirliniser " )
2024-02-21 23:47:12 +08:00
_G.custom_foldtext = require ( " arshamiser.folding " ) . foldtext
vim.opt . foldtext = " v:lua.custom_foldtext() "
-- if you want to draw a tabline:
2024-05-07 17:27:20 +08:00
-- vim.api.nvim_set_option("tabline", [[%{%v:lua.require("arshamiser.tabline").draw()%}]])
2024-02-21 23:47:12 +08:00
end ,
2024-02-22 00:33:41 +08:00
} ,
{
2024-06-04 18:02:32 +08:00
' numToStr/Comment.nvim ' , -- `gc` for commenting
2024-02-22 00:33:41 +08:00
opts = {
-- add any options here
} ,
lazy = false ,
2024-02-22 11:57:27 +08:00
} ,
2024-06-04 18:02:32 +08:00
{
' onsails/lspkind.nvim ' -- icon in completion menu
} ,
2024-02-22 11:57:27 +08:00
{
' MunifTanjim/eslint.nvim ' ,
dependencies = {
' jose-elias-alvarez/null-ls.nvim '
}
} ,
{
' MunifTanjim/prettier.nvim ' ,
dependencies = {
' jose-elias-alvarez/null-ls.nvim '
}
} ,
2024-06-04 18:02:32 +08:00
{
' hedyhli/outline.nvim ' -- Show symbol outline on `<leader>s`
} ,
2024-02-22 11:57:27 +08:00
{
" folke/todo-comments.nvim " ,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
2024-02-26 20:01:57 +08:00
} ,
{ ' nvim-treesitter/nvim-treesitter-context ' } ,
2024-06-04 18:02:32 +08:00
{ ' nvim-treesitter/nvim-treesitter-refactor ' } ,
{ ' nvim-treesitter/nvim-treesitter-textobjects ' } ,
2024-03-08 22:03:39 +08:00
{ ' mg979/vim-visual-multi ' } ,
2024-03-05 11:44:37 +08:00
{ ' sindrets/diffview.nvim ' } ,
{
2024-06-04 18:02:32 +08:00
' sitiom/nvim-numbertoggle ' -- Automatically switch between relative and absolute line number
} ,
{
' mawkler/modicator.nvim ' -- highlight current line number
} ,
{
" ecthelionvi/NeoColumn.nvim " , -- highlight overflow columns?
2024-03-05 11:44:37 +08:00
opts = { }
} ,
{
2024-06-04 18:02:32 +08:00
" utilyre/barbecue.nvim " , -- LSP winbar
2024-03-05 11:44:37 +08:00
name = " barbecue " ,
version = " * " ,
dependencies = {
" SmiteshP/nvim-navic " ,
" nvim-tree/nvim-web-devicons " , -- optional dependency
} ,
opts = {
-- configurations go here
} ,
} ,
2024-06-04 18:02:32 +08:00
{
' akinsho/git-conflict.nvim ' , -- `GitConflictChooseOurs`
version = " * " ,
config = true ,
} ,
2024-03-05 11:44:37 +08:00
{
2024-03-08 22:03:39 +08:00
' mrjones2014/legendary.nvim ' ,
2024-03-05 11:44:37 +08:00
-- since legendary.nvim handles all your keymaps/commands,
-- its recommended to load legendary.nvim before other plugins
2024-03-08 22:03:39 +08:00
priority = 10000 ,
2024-03-05 11:44:37 +08:00
lazy = false ,
-- sqlite is only needed if you want to use frecency sorting
-- dependencies = { 'kkharji/sqlite.lua' }
} ,
2024-06-01 16:28:14 +08:00
{
2024-06-04 18:02:32 +08:00
' stevearc/dressing.nvim ' , -- better UI
2024-06-01 16:28:14 +08:00
opts = { } ,
} ,
2024-03-05 11:44:37 +08:00
{
2024-06-04 18:02:32 +08:00
" folke/twilight.nvim " , -- Focus on parts that's being edited
2024-03-05 11:44:37 +08:00
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
}
} ,
{ " lukas-reineke/indent-blankline.nvim " , main = " ibl " , opts = { } } ,
2024-03-05 18:34:26 +08:00
{ ' arielherself/vim-cursorword ' } ,
2024-03-05 17:21:18 +08:00
{ ' m-demare/hlargs.nvim ' } ,
2024-06-04 18:02:32 +08:00
{
' chentoast/marks.nvim ' -- Visualize marks
} ,
2024-03-05 19:20:29 +08:00
{ ' wakatime/vim-wakatime ' , lazy = false } ,
{
2024-03-08 22:03:39 +08:00
' smoka7/hop.nvim ' ,
2024-03-05 19:20:29 +08:00
version = " * " ,
opts = { } ,
2024-03-08 20:06:09 +08:00
} ,
{
2024-06-04 18:02:32 +08:00
" kylechui/nvim-surround " , -- `ysiw)`
2024-03-08 20:06:09 +08:00
version = " * " , -- Use for stability; omit to use `main` branch for the latest features
event = " VeryLazy " ,
config = function ( )
require ( " nvim-surround " ) . setup ( {
-- Configuration here, or leave empty to use defaults
} )
end
2024-03-08 22:02:19 +08:00
} ,
{
2024-06-04 18:02:32 +08:00
" folke/trouble.nvim " , -- TroubleToggle
2024-03-08 22:02:19 +08:00
dependencies = { " nvim-tree/nvim-web-devicons " } ,
opts = {
-- your configuration comes here
-- or leave it empty to use the default settings
-- refer to the configuration section below
} ,
2024-03-14 23:58:45 +08:00
} ,
2024-03-22 01:07:19 +08:00
{ ' Civitasv/cmake-tools.nvim ' } ,
2024-05-31 00:05:21 +08:00
{ " arielherself/melange-nvim " } ,
2024-04-18 10:52:27 +08:00
{ ' hrsh7th/vim-vsnip ' } ,
{
2024-06-04 18:02:32 +08:00
" NeogitOrg/neogit " , -- <C-g>
2024-04-18 10:52:27 +08:00
dependencies = {
" sindrets/diffview.nvim " , -- optional - Diff integration
-- Only one of these is needed, not both.
" nvim-telescope/telescope.nvim " , -- optional
" ibhagwan/fzf-lua " , -- optional
} ,
config = true
} ,
2024-05-02 13:31:31 +08:00
-- { 'Exafunction/codeium.vim' },
2024-06-04 18:02:32 +08:00
{
" mistricky/codesnap.nvim " , -- code snapshot
build = " make "
} ,
2024-05-02 13:31:31 +08:00
{ ' rmagatti/goto-preview ' } ,
2024-05-07 17:27:20 +08:00
{
2024-06-04 18:02:32 +08:00
" FabianWirth/search.nvim " , -- Add tabs to Telescope search
2024-05-07 17:27:20 +08:00
dependencies = { " nvim-telescope/telescope.nvim " }
} ,
2024-06-04 18:02:32 +08:00
{
' NvChad/nvim-colorizer.lua ' -- Color green
} ,
2024-05-24 13:33:42 +08:00
{ ' debugloop/telescope-undo.nvim ' } ,
2024-05-31 00:05:21 +08:00
{
2024-06-04 18:02:32 +08:00
" folke/lazydev.nvim " , -- Autocompletion when editing Neovim configs or developing plugins
ft = " lua " , -- only load on lua files
opts = {
library = {
-- vim.env.LAZY .. "/luvit-meta/library", -- see below
-- You can also add plugins you always want to have loaded.
-- Useful if the plugin has globals or types you want to use
-- vim.env.LAZY .. "/LazyVim", -- see below
} ,
} ,
} ,
{ " Bilal2453/luvit-meta " , lazy = true } ,
{
" AckslD/nvim-neoclip.lua " , -- `<leader>p`
2024-05-31 00:05:21 +08:00
} ,
2024-06-01 16:28:14 +08:00
{
2024-06-04 18:02:32 +08:00
" danielfalk/smart-open.nvim " , -- sort file search results by frequency
2024-06-01 16:28:14 +08:00
branch = " 0.2.x " ,
config = function ( )
require ( " telescope " ) . load_extension ( " smart_open " )
end ,
dependencies = {
" kkharji/sqlite.lua " ,
-- Only required if using match_algorithm fzf
{ " nvim-telescope/telescope-fzf-native.nvim " , build = " make " } ,
-- Optional. If installed, native fzy will be used when match_algorithm is fzy
{ " nvim-telescope/telescope-fzy-native.nvim " } ,
} ,
} ,
2024-06-04 18:02:32 +08:00
{
" chrisgrieser/nvim-origami " , -- Fold keymap
event = " BufReadPost " , -- later or on keypress would prevent saving folds
opts = true , -- needed even when using default config
} ,
{
' altermo/ultimate-autopair.nvim ' ,
event = { ' InsertEnter ' , ' CmdlineEnter ' } ,
branch = ' v0.6 ' , --recommended as each new version will have breaking changes
opts = {
--Config goes here
bs = {
single_delete = true ,
} ,
cr = {
autoclose = true ,
} ,
close = {
enable = false ,
} ,
tabout = {
enable = true ,
map = ' <M-Tab> ' ,
hopout = true ,
}
} ,
} ,
2024-02-21 23:47:12 +08:00
}
2024-05-31 00:05:21 +08:00
require ( " lazy " ) . setup ( plugins , { } )
2024-02-21 23:47:12 +08:00
2024-05-31 00:05:21 +08:00
vim.notify = require ( " notify " )
2024-02-21 23:47:12 +08:00
2024-03-29 08:46:25 +08:00
vim.cmd ( [[colorscheme melange]] )
2024-02-21 23:47:12 +08:00
local builtin = require ( " telescope.builtin " )
2024-05-07 17:27:20 +08:00
require ( ' search ' ) . setup {
append_tabs = {
{
' Commits ' ,
builtin.git_commits ,
available = function ( )
return vim.fn . isdirectory ( ' .git ' ) == 1
end
} ,
{
' File History ' ,
builtin.git_file_history ,
available = function ( )
return vim.fn . isdirectory ( ' .git ' ) == 1
end
} ,
{
' Branches ' ,
builtin.git_branches ,
available = function ( )
return vim.fn . isdirectory ( ' .git ' ) == 1
end
} ,
{
' Stash ' ,
builtin.git_stash ,
available = function ( )
return vim.fn . isdirectory ( ' .git ' ) == 1
end
} ,
{
' Status ' ,
builtin.git_status ,
available = function ( )
return vim.fn . isdirectory ( ' .git ' ) == 1
end
} ,
}
}
2024-06-01 16:28:14 +08:00
vim.keymap . set ( ' n ' , ' <leader>o ' , require ( " telescope " ) . extensions.smart_open . smart_open , { } )
2024-05-07 17:27:20 +08:00
-- vim.keymap.set('n', '<leader>g', builtin.live_grep, {})
2024-06-01 16:28:14 +08:00
vim.keymap . set ( ' n ' , ' <leader>g ' , ' <Cmd>lua require("search").open({ tab_name = "Grep" })<CR> ' )
2024-02-21 23:47:12 +08:00
local config = require ( " nvim-treesitter.configs " )
config.setup ( {
2024-02-22 11:57:27 +08:00
ensure_installed = { " lua " , " cpp " , " rust " , " javascript " , " python " , " typescript " , " html " , " css " , " scss " } ,
2024-02-21 23:47:12 +08:00
auto_install = true ,
highlight = { enable = true } ,
indent = { enable = true } ,
} )
2024-03-06 20:24:37 +08:00
vim.keymap . set ( ' n ' , ' <leader>f ' , ' <Cmd>Neotree . toggle left<CR> ' , { } )
2024-02-21 23:47:12 +08:00
-- import nvim-cmp plugin safely
local cmp_status , cmp = pcall ( require , " cmp " )
if not cmp_status then
return
end
-- import luasnip plugin safely
local luasnip_status , luasnip = pcall ( require , " luasnip " )
if not luasnip_status then
return
end
vim.opt . completeopt = " menu,menuone,noselect "
2024-03-29 08:46:25 +08:00
local has_words_before = function ( )
unpack = unpack or table.unpack
local line , col = unpack ( vim.api . nvim_win_get_cursor ( 0 ) )
return col ~= 0 and vim.api . nvim_buf_get_lines ( 0 , line - 1 , line , true ) [ 1 ] : sub ( col , col ) : match ( " %s " ) == nil
end
local feedkey = function ( key , mode )
vim.api . nvim_feedkeys ( vim.api . nvim_replace_termcodes ( key , true , true , true ) , mode , true )
end
2024-02-21 23:47:12 +08:00
cmp.setup ( {
snippet = {
expand = function ( args )
luasnip.lsp_expand ( args.body )
end ,
} ,
2024-03-29 08:46:25 +08:00
mapping = {
[ " <Tab> " ] = cmp.mapping ( function ( fallback )
if cmp.visible ( ) then
cmp.confirm ( { select = true } )
2024-05-01 23:31:38 +08:00
elseif vim.fn . exists ( ' b:_codeium_completions ' ) ~= 0 then
vim.fn [ ' codeium#Accept ' ] ( )
fallback ( )
2024-03-29 08:46:25 +08:00
elseif luasnip_status and luasnip.expand_or_jumpable ( ) then
luasnip.expand_or_jump ( )
elseif has_words_before ( ) then
cmp.complete ( )
else
fallback ( )
end
end , { " i " , " s " } ) ,
[ " <S-Tab> " ] = cmp.mapping ( function ( )
if cmp.visible ( ) then
cmp.select_prev_item ( )
elseif vim.fn [ " vsnip#jumpable " ] ( - 1 ) == 1 then
feedkey ( " <Plug>(vsnip-jump-prev) " , " " )
end
end , { " i " , " s " } ) ,
[ ' <C-k> ' ] = cmp.mapping . select_prev_item ( ) ,
[ ' <C-j> ' ] = cmp.mapping . select_next_item ( ) ,
[ ' <ESC> ' ] = cmp.mapping . abort ( ) ,
} ,
2024-02-21 23:47:12 +08:00
-- sources for autocompletion
sources = cmp.config . sources ( {
{ name = " nvim_lsp " } , -- LSP
{ name = " luasnip " } , -- snippets
{ name = " buffer " } , -- text within the current buffer
{ name = " path " } , -- file system paths
2024-05-28 15:09:37 +08:00
{ name = " emoji " } ,
{ name = " nerdfont " } ,
{ name = " calc " } ,
2024-02-21 23:47:12 +08:00
} ) ,
} )
-- Setup language servers.
local lspconfig = require ( ' lspconfig ' )
2024-03-06 20:24:37 +08:00
local capabilities = require ( ' cmp_nvim_lsp ' ) . default_capabilities ( )
2024-05-07 17:27:20 +08:00
-- lspconfig.svls.setup {
-- capabilities = capabilities
-- }
2024-02-22 00:13:31 +08:00
lspconfig.clangd . setup {
2024-03-06 20:24:37 +08:00
capabilities = capabilities ,
2024-02-22 00:13:31 +08:00
cmd = {
" clangd " ,
2024-05-01 23:31:38 +08:00
-- "--header-insertion=never"
2024-02-22 00:13:31 +08:00
}
}
2024-03-06 20:24:37 +08:00
lspconfig.pyright . setup {
capabilities = capabilities
}
lspconfig.tsserver . setup {
capabilities = capabilities
}
2024-02-21 23:47:12 +08:00
lspconfig.rust_analyzer . setup {
2024-03-06 20:24:37 +08:00
capabilities = capabilities ,
2024-02-21 23:47:12 +08:00
-- Server-specific settings. See `:help lspconfig-setup`
settings = {
[ ' rust-analyzer ' ] = { } ,
} ,
}
2024-05-02 13:31:31 +08:00
lspconfig.lua_ls . setup {
capabilities = capabilities
}
2024-06-04 18:02:32 +08:00
lspconfig.marksman . setup { }
2024-02-21 23:47:12 +08:00
2024-05-07 17:27:20 +08:00
local lspconfutil = require ' lspconfig/util '
local root_pattern = lspconfutil.root_pattern ( " veridian.yml " , " .git " )
require ( ' lspconfig ' ) . veridian.setup {
cmd = { ' veridian ' } ,
root_dir = function ( fname )
local filename = lspconfutil.path . is_absolute ( fname ) and fname
or lspconfutil.path . join ( vim.loop . cwd ( ) , fname )
return root_pattern ( filename ) or lspconfutil.path . dirname ( filename )
end ;
}
2024-02-21 23:47:12 +08:00
-- Global mappings.
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
vim.keymap . set ( ' n ' , ' <space>e ' , vim.diagnostic . open_float )
vim.keymap . set ( ' n ' , ' [d ' , vim.diagnostic . goto_prev )
vim.keymap . set ( ' n ' , ' ]d ' , vim.diagnostic . goto_next )
vim.keymap . set ( ' n ' , ' <space>q ' , vim.diagnostic . setloclist )
-- Use LspAttach autocommand to only map the following keys
-- after the language server attaches to the current buffer
vim.api . nvim_create_autocmd ( ' LspAttach ' , {
group = vim.api . nvim_create_augroup ( ' UserLspConfig ' , { } ) ,
callback = function ( ev )
-- Enable completion triggered by <c-x><c-o>
vim.bo [ ev.buf ] . omnifunc = ' v:lua.vim.lsp.omnifunc '
-- Buffer local mappings.
-- See `:help vim.lsp.*` for documentation on any of the below functions
local opts = { buffer = ev.buf }
vim.keymap . set ( ' n ' , ' gD ' , vim.lsp . buf.declaration , opts )
vim.keymap . set ( ' n ' , ' gd ' , vim.lsp . buf.definition , opts )
vim.keymap . set ( ' n ' , ' K ' , vim.lsp . buf.hover , opts )
vim.keymap . set ( ' n ' , ' gi ' , vim.lsp . buf.implementation , opts )
vim.keymap . set ( ' n ' , ' <C-k> ' , vim.lsp . buf.signature_help , opts )
vim.keymap . set ( ' n ' , ' <space>wa ' , vim.lsp . buf.add_workspace_folder , opts )
vim.keymap . set ( ' n ' , ' <space>wr ' , vim.lsp . buf.remove_workspace_folder , opts )
vim.keymap . set ( ' n ' , ' <space>wl ' , function ( )
print ( vim.inspect ( vim.lsp . buf.list_workspace_folders ( ) ) )
end , opts )
vim.keymap . set ( ' n ' , ' <space>D ' , vim.lsp . buf.type_definition , opts )
vim.keymap . set ( ' n ' , ' <space>rn ' , vim.lsp . buf.rename , opts )
vim.keymap . set ( { ' n ' , ' v ' } , ' <space>ca ' , vim.lsp . buf.code_action , opts )
vim.keymap . set ( ' n ' , ' gr ' , vim.lsp . buf.references , opts )
end ,
} )
2024-05-15 15:02:50 +08:00
require ( " lsp_signature " ) . setup ( {
handler_opts = { border = " none " } ,
} )
2024-02-21 23:47:12 +08:00
2024-03-06 20:24:37 +08:00
vim.keymap . set ( { ' i ' , ' n ' , ' v ' , ' x ' } , ' <C-z> ' , ' <Nop> ' , { noremap = true } )
vim.keymap . set ( { ' i ' , ' n ' , ' v ' , ' x ' } , ' <C-c> ' , ' <ESC> ' , { noremap = true } )
2024-02-21 23:47:12 +08:00
vim.keymap . set ( ' i ' , ' <C-x> ' , ' <ESC>ddi ' )
2024-02-23 00:50:58 +08:00
vim.keymap . set ( ' i ' , ' <Home> ' , ' <ESC>^i ' )
2024-02-21 23:47:12 +08:00
vim.keymap . set ( ' i ' , ' <C-a> ' , ' <ESC>ggVG ' )
2024-02-22 00:18:11 +08:00
vim.keymap . set ( ' n ' , ' <C-a> ' , ' ggVG ' )
2024-05-27 20:12:04 +08:00
vim.keymap . set ( ' n ' , ' <leader>` ' , ' <Cmd>split<CR><Cmd>terminal zsh<CR>i ' )
2024-03-14 23:58:45 +08:00
vim.keymap . set ( ' n ' , ' <leader>n ' , ' <Cmd>tabnew<CR> ' )
2024-02-22 11:57:27 +08:00
vim.keymap . set ( ' t ' , ' <ESC> ' , ' <C- \\ ><C-n> ' , { noremap = true } )
2024-05-07 17:27:20 +08:00
vim.keymap . set ( ' n ' , ' <leader>s ' , ' <Cmd>Outline<CR> ' )
2024-02-22 11:57:27 +08:00
vim.keymap . set ( " v " , " <Tab> " , " >gv " )
vim.keymap . set ( " v " , " <S-Tab> " , " <gv " )
2024-03-05 11:44:37 +08:00
vim.keymap . set ( ' n ' , ' <leader>t ' , ' <Cmd>TodoTelescope<CR> ' )
2024-05-07 17:27:20 +08:00
vim.keymap . set ( ' n ' , ' <leader>m ' , ' <Cmd>Tele marks<CR> ' )
2024-05-28 15:09:37 +08:00
vim.keymap . set ( ' v ' , " <C-S-j> " , " dpV`] " )
vim.keymap . set ( ' v ' , " <C-S-k> " , " dkPV`] " )
2024-03-05 11:44:37 +08:00
vim.keymap . set ( ' n ' , ' <C-p> ' , ' <Cmd>Legendary<CR> ' , { noremap = true } )
2024-03-08 20:06:09 +08:00
vim.keymap . set ( { ' n ' , ' v ' , ' x ' } , ' <leader>h ' , ' <Cmd>HopWord<CR> ' )
2024-03-08 22:02:19 +08:00
vim.keymap . set ( ' n ' , ' <leader>dd ' , ' <Cmd>TroubleToggle document_diagnostics<CR> ' ) ;
vim.keymap . set ( ' n ' , ' <leader>dw ' , ' <Cmd>TroubleToggle workspace_diagnostics<CR> ' ) ;
vim.keymap . set ( ' n ' , ' <leader>dq ' , ' <Cmd>TroubleToggle quickfix<CR> ' ) ;
vim.keymap . set ( ' n ' , ' <leader>w ' , ' <Cmd>TroubleToggle lsp_definitions<CR> ' ) ;
vim.keymap . set ( ' n ' , ' <leader>r ' , ' <Cmd>TroubleToggle lsp_references<CR> ' ) ;
2024-04-18 10:52:27 +08:00
vim.keymap . set ( ' n ' , ' <A-t> ' , ' <Cmd>BufferPick<CR> ' , { noremap = true } ) ;
2024-05-07 17:27:20 +08:00
vim.keymap . set ( ' n ' , ' <C-g> ' , ' <Cmd>Neogit kind=split_above<CR> ' , { noremap = true } ) ;
2024-05-01 23:31:38 +08:00
vim.keymap . set ( { ' v ' , ' x ' } , ' <leader>cc ' , ' <Cmd>CodeSnap<CR> ' , { noremap = true } ) ;
2024-05-22 11:50:35 +08:00
vim.keymap . set ( ' n ' , ' <C-s> ' , ' <Cmd>PopupSaveas<CR> ' , { noremap = true } ) ;
2024-05-24 13:33:42 +08:00
vim.keymap . set ( ' n ' , ' <S-U> ' , ' <Cmd>Telescope undo<CR> ' , { noremap = true } )
2024-05-27 20:12:04 +08:00
vim.keymap . set ( ' n ' , ' <C-CR> ' , ' i{<ESC>A}<ESC>%li<CR><ESC>$i<CR><ESC>k^ ' , { noremap = true } )
vim.keymap . set ( ' n ' , ' <C-BS> ' , ' d0i<BS><ESC>l ' , { noremap = true } )
vim.keymap . set ( ' i ' , ' <C-BS> ' , ' <C-u><BS> ' , { noremap = true } )
2024-05-28 15:09:37 +08:00
vim.keymap . set ( ' n ' , ' <leader><leader> ' , ' <Cmd>Telescope help_tags<CR> ' , { noremap = true } )
2024-05-31 00:05:21 +08:00
vim.keymap . set ( ' n ' , ' <leader>p ' , ' <Cmd>Telescope neoclip a extra=plus,unnamedplus<CR> ' , { noremap = true } )
2024-06-04 18:02:32 +08:00
-- vim.keymap.set('n', )
vim.api . nvim_create_user_command ( ' SearchInCurrentFile ' , function ( )
vim.ui . input ( { prompt = ' Grep > ' } , function ( input )
if input ~= nil then
vim.cmd ( ' vimgrep / ' .. input .. ' /j % ' )
vim.cmd ( ' horizontal copen ' )
end
end )
end , { } )
2024-05-22 11:50:35 +08:00
vim.api . nvim_create_user_command ( ' PopupSaveas ' , function ( )
vim.ui . input ( { prompt = ' Save As: ' } , function ( input )
if input ~= nil then
if vim.fn . filereadable ( input ) == 1 then
local choice = vim.fn . input ( ' File exists. Overwrite? ([y]/n): ' )
if choice ~= ' n ' then
vim.cmd ( ' saveas! ' .. input )
print ( ' File overwritten: ' .. input )
else
print ( ' Cancelled ' )
end
else
vim.cmd ( ' saveas ' .. input )
print ( ' File saved as: ' .. input )
end
else
print ( ' Save As cancelled ' )
end
2024-06-04 18:02:32 +08:00
end )
end , { } )
2024-04-18 10:52:27 +08:00
2024-02-22 12:28:27 +08:00
require ( " nvim-treesitter.configs " ) . setup {
incremental_selection = {
enable = true ,
keymaps = {
node_incremental = " v " ,
node_decremental = " V " ,
} ,
} ,
2024-06-04 18:02:32 +08:00
refactor = {
smart_rename = {
enable = true ,
keymaps = { smart_rename = " grr " } ,
} ,
} ,
textobjects = {
select = {
enable = true ,
lookahead = false ,
keymaps = {
-- You can use the capture groups defined in textobjects.scm
[ " af " ] = " @function.outer " ,
[ " if " ] = " @function.inner " ,
[ " ac " ] = " @class.outer " ,
-- You can optionally set descriptions to the mappings (used in the desc parameter of
-- nvim_buf_set_keymap) which plugins like which-key display
[ " ic " ] = { query = " @class.inner " , desc = " Select inner part of a class region " } ,
-- You can also use captures from other query groups like `locals.scm`
[ " as " ] = { query = " @scope " , query_group = " locals " , desc = " Select language scope " } ,
} ,
-- You can choose the select mode (default is charwise 'v')
--
-- Can also be a function which gets passed a table with the keys
-- * query_string: eg '@function.inner'
-- * method: eg 'v' or 'o'
-- and should return the mode ('v', 'V', or '<c-v>') or a table
-- mapping query_strings to modes.
selection_modes = {
[ ' @parameter.outer ' ] = ' v ' , -- charwise
[ ' @function.outer ' ] = ' V ' , -- linewise
[ ' @class.outer ' ] = ' <c-v> ' , -- blockwise
} ,
-- If you set this to `true` (default is `false`) then any textobject is
-- extended to include preceding or succeeding whitespace. Succeeding
-- whitespace has priority in order to act similarly to eg the built-in
-- `ap`.
--
-- Can also be a function which gets passed a table with the keys
-- * query_string: eg '@function.inner'
-- * selection_mode: eg 'v'
-- and should return true or false
include_surrounding_whitespace = false ,
} ,
swap = {
enable = true ,
swap_next = {
[ " ]] " ] = " @parameter.inner " ,
} ,
swap_previous = {
[ " [[ " ] = " @parameter.inner " ,
} ,
} ,
move = {
enable = true ,
set_jumps = true , -- whether to set jumps in the jumplist
goto_next_start = {
[ " ]m " ] = " @function.outer " ,
[ " ]c " ] = { query = " @class.outer " , desc = " Next class start " } ,
--
-- You can use regex matching (i.e. lua pattern) and/or pass a list in a "query" key to group multiple queires.
[ " ]o " ] = " @loop.* " ,
-- ["]o"] = { query = { "@loop.inner", "@loop.outer" } }
--
-- You can pass a query group to use query from `queries/<lang>/<query_group>.scm file in your runtime path.
-- Below example nvim-treesitter's `locals.scm` and `folds.scm`. They also provide highlights.scm and indent.scm.
[ " ]s " ] = { query = " @scope " , query_group = " locals " , desc = " Next scope " } ,
[ " ]z " ] = { query = " @fold " , query_group = " folds " , desc = " Next fold " } ,
} ,
goto_next_end = {
[ " ]M " ] = " @function.outer " ,
[ " ]C " ] = " @class.outer " ,
} ,
goto_previous_start = {
[ " [m " ] = " @function.outer " ,
[ " [c " ] = " @class.outer " ,
} ,
goto_previous_end = {
[ " [M " ] = " @function.outer " ,
[ " [C " ] = " @class.outer " ,
} ,
-- Below will go to either the start or the end, whichever is closer.
-- Use if you want more granular movements
-- Make it even more gradual by adding multiple queries and regex.
goto_next = {
[ " ]d " ] = " @conditional.outer " ,
} ,
goto_previous = {
[ " [d " ] = " @conditional.outer " ,
}
} ,
}
2024-02-22 12:28:27 +08:00
}
2024-02-21 23:47:12 +08:00
2024-06-04 18:02:32 +08:00
local ts_repeat_move = require " nvim-treesitter.textobjects.repeatable_move "
-- Repeat movement with ; and ,
-- ensure ; goes forward and , goes backward regardless of the last direction
vim.keymap . set ( { " n " , " x " , " o " } , " ; " , ts_repeat_move.repeat_last_move_next )
vim.keymap . set ( { " n " , " x " , " o " } , " , " , ts_repeat_move.repeat_last_move_previous )
-- vim way: ; goes to the direction you were moving.
-- vim.keymap.set({ "n", "x", "o" }, ";", ts_repeat_move.repeat_last_move)
-- vim.keymap.set({ "n", "x", "o" }, ",", ts_repeat_move.repeat_last_move_opposite)
-- Optionally, make builtin f, F, t, T also repeatable with ; and ,
vim.keymap . set ( { " n " , " x " , " o " } , " f " , ts_repeat_move.builtin_f_expr , { expr = true } )
vim.keymap . set ( { " n " , " x " , " o " } , " F " , ts_repeat_move.builtin_F_expr , { expr = true } )
vim.keymap . set ( { " n " , " x " , " o " } , " t " , ts_repeat_move.builtin_t_expr , { expr = true } )
vim.keymap . set ( { " n " , " x " , " o " } , " T " , ts_repeat_move.builtin_T_expr , { expr = true } )
2024-03-22 01:07:19 +08:00
vim.api . nvim_create_user_command ( ' Backup ' , ' !git add . && git commit -S -m "backup" && git push ' , { } )
2024-05-28 15:09:37 +08:00
vim.api . nvim_create_user_command ( ' Config ' , ' Explore ~/.config/nvim ' , { } )
2024-03-08 22:02:19 +08:00
2024-02-22 00:33:41 +08:00
require ( ' Comment ' ) . setup ( )
2024-02-22 11:57:27 +08:00
local str = require ( " cmp.utils.str " )
local types = require ( " cmp.types " )
local lspkind = require ( ' lspkind ' )
cmp.setup {
formatting = {
format = lspkind.cmp_format ( {
mode = ' symbol ' , -- show only symbol annotations
2024-03-08 22:03:39 +08:00
maxwidth = 50 , -- prevent the popup from showing more than provided characters (e.g 50 will not show more than 50 characters)
2024-02-22 11:57:27 +08:00
-- can also be a function to dynamically calculate max width such as
2024-03-08 22:03:39 +08:00
-- maxwidth = function() return math.floor(0.45 * vim.o.columns) end,
2024-02-22 11:57:27 +08:00
ellipsis_char = ' ... ' , -- when popup menu exceed maxwidth, the truncated part would show ellipsis_char instead (must define maxwidth first)
show_labelDetails = true , -- show labelDetails in menu. Disabled by default
-- The function below will be called before any actual modifications from lspkind
2024-03-08 22:03:39 +08:00
-- so that you can provide more controls on popup customization. (See [#30](https://github.com/onsails/lspkind-nvim/pull/30))
2024-02-22 11:57:27 +08:00
before = function ( entry , vim_item )
local word = entry : get_insert_text ( )
if entry.completion_item . insertTextFormat == types.lsp . InsertTextFormat.Snippet then
2024-05-24 14:15:51 +08:00
word = word
-- word = vim.lsp.util.parse_snippet(word)
2024-02-22 11:57:27 +08:00
end
word = str.oneline ( word )
2024-03-08 22:03:39 +08:00
if entry.completion_item . insertTextFormat == types.lsp . InsertTextFormat.Snippet and string.sub ( vim_item.abbr , - 1 , - 1 ) == " ~ " then
2024-02-22 11:57:27 +08:00
word = word .. " ~ "
end
vim_item.abbr = word
return vim_item
end
} )
}
}
local null_ls = require ( " null-ls " )
local eslint = require ( " eslint " )
local group = vim.api . nvim_create_augroup ( " lsp_format_on_save " , { clear = false } )
local event = " BufWritePre " -- or "BufWritePost"
local async = event == " BufWritePost "
null_ls.setup ( )
eslint.setup ( {
bin = ' eslint ' , -- or `eslint_d`
code_actions = {
enable = true ,
apply_on_save = {
enable = true ,
types = { " directive " , " problem " , " suggestion " , " layout " } ,
} ,
disable_rule_comment = {
enable = true ,
location = " separate_line " , -- or `same_line`
} ,
} ,
diagnostics = {
enable = true ,
report_unused_disable_directives = false ,
run_on = " type " , -- or `save`
} ,
} )
local prettier = require ( " prettier " )
prettier.setup ( {
2024-03-08 22:03:39 +08:00
bin = ' prettier ' , -- or `'prettierd'` (v0.23.3+)
2024-02-22 11:57:27 +08:00
filetypes = {
" css " ,
" graphql " ,
" html " ,
" javascript " ,
" javascriptreact " ,
" json " ,
" less " ,
" markdown " ,
" scss " ,
" typescript " ,
" typescriptreact " ,
" yaml " ,
2024-02-23 00:50:58 +08:00
" vue " ,
2024-02-22 11:57:27 +08:00
} ,
} )
2024-05-07 17:27:20 +08:00
require ( " outline " ) . setup ( )
2024-02-22 11:57:27 +08:00
require ( " todo-comments " ) . setup ( )
2024-02-23 00:50:58 +08:00
lspconfig.volar . setup {
filetypes = { ' typescript ' , ' javascript ' , ' javascriptreact ' , ' typescriptreact ' , ' vue ' , ' json ' }
}
2024-03-05 11:44:37 +08:00
local map = vim.api . nvim_set_keymap
local opts = { noremap = true , silent = true }
-- Move to previous/next
map ( ' n ' , ' <A-,> ' , ' <Cmd>BufferPrevious<CR> ' , opts )
map ( ' n ' , ' <A-.> ' , ' <Cmd>BufferNext<CR> ' , opts )
-- Re-order to previous/next
2024-05-24 13:33:42 +08:00
map ( ' n ' , ' <M-S-,> ' , ' <Cmd>BufferMovePrevious<CR> ' , opts ) -- Configuration for kitty
map ( ' n ' , ' <M-S-.> ' , ' <Cmd>BufferMoveNext<CR> ' , opts )
2024-03-05 11:44:37 +08:00
map ( ' n ' , ' <A-p> ' , ' <Cmd>BufferPin<CR> ' , opts ) ;
map ( ' n ' , ' <A-c> ' , ' <Cmd>BufferClose<CR> ' , opts ) ;
require ( ' diffview ' ) . setup ( )
require ( ' modicator ' ) . setup ( )
require ( " barbecue.ui " ) . toggle ( true )
local highlight = {
" RainbowRed " ,
" RainbowYellow " ,
" RainbowBlue " ,
" RainbowOrange " ,
" RainbowGreen " ,
" RainbowViolet " ,
" RainbowCyan " ,
}
local hooks = require " ibl.hooks "
-- create the highlight groups in the highlight setup hook, so they are reset
-- every time the colorscheme changes
hooks.register ( hooks.type . HIGHLIGHT_SETUP , function ( )
2024-03-08 22:03:39 +08:00
vim.api . nvim_set_hl ( 0 , " RainbowRed " , { fg = " #E06C75 " } )
vim.api . nvim_set_hl ( 0 , " RainbowYellow " , { fg = " #E5C07B " } )
vim.api . nvim_set_hl ( 0 , " RainbowBlue " , { fg = " #61AFEF " } )
vim.api . nvim_set_hl ( 0 , " RainbowOrange " , { fg = " #D19A66 " } )
vim.api . nvim_set_hl ( 0 , " RainbowGreen " , { fg = " #98C379 " } )
vim.api . nvim_set_hl ( 0 , " RainbowViolet " , { fg = " #C678DD " } )
vim.api . nvim_set_hl ( 0 , " RainbowCyan " , { fg = " #56B6C2 " } )
2024-03-05 11:44:37 +08:00
end )
require ( " ibl " ) . setup {
indent = { highlight = highlight , char = " ▏ " } ,
scope = { enabled = true } ,
}
2024-03-05 17:21:18 +08:00
require ( ' hlargs ' ) . setup ( )
require ( ' marks ' ) . setup ( )
2024-03-05 19:20:29 +08:00
2024-05-02 13:31:31 +08:00
-- my snippets
require ( ' snippets ' )
2024-03-22 01:07:19 +08:00
require ( ' neo-tree ' ) . setup {
filesystem = {
filtered_items = {
visible = true , -- This is what you want: If you set this to `true`, all "hide" just mean "dimmed out"
2024-06-04 18:02:32 +08:00
hide_dotfiles = true ,
hide_gitignored = true ,
2024-03-22 01:07:19 +08:00
} ,
}
}
require ( " cmake-tools " ) . setup {
cmake_command = " cmake " , -- this is used to specify cmake command path
ctest_command = " ctest " , -- this is used to specify ctest command path
cmake_regenerate_on_save = true , -- auto generate when save CMakeLists.txt
cmake_generate_options = { " -DCMAKE_EXPORT_COMPILE_COMMANDS=1 " } , -- this will be passed when invoke `CMakeGenerate`
cmake_build_options = { } , -- this will be passed when invoke `CMakeBuild`
-- support macro expansion:
-- ${kit}
-- ${kitGenerator}
-- ${variant:xx}
cmake_build_directory = " out/${variant:buildType} " , -- this is used to specify generate directory for cmake, allows macro expansion, relative to vim.loop.cwd()
cmake_soft_link_compile_commands = true , -- this will automatically make a soft link from compile commands file to project root dir
cmake_compile_commands_from_lsp = false , -- this will automatically set compile commands file location using lsp, to use it, please set `cmake_soft_link_compile_commands` to false
cmake_kits_path = nil , -- this is used to specify global cmake kits path, see CMakeKits for detailed usage
cmake_variants_message = {
short = { show = true } , -- whether to show short message
long = { show = true , max_length = 40 } , -- whether to show long message
} ,
cmake_dap_configuration = { -- debug settings for cmake
name = " cpp " ,
type = " codelldb " ,
request = " launch " ,
stopOnEntry = false ,
runInTerminal = true ,
console = " integratedTerminal " ,
} ,
cmake_executor = { -- executor to use
name = " quickfix " , -- name of the executor
opts = { } , -- the options the executor will get, possible values depend on the executor type. See `default_opts` for possible values.
default_opts = { -- a list of default and possible values for executors
quickfix = {
show = " always " , -- "always", "only_on_error"
position = " belowright " , -- "vertical", "horizontal", "leftabove", "aboveleft", "rightbelow", "belowright", "topleft", "botright", use `:h vertical` for example to see help on them
size = 10 ,
encoding = " utf-8 " , -- if encoding is not "utf-8", it will be converted to "utf-8" using `vim.fn.iconv`
auto_close_when_success = true , -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
} ,
toggleterm = {
direction = " float " , -- 'vertical' | 'horizontal' | 'tab' | 'float'
close_on_exit = false , -- whether close the terminal when exit
auto_scroll = true , -- whether auto scroll to the bottom
} ,
overseer = {
new_task_opts = {
strategy = {
" toggleterm " ,
direction = " horizontal " ,
autos_croll = true ,
quit_on_exit = " success "
}
} , -- options to pass into the `overseer.new_task` command
on_new_task = function ( task )
require ( " overseer " ) . open (
{ enter = false , direction = " right " }
)
end , -- a function that gets overseer.Task when it is created, before calling `task:start`
} ,
terminal = {
name = " Main Terminal " ,
prefix_name = " [CMakeTools]: " , -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
split_direction = " horizontal " , -- "horizontal", "vertical"
split_size = 11 ,
-- Window handling
single_terminal_per_instance = true , -- Single viewport, multiple windows
single_terminal_per_tab = true , -- Single viewport per tab
keep_terminal_static_location = true , -- Static location of the viewport if avialable
-- Running Tasks
start_insert = false , -- If you want to enter terminal with :startinsert upon using :CMakeRun
focus = false , -- Focus on terminal when cmake task is launched.
do_not_add_newline = false , -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
} , -- terminal executor uses the values in cmake_terminal
} ,
} ,
cmake_runner = { -- runner to use
name = " terminal " , -- name of the runner
opts = { } , -- the options the runner will get, possible values depend on the runner type. See `default_opts` for possible values.
default_opts = { -- a list of default and possible values for runners
quickfix = {
show = " always " , -- "always", "only_on_error"
position = " belowright " , -- "bottom", "top"
size = 10 ,
encoding = " utf-8 " ,
auto_close_when_success = true , -- typically, you can use it with the "always" option; it will auto-close the quickfix buffer if the execution is successful.
} ,
toggleterm = {
direction = " float " , -- 'vertical' | 'horizontal' | 'tab' | 'float'
close_on_exit = false , -- whether close the terminal when exit
auto_scroll = true , -- whether auto scroll to the bottom
} ,
overseer = {
new_task_opts = {
strategy = {
" toggleterm " ,
direction = " horizontal " ,
autos_croll = true ,
quit_on_exit = " success "
}
} , -- options to pass into the `overseer.new_task` command
on_new_task = function ( task )
end , -- a function that gets overseer.Task when it is created, before calling `task:start`
} ,
terminal = {
name = " Main Terminal " ,
prefix_name = " [CMakeTools]: " , -- This must be included and must be unique, otherwise the terminals will not work. Do not use a simple spacebar " ", or any generic name
split_direction = " horizontal " , -- "horizontal", "vertical"
split_size = 11 ,
-- Window handling
single_terminal_per_instance = true , -- Single viewport, multiple windows
single_terminal_per_tab = true , -- Single viewport per tab
keep_terminal_static_location = true , -- Static location of the viewport if avialable
-- Running Tasks
start_insert = false , -- If you want to enter terminal with :startinsert upon using :CMakeRun
focus = false , -- Focus on terminal when cmake task is launched.
do_not_add_newline = false , -- Do not hit enter on the command inserted when using :CMakeRun, allowing a chance to review or modify the command before hitting enter.
} ,
} ,
} ,
cmake_notifications = {
runner = { enabled = true } ,
executor = { enabled = true } ,
spinner = { " ⠋ " , " ⠙ " , " ⠹ " , " ⠸ " , " ⠼ " , " ⠴ " , " ⠦ " , " ⠧ " , " ⠇ " , " ⠏ " } , -- icons used for progress display
refresh_rate_ms = 100 , -- how often to iterate icons
} ,
}
2024-04-18 10:52:27 +08:00
require ( ' telescope ' ) . load_extension ( ' git_file_history ' )
2024-05-24 13:33:42 +08:00
require ( ' telescope ' ) . load_extension ( ' undo ' )
2024-04-18 10:52:27 +08:00
2024-05-01 23:31:38 +08:00
require ( ' codesnap ' ) . setup {
code_font_family = " Fira Code " ,
has_line_number = true ,
}
2024-05-02 13:31:31 +08:00
require ( ' goto-preview ' ) . setup {
default_mappings = true ;
}
2024-05-07 17:27:20 +08:00
require ( ' colorizer ' ) . setup { }
2024-05-20 14:46:53 +08:00
require ( ' ibl ' ) . setup { }
2024-05-24 13:33:42 +08:00
2024-05-27 20:12:04 +08:00
vim.api . nvim_create_autocmd ( " LspAttach " , {
callback = function ( ev )
vim.lsp . inlay_hint.enable ( true )
end ,
} )
2024-05-28 15:09:37 +08:00
2024-05-31 00:05:21 +08:00
require ( ' neoclip ' ) . setup { }