9 Commits
v1.0.0 ... main

7 changed files with 90 additions and 28 deletions

15
lua/config/comment.lua Normal file
View File

@@ -0,0 +1,15 @@
local opts = { noremap = true, silent = true }
require("Comment").setup({
mappings = {
---Operator-pending mapping; `gcc` `gbc` `gc[count]{motion}` `gb[count]{motion}`
basic = false,
---Extra mapping; `gco`, `gcO`, `gcA`
extra = false,
},
})
vim.keymap.set("n", "<leader>/", require("Comment.api").toggle.linewise.current)
vim.keymap.set("v", "<leader>/",
'<ESC><CMD>lua require("Comment.api").toggle.linewise(vim.fn.visualmode())<CR>', opts)

View File

@@ -2,3 +2,4 @@ require("config.lazy")
require("config.lsp")
require("config.theme")
require("config.nvim-tree")
require("config.comment")

View File

@@ -5,6 +5,26 @@ require("lazy").setup({
{
"hrsh7th/nvim-cmp",
dependencies = {
-- Code snippet engine
{
"L3MON4D3/LuaSnip",
version = "v2.*",
},
{
"windwp/nvim-autopairs",
opts = {
fast_wrap = {},
disable_filetype = { "TelescopePrompt", "vim" },
},
config = function(_, opts)
require("nvim-autopairs").setup(opts)
-- setup cmp for autopairs
local cmp_autopairs = require "nvim-autopairs.completion.cmp"
require("cmp").event:on("confirm_done", cmp_autopairs.on_confirm_done())
end,
},
"hrsh7th/cmp-nvim-lsp", -- lsp auto-completion
"hrsh7th/cmp-buffer", -- buffer auto-completion
"hrsh7th/cmp-path", -- path auto-completion
@@ -14,12 +34,6 @@ require("lazy").setup({
require("config.nvim-cmp")
end,
},
-- Code snippet engine
{
"L3MON4D3/LuaSnip",
version = "v2.*",
},
-- LSP manager
"williamboman/mason.nvim",
"williamboman/mason-lspconfig.nvim",
@@ -39,4 +53,6 @@ require("lazy").setup({
},
},
"numToStr/Comment.nvim",
})

View File

@@ -8,7 +8,8 @@ require('mason').setup({
}
})
local servers = { 'pylsp', 'lua_ls', 'rust_analyzer', 'zls' }
local servers = { 'lua_ls', 'rust_analyzer', 'nil_ls' }
local l_servers = { 'clangd', 'zls'}
require('mason-lspconfig').setup({
-- A list of servers to automatically install if they're not already installed
@@ -33,10 +34,10 @@ local lspconfig = require('lspconfig')
-- Customized on_attach function
-- See `:help vim.diagnostic.*` for documentation on any of the below functions
local opts = { noremap = true, silent = true }
vim.keymap.set('n', 'd', vim.diagnostic.open_float, opts)
vim.keymap.set('n', 'dn', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', 'dp', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', 'dl', vim.diagnostic.setloclist, opts)
vim.keymap.set('n', '<leader>d', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '<leader>dp', vim.diagnostic.goto_prev, opts)
vim.keymap.set('n', '<leader>dn', vim.diagnostic.goto_next, opts)
vim.keymap.set('n', '<leader>dl', vim.diagnostic.setloclist, opts)
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
@@ -46,25 +47,27 @@ local on_attach = function(client, bufnr)
-- See `:help vim.lsp.*` for documentation on any of the below functions
local bufopts = { noremap = true, silent = true, buffer = bufnr }
vim.keymap.set('n', 'ld', vim.lsp.buf.declaration, bufopts)
--vim.keymap.set('n', 'gd', vim.lsp.buf.definition, bufopts)
--vim.keymap.set('n', 'K', vim.lsp.buf.hover, bufopts)
vim.keymap.set('n', '<leader>ld', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', '<leader>lD', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', '<leader>lh', vim.lsp.buf.hover, bufopts)
--vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, bufopts)
--vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, bufopts)
vim.keymap.set('n', '<leader>ls', vim.lsp.buf.signature_help, bufopts)
--vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, bufopts)
--vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, bufopts)
--vim.keymap.set('n', '<space>wl', function()
-- print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
--end, bufopts)
--vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, bufopts)
vim.keymap.set('n', 'lr', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', 'la', vim.lsp.buf.code_action, bufopts)
vim.keymap.set('n', '<leader>lr', vim.lsp.buf.rename, bufopts)
vim.keymap.set('n', '<leader>la', vim.lsp.buf.code_action, bufopts)
--vim.keymap.set('n', 'gr', vim.lsp.buf.references, bufopts)
--vim.keymap.set("n", "<space>f", function()
-- vim.lsp.buf.format({ async = true })
--end, bufopts)
end
local capabilities = require("cmp_nvim_lsp").default_capabilities()
-- Configure each language
-- How to add LSP for a specific language?
-- 1. use `:Mason` to install corresponding LSP
@@ -73,5 +76,18 @@ end
for _, lsp in ipairs(servers) do
lspconfig[lsp].setup {
on_attach = on_attach,
capabilities = capabilities,
}
end
for _, lsp in ipairs(l_servers) do
lspconfig[lsp].setup({
on_attach = on_attach,
capabilities = capabilities,
})
lspconfig.opts = {
servers = {
[lsp] = {mason = false,},
},
}
end

View File

@@ -7,6 +7,9 @@ end
local luasnip = require("luasnip")
local cmp = require("cmp")
vim.keymap.set({ "i", "s" }, "<C-L>", function() luasnip.jump(1) end, { silent = true })
vim.keymap.set({ "i", "s" }, "<C-H>", function() luasnip.jump(-1) end, { silent = true })
cmp.setup({
snippet = {
-- REQUIRED - you must specify a snippet engine
@@ -16,11 +19,11 @@ cmp.setup({
},
mapping = cmp.mapping.preset.insert({
-- Use <C-b/f> to scroll the docs
['K'] = cmp.mapping.scroll_docs(-4),
['J'] = cmp.mapping.scroll_docs(4),
['<C-K>'] = cmp.mapping.scroll_docs(-4),
['<C-J>'] = cmp.mapping.scroll_docs(4),
-- Use <C-k/j> to switch in items
['k'] = cmp.mapping.select_prev_item(),
['j'] = cmp.mapping.select_next_item(),
['<C-k>'] = cmp.mapping.select_prev_item(),
['<C-j>'] = cmp.mapping.select_next_item(),
-- Use <CR>(Enter) to confirm selection
-- Accept currently selected item. Set `select` to `false` to only confirm explicitly selected items.
['<CR>'] = cmp.mapping.confirm({ select = true }),
@@ -76,4 +79,5 @@ cmp.setup({
{ name = 'buffer' }, -- For buffer word completion
{ name = 'path' }, -- For path completion
})
})

View File

@@ -1,6 +1,11 @@
local onedark = require("onedark")
onedark.setup {
style = "darker"
style = "darker",
highlights = {
Comment = {fg = '#F62681'},
["@comment"] = {fg = '#F62681'},
["@lsp.type.comment"] = {fg = '#F62681'},
},
}
onedark.load()

5
readme.md Normal file
View File

@@ -0,0 +1,5 @@
# TODO:
- [x] commenting in normal / visual mode with '/'
- [x] autoclosing of brackets
- [ ] type information in complete function
- [ ] integrated terminal