diff --git a/docs/tools.md b/docs/tools.md new file mode 100644 index 0000000000..1adef2be61 --- /dev/null +++ b/docs/tools.md @@ -0,0 +1,22 @@ +# Useful development tools + +This readme contains some hints on how to set up some optional development tools. + +## ccls + +[ccls](https://github.com/MaskRay/ccls) is a c/c++ language server. It requires some setup +to work well. There are different ways to do it but here's what works for me: +1. Make a common parent directory for all your common neon projects. (for example, `~/src/neondatabase/`) +2. Go to `vendor/postgres-v15` +3. Run `make clean && ./configure` +4. Install [bear](https://github.com/rizsotto/Bear), and run `bear -- make -j4` +5. Copy the generated `compile_commands.json` to `~/src/neondatabase` (or equivalent) +6. Run `touch ~/src/neondatabase/.ccls-root` this will make the `compile_commands.json` file discoverable in all subdirectories + +With this setup you will get decent lsp mileage inside the postgres repo, and also any postgres extensions that you put in `~/src/neondatabase/`, like `pg_embedding`, or inside `~/src/neondatabase/neon/pgxn` as well. + +Some additional tips for various IDEs: + +### Emacs + +To improve performance: `(setq lsp-lens-enable nil)`