;;; init-cc.el --- -*- lexical-binding: t -*- ;; ;; Filename: init-cc.el ;; Description: Initialize C family languages ;; Author: Mingde (Matthew) Zeng ;; Copyright (C) 2019 Mingde (Matthew) Zeng ;; Created: Fri Mar 15 10:58:29 2019 (-0400) ;; Version: 2.0.0 ;; Last-Updated: Thu Dec 26 02:07:34 2019 (-0500) ;; By: Mingde (Matthew) Zeng ;; URL: https://github.com/MatthewZMD/.emacs.d ;; Keywords: M-EMACS .emacs.d c c++ go ccls ;; Compatibility: emacs-version >= 26.1 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Commentary: ;; ;; This initialize ccls modern-cpp-font-lock go-mode ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; This program is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or (at ;; your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, but ;; WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ;; General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs. If not, see . ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;;; Code: (eval-when-compile (require 'init-const)) ;; CCLSPac (use-package ccls :defer t :if (not *sys/win32*) :hook ((c-mode c++-mode objc-mode) . (lambda () (require 'ccls) (lsp))) :custom (ccls-executable (executable-find "ccls")) ; Add ccls to path if you haven't done so (ccls-sem-highlight-method 'font-lock) (ccls-enable-skipped-ranges nil) :config (lsp-register-client (make-lsp-client :new-connection (lsp-tramp-connection (cons ccls-executable ccls-args)) :major-modes '(c-mode c++-mode cuda-mode objc-mode) :server-id 'ccls-remote :multi-root nil :remote? t :notification-handlers (lsp-ht ("$ccls/publishSkippedRanges" #'ccls--publish-skipped-ranges) ("$ccls/publishSemanticHighlight" #'ccls--publish-semantic-highlight)) :initialization-options (lambda () ccls-initialization-options) :library-folders-fn nil))) ;; -CCLSPac ;; CPPFontLockPac (use-package modern-cpp-font-lock :diminish t :init (modern-c++-font-lock-global-mode t)) ;; -CPPFontLockPac ;; GoPac (use-package go-mode :mode "\\.go\\'" :hook (before-save . gofmt-before-save)) ;; -GoPac (provide 'init-cc) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; init-cc.el ends here