Skip to content

Instantly share code, notes, and snippets.

@RobGThai
Created November 5, 2021 12:36
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save RobGThai/d348bc8c802e5b399a11662e9ebbb528 to your computer and use it in GitHub Desktop.
Save RobGThai/d348bc8c802e5b399a11662e9ebbb528 to your computer and use it in GitHub Desktop.
nvim
call plug#begin()
" Plug 'tpope/vim-sensible'
" Plug 'roxma/nvim-completion-manager'
" Plug 'SirVer/ultisnips'
" Plug 'honza/vim-snippets'
" Plug 'preservim/nerdtree'
" Plug 'unblevable/quick-scope'
" Plug 'vimoxide/vim-mkdir'
" Plug 'vimoxide/vim-indent-object'
" Plug 'vimwiki/vimwiki'
" Plug 'thesis/vim-solidity'
Plug 'neovim/nvim-lspconfig'
Plug 'nvim-lua/completion-nvim'
Plug 'nvim-treesitter/nvim-treesitter', {'do': ':TSUpdate'}
Plug 'junegunn/fzf', {'do': { -> fzf#install() }}
Plug 'kyazdani42/nvim-web-devicons' " for file icons
Plug 'kyazdani42/nvim-tree.lua'
Plug 'natebosch/vim-lsc'
Plug 'navarasu/onedark.nvim'
" Plug 'liuchengxu/vista.vim'
call plug#end()
nmap <leader>fz :FZF<CR>
" Tab space
" ts = Tab stop; use in file
" sts = Soft tab stop; uses while editing
" sw = Shift Width; uses for auto indent
autocmd FileType javascript setlocal ts=2 sts=2 sw=2
autocmd FileType json setlocal ts=2 sts=2 sw=2
" Tabs management mapping
map <leader>tn :tabnew<cr>
map <leader>to :tabonly<cr>
map <leader>tc :tabclose<cr>
map <leader>tm :tabmove<cr>
nnoremap <C-n> :NvimTreeToggle<CR>
lua << EOF
local nvim_lsp = require('lspconfig')
------------------
--- Setup completions
------------------
nvim_lsp.bashls.setup{}
nvim_lsp.ccls.setup{}
nvim_lsp.clangd.setup{}
nvim_lsp.cmake.setup{}
nvim_lsp.kotlin_language_server.setup{}
nvim_lsp.phpactor.setup{}
nvim_lsp.rls.setup{on_attach=require'completion'.onattach}
nvim_lsp.gopls.setup{}
-- nvim_lsp.pyls.setup{on_attach=require'completion'.on_attach}
nvim_lsp.java_language_server.setup{}
nvim_lsp.elixirls.setup{
cmd = { "/Users/golf.poohdish/elixir/language_server.sh" };
}
nvim_lsp.sourcekit.setup{}
------------------
-- Setup shortcuts
------------------
local servers = { "bashls", "ccls", "clangd", "cmake", "kotlin_language_server", "phpactor", "rls", "gopls", "pyls", "elixirls" }
-- Use an on_attach function to only map the following keys
-- after the language server attaches to the current buffer
local on_attach = function(client, bufnr)
local function buf_set_keymap(...) vim.api.nvim_buf_set_keymap(bufnr, ...) end
local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end
--Enable completion triggered by <c-x><c-o>
buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
-- Mappings.
local opts = { noremap=true, silent=true }
-- See `:help vim.lsp.*` for documentation on any of the below functions
buf_set_keymap('n', 'gD', '<Cmd>lua vim.lsp.buf.declaration()<CR>', opts)
buf_set_keymap('n', 'gd', '<Cmd>lua vim.lsp.buf.definition()<CR>', opts)
buf_set_keymap('n', 'K', '<Cmd>lua vim.lsp.buf.hover()<CR>', opts)
buf_set_keymap('n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
buf_set_keymap('n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
buf_set_keymap('n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
buf_set_keymap('n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
buf_set_keymap('n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
buf_set_keymap('n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
buf_set_keymap('n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
buf_set_keymap('n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
buf_set_keymap('n', '<space>e', '<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>', opts)
buf_set_keymap('n', '[d', '<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>', opts)
buf_set_keymap('n', ']d', '<cmd>lua vim.lsp.diagnostic.goto_next()<CR>', opts)
buf_set_keymap('n', '<space>q', '<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>', opts)
buf_set_keymap("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>", opts)
end
-- Use a loop to conveniently call 'setup' on multiple servers and
-- map buffer local keybindings when the language server attaches
-- for _, lsp in ipairs(servers) do
-- nvim_lsp[lsp].setup {
-- on_attach = on_attach,
-- flags = {
-- debounce_text_changes = 150,
-- }
-- }
-- end
vim.g.onedark_style = 'warm'
require('onedark').setup()
require("nvim-treesitter.parsers").elixir = {
install_info = {
url = "/Users/golf.poohdish/elixir/a/tree-sitter-elixir",
files = "grammar.js"
},
used_by = {'elixir'}
}
EOF
let g:lsc_server_commands = {'java': '/Users/golf.poohdish/lsp/java-language-server/java-language-server/dist/lang_server_mac.sh'}
let g:nvim_tree_auto_open = 1
let g:nvim_tree_git_hl = 1
let g:nvim_tree_add_trailing = 1
let g:nvim_tree_icons = {
\ 'default': '',
\ 'symlink': '',
\ 'git': {
\ 'unstaged': "✗",
\ 'staged': "✓",
\ 'unmerged': "",
\ 'renamed': "➜",
\ 'untracked': "★",
\ 'deleted': "",
\ 'ignored': "◌"
\ },
\ 'folder': {
\ 'arrow_open': "",
\ 'arrow_closed': "",
\ 'default': "",
\ 'open': "",
\ 'empty': "",
\ 'empty_open': "",
\ 'symlink': "",
\ 'symlink_open': "",
\ },
\ 'lsp': {
\ 'hint': "",
\ 'info': "",
\ 'warning': "",
\ 'error': "",
\ }
\ }
set completeopt+=noinsert,menuone,preview
" let &guifont = "Hacked Nerd Font Mono:h12"
" let &guifont = "Jetbrains Mono:h12"
" let &guifont = "Apple Chancery:h12"
set termguicolors " this variable must be enabled for colors to be applied properly
" highlight NvimTreeFolderIcon guibg=blue
set number
set tabstop=4
set shiftwidth=4
set expandtab
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment