2015-06-15 09:06:10 +02:00
|
|
|
;;; module-cc.el
|
|
|
|
|
|
|
|
(use-package cmake-mode
|
|
|
|
:mode "CMakeLists\\.txt$"
|
|
|
|
:config
|
|
|
|
(after! company
|
|
|
|
(require 'company-cmake)
|
2015-10-14 03:39:32 -04:00
|
|
|
(define-company-backend! cmake-mode (cmake yasnippet))))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(use-package glsl-mode
|
2015-10-08 01:48:47 -04:00
|
|
|
:mode ("\\.glsl\\'" "\\.vert\\'" "\\.frag\\'" "\\.geom\\'"))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(use-package cc-mode
|
|
|
|
:defines (c-syntactic-context)
|
|
|
|
:functions (c-toggle-electric-state c-toggle-auto-newline
|
|
|
|
c-skip-comments-and-strings c-forward-sws c-end-of-macro
|
|
|
|
c-font-lock-invalid-string csharp-log c-font-lock-declarators
|
|
|
|
c-get-lang-constant c-forward-keyword-clause
|
|
|
|
c-fontify-recorded-types-and-refs c-forward-type imenu--split
|
|
|
|
c-backward-sws c-determine-limit c-beginning-of-decl-1)
|
|
|
|
:commands (c-mode c++-mode objc-mode java-mode)
|
|
|
|
:init
|
|
|
|
(associate! objc-mode :match "\\.mm$")
|
2015-10-08 01:48:47 -04:00
|
|
|
(add-hook! (c-mode c++-mode) '(flycheck-mode 'narf|init-c/c++-settings))
|
2015-06-15 09:06:10 +02:00
|
|
|
:config
|
|
|
|
(setq c-basic-offset 4
|
|
|
|
c-tab-always-indent nil
|
|
|
|
c-electric-flag nil)
|
|
|
|
|
|
|
|
(progn ; C/C++ Settings
|
|
|
|
(when IS-MAC
|
|
|
|
(after! flycheck
|
2015-08-09 22:34:17 +02:00
|
|
|
(setq-default flycheck-c/c++-clang-executable "clang++"
|
2015-10-15 14:01:53 -04:00
|
|
|
flycheck-clang-include-path '("/usr/local/include"))
|
|
|
|
|
|
|
|
(add-hook! c-mode (setq flycheck-clang-language-standard "C11"))
|
|
|
|
(add-hook! c++-mode (setq flycheck-clang-language-standard "c++11"
|
|
|
|
flycheck-clang-standard-library "libc++"))))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(after! company
|
|
|
|
;; TODO Clang is *really* slow in larger projects, maybe replace it with
|
|
|
|
;; irony-mode or ycmd?
|
2015-10-14 03:39:32 -04:00
|
|
|
(define-company-backend! c-mode (c-headers clang))
|
|
|
|
(define-company-backend! c++-mode (c-headers clang))
|
|
|
|
(define-company-backend! objc-mode (c-headers xcode)))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
2015-08-12 15:06:20 +02:00
|
|
|
(add-hook! c++-mode 'narf|init-c++-C11-highlights)
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
;; Fix enum and C++11 lambda indentation
|
2015-07-16 20:37:19 +02:00
|
|
|
(defadvice c-lineup-arglist (around c-lineup-arglist-indent-fix activate)
|
|
|
|
"Improve indentation of continued C++11 lambda function opened as argument."
|
|
|
|
(setq ad-return-value
|
|
|
|
(if (and (equal major-mode 'c++-mode)
|
|
|
|
(ignore-errors
|
|
|
|
(save-excursion
|
|
|
|
(goto-char (c-langelem-pos langelem))
|
|
|
|
;; Detect "[...](" or "[...]{". preceded by "," or "(",
|
|
|
|
;; and with unclosed brace.
|
|
|
|
(looking-at ".*[(,][ \t]*\\[[^]]*\\][ \t]*[({][^}]*$"))))
|
|
|
|
0 ; no additional indent
|
|
|
|
ad-do-it))))
|
2015-06-15 09:06:10 +02:00
|
|
|
|
|
|
|
(progn ; Obj-C
|
|
|
|
(add-to-list 'magic-mode-alist
|
|
|
|
`(,(lambda ()
|
|
|
|
(and (string= (file-name-extension buffer-file-name) "h")
|
|
|
|
(re-search-forward "@\\<interface\\>"
|
|
|
|
magic-mode-regexp-match-limit t)))
|
|
|
|
. objc-mode))
|
|
|
|
(after! flycheck (add-hook! objc-mode (require 'flycheck-objc)))))
|
|
|
|
|
|
|
|
(provide 'module-cc)
|
|
|
|
;;; module-cc.el ends here
|