mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 18:52:45 +00:00 
			
		
		
		
	
		
			
				
	
	
	
	
		
			2.1 KiB
		
	
	
	
	
	
	
	
			
		
		
	
	
			2.1 KiB
		
	
	
	
	
	
	
	
Emacs Project Configuration
Emacs can be configured with lsp-mode and clangd to work well.
clangd
The official clangd extension can be used for C++ comprehension. You
can use the following .clangd file placed in the project root:
CompileFlags:
  CompilationDatabase: Build/i686
  Add:
    - "-D__serenity__"
    - "-UNO_TLS"
    - "-I/path/to/serenity/Toolchain/Local/i686/i686-pc-serenity/include/c++/11.2.0"
    - "-I/path/to/serenity/Toolchain/Local/i686/i686-pc-serenity/include/c++/11.2.0/i686-pc-serenity"
You will need to change /path/to/serenity and change 11.2.0 to
whatever your GCC toolchain version at the time is.
Run cmake (Meta/serenity.sh run or similar) at least once for this
to work, as it will generate the Build/i686/compile_commands.json
that is needed by clangd.
lsp-mode
(use-package lsp-mode
  :hook ((c++-mode) . lsp-deferred)
  :commands lsp
  :config
  (setq lsp-clients-clangd-args '("-j=4" "-background-index" "--log=error" "--clang-tidy" "--enable-config"))
  ;; Optionally, set the location of clangd -- See notes below for options.
  (setq lsp-clangd-binary-path "/usr/bin/clangd"))
clangd
There are a few different ways to specify which clangd to use:
- By default, without configuration lsp-modewill try to find and use your systemclangd. This is the easiest solution, but your system clangd might be out of date.
- You can manually specify any clangdbinary withlsp-clangd-binary-path, as shown in the use-package example above.
- You can have lsp-modemanage yourclangdinstallation with emacs'lsp-install-server. This will install aclangdbinary for you.
- You can build the LLVM toolchain, including clangd, from Serenity's repository. This is an advanced option that is not currently documented.
clang-format
There are multiple packages to handle auto formatting with
clang-format, within emacs. Choose what works best for your setup:
