Error while pressing Tab, after installing lsp

I am getting this error, after I installed and configured nvim_lsp, lspconfig and compete plugins. This error happens when get into insert mode and start pressing . Also note that tab inerts the digit 0 whenever pressed. So, I am working around by not pressing tab, but space.

I am not conversant with nvim configurations, so I might have messed up with Tab key mapping. Can someone point out or give a clue on how to correct this.

Here is my init.vim

if &compatible
set nocompatible               " Be iMproved
endif

let mapleader="," 
" Required: 
filetype plugin indent on
" Only set syntax highlighting once!
if !exists("g:syntax_on")
syntax enable
endif 

" Plugins will be downloaded under the specified directory.
call plug#begin(has('nvim') ? stdpath('data') . '/plugged' : '~/.vim/plugged')

" Declare the list of plugins.
Plug 'rafi/awesome-vim-colorschemes'
Plug 'kyazdani42/nvim-web-devicons'
Plug 'folke/trouble.nvim'
Plug 'tpope/vim-sensible'
Plug 'junegunn/seoul256.vim'
Plug 'glepnir/spaceline.vim'
Plug 'kyazdani42/nvim-tree.lua'
Plug 'alvan/vim-closetag'
""Plug 'airblade/vim-gitgutter'
" Use the icon plugin for better behavior
Plug 'preservim/nerdtree' |
\ Plug 'Xuyuanp/nerdtree-git-plugin' |
\ Plug 'ryanoasis/vim-devicons'
Plug 'nikvdp/neomux'
Plug 'tpope/vim-fugitive'
Plug 'neovim/nvim-lsp'
Plug 'neovim/nvim-lspconfig'
Plug 'hrsh7th/nvim-compe'
Plug 'nvim-lua/popup.nvim'
Plug 'junegunn/fzf', { 'do': { -> fzf#install() } }
Plug 'junegunn/fzf.vim'
Plug 'mattn/vim-lsp-icons'
Plug 'airblade/vim-gitgutter'


" for showing a fancy home page.
Plug 'mhinz/vim-startify'



" for file search
Plug 'https://github.com/ctrlpvim/ctrlp.vim.git'

" List ends here. Plugins become visible to Vim after this call.
call plug#end()

autocmd VimEnter *
\   if !argc()
\ |   Startify
\ |   NERDTree
\ |   wincmd w
\ | endif


" Other regular settings
set nu
set ai
set ts=2
set et
set shiftwidth=2
set signcolumn="auto:[1-8] - [2-9]"
colorscheme solarized8_flat


let g:NERDTreeGitStatusIndicatorMapCustom = {
\ 'Modified'  :'✹',
\ 'Staged'    :'✚',
\ 'Untracked' :'✭',
\ 'Renamed'   :'➜',
\ 'Unmerged'  :'═',
\ 'Deleted'   :'✖',
\ 'Dirty'     :'✗',
\ 'Ignored'   :'☒',
\ 'Clean'     :'✔︎',
\ 'Unknown'   :'?',
\ }

let g:NERDTreeGitStatusUseNerdFonts = 1
let g:NERDTreeGitStatusUntrackedFilesMode = 'all'
let g:NERDTreeGitStatusShowClean = 1 " default: 0

" Git Gutter
highlight GitGutterAdd guifg=#009900 ctermfg=Green
highlight GitGutterChange guifg=#bbbb00 ctermfg=Yellow
highlight GitGutterChange guifg=#ff2222 ctermfg=Red
nmap ) <Plug>(GitGutterNextHunk)
nmap ( <Plug>(GitGutterPrevHunk)
let g:gitgutter_enabled = 1
set updatetime=250
let g:gitgutter_max_signs = 500
" No mapping
let g:gitgutter_map_keys = 0
" Colors
let g:gitgutter_override_sign_column_highlight = 0
highlight clear SignColumn
"highlight GitGutterAdd ctermfg=2
"highlight GitGutterChange ctermfg=3
"highlight GitGutterDelete ctermfg=1
highlight GitGutterChangeDelete ctermfg=4



" Spaceline customizations...
let g:spaceline_separate_style = 'curve'
let g:spaceline_colorscheme = 'dracula'
command! -bang -nargs=* Rg call fzf#vim#grep("rg --column --line-number --no-heading --color=always --smart-case ".shellescape(<q-args>), 1, {'options': '--delimiter : --nth 4..'}, <bang>0)

lua require("lsp-config")

lua << EOF
require("trouble").setup {

}
EOF

lua << EOF
local signs = { Error = " ", Warning = " ", Hint = " ", Information = " " }
for type, icon in pairs(signs) do
local hl = "LspDiagnosticsSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end
EOF

And here is lsp_config.lua

local nvim_lsp = require("lspconfig")
local format_async = function(err, _, result, _, bufnr)
if err ~= nil or result == nil then return end
if not vim.api.nvim_buf_get_option(bufnr, "modified") then
local view = vim.fn.winsaveview()
vim.lsp.util.apply_text_edits(result, bufnr)
vim.fn.winrestview(view)
if bufnr == vim.api.nvim_get_current_buf() then
vim.api.nvim_command("noautocmd :update")
end
end
end
vim.lsp.handlers["textDocument/formatting"] = format_async
_G.lsp_organize_imports = function()
local params = {
command = "_typescript.organizeImports",
arguments = {vim.api.nvim_buf_get_name(0)},
title = ""
}
vim.lsp.buf.execute_command(params)
end
local on_attach = function(client, bufnr)
local buf_map = vim.api.nvim_buf_set_keymap
vim.cmd("command! LspDef lua vim.lsp.buf.definition()")
vim.cmd("command! LspFormatting lua vim.lsp.buf.formatting()")
vim.cmd("command! LspCodeAction lua vim.lsp.buf.code_action()")
vim.cmd("command! LspHover lua vim.lsp.buf.hover()")
vim.cmd("command! LspRename lua vim.lsp.buf.rename()")
vim.cmd("command! LspOrganize lua lsp_organize_imports()")
vim.cmd("command! LspRefs lua vim.lsp.buf.references()")
vim.cmd("command! LspTypeDef lua vim.lsp.buf.type_definition()")
vim.cmd("command! LspImplementation lua vim.lsp.buf.implementation()")
vim.cmd("command! LspDiagPrev lua vim.lsp.diagnostic.goto_prev()")
vim.cmd("command! LspDiagNext lua vim.lsp.diagnostic.goto_next()")
vim.cmd(
"command! LspDiagLine lua vim.lsp.diagnostic.show_line_diagnostics()")
vim.cmd("command! LspSignatureHelp lua vim.lsp.buf.signature_help()")
buf_map(bufnr, "n", "gd", ":LspDef<CR>", {silent = true})
buf_map(bufnr, "n", "gr", ":LspRename<CR>", {silent = true})
buf_map(bufnr, "n", "gR", ":LspRefs<CR>", {silent = true})
buf_map(bufnr, "n", "gy", ":LspTypeDef<CR>", {silent = true})
buf_map(bufnr, "n", "K", ":LspHover<CR>", {silent = true})
buf_map(bufnr, "n", "gs", ":LspOrganize<CR>", {silent = true})
buf_map(bufnr, "n", "[a", ":LspDiagPrev<CR>", {silent = true})
buf_map(bufnr, "n", "]a", ":LspDiagNext<CR>", {silent = true})
buf_map(bufnr, "n", "ga", ":LspCodeAction<CR>", {silent = true})
buf_map(bufnr, "n", "<Leader>a", ":LspDiagLine<CR>", {silent = true})
buf_map(bufnr, "i", "<C-x><C-x>", "<cmd> LspSignatureHelp<CR>",
{silent = true})
if client.resolved_capabilities.document_formatting then
vim.api.nvim_exec([[
augroup LspAutocommands
autocmd! * <buffer>
autocmd BufWritePost <buffer> LspFormatting
augroup END
]], true)
end
end
nvim_lsp.tsserver.setup {
on_attach = function(client)
client.resolved_capabilities.document_formatting = false
on_attach(client)
end
}
local filetypes = {
typescript = "eslint",
typescriptreact = "eslint",
}
local linters = {
eslint = {
sourceName = "eslint",
command = "eslint_d",
rootPatterns = {".eslintrc.js", "package.json"},
debounce = 100,
args = {"--stdin", "--stdin-filename", "%filepath", "--format", "json"},
parseJson = {
errorsRoot = "[0].messages",
line = "line",
column = "column",
endLine = "endLine",
endColumn = "endColumn",
message = "${message} [${ruleId}]",
security = "severity"
},
securities = {[2] = "error", [1] = "warning"}
}
}
local formatters = {
prettier = {command = "prettier", args = {"--stdin-filepath", "%filepath"}}
}
local formatFiletypes = {
typescript = "prettier",
typescriptreact = "prettier"
}
nvim_lsp.diagnosticls.setup {
on_attach = on_attach,
filetypes = vim.tbl_keys(filetypes),
init_options = {
filetypes = filetypes,
linters = linters,
formatters = formatters,
formatFiletypes = formatFiletypes
}
}


-- use .ts snippets in .tsx files
vim.g.vsnip_filetypes = {
typescriptreact = {"typescript"}
}
require"compe".setup {
preselect = "always",
source = {
path = true,
buffer = true,
vsnip = true,
nvim_lsp = true,
nvim_lua = true
}
}
local t = function(str)
return vim.api.nvim_replace_termcodes(str, true, true, true)
end
_G.tab_complete = function()
if vim.fn.pumvisible() == 1 then
return vim.fn["compe#confirm"]()
elseif vim.fn.call("vsnip#available", {1}) == 1 then
return t("<Plug>(vsnip-expand-or-jump)")
else
return t("<Tab>")
end
end
vim.api.nvim_set_keymap("i", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("s", "<Tab>", "v:lua.tab_complete()", {expr = true})
vim.api.nvim_set_keymap("i", "<C-Space>", "compe#complete()",
{expr = true, silent = true})
vim.api.nvim_set_keymap("i", "<CR>", [[compe#confirm("<CR>")]],
{expr = true, silent = true})
vim.api.nvim_set_keymap("i", "<C-e>", [[compe#close("<C-e>")]],
{expr = true, silent = true})



local signs = { Error = " ", Warning = " ", Hint = " ", Information = " " }

for type, icon in pairs(signs) do
local hl = "LspDiagnosticsSign" .. type
vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" })
end

My bad! After googling around a bit, I found that I had to install vsnip plugin, which wasn’t present in my init.vim. AFter installation it works.

1 Like