Skip to main content

Catkin verb extension to generate clangd compile commands

Project description

Catkin Tools Clangd

Define new verb build_compile_command in catkin to generate clangd compile commands

Backstory

This project is made because I've always have issues getting autocomplete to work in VSCode C++ Intellisense with catkin/ROS environment. My solution is to use this catkin-tools-clangd in tandem with vscode-clangd or sublime-text-lsp

Installation

This package installs a new verb for catkin_tools. The easiest way to install this verb is from PyPI:

pip install catkin-tools-clangd

Usage

After installing you'd be able to use catkin build_compile_cmd that will automatically generate compile commands for clangd for you.

Aliasing

You can easily change your alias in /home/ardiya/.config/catkin/verb_aliases/00-default-aliases.yaml e.g. add the following line:

bcc: build_compile_cmd

and you'd be able to call catkin bcc to run the same catkin build_compile_cmd

VS Code setup

Install vscode-clangd extension

Actually, that's it. But I also recommend to add following line into ${HOME}/.config/Code/User/settings.json

{
    ...
    "clangd.semanticHighlighting": true,
    "clangd.arguments": [
        // If set to true, code completion will include index symbols that are not defined in the scopes
        // (e.g. namespaces) visible from the code completion point. Such completions can insert scope qualifiers
        "--all-scopes-completion",
        // Index project code in the background and persist index on disk.
        "--background-index",
        // Enable clang-tidy diagnostics
        "--clang-tidy",
        // Whether the clang-parser is used for code-completion
        //   Use text-based completion if the parser is not ready (auto)
        "--completion-parse=auto",
        // Granularity of code completion suggestions
        //   One completion item for each semantically distinct completion, with full type information (detailed)
        "--completion-style=detailed",
        // clang-format style to apply by default when no .clang-format file is found
        "--fallback-style=Google",
        // When disabled, completions contain only parentheses for function calls.
        // When enabled, completions also contain placeholders for method parameters
        "--function-arg-placeholders",
        // Add #include directives when accepting code completions
        //   Include what you use. Insert the owning header for top-level symbols, unless the
        //   header is already directly included or the symbol is forward-declared
        "--header-insertion=iwyu",
        // Prepend a circular dot or space before the completion label, depending on whether an include line will be inserted or not
        "--header-insertion-decorators",
        // Enable index-based features. By default, clangd maintains an index built from symbols in opened files.
        // Global index support needs to enabled separatedly
        "--index",
        // Attempts to fix diagnostic errors caused by missing includes using index
        "--suggest-missing-includes",
    ],
    ...
}

Sublime text setup

Install sublime-text-lsp

Add following lines to Preferences->Package Settings -> LSP -> Settings

{
  "clients": {
    "clangd": {
      "enabled": true,
      "command": [
        "clangd",  // you may use an absolute path for this clangd executable
        "--all-scopes-completion",
        "--background-index",
        "--clang-tidy",
        "--completion-style=detailed",
        "--fallback-style=Google",
        "--function-arg-placeholders",
        "--header-insertion=iwyu",
        "--header-insertion-decorators",
        "--index",
        "--suggest-missing-includes",
      ],
      "scopes": ["source.c", "source.c++", "source.objc", "source.objc++"],
      "syntaxes": [
        "Packages/C++/C.sublime-syntax",
        "Packages/C++/C++.sublime-syntax",
        "Packages/Objective-C/Objective-C.sublime-syntax",
        "Packages/Objective-C/Objective-C++.sublime-syntax",
      ],
      "languageId": "cpp",
    },
  },
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

catkin-tools-clangd-0.0.2.tar.gz (6.8 kB view hashes)

Uploaded Source

Built Distribution

catkin_tools_clangd-0.0.2-py3-none-any.whl (6.5 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page