diff --git a/nvim/lua/settings/lsp.lua b/nvim/lua/settings/lsp.lua index 7450469..36aba14 100644 --- a/nvim/lua/settings/lsp.lua +++ b/nvim/lua/settings/lsp.lua @@ -40,7 +40,7 @@ if not status_ok2 then end local lspconfig = require("lspconfig") -local servers = {"jdtls" , "sumneko_lua" , "texlab", "pyright" , "eslint" , "html" , "cssls" , "rust_analyzer" , "bashls" , "csharp_ls" , "sqls" } +local servers = {"jdtls" , "sumneko_lua" , "texlab", "pyright" , "eslint" , "html" , "cssls" , "rust_analyzer" , "bashls" , "csharp_ls" , "sqls" , "clangd" } lsp_installer.setup { ensure_installed = servers diff --git a/nvim/lua/settings/lsp_config/clangd.lua b/nvim/lua/settings/lsp_config/clangd.lua new file mode 100644 index 0000000..65da8c0 --- /dev/null +++ b/nvim/lua/settings/lsp_config/clangd.lua @@ -0,0 +1,87 @@ +local util = require 'lspconfig.util' + +-- https://clangd.llvm.org/extensions.html#switch-between-sourceheader +local function switch_source_header(bufnr) + bufnr = util.validate_bufnr(bufnr) + local clangd_client = util.get_active_client_by_name(bufnr, 'clangd') + local params = { uri = vim.uri_from_bufnr(bufnr) } + if clangd_client then + clangd_client.request('textDocument/switchSourceHeader', params, function(err, result) + if err then + error(tostring(err)) + end + if not result then + print 'Corresponding file cannot be determined' + return + end + vim.api.nvim_command('edit ' .. vim.uri_to_fname(result)) + end, bufnr) + else + print 'method textDocument/switchSourceHeader is not supported by any servers active on the current buffer' + end +end + +local root_files = { + '.clangd', + '.clang-tidy', + '.clang-format', + 'compile_commands.json', + 'compile_flags.txt', + 'configure.ac', -- AutoTools +} + +local default_capabilities = { + textDocument = { + completion = { + editsNearCursor = true, + }, + }, + offsetEncoding = { 'utf-8', 'utf-16' }, +} + +return { + default_config = { + cmd = { 'clangd' }, + filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda', 'proto' }, + root_dir = function(fname) + return util.root_pattern(unpack(root_files))(fname) or util.find_git_ancestor(fname) + end, + single_file_support = true, + capabilities = default_capabilities, + }, + commands = { + ClangdSwitchSourceHeader = { + function() + switch_source_header(0) + end, + description = 'Switch between source/header', + }, + }, + docs = { + description = [[ +https://clangd.llvm.org/installation.html +- **NOTE:** Clang >= 11 is recommended! See [#23](https://github.com/neovim/nvim-lsp/issues/23). +- If `compile_commands.json` lives in a build directory, you should + symlink it to the root of your source tree. + ``` + ln -s /path/to/myproject/build/compile_commands.json /path/to/myproject/ + ``` +- clangd relies on a [JSON compilation database](https://clang.llvm.org/docs/JSONCompilationDatabase.html) + specified as compile_commands.json, see https://clangd.llvm.org/installation#compile_commandsjson +]], + default_config = { + root_dir = [[ + root_pattern( + '.clangd', + '.clang-tidy', + '.clang-format', + 'compile_commands.json', + 'compile_flags.txt', + 'configure.ac', + '.git' + ) + ]], + capabilities = [[default capabilities, with offsetEncoding utf-8]], + }, + }, +} diff --git a/nvim/lua/settings/vimtex.lua b/nvim/lua/settings/vimtex.lua index d27a126..2111117 100644 --- a/nvim/lua/settings/vimtex.lua +++ b/nvim/lua/settings/vimtex.lua @@ -1,8 +1,24 @@ --vim.cmd('let g:vimtex_view_method = "zathura"') -vim.cmd('let g:vimtex_view_general_viewer = "okular"') +vim.cmd('let g:vimtex_view_general_viewer = "evince"') --let g:vimtex_view_general_options = '--unique file:@pdf\#src:@line@tex' +vim.cmd('let g:vimtex_compiler_latexmk = { "options" : [ "-shell-escape", "-interaction=nonstopmode" , "-synctex=1" ], }') + vim.cmd('let g:vimtex_compiler_method = "latexmk"') +vim.cmd('let b:tex_use_shell_escape = 1') + --let maplocalleader = "," + + +--let g:vimtex_compiler_latexmk = { +-- \ 'options' : [ +-- \ '-pdf', +-- \ '-shell-escape', +-- \ '-verbose', +-- \ '-file-line-error', +-- \ '-synctex=1', +-- \ '-interaction=nonstopmode', +-- \ ], +-- \}