From 3634f142352af2428aed187781fc9d75075e9140 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Mon, 27 Nov 2023 10:50:01 -0600 Subject: [PATCH] docs/develop/ide: A quick guide for haiku code completion * Works under a Linux "cross-compile" environment * We can't check in compile_commands.json unforunetly because it highly depends on your build environment * An in-tree .clangd is a thing, but our includes are complex and directory-spefific. * Thanks to Pulkomandy for adding the flag to jam to do this! Change-Id: I3be4084c43f7b822bb04ea7ec527c5fbe03d7289 Reviewed-on: https://review.haiku-os.org/c/haiku/+/7158 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues Reviewed-by: Alex von Gluck IV --- .gitignore | 3 +++ docs/develop/build/ide.rst | 29 +++++++++++++++++++++++++++++ docs/develop/build/index.rst | 1 + 3 files changed, 33 insertions(+) create mode 100644 docs/develop/build/ide.rst diff --git a/.gitignore b/.gitignore index 0bb633a7fb..af92b7a969 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ build/user_config_headers # Project settings of the Genio IDE .genio + +# clangd related tooling for IDE code completion +compile_commands.json diff --git a/docs/develop/build/ide.rst b/docs/develop/build/ide.rst new file mode 100644 index 0000000000..174e65e600 --- /dev/null +++ b/docs/develop/build/ide.rst @@ -0,0 +1,29 @@ +Using an IDE +=============== + +Live Code Analysis +------------------ +While developing the Haiku codebase, it is possible to generate an inventory of compile commands +by passing the **-c** flag to jam. The resulting **compile_commands.json** document will assist +tools such as clangd_ in live analyzing our source code. + +.. code-block:: + :caption: Generating the **compile_commands.json** for clangd: + + $ mkdir generated.clangd && cd generated.clangd + $ configure --build-cross-tools x86_64 --cross-tools-source ../../buildtools + $ jam -anc @nightly-anyboot + $ ln -sr compile_commands.json ../compile_commands.json + + +When you use an editor which supports clangd_ such as helix_ or vim_ (with the clangd plugin), +clangd_ will have knowledge of the relevant include paths and build flags for every source file +within the Haiku codebase. + +.. TIP:: + When new source code files are added, you will need to run though the process above for a + complete database. + +.. _helix: http://helix-editor.com +.. _vim: http://vim.org +.. _clangd: http://clangd.llvm.org diff --git a/docs/develop/build/index.rst b/docs/develop/build/index.rst index 456e1cd27e..0c4337375b 100644 --- a/docs/develop/build/index.rst +++ b/docs/develop/build/index.rst @@ -7,4 +7,5 @@ The build system /build/jam /build/sourcecode /build/compilers + /build/ide /build/repositories/README