質問編集履歴

1

ソースコードを修正

2022/08/17 01:15

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -59,41 +59,86 @@
59
59
 
60
60
 
61
61
  ------------------------------------------------------------------------------
62
- local cmp = require"cmp"
63
- cmp.setup(
62
+ -- null-ls
64
- {
65
- mapping = cmp.mapping.preset.insert({
66
- ["<CR>"] = cmp.mapping.confirm({ select = true }),
67
- ["<C-d>"] = cmp.mapping.scroll_docs(-4),
68
- ["<C-f>"] = cmp.mapping.scroll_docs(4),
69
- ["<C-Space>"] = cmp.mapping.complete(),
70
- ["<C-e>"] = cmp.mapping.close(),
71
- }),
72
63
 
73
- sources = cmp.config.sources({
74
- { name = "nvim_lsp" },
75
- { name = "vsnip" },
76
- }, {
77
- { name = "buffer" },
78
- })
79
-
80
- })
81
64
 
65
+ if packer_bootstrap then
66
+ require("packer").sync()
67
+ end
68
+
69
+
70
+ -- LSPクライアントがバッファにアタッチされたときに実行される
82
- local null_ls = require "null-ls"
71
+ local on_attach = function(client, bufnr)
72
+ -- LSPサーバーのフォーマット機能を無効にするには下の行をコメントアウト
73
+ -- 例えばtypescript-language-serverにはコードのフォーマット機能が付いているが代わりにprettierでフォーマットしたいときなどに使う
74
+ -- client.resolved_capabilities.document_formatting = false
75
+
83
- sources = {
76
+ local set = vim.keymap.set
77
+ --[[
78
+ set("n", "gD", "<cmd>lua vim.lsp.buf.declaration()<CR>")
79
+ set("n", "gd", "<cmd>lua vim.lsp.buf.definition()<CR>")
80
+ set("n", "K", "<cmd>lua vim.lsp.buf.hover()<CR>")
81
+ set("n", "gi", "<cmd>lua vim.lsp.buf.implementation()<CR>")
82
+ set("n", "<C-k>", "<cmd>lua vim.lsp.buf.signature_help()<CR>")
83
+ set("n", "<space>wa", "<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>")
84
+ set("n", "<space>wr", "<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>")
85
+ set("n", "<space>wl", "<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>")
86
+ set("n", "<space>D", "<cmd>lua vim.lsp.buf.type_definition()<CR>")
87
+ set("n", "<space>rn", "<cmd>lua vim.lsp.buf.rename()<CR>")
88
+ set("n", "<space>ca", "<cmd>lua vim.lsp.buf.code_action()<CR>")
89
+ set("n", "gr", "<cmd>lua vim.lsp.buf.references()<CR>")
90
+ set("n", "<space>e", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<CR>")
91
+ set("n", "[d", "<cmd>lua vim.lsp.diagnostic.goto_prev()<CR>")
92
+ set("n", "]d", "<cmd>lua vim.lsp.diagnostic.goto_next()<CR>")
93
+ set("n", "<space>q", "<cmd>lua vim.lsp.diagnostic.set_loclist()<CR>")
94
+ set("n", "<space>f", "<cmd>lua vim.lsp.buf.formatting()<CR>")
95
+ end
96
+ ]]
97
+
98
+ require("mason").setup()
99
+ require("mason-lspconfig").setup()
100
+ require("mason-lspconfig").setup_handlers {
101
+ function(server_name) -- default handler (optional)
84
- null_ls.builtins.formatting.prettier.with {
102
+ require("lspconfig")[server_name].setup {
85
- null_ls.setup {
103
+ on_attach = on_attach,
86
- prefer_local = "node_modules/.bin",
87
- },
104
+ }
88
- },
105
+ end,
89
106
  }
90
107
 
108
+ -- nvim-cmp(補完) の設定
91
- capabilities = require("cmp_nvim_lsp").update_capabilities(vim.lsp.protocol.make_client_capabilities())
109
+ vim.opt.completeopt = "menu,menuone,noselect"
92
110
 
111
+ local cmp = require "cmp"
112
+ cmp.setup {
113
+ snippet = {
114
+ expand = function(args)
115
+ vim.fn["vsnip#anonymous"](args.body)
116
+ end,
117
+ },
118
+ mapping = {
119
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
120
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
121
+ ["<C-Space>"] = cmp.mapping.complete(),
122
+ ["<C-e>"] = cmp.mapping.close(),
123
+ ["<CR>"] = cmp.mapping.confirm { select = true },
124
+ },
125
+ sources = cmp.config.sources({
126
+ { name = "nvim_lsp" },
127
+ { name = "vsnip" },
128
+ }, {
129
+ { name = "buffer" },
130
+ }),
131
+ }
93
132
 
94
-
133
+ -- null-ls (formatter/linter)の設定
134
+ local null_ls = require "null-ls"
135
+ null_ls.setup {
95
- -- 最後に追加
136
+ sources = {
137
+ null_ls.builtins.formatting.prettier.with {
96
- vim.opt.completeopt = "menu,menuone,noselect"
138
+ prefer_local = "node_modules/.bin",
139
+ },
140
+ },
141
+ }
97
142
  ---------------------------------------------------------------------------------
98
143
  -------------- 設定 --------------
99
144