Repository navigation
0.1.1: mcppls found as the command that starts it; CLion over mcppls 0.0.19's per-system packages - #2
Merged
Merged
Conversation
…0.0.19's packages mcppls 0.0.18 and later carry the server as an okb that the platform's runner starts (payload.json's `server`). The backend ran the okb itself for `--version`, so the VS Code extension's mcppls was reported as not reporting its version, and the user data directory's payload was looked for as `bin/mcppls`. A candidate is now a payload directory or a program; languageService/status reports the command. - VS Code (mcpp-vscode 1.0.1): the mcppls extension's payload directory. - CLion (mcpp-clion 0.1.1): the payload the mcppls CLion plugin carries (mcppls 0.0.19, one package per system); since-build 261, as the plugin it depends on; Install/Update mcppls open Settings | Plugins. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…rnal plugin lookup Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
… (mcpp-vscode), mide-plugins/clion (mcpp-clion, the editor id jetbrains) The adapters move with their history (git mv); the backend, webui/, spec/, protocol/ and tests/ stay at the root. Every reference follows: CI's working directories, npm cache path, Gradle cache key and artifact paths (the CLion job is `clion`); Gradle's repository root for spec/, webui/, the fixtures and the generator's working directory; the extension's npm scripts and its tests' repository; the panels' tests; mcpp-ide-dev gen's default outputs, staging and the translation check; .gitignore; the READMEs and docs. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…d; the protocol's editor nvim
mide-plugins/nvim (Lua module `mcpp`, command `:Mcpp`), Neovim 0.10 and later. It starts one
`mcpp-ide serve` per Neovim -- setup()'s `backend`, else `mcpp-ide` on PATH, else it says
`xlings install mcpp-ide` -- for the nearest mcpp.toml upward, through Neovim's own JSON-RPC client
(vim.lsp.rpc: no framer of its own), and initializes it as the editor `nvim` with v:lang, the trust
(always, unless `trusted = false`), the folder and setup()'s settings. `:Mcpp <subcommand>` offers the
backend's command table for nvim, with completion: jobs streamed into mcpp://output and cancelled with
`:Mcpp cancel`, the run in a terminal buffer, nvim-dap when it is there, the cleanup plans confirmed at
their level, targets, toolchains, new projects, libraries and pack through vim.ui.select/input, the
targets, cache and graph view models as text in floating windows, the quick menu, the self-check and
the language service as notifications (`xlings install mcppls-nvim` when mcppls is missing or older).
mcpp's diagnostics are the namespaces `mcpp` and `mcpp.toml`; `:Mcpp problems` fills the quickfix
list; `require('mcpp').status()` is a statusline component. No language service is registered.
The backend: `nvim` in the protocol's editor enums; each commands/list row names its `subcommand`;
spec/commands.json gives Neovim `mcpp.problems` (action `problems`) and the quick menu, leaves out the
settings panel and the panels' entry pages and says why (`omitted`); `offered_in` is one function,
spec::offered_in, for the backend and mcpp-ide-dev gen; the cache inventory's rows carry `bytesText`.
The check-i18n scan reads the plugin's Lua. Tests: the nvim command table and the spec's reasons
(test_protocol), the rows' sizes (test_views), and tests/smoke.lua -- a headless suite against the
backend built here, over the mock mcpp or a real one. CI's `nvim` job runs it on Neovim 0.10.4 and
0.12.5 (xlings) over the mock, then over the real mcpp. README, docs, CHANGELOG 0.1.1.
Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…through the global subos Inside the checkout `xlings use nvim` switched the project's own subos (.xlings.json, which holds mcpp only) and failed: "nvim is not installed in this subos (_)". The Neovim steps now run in $RUNNER_TEMP, check that `nvim` is the version selected, and start the suite by its path. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
initialize's checks were said as errors and the language service's again with `xlings install mcppls-nvim` (seen in CI, where no mcppls is installed); the check is now left to the second. Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…up at start Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
…s stay inside the payload - mcpp-nvim: vim.lsp.rpc drops the requests in flight when the process ends. They are now failed with -32099, the jobs followed end as failed, and a start still initializing fails, so :Mcpp and :Mcpp <Tab> no longer wait on a backend that has ended. The projects it watched are learned again by the next backend, however it is started. The quick menu finds a row by id in the whole table, so Debug without nvim-dap says what it needs. A client that runs an okb outside a payload is left to the backend's own search instead of naming its runner as mcppls. - languageservice: payload.json's server.runner and server.path are followed only as relative paths with no '..' part, as mcppls's payload reader holds them. - mcpp-clion: the payload's runner is made executable again before the backend runs it for mcppls's version (a plugin install may drop the bit). - tests: test_languageservice (paths outside the payload), BackendTest (the runner's bit), the Neovim smoke (a backend that ends while it starts, and mid-build). Co-authored-by: speak-agent <248744407+speak-agent@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
mcppls is found as the command that starts it
payload.json'sserverisbin/okrun bin/mcppls.okb. mcpp-ide 0.1.0's VS Code adapter passed<payload>/bin/mcppls.okbas a program, and the backend ran it for--version.starting …/mcppls.okb: permission denied, stateunreadable.bin/mcppls, which does not exist.serveris started as it says, or a program;languageService/statusreports thecommandbeside theprogram.mcppls 0.0.18 at …/mcppls.okb, stateok, command[…/okrun, …/mcppls.okb].MCPPLS_PAYLOAD, else<extension>/payload), andMCPPLS_SERVER.mcppls-clion-0.0.19-<platform>.zip.The editor plugins are
mide-plugins/editormide-plugins/vscode(wasvscode/)vscodemide-plugins/clion(wasjetbrains/)jetbrains, the IntelliJ platform's id, unchangedmide-plugins/nvim(new)nvimgit mv;src/,webui/,spec/,protocol/andtests/stay at the root.clion.spec/,webui/, the fixtures and the generator's working directory.mcpp-ide-dev gen: default outputs, the VSIX staging, the translation check..gitignore, the READMEs (en, zh-CN),docs/, the CHANGELOG.git grep -n -E '\b(vscode|jetbrains)/'finds onlymide-plugins/…paths and the npm scope@vscode/.mcpp-nvim: mcpp's project features in Neovim
Neovim 0.10 and later, over the same backend. Lua module
mcpp, command:Mcpp, diagnostic namespacesmcppandmcpp.toml, autocommandUser McppStatus, xlings packagemcpp-ide-nvim. It registers no language service: C++ files are mcppls's, through mcppls-nvim.backend(a program, an.okbrun by okrun, or an argv), elsemcpp-ideon PATH.xlings install mcpp-ideand starts nothing.vim.lsp.rpc.start, Content-Length framing); the plugin has no framer of its own.mcpp.tomlupward.initializesendseditor = "nvim",v:lang(ormcpp.ui.language), the folder, setup()'s settings and the trust. The trust rule: Neovim has no workspace trust, so a project is trusted unlesstrusted = false.shutdownandexiton VimLeavePre.:Mcpp <subcommand>, with completion, covers the backend's table fornvim:mcpp://output;:Mcpp cancelstops them.run/launch's argv, cwd and env in a terminal buffer.mcpp add, and pack:vim.ui.selectandvim.ui.input.:Mcppalone opens the quick menu.xlings install mcppls-nvimwhen mcppls is missing or outdated.mcppnamespace, the manifest's tomcpp.toml;:Mcpp problemsfills the quickfix list.require('mcpp').status()showsmcpp <target> · build ok;status_data()returns the same state as a table.The protocol and the backend
nvimjoinsinitialize's andcommands/list's editor enum.commands/listrow names itssubcommand: the id aftermcpp., or the row's own.mcpp.cancelJobiscancel.spec/commands.json:mcpp.problems(action kindproblems) and the quick menu.omitted.spec::offered_inis now the one rule shared by the backend andmcpp-ide-dev gen.bytesText.check-i18nreads the plugin's Lua; its new strings have zh-cn entries.CI
nvim(Neovim plugin, Ubuntu): it builds the backend, installsnvim@0.10.4andnvim@0.12.5from xlings, and runsmide-plugins/nvim/tests/smoke.luaheadless on each over the mock mcpp, then once over the real mcpp, which builds the test's project.xlings useswitches the project's own subos, which.xlings.jsongives mcpp only.mcppls-clion-0.0.19-linux-x64.zip, which is not released yet.packages, which needs the CLion job.Verified locally
mcpp test(mcpp 2026.10.27.1)mcpp-ide-dev check-i18ncheck:webuiThe suite covers the missing-backend message, start and
initialize, the table, completion, a streamed build, a failed build's problem and the quickfix list, the manifest's problem, the views, the run terminal, the nvim-dap configuration, a cleanup, the quick menu, the language service, the self-check, cancel, library add, pack, the target, and shutdown.The CLion plugin is not built locally; its Kotlin and Gradle changes are path fixes only. The CLion job fetches
mcppls-clion-0.0.19-linux-x64.zipfrom the mcppls release, so it passes once mcppls 0.0.19 is released.Co-authored-by: speak-agent 248744407+speak-agent@users.noreply.github.com