| | |
| | | #+BEGIN_SRC emacs-lisp
|
| | | (setq c-default-style '((java-mode . "java")
|
| | | (awk-mode . "awk")
|
| | | (other . "linux")))
|
| | | (other . "k&r")))
|
| | | #+END_SRC
|
| | |
|
| | | ** Coding system
|
| | |
| | | (set-keyboard-coding-system 'utf-8)
|
| | | (set-language-environment "UTF-8")
|
| | | (prefer-coding-system 'utf-8)
|
| | | (setq-default indent-tabs-mode t
|
| | | tab-width 8
|
| | | (setq-default indent-tabs-mode nil
|
| | | tab-width 4
|
| | | c-basic-offset tab-width
|
| | | cperl-indent-level tab-width)
|
| | | (c-set-offset 'inline-open '0)
|
| | | (delete-selection-mode)
|
| | | (global-set-key (kbd "RET") 'newline-and-indent)
|
| | | #+END_SRC
|
| | | *** Smart tabs
|
| | | Tabs for indentation, spaces for alignment
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (use-package smart-tabs-mode
|
| | | :ensure t
|
| | | :config
|
| | | (smart-tabs-insinuate 'c 'c++ 'java 'javascript 'cperl 'python 'ruby
|
| | | 'nxml))
|
| | | #+END_SRC
|
| | |
|
| | | ** Move to beginning of line ignoring whitespace
|
| | |
| | | Remote editing mode.
|
| | | Hate having to re-input passwords.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (when (eq system-type 'windows-nt)
|
| | | (setq tramp-default-method "pscp"))
|
| | | (setq password-cache-expiry nil)
|
| | | (use-package tramp
|
| | | :ensure t
|
| | | :pin gnu
|
| | | :config
|
| | | ;; (setq tramp-default-method "ssh")
|
| | | (when (eq system-type 'windows-nt)
|
| | | (setq tramp-default-method "pscp"))
|
| | | (setq password-cache-expiry nil)
|
| | | (add-to-list 'tramp-remote-path 'tramp-own-remote-path))
|
| | | #+END_SRC
|
| | |
|
| | | ** COMMENT Y or N instead of yes or no
|
| | |
| | | :config
|
| | | (flycheck-pos-tip-mode))
|
| | | #+END_SRC
|
| | |
|
| | | ** Company
|
| | | Company is auto-complete for Emacs.
|
| | | Uses various backends, more of which are added later.
|
| | |
| | | ** LSP Mode
|
| | | Use LSP for completion suggestions.
|
| | | Causes too much memory usage, need to debug.
|
| | | Need to generate ~compile_flags~ for c/c++, can use ~bear~ but may need other tools.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (use-package lsp-mode
|
| | | :ensure t
|
| | | :hook (((c-mode
|
| | | cpp-mode
|
| | | c++-mode
|
| | | tex-mode
|
| | | latex-mode
|
| | | TeX-mode
|
| | |
| | | (setq lsp-completion-provider :capf)
|
| | | (setq lsp-keep-workspace-alive 'nil)
|
| | | (add-to-list 'exec-path "~/.cargo/bin"))
|
| | | |
| | |
|
| | | (use-package lsp-ui
|
| | | :ensure t
|
| | | :commands lsp-ui-mode)
|
| | | |
| | |
|
| | | (use-package helm-lsp
|
| | | :ensure t
|
| | | :commands helm-lsp-workspace-symbol)
|
| | |
| | |
|
| | | ** Language specific configs
|
| | | *** C/C++
|
| | | **** Flycheck clang
|
| | | **** Flycheck
|
| | | ***** Flycheck clang
|
| | | Add the clang backend for linting.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (use-package flycheck-clang-analyzer
|
| | |
| | | (require 'flycheck-clang-analyzer)
|
| | | (flycheck-clang-analyzer-setup)))
|
| | | #+END_SRC
|
| | | ***** Flycheck project root
|
| | | Flycheck tends to fail finding the project root, giving errors about missing files.
|
| | | This should remove them.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (defun setup-flycheck-project-path ()
|
| | | (let ((root (ignore-errors (projectile-project-root))))
|
| | | (when root
|
| | | (add-to-list
|
| | | (make-variable-buffer-local 'flycheck-clang-include-path)
|
| | | root)
|
| | | (add-to-list
|
| | | (make-variable-buffer-local 'flycheck-gcc-include-path)
|
| | | root))))
|
| | |
|
| | | **** Company
|
| | | (add-hook 'c-mode-hook 'setup-flycheck-project-path)
|
| | | (add-hook 'c++-mode-hook 'setup-flycheck-project-path)
|
| | | #+END_SRC
|
| | |
|
| | | **** COMMENT Company
|
| | | Add header completion as well as Irony, which uses clang for suggestions.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | | (use-package company-c-headers
|
| | |
| | | (add-hook 'c++-mode-hook 'company-mode)
|
| | | (add-hook 'c-mode-hook 'company-mode))
|
| | |
|
| | | (use-package irony
|
| | | :ensure t
|
| | | :init
|
| | | (setq w32-pipe-read-delay 0)
|
| | | (setq irony-server-w32-pipe-buffer-size (* 64 1024))
|
| | | (add-hook 'c++-mode-hook 'irony-mode)
|
| | | (add-hook 'c-mode-hook 'irony-mode)
|
| | | (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
|
| | | (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
|
| | | ;; (use-package irony
|
| | | ;; :ensure t
|
| | | ;; :init
|
| | | ;; (setq w32-pipe-read-delay 0)
|
| | | ;; (setq irony-server-w32-pipe-buffer-size (* 64 1024))
|
| | | ;; (add-hook 'c++-mode-hook 'irony-mode)
|
| | | ;; (add-hook 'c-mode-hook 'irony-mode)
|
| | | ;; (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
|
| | | ;; (add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options))
|
| | |
|
| | | (use-package company-irony
|
| | | :ensure t
|
| | | :after irony
|
| | | :config
|
| | | (add-to-list 'company-backends '(company-c-headers
|
| | | company-dabbrev-code
|
| | | company-irony)))
|
| | | ;; (use-package company-irony
|
| | | ;; :ensure t
|
| | | ;; :after irony
|
| | | ;; :config
|
| | | ;; (add-to-list 'company-backends '(company-c-headers
|
| | | ;; company-dabbrev-code
|
| | | ;; company-irony)))
|
| | | #+END_SRC
|
| | | **** Clang-format
|
| | | Automatically format buffer on save.
|
| | |
| | | '("\\.rkt$" . racket-mode)))
|
| | | #+END_SRC
|
| | |
|
| | | *** COMMENT Verilog
|
| | | *** Verilog
|
| | | **** Get latest version
|
| | | Use latest version from repositories.
|
| | | #+BEGIN_SRC emacs-lisp
|
| | |
| | | (use-package flycheck-rust
|
| | | :ensure t
|
| | | :config
|
| | | (add-hook 'flyckeck-mode-hook #'flycheck-rust-setup))
|
| | | (add-hook 'flycheck-mode-hook #'flycheck-rust-setup))
|
| | | #+END_SRC
|
| | | *** Go
|
| | | **** Major mode
|