Skip to content

Instantly share code, notes, and snippets.

@RobGThai
Created November 5, 2021 12:36
Show Gist options
  • Save RobGThai/d348bc8c802e5b399a11662e9ebbb528 to your computer and use it in GitHub Desktop.
Save RobGThai/d348bc8c802e5b399a11662e9ebbb528 to your computer and use it in GitHub Desktop.

Revisions

  1. RobGThai created this gist Nov 5, 2021.
    176 changes: 176 additions & 0 deletions init.vim
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,176 @@
    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