Skip to content
Snippets Groups Projects
Commit 1daf8fbd authored by codecraft's avatar codecraft :crocodile:
Browse files

Formatting some more, adding crates for crate autocompletion

parent b33e41c1
No related branches found
No related tags found
No related merge requests found
...@@ -32,6 +32,7 @@ require("codecraft.plugin.lsp.lsp") ...@@ -32,6 +32,7 @@ require("codecraft.plugin.lsp.lsp")
require("codecraft.plugin.lsp.completion") require("codecraft.plugin.lsp.completion")
require("codecraft.plugin.lsp.null-ls") require("codecraft.plugin.lsp.null-ls")
require("codecraft.plugin.lsp.rust-tools") require("codecraft.plugin.lsp.rust-tools")
require("codecraft.plugin.lsp.crates")
-- DAP -- DAP
require("codecraft.plugin.dap.dap") require("codecraft.plugin.dap.dap")
......
-- Install packer -- Install packer
local install_path = vim.fn.stdpath 'data' .. '/site/pack/packer/start/packer.nvim' local install_path = vim.fn.stdpath("data") .. "/site/pack/packer/start/packer.nvim"
local is_bootstrap = false local is_bootstrap = false
if vim.fn.empty(vim.fn.glob(install_path)) > 0 then if vim.fn.empty(vim.fn.glob(install_path)) > 0 then
is_bootstrap = true is_bootstrap = true
vim.fn.system { 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim', install_path } vim.fn.system({ "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path })
vim.cmd [[packadd packer.nvim]] vim.cmd([[packadd packer.nvim]])
end end
require('packer').startup(function(use) require("packer").startup(function(use)
-- telescope filebrowser -- telescope filebrowser
use { use({
"nvim-telescope/telescope-file-browser.nvim", "nvim-telescope/telescope-file-browser.nvim",
requires = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" } requires = { "nvim-telescope/telescope.nvim", "nvim-lua/plenary.nvim" },
} })
-- dashboard -- dashboard
use { use({
'goolord/alpha-nvim', "goolord/alpha-nvim",
requires = { 'nvim-tree/nvim-web-devicons' }, requires = { "nvim-tree/nvim-web-devicons" },
config = function() config = function()
require("codecraft.plugin.alpha").setup() require("codecraft.plugin.alpha").setup()
end end,
} })
-- navicons -- navicons
use { use({
"SmiteshP/nvim-navic", "SmiteshP/nvim-navic",
requires = "neovim/nvim-lspconfig" requires = "neovim/nvim-lspconfig",
} })
-- Rust tools -- Rust tools
use 'simrat39/rust-tools.nvim' use("simrat39/rust-tools.nvim")
-- Project manager use({
use 'ahmedkhalf/project.nvim' "saecki/crates.nvim",
tag = "v0.3.0",
use "alexghergh/nvim-tmux-navigation" requires = { "nvim-lua/plenary.nvim" },
-- Package manager })
use 'wbthomason/packer.nvim' -- Project manager
use 'jiangmiao/auto-pairs' use("ahmedkhalf/project.nvim")
use 'alvan/vim-closetag'
use("alexghergh/nvim-tmux-navigation")
use 'tpope/vim-surround' -- Package manager
-- debugging use("wbthomason/packer.nvim")
use 'mfussenegger/nvim-dap' use("jiangmiao/auto-pairs")
use 'jay-babu/mason-nvim-dap.nvim' use("alvan/vim-closetag")
use { "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } }
use 'theHamsta/nvim-dap-virtual-text' use("tpope/vim-surround")
use 'nvim-telescope/telescope-dap.nvim' -- debugging
-- BufferLine use("mfussenegger/nvim-dap")
use { 'akinsho/bufferline.nvim', tag = "v3.*", requires = 'nvim-tree/nvim-web-devicons' } use("jay-babu/mason-nvim-dap.nvim")
-- Markdownpreview use({ "rcarriga/nvim-dap-ui", requires = { "mfussenegger/nvim-dap" } })
use 'nvim-lua/completion-nvim' use("theHamsta/nvim-dap-virtual-text")
-- emmet use("nvim-telescope/telescope-dap.nvim")
-- use 'mattn/emmet-vim' -- BufferLine
-- Markdownpreview use({ "akinsho/bufferline.nvim", tag = "v3.*", requires = "nvim-tree/nvim-web-devicons" })
use({ -- Markdownpreview
"iamcco/markdown-preview.nvim", use("nvim-lua/completion-nvim")
run = function() vim.fn["mkdp#util#install"]() end, -- emmet
}) -- use 'mattn/emmet-vim'
use { -- LSP Configuration & Plugins -- Markdownpreview
'neovim/nvim-lspconfig', use({
requires = { "iamcco/markdown-preview.nvim",
-- Automatically install LSPs to stdpath for neovim run = function()
'williamboman/mason.nvim', vim.fn["mkdp#util#install"]()
'williamboman/mason-lspconfig.nvim', end,
})
-- Useful status updates for LSP use({ -- LSP Configuration & Plugins
'j-hui/fidget.nvim', "neovim/nvim-lspconfig",
requires = {
-- Additional lua configuration, makes nvim stuff amazing -- Automatically install LSPs to stdpath for neovim
'folke/neodev.nvim', "williamboman/mason.nvim",
}, "williamboman/mason-lspconfig.nvim",
}
-- Undotree -- Useful status updates for LSP
use 'mbbill/undotree' "j-hui/fidget.nvim",
-- Formatting & Lintig -- Additional lua configuration, makes nvim stuff amazing
use 'jose-elias-alvarez/null-ls.nvim' "folke/neodev.nvim",
use 'jayp0521/mason-null-ls.nvim' },
})
use { -- Autocompletion -- Undotree
'hrsh7th/nvim-cmp', use("mbbill/undotree")
requires = { 'hrsh7th/cmp-nvim-lsp', 'L3MON4D3/LuaSnip', 'saadparwaiz1/cmp_luasnip' },
} -- Formatting & Lintig
use("jose-elias-alvarez/null-ls.nvim")
use { -- Highlight, edit, and navigate code use("jayp0521/mason-null-ls.nvim")
'nvim-treesitter/nvim-treesitter',
run = function() use({ -- Autocompletion
pcall(require('nvim-treesitter.install').update { with_sync = true }) "hrsh7th/nvim-cmp",
end, requires = { "hrsh7th/cmp-nvim-lsp", "L3MON4D3/LuaSnip", "saadparwaiz1/cmp_luasnip" },
} })
use { -- Additional text objects via treesitter use({ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter-textobjects', "nvim-treesitter/nvim-treesitter",
after = 'nvim-treesitter', run = function()
} pcall(require("nvim-treesitter.install").update({ with_sync = true }))
end,
-- NVIMTREE })
use {
'nvim-tree/nvim-tree.lua', use({ -- Additional text objects via treesitter
requires = { "nvim-treesitter/nvim-treesitter-textobjects",
'nvim-tree/nvim-web-devicons', -- optional, for file icons after = "nvim-treesitter",
}, })
}
-- Git related plugins -- NVIMTREE
use 'tpope/vim-fugitive' use({
use 'tpope/vim-rhubarb' "nvim-tree/nvim-tree.lua",
use 'lewis6991/gitsigns.nvim' requires = {
"nvim-tree/nvim-web-devicons", -- optional, for file icons
use 'navarasu/onedark.nvim' -- Theme inspired by Atom },
use 'Mofiqul/dracula.nvim' -- dracula })
use 'wojciechkepka/vim-github-dark' -- Git related plugins
use 'shaunsingh/nord.nvim' use("tpope/vim-fugitive")
use { "catppuccin/nvim", as = "catppuccin" } use("tpope/vim-rhubarb")
use 'morhetz/gruvbox' use("lewis6991/gitsigns.nvim")
use 'folke/tokyonight.nvim'
use 'LunarVim/lunar.nvim' use("navarasu/onedark.nvim") -- Theme inspired by Atom
use 'nvim-lualine/lualine.nvim' -- Fancier statusline use("Mofiqul/dracula.nvim") -- dracula
use 'lukas-reineke/indent-blankline.nvim' -- Add indentation guides even on blank lines use("wojciechkepka/vim-github-dark")
use 'numToStr/Comment.nvim' -- "gc" to comment visual regions/lines use("shaunsingh/nord.nvim")
use 'tpope/vim-sleuth' -- Detect tabstop and shiftwidth automatically use({ "catppuccin/nvim", as = "catppuccin" })
use("morhetz/gruvbox")
-- Fuzzy Finder (files, lsp, etc) use("folke/tokyonight.nvim")
use { 'nvim-telescope/telescope.nvim', branch = '0.1.x', requires = { 'nvim-lua/plenary.nvim' } } use("LunarVim/lunar.nvim")
use("nvim-lualine/lualine.nvim") -- Fancier statusline
-- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available use("lukas-reineke/indent-blankline.nvim") -- Add indentation guides even on blank lines
use { 'nvim-telescope/telescope-fzf-native.nvim', run = 'make', cond = vim.fn.executable 'make' == 1 } use("numToStr/Comment.nvim") -- "gc" to comment visual regions/lines
use("tpope/vim-sleuth") -- Detect tabstop and shiftwidth automatically
-- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua
local has_plugins, plugins = pcall(require, 'custom.plugins') -- Fuzzy Finder (files, lsp, etc)
if has_plugins then use({ "nvim-telescope/telescope.nvim", branch = "0.1.x", requires = { "nvim-lua/plenary.nvim" } })
plugins(use)
end -- Fuzzy Finder Algorithm which requires local dependencies to be built. Only load if `make` is available
use({ "nvim-telescope/telescope-fzf-native.nvim", run = "make", cond = vim.fn.executable("make") == 1 })
if is_bootstrap then
require('packer').sync() -- Add custom plugins to packer from ~/.config/nvim/lua/custom/plugins.lua
end local has_plugins, plugins = pcall(require, "custom.plugins")
if has_plugins then
plugins(use)
end
if is_bootstrap then
require("packer").sync()
end
end) end)
if is_bootstrap then if is_bootstrap then
print '==================================' print("==================================")
print ' Plugins are being installed' print(" Plugins are being installed")
print ' Wait until Packer completes,' print(" Wait until Packer completes,")
print ' then restart nvim' print(" then restart nvim")
print '==================================' print("==================================")
return return
end end
-- Automatically source and re-compile packer whenever you save this init.lua -- Automatically source and re-compile packer whenever you save this init.lua
local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) local packer_group = vim.api.nvim_create_augroup("Packer", { clear = true })
vim.api.nvim_create_autocmd('BufWritePost', { vim.api.nvim_create_autocmd("BufWritePost", {
command = 'source <afile> | silent! LspStop | silent! LspStart | PackerCompile', command = "source <afile> | silent! LspStop | silent! LspStart | PackerCompile",
group = packer_group, group = packer_group,
pattern = vim.fn.expand '$MYVIMRC', pattern = vim.fn.expand("$MYVIMRC"),
}) })
-- When we are bootstrapping a configuration, it doesn't -- When we are bootstrapping a configuration, it doesn't
-- make sense to execute the rest of the init.lua. -- make sense to execute the rest of the init.lua.
......
-- nvim-cmp setup -- nvim-cmp setup
local cmp = require 'cmp' local cmp = require("cmp")
local luasnip = require 'luasnip' local luasnip = require("luasnip")
cmp.setup {
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert {
['<C-d>'] = cmp.mapping.scroll_docs( -4),
['<C-f>'] = cmp.mapping.scroll_docs(4),
['<C-Space>'] = cmp.mapping.complete(),
['<CR>'] = cmp.mapping.confirm {
behavior = cmp.ConfirmBehavior.Replace,
select = true,
},
['<Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { 'i', 's' }),
['<S-Tab>'] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable( -1) then
luasnip.jump( -1)
else
fallback()
end
end, { 'i', 's' }),
},
sources = {
{ name = 'nvim_lsp' },
{ name = 'luasnip' },
},
}
cmp.setup({
snippet = {
expand = function(args)
luasnip.lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-d>"] = cmp.mapping.scroll_docs(-4),
["<C-f>"] = cmp.mapping.scroll_docs(4),
["<C-Space>"] = cmp.mapping.complete(),
["<CR>"] = cmp.mapping.confirm({
behavior = cmp.ConfirmBehavior.Replace,
select = true,
}),
["<Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_next_item()
elseif luasnip.expand_or_jumpable() then
luasnip.expand_or_jump()
else
fallback()
end
end, { "i", "s" }),
["<S-Tab>"] = cmp.mapping(function(fallback)
if cmp.visible() then
cmp.select_prev_item()
elseif luasnip.jumpable(-1) then
luasnip.jump(-1)
else
fallback()
end
end, { "i", "s" }),
}),
sources = {
{ name = "nvim_lsp" },
{ name = "luasnip" },
{ name = "buffer" },
{ name = "crates" },
},
})
require("crates").setup({})
require("crates").show()
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment