diff --git a/modules/lang/cc/README.org b/modules/lang/cc/README.org index 72526207d..ecb9d6f88 100644 --- a/modules/lang/cc/README.org +++ b/modules/lang/cc/README.org @@ -81,8 +81,8 @@ rc -J $PROJECT_ROOT # loads PROJECT_ROOT's compile_commands.json * Configure ** Compile settings By default, a set of default compile settings are defined in -~+cc-compiler-options~ for C, C++ and Objective C. Irony, rtags and flycheck -will fall back to these. +~+cc-default-compiler-options~ for C, C++ and Objective C. Irony, rtags and +flycheck will fall back to these. To make these tools aware of project specific build settings, you need a JSON [[https://sarcasm.github.io/notes/dev/compilation-database.html#ninja][compilation database]] present (i.e. a ~compile_commands.json~ file). diff --git a/modules/lang/cc/autoload.el b/modules/lang/cc/autoload.el index 390816f1e..d40bcd104 100644 --- a/modules/lang/cc/autoload.el +++ b/modules/lang/cc/autoload.el @@ -85,8 +85,8 @@ ;;;###autoload (defun +cc|irony-init-compile-options () "Initialize compiler options for irony-mode. It searches for the nearest -compilation database and initailizes it. If none was found, it uses -`+cc-c++-compiler-options'. +compilation database and initailizes it, otherwise falling back on +`+cc-default-compiler-options' and `+cc-default-include-paths'. See https://github.com/Sarcasm/irony-mode#compilation-database for details on compilation dbs." @@ -94,8 +94,8 @@ compilation dbs." (require 'irony-cdb) (unless (irony-cdb-autosetup-compile-options) (irony-cdb--update-compile-options - (append (delq nil (cdr-safe (assq major-mode +cc-compiler-options))) - (cl-loop for path in +cc-include-paths + (append (delq nil (cdr-safe (assq major-mode +cc-default-compiler-options))) + (cl-loop for path in +cc-default-include-paths nconc (list "-I" path))) (doom-project-root))))) diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index aa5021713..369b874cc 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -1,13 +1,11 @@ ;;; lang/cc/config.el --- c, c++, and obj-c -*- lexical-binding: t; -*- -(defvar +cc-include-paths (list "include/") - "A list of paths, relative to a project root, to search for headers in C/C++. -Paths can be absolute. +(defvar +cc-default-include-paths (list "include/") + "A list of default paths, relative to a project root, to search for headers in +C/C++. Paths can be absolute. This is ignored if your project has a JSON +compilation database.") -The purpose of this variable is to ensure syntax checkers and code-completion -knows where to look for headers.") - -(defvar +cc-compiler-options +(defvar +cc-default-compiler-options `((c-mode . nil) (c++-mode . ,(list "-std=c++11" ; use C++11 by default @@ -117,7 +115,7 @@ compilation database is present in the project.") (unless (file-directory-p irony-server-install-prefix) (warn "irony-mode: server isn't installed; run M-x irony-install-server")) ;; Initialize compilation database, if present. Otherwise, fall back on - ;; `+cc-compiler-options'. + ;; `+cc-default-compiler-options'. (add-hook 'irony-mode-hook #'+cc|irony-init-compile-options)) (def-package! irony-eldoc