nvim でも vscode プラグインみたいに mql5 のコード補完をしたい。
I want to use code completion for mql5 in nvim, like the vscode plugins.
Conclusion
下記の設定でやっとコード補完ができた。GPTバンザイ。
I was finally able to complete the code with the following settings. Thanks a lot to ChatGPT.
mql5 と c++ は構文などが若干異なるため、エラーが多発する。なので、エラーはすべて非表示にしている。
Since mql5 and c++ have slightly different syntax, errors occur frequently. Therefore, the errors are all hidden.
MT5 の Include のパスは、環境に合わせて適宜読み替えてください。
Please modify the MT5 Include path as appropriate to suit your environment.
nvim-lspconfig.lua:
require('lspconfig').clangd.setup({
cmd = { 'clangd' },
filetypes = { 'c', 'cpp', 'objc', 'objcpp', 'cuda', 'proto'},
root_dir = function(fname) return util.root_pattern('.clangd', '.clang-tidy', '.clang-format', 'compile_commands.json', 'compile_flags.txt', 'configure.ac')(fname) or vim.fs.dirname(vim.fs.find({ '.git', 'compile_flags.txt' }, { path = fname, upward = true })[1]) end,
single_file_support = true,
-- 補完設定
capabilities = require('cmp_nvim_lsp').default_capabilities(),
-- 診断(エラー表示)を無効化
handlers = {
['textDocument/publishDiagnostics'] = function() end,
},
-- MQL5特有の設定を追加
init_options = {
compilationDatabasePath = '.',
fallbackFlags = {
'-xc++',
'-std=c++17',
-- MQL5のインクルードパスを追加
'-I/path/to/your/MQL5/Include',
},
clangd = {
-- 補完の詳細設定
completion = {
placeholder = false, -- プレースホルダー補完を無効化
detailedLabel = true, -- 詳細なラベルを表示
},
},
},
})
Luaそして、プロジェクトルートに以下の2つのファイルを配置。
Then place the following two files in the project root.
compile_flags.txt:
-xc++
-std=c++17
-I/path/to/your/MQL5/Include
Plaintext.clangd:
CompileFlags:
Add:
- "-xc++"
- "-std=c++17"
- "-I/path/to/your/MQL5/Include"
Diagnostics:
Suppress:
- "unknown-type-name"
- "unknown-pragma"
# 必要に応じて他のエラーも抑制
YAMLInclude パスは、こちらの環境では下記の通り。半角スペースはエスケープ不要。
The Include path is as follows in my environment. The spaces do not need to be escaped.
-I/Users/username/Applications/Wineskin/MT5.app/drive_c/Program Files/MT5/MQL5/Include
Plaintext以上で、完璧ではないまでも、ある程度の補完が効くようになる。
With the above, although it is not perfect, the complementation is effective.
これでかなり快適に nvim で mql5 コードが書けると思う。
I think you can now write mql5 code with nvim quite comfortably.
Problems
string 型を認識しない。string 型の引数は全て int 型として表示されてしまう。ENUMも同様。
Does not recognize string type. All string type arguments are displayed as int types. Same as ENUM.
std:: など MQLには不要な候補も表示されてしまう。かなり鬱陶しい。
Unnecessary candidates such as std:: are also displayed in MQL. It’s quite depressing.
If you also want to edit c++…
c++ も編集する場合は、*.mq5, *.mqh の時にのみ autocmd などで nvim-lspconfig に設定を適用する形を取ればよいかもしれない。
If you also edit c++, you may want to apply settings to nvim-lspconfig using autocmd only when editing *.mq5, *.mqh.
コメント