Skip to content

mcpp-language-server v0.0.16

Latest

Choose a tag to compare

@github-actions github-actions released this 14 Oct 00:25
d3c3a94

mcpp-language-server 0.0.16

What changed

The bundled engine is unchanged: mcppls-clangd 0.0.16
(23.1.0-mcppls.4). This release is about what clangd does while you type and while nothing happens at all, and about
build.mcpp beside the mcpp extension.

Typing

  • clangd checks the file you are typing in once you pause, not at every key. Each version still goes to clangd
    (completion and signature help are answered as before), but without its diagnostics wanted; once the keys stop for a
    little longer than the file takes to build (0.3-1 s), the latest version is asked for with them. The semantic colours,
    highlights, code actions, hints, symbols and folding of the file -- which make clangd build the latest version
    whatever it is asked -- wait for the same pause, the latest of each; one a later key replaced is answered "content
    modified", which VS Code drops silently. Typing std::vec, deleting it, arr, fin in a file with Qt headers and
    import std: clangd builds the file 3 times instead of 16, and spends about 43% less CPU. The errors of half-typed
    text no longer flicker; they appear once you pause. build.mcpp and module units (what their importers read) are
    checked at every key, as before.
    mcppls.engine.diagnosticsWhileTyping: auto (the default) or always (0.0.15's behaviour).

Idle

  • A build input written again with the same bytes is no change. mcpp rewrites the lock of a build program's
    synthesised package on every run and names it among the inputs to watch (mcpp-community/mcpp#807): with a
    build.mcpp, the project was described again every two seconds of an idle session. A changed or created build file
    or producer input whose content is what the last description read is now ignored, whether the editor's watcher or
    mcppls's own polling reports it.
  • A place clangd answered with nothing is not asked again until a file or the plan changes. While clangd was idle,
    mcppls asked it every half second, without end, for a completion that came back empty (a place in a file whose
    imports did not compile).

build.mcpp and failed modules

  • A module that failed because of an error in something it imports is named. clang begins such an error with
    In module 'std' imported from <unit>:<line>: or In file included from <unit>:<line>:; mcppls took the file the error
    is in for the unit that failed, found no module for it, and dropped the failure, so an importer said only
    "Module file '.../module-hints/M.pcm' not found". The importer now says which module did not compile and why. Where
    the failed unit is none the plan names, the importer still says what failed; where nothing is known, it says clangd
    built no BMI for the module and that the log says why.
  • .mcpp files are this extension's whatever language another extension gives them. A companion extension that
    names build.mcpp a language of its own (mcpp-vscode up to 0.6.0) kept the file from mcppls, since VS Code matches a
    file name before an extension; the client now selects **/*.mcpp as well, and the server treats such a file as C++.
  • A companion extension can show which other C++ language services are active. The extension's API has
    otherCppFeatures(): the active services (C/C++ IntelliSense, clangd, ccls), whether each has a setting to turn off,
    and whether mcppls.restoreOtherCppFeatures has anything to put back. mcpp-vscode 0.7.0 shows it as a row with a
    button.

Files

File What it is How to install it
mcppls-linux-x64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-linux-arm64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-darwin-arm64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
mcppls-win32-x64.vsix The VS Code extension for one platform, with that platform's payload inside it code --install-extension <file>, or the Extensions view's “Install from VSIX…”
payload-linux-x64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-linux-arm64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-darwin-arm64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
payload-win32-x64.tar.gz The server, the clangd it drives and the semantic kit, as one tree. What every non-VS-Code editor needs Unpack it and put payload/bin/ on PATH; mcppls serve speaks LSP over stdio
mcppls-zed-0.0.16.tar.gz The Zed extension directory mcppls-zed/: extension.toml, the compiled extension.wasm and the crate it was compiled from, which Zed's dev-extension install compiles again. Platform-independent; the server comes from the payload Unpack it, put the payload's payload/bin/ on PATH, then Zed's command palette: zed: install dev extension, and choose mcppls-zed (Zed compiles it, which needs Rust through rustup)
mcppls-clion-0.0.16.zip The IntelliJ-platform plugin archive Gradle produces. Gradle and the JDK it compiles with come from the clion feature (xim:gradle, xim:jdk-temurin), so it does not depend on whatever JDK the machine happens to default to Put the payload's payload/bin/ on PATH, then CLion: Settings → Plugins → the gear menu → Install Plugin from Disk, and restart
SHA256SUMS sha256 of every other file in the release sha256sum -c SHA256SUMS

Not in a release

  • The Claude Code plugin: it is consumed from the repository through its marketplace file, not downloaded as an archive.
  • xlings-res archives and the rendered xim-pkgindex descriptors: the ecosystem publish path is deliberately out of scope for this release, so mcppls-devtools release xlings is not run.
  • The model gateway: a separate package, built and tested on its own, not part of what a user installs.

Generated from packaging/release.manifest.json for 0.0.16.