Advertisement
Guest User

c++ emacs settings

a guest
Jul 19th, 2017
186
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lisp 3.88 KB | None | 0 0
  1. ;;;; C, C++ Development
  2. ;; Rtags
  3. (defvar rtags-completions-enabled)
  4. (setq rtags-completions-enabled nil)
  5.  
  6. (defun my-flycheck-irony-setup ()
  7.   "Setup irony checker."
  8.   (require 'flycheck-irony)
  9.   (flycheck-select-checker 'irony))
  10. (add-hook 'c-mode-hook #'my-flycheck-irony-setup)
  11. (add-hook 'c++-mode-hook #'my-flycheck-irony-setup)
  12. (add-hook 'objc-mode-hook #'my-flycheck-irony-setup)
  13. ;; completion
  14. (add-hook 'irony-mode-hook #'irony-cdb-autosetup-compile-options)
  15.  
  16. (use-package flycheck-clang-analyzer
  17.   :after flycheck-irony
  18.   :config
  19.   (flycheck-clang-analyzer-setup))
  20.  
  21. ;; show docs at point
  22. ;; (require 'xah-lookup)
  23. ;; Uncomment the below line to use eww (Emacs Web Wowser)
  24. ;; (setq xah-lookup-browser-function 'eww)
  25.  
  26. (autoload 'xah-lookup-word-on-internet "xah-lookup")
  27. (use-package xah-lookup
  28.   :defer t)
  29. (defvar xah-lookup-browser-function)
  30. (defun xah-lookup-cppreference (&optional word)
  31.   "Lookup definition of current WORD or text selection in URL."
  32.   (interactive)
  33.   (xah-lookup-word-on-internet
  34.    word
  35.    ;; Use � as a placeholder in the query URL.
  36.    "http://en.cppreference.com/mwiki/index.php?search=�"
  37.    xah-lookup-browser-function))
  38.  
  39. ;; (require 'cc-mode)
  40.  
  41. ;; Add shortcut for c++-mode
  42. ;; Another example with http://www.boost.org
  43. (defun xah-lookup-boost (&optional word)
  44.   "Lookup definition of current WORD or text selection in URL."
  45.   (interactive)
  46.   (xah-lookup-word-on-internet
  47.    word
  48.    "https://cse.google.com/cse?cx=011577717147771266991:jigzgqluebe&q=�"
  49.    xah-lookup-browser-function))
  50.  
  51. (defvar c++-mode-map)
  52. (defvar c-mode-map)
  53. (defun xah-c++-setup ()
  54.   "Setup xah-lookups for c++-mode."
  55.   (require 'cc-mode)
  56.   (define-key c++-mode-map (kbd "C-c b") #'xah-lookup-boost)
  57.   (define-key c++-mode-map (kbd "C-c d") #'xah-lookup-cppreference))
  58.  
  59. (add-hook 'c++-mode-hook #'xah-c++-setup)
  60.  
  61. (declare-function rtags-eldoc "ext:rtags")
  62. (defun my-cc-mode-hook ()
  63.   "My hook for c & c++ modes."
  64.   (require 'cc-mode)
  65.   (local-set-key (kbd "C-c C-t") #'rtags-symbol-type)
  66.   (local-set-key (kbd "C-c C-d") #'rtags-print-symbol-info)
  67.   (local-set-key (kbd "M-.") (lambda ()
  68.                                (interactive)
  69.                                (xref-push-marker-stack)
  70.                                (rtags-find-symbol-at-point)))
  71.   (local-set-key (kbd "M-?") (lambda ()
  72.                                (interactive)
  73.                                (xref-push-marker-stack)
  74.                                (rtags-find-references-at-point)))
  75.   (local-set-key (kbd "C-'") #'company-irony-c-headers)
  76.   (rtags-start-process-unless-running)
  77.   (setq-local eldoc-documentation-function #'rtags-eldoc)
  78.   (eldoc-mode +1)
  79.   (irony-mode)
  80.   (add-to-list 'company-backends '(company-irony company-irony-c-headers)))
  81. (add-hook 'c++-mode-hook #'my-cc-mode-hook)
  82. (add-hook 'c-mode-hook #'my-cc-mode-hook)
  83. ;; Semantic
  84. ;; (require 'cc-mode)
  85. ;; (require 'semantic)
  86. ;; (global-semanticdb-minor-mode 1)
  87. ;; (global-semantic-idle-scheduler-mode 1)
  88. ;; (semantic-mode 1)
  89. ;; (global-set-key (kbd "C-c C-j") 'semantic-ia-fast-jump)
  90. ;; (global-semantic-idle-summary-mode 1)
  91.  
  92. (use-package cmake-ide
  93.   :defer 2
  94.   :config
  95.   (cmake-ide-setup))
  96.  
  97. ;; Add cmake listfile names to the mode list.
  98. (setq auto-mode-alist
  99.       (append
  100.        '(("CMakeLists\\.txt\\'" . cmake-mode))
  101.        '(("\\.cmake\\'" . cmake-mode))
  102.        auto-mode-alist))
  103. (defun my-cmake-font-lock ()
  104.   "Activate font lock for cmake."
  105.   (require 'cmake-font-lock)
  106.   (cmake-font-lock-activate))
  107. (add-hook 'cmake-mode-hook #'my-cmake-font-lock)
  108.  
  109. (defvar company-c-headers-path-user)
  110. (defun company-set-c-headers-user-path ()
  111.   "Set path for selected directory with project headers."
  112.   (interactive)
  113.   (let
  114.       ((dir
  115.         (expand-file-name (read-directory-name
  116.                            "Select project directory:" default-directory))))
  117.     (setq company-c-headers-path-user (list (concat dir "/include")))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement