summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorlouie <louie@example.com>2022-06-22 22:54:07 -0700
committerlouie <louie@example.com>2022-06-22 22:54:07 -0700
commit499e646a811560211090b3f5a4e943cd3782d8b1 (patch)
tree25ea8d541ed3f396781de995afb498ae08d08eed
parentc18307846723b1907ae4ca8b4e24112d594e358a (diff)
Added cmp file
-rw-r--r--init.lua1
-rw-r--r--lua/user/cmp.lua135
-rw-r--r--lua/user/colorscheme.lua4
-rw-r--r--lua/user/options.lua3
-rw-r--r--lua/user/plugins.lua20
-rw-r--r--plugin/packer_compiled.lua122
6 files changed, 278 insertions, 7 deletions
diff --git a/init.lua b/init.lua
index be25513..6614b7a 100644
--- a/init.lua
+++ b/init.lua
@@ -2,3 +2,4 @@ require "user.options"
require "user.keymaps"
require "user.plugins"
require "user.colorscheme"
+require "user.cmp"
diff --git a/lua/user/cmp.lua b/lua/user/cmp.lua
new file mode 100644
index 0000000..c36904c
--- /dev/null
+++ b/lua/user/cmp.lua
@@ -0,0 +1,135 @@
+local cmp_status_ok, cmp = pcall(require, "cmp")
+if not cmp_status_ok then
+ return
+end
+
+local snip_status_ok, luasnip = pcall(require, "luasnip")
+if not snip_status_ok then
+ return
+end
+
+require("luasnip/loaders/from_vscode").lazy_load()
+
+local check_backspace = function()
+ local col = vim.fn.col "." - 1
+ return col == 0 or vim.fn.getline("."):sub(col, col):match "%s"
+end
+
+--[[
+--   פּ ﯟ   some other good icons
+local kind_icons = {
+ Text = "",
+ Method = "m",
+ Function = "",
+ Constructor = "",
+ Field = "",
+ Variable = "",
+ Class = "",
+ Interface = "",
+ Module = "",
+ Property = "",
+ Unit = "",
+ Value = "",
+ Enum = "",
+ Keyword = "",
+ Snippet = "",
+ Color = "",
+ File = "",
+ Reference = "",
+ Folder = "",
+ EnumMember = "",
+ Constant = "",
+ Struct = "",
+ Event = "",
+ Operator = "",
+ TypeParameter = "",
+}
+-- find more here: https://www.nerdfonts.com/cheat-sheet
+]]
+
+cmp.setup {
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body) -- For `luasnip` users.
+ end,
+ },
+ mapping = {
+ -- Overwrite built-in completion
+ --["<C-k>"] = cmp.mapping.select_prev_item(),
+ ["<C-p>"] = cmp.mapping.select_prev_item(),
+ --["<C-j>"] = cmp.mapping.select_next_item(),
+ ["<C-n>"] = cmp.mapping.select_next_item(),
+
+ ["<C-b>"] = cmp.mapping(cmp.mapping.scroll_docs(-1), { "i", "c" }),
+ ["<C-f>"] = cmp.mapping(cmp.mapping.scroll_docs(1), { "i", "c" }),
+ ["<C-Space>"] = cmp.mapping(cmp.mapping.complete(), { "i", "c" }),
+ ["<C-y>"] = cmp.config.disable, -- Specify `cmp.config.disable` if you want to remove the default `<C-y>` mapping.
+ ["<C-e>"] = cmp.mapping {
+ i = cmp.mapping.abort(),
+ c = cmp.mapping.close(),
+ },
+ -- Accept currently selected item. If none selected, `select` first item.
+ -- Set `select` to `false` to only confirm explicitly selected items.
+ ["<CR>"] = cmp.mapping.confirm { select = true },
+ ["<Tab>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expandable() then
+ luasnip.expand()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ elseif check_backspace() then
+ fallback()
+ 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",
+ }),
+ },
+ formatting = {
+ fields = { "kind", "abbr", "menu" },
+ format = function(entry, vim_item)
+ -- Kind icons
+ --vim_item.kind = string.format("%s", kind_icons[vim_item.kind])
+ -- vim_item.kind = string.format('%s %s', kind_icons[vim_item.kind], vim_item.kind) -- This concatonates the icons with the name of the item kind
+ vim_item.menu = ({
+ luasnip = "[Snippet]",
+ buffer = "[Buffer]",
+ path = "[Path]",
+ })[entry.source.name]
+ return vim_item
+ end,
+ },
+ sources = {
+ { name = "luasnip" },
+ { name = "buffer" },
+ { name = "path" },
+ },
+ confirm_opts = {
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = false,
+ },
+ --[[ deprecated
+ documentation = {
+ border = { "╭", "─", "╮", "│", "╯", "─", "╰", "│" },
+ },
+ ]]
+ experimental = {
+ ghost_text = false,
+ native_menu = false,
+ },
+}
diff --git a/lua/user/colorscheme.lua b/lua/user/colorscheme.lua
index 94855bc..57df9ae 100644
--- a/lua/user/colorscheme.lua
+++ b/lua/user/colorscheme.lua
@@ -5,3 +5,7 @@ if not status_ok then
vim.notify("colorscheme " .. colorscheme .. " not found!")
return
end
+
+-- Set Popup menu colors
+--highlight Pmenu ctermbg=White ctermfg=Black guibg=Gray
+vim.cmd("highlight Pmenu ctermbg=gray guibg=gray")
diff --git a/lua/user/options.lua b/lua/user/options.lua
index 6538ab3..0059e8c 100644
--- a/lua/user/options.lua
+++ b/lua/user/options.lua
@@ -10,9 +10,6 @@ vim.opt.tabstop = 4 --set tab length
vim.opt.foldmethod = "indent" --enable fold detection
vim.opt.foldlevelstart = 20 --set initial fold
--- Color Settings [TODO]
---highlight Pmenu ctermbg=White ctermfg=Black guibg=Gray
-
-- Additional Settings from Video Series
-- :help options
-- Autocomplete Settings
diff --git a/lua/user/plugins.lua b/lua/user/plugins.lua
index d90587e..e40dff3 100644
--- a/lua/user/plugins.lua
+++ b/lua/user/plugins.lua
@@ -7,10 +7,22 @@ end
-- Install your plugins here
return packer.startup(function(use)
-- My plugins here
- use "wbthomason/packer.nvim" -- Have packer manage itself
- --use "nvim-lua/popup.nvim" -- An implementation of the Popup API from vim in Neovim
- --use "nvim-lua/plenary.nvim" -- Useful lua functions used by lots of plugins
+ use "wbthomason/packer.nvim" -- Have packer manage itself
+ --use "nvim-lua/popup.nvim" -- An implementation of the Popup API from vim in Neovim
+ --use "nvim-lua/plenary.nvim" -- Useful lua functions used by lots of plugins
-- Colorschemes
- --use "lunarvim/colorschemes" -- Additional colorschemes
+ --use "lunarvim/colorschemes" -- Additional colorschemes
+
+ -- cmp plugins
+ use "hrsh7th/nvim-cmp" -- The completion plugin
+ use "hrsh7th/cmp-buffer" -- Buffer completions
+ use "hrsh7th/cmp-path" -- Path completions
+ use "hrsh7th/cmp-cmdline" -- Cmdline completions
+ use "saadparwaiz1/cmp_luasnip" -- snippet completions
+
+ -- snippets
+ use "L3MON4D3/LuaSnip" --snippet engine
+ use "rafamadriz/friendly-snippets" --a bunch of snippets to use
+
end)
diff --git a/plugin/packer_compiled.lua b/plugin/packer_compiled.lua
new file mode 100644
index 0000000..263b6ce
--- /dev/null
+++ b/plugin/packer_compiled.lua
@@ -0,0 +1,122 @@
+-- Automatically generated packer.nvim plugin loader code
+
+if vim.api.nvim_call_function('has', {'nvim-0.5'}) ~= 1 then
+ vim.api.nvim_command('echohl WarningMsg | echom "Invalid Neovim version for packer.nvim! | echohl None"')
+ return
+end
+
+vim.api.nvim_command('packadd packer.nvim')
+
+local no_errors, error_msg = pcall(function()
+
+ local time
+ local profile_info
+ local should_profile = false
+ if should_profile then
+ local hrtime = vim.loop.hrtime
+ profile_info = {}
+ time = function(chunk, start)
+ if start then
+ profile_info[chunk] = hrtime()
+ else
+ profile_info[chunk] = (hrtime() - profile_info[chunk]) / 1e6
+ end
+ end
+ else
+ time = function(chunk, start) end
+ end
+
+local function save_profiles(threshold)
+ local sorted_times = {}
+ for chunk_name, time_taken in pairs(profile_info) do
+ sorted_times[#sorted_times + 1] = {chunk_name, time_taken}
+ end
+ table.sort(sorted_times, function(a, b) return a[2] > b[2] end)
+ local results = {}
+ for i, elem in ipairs(sorted_times) do
+ if not threshold or threshold and elem[2] > threshold then
+ results[i] = elem[1] .. ' took ' .. elem[2] .. 'ms'
+ end
+ end
+
+ _G._packer = _G._packer or {}
+ _G._packer.profile_output = results
+end
+
+time([[Luarocks path setup]], true)
+local package_path_str = "/home/louie/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?.lua;/home/louie/.cache/nvim/packer_hererocks/2.1.0-beta3/share/lua/5.1/?/init.lua;/home/louie/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?.lua;/home/louie/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/luarocks/rocks-5.1/?/init.lua"
+local install_cpath_pattern = "/home/louie/.cache/nvim/packer_hererocks/2.1.0-beta3/lib/lua/5.1/?.so"
+if not string.find(package.path, package_path_str, 1, true) then
+ package.path = package.path .. ';' .. package_path_str
+end
+
+if not string.find(package.cpath, install_cpath_pattern, 1, true) then
+ package.cpath = package.cpath .. ';' .. install_cpath_pattern
+end
+
+time([[Luarocks path setup]], false)
+time([[try_loadstring definition]], true)
+local function try_loadstring(s, component, name)
+ local success, result = pcall(loadstring(s), name, _G.packer_plugins[name])
+ if not success then
+ vim.schedule(function()
+ vim.api.nvim_notify('packer.nvim: Error running ' .. component .. ' for ' .. name .. ': ' .. result, vim.log.levels.ERROR, {})
+ end)
+ end
+ return result
+end
+
+time([[try_loadstring definition]], false)
+time([[Defining packer_plugins]], true)
+_G.packer_plugins = {
+ LuaSnip = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/LuaSnip",
+ url = "https://github.com/L3MON4D3/LuaSnip"
+ },
+ ["cmp-buffer"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/cmp-buffer",
+ url = "https://github.com/hrsh7th/cmp-buffer"
+ },
+ ["cmp-cmdline"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/cmp-cmdline",
+ url = "https://github.com/hrsh7th/cmp-cmdline"
+ },
+ ["cmp-path"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/cmp-path",
+ url = "https://github.com/hrsh7th/cmp-path"
+ },
+ cmp_luasnip = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/cmp_luasnip",
+ url = "https://github.com/saadparwaiz1/cmp_luasnip"
+ },
+ ["friendly-snippets"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/friendly-snippets",
+ url = "https://github.com/rafamadriz/friendly-snippets"
+ },
+ ["nvim-cmp"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/nvim-cmp",
+ url = "https://github.com/hrsh7th/nvim-cmp"
+ },
+ ["packer.nvim"] = {
+ loaded = true,
+ path = "/home/louie/.local/share/nvim/site/pack/packer/start/packer.nvim",
+ url = "https://github.com/wbthomason/packer.nvim"
+ }
+}
+
+time([[Defining packer_plugins]], false)
+if should_profile then save_profiles() end
+
+end)
+
+if not no_errors then
+ error_msg = error_msg:gsub('"', '\\"')
+ vim.api.nvim_command('echohl ErrorMsg | echom "Error in packer_compiled: '..error_msg..'" | echom "Please check your config for correctness" | echohl None')
+end