c/c++: clean up config
This commit is contained in:
parent
c2ced47f13
commit
637bbb98c3
1 changed files with 31 additions and 32 deletions
|
@ -23,12 +23,13 @@
|
|||
(associate! objc-mode :match "\\.mm$")
|
||||
(add-hook 'c-initialization-hook 'narf|init-c/c++-settings)
|
||||
(add-hook 'c++-mode-hook 'highlight-numbers-mode)
|
||||
(add-hook 'c++-mode-hook 'narf|init-c++-C11-highlights)
|
||||
:config
|
||||
(setq c-tab-always-indent nil
|
||||
c-electric-flag nil)
|
||||
|
||||
(map! (:map c-mode-base-map
|
||||
(:localleader :nv ";" 'narf/append-semicolon)))
|
||||
(map! :map c-mode-base-map
|
||||
(:localleader :nv ";" 'narf/append-semicolon))
|
||||
|
||||
(define-text-object! "<" "<" ">")
|
||||
(sp-local-pair '(c-mode c++-mode) "<" ">" :when '(narf/sp-point-is-template-p narf/sp-point-after-include-p))
|
||||
|
@ -38,39 +39,37 @@
|
|||
(sp-local-pair "/**" "*/" :post-handlers '(("||\n[i]" "RET") ("||\n[i]" "SPC")))
|
||||
(sp-local-pair "/*!" "*/" :post-handlers '(("||\n[i]" "RET") ("[d-1]< | " "SPC"))))
|
||||
|
||||
(progn ;; C/C++
|
||||
(add-hook 'c++-mode-hook 'narf|init-c++-C11-highlights)
|
||||
(add-hook! (c-mode c++-mode)
|
||||
(electric-indent-local-mode +1)
|
||||
(setq electric-indent-chars '(?\n ?})))
|
||||
(add-hook! (c-mode c++-mode objc-mode)
|
||||
(electric-indent-local-mode +1)
|
||||
(setq electric-indent-chars '(?\n ?})))
|
||||
|
||||
;; Fix enum and C++11 lambda indentation
|
||||
(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 (eq 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))))
|
||||
;; C/C++
|
||||
(advice-add 'c-lineup-arglist :around 'narf/c-lineup-arglist)
|
||||
(defun narf/c-lineup-arglist (orig-fun &rest args)
|
||||
"Improve indentation of continued C++11 lambda function opened as argument."
|
||||
(if (and (eq 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
|
||||
(apply orig-fun args)))
|
||||
|
||||
(progn ;; Obj-C
|
||||
(push `(,(lambda ()
|
||||
(and (f-ext? buffer-file-name "h")
|
||||
(re-search-forward "@\\<interface\\>"
|
||||
magic-mode-regexp-match-limit t)))
|
||||
. objc-mode)
|
||||
magic-mode-alist)
|
||||
;; C++ header files
|
||||
(push `(,(lambda () (and (f-ext? buffer-file-name "h")
|
||||
(or (f-exists? (f-swap-ext buffer-file-name "cpp"))
|
||||
(awhen (car-safe (projectile-get-other-files (buffer-file-name) (projectile-current-project-files)))
|
||||
(f-ext? it "cpp")))))
|
||||
. c++-mode)
|
||||
magic-mode-alist)
|
||||
|
||||
(push `(,(lambda ()
|
||||
(and (f-ext? buffer-file-name "h")
|
||||
(f-exists? (f-swap-ext buffer-file-name "cpp"))))
|
||||
. c++-mode)
|
||||
magic-mode-alist))
|
||||
;; Obj-C
|
||||
(push `(,(lambda () (and (f-ext? buffer-file-name "h")
|
||||
(re-search-forward "@\\<interface\\>" magic-mode-regexp-match-limit t)))
|
||||
. objc-mode)
|
||||
magic-mode-alist)
|
||||
|
||||
(use-package irony
|
||||
:config
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue