From b4e6afaec570ef2447261b5bad99487363eb0daa Mon Sep 17 00:00:00 2001 From: Joel Grunbaum <joelgrun@gmail.com> Date: Tue, 23 Nov 2021 03:44:47 +0000 Subject: [PATCH] Merge branch 'master' of https://github.com/Chizi123/.emacs.d --- config.org | 252 ++++++++++++++++++++++--------------------------- 1 files changed, 114 insertions(+), 138 deletions(-) diff --git a/config.org b/config.org index f07e2f6..9fa64fa 100644 --- a/config.org +++ b/config.org @@ -8,7 +8,7 @@ (cond ((eq system-type 'windows-nt) (add-to-list 'exec-path "C:/msys64/usr/bin") (add-to-list 'exec-path "C:/msys64/mingw64/bin") - (add-to-list 'exec-path "c:/Program Files/gnuplot") + (add-to-list 'exec-path "C:/Program Files/gnuplot") (setenv "PATH" (mapconcat #'identity exec-path path-separator))) ((eq system-type 'darwin) (use-package exec-path-from-shell @@ -86,12 +86,12 @@ (set-face-italic 'font-lock-keyword-face t) #+END_SRC -** Remove menu bar, toolbar, but keep scroll bar +** Remove menu bar, toolbar, and scroll bar Make the emacs interface slightly nicer. #+BEGIN_SRC emacs-lisp (menu-bar-mode 0) (tool-bar-mode 0) - (scroll-bar-mode 1) + (scroll-bar-mode 0) #+END_SRC * COMMENT EXWM Emacs window manager. @@ -100,6 +100,7 @@ #+BEGIN_SRC emacs-lisp (use-package exwm :ensure t + :defer t :config (require 'exwm-config) (exwm-config-default)) @@ -123,7 +124,14 @@ (diminish 'flyspell-mode) #+END_SRC - +** Language Tool +Language tool is an open source grammar checker. +#+BEGIN_SRC emacs-lisp + (use-package langtool + :ensure t + :init + (setq langtool-java-classpath "/usr/share/languagetool:/usr/share/java/languagetool/*")) +#+END_SRC ** Switch-window Helps to change windows easily when many are open at once. #+BEGIN_SRC emacs-lisp @@ -162,9 +170,9 @@ Helpful pdf viewer. #+BEGIN_SRC emacs-lisp (use-package pdf-tools - :ensure t - :config - (pdf-tools-install 1)) + :ensure t + :config + (pdf-tools-install 1)) #+END_SRC ** COMMENT Writegood-mode @@ -384,12 +392,12 @@ ** Pretty symbols Why not? They make it look nice. #+BEGIN_SRC emacs-lisp - (when window-system - (use-package pretty-mode - :ensure t - :diminish t - :config - (global-pretty-mode))) + (use-package pretty-mode + :ensure t + :diminish t + :if window-system + :config + (global-pretty-mode)) #+END_SRC ** COMMENT Find file other window @@ -468,8 +476,7 @@ #+BEGIN_SRC emacs-lisp (use-package rainbow-delimiters :ensure t - :init - (add-hook 'prog-mode-hook #'rainbow-delimiters-mode)) + :hook (prog-mode . rainbow-delimiters-mode)) #+END_SRC ** Following whitespace @@ -607,18 +614,20 @@ #+BEGIN_SRC emacs-lisp (setq c-default-style '((java-mode . "java") (awk-mode . "awk") - (other . "k&r"))) + (other . "linux"))) #+END_SRC ** Coding system -Cause we all love UTF8 +Cause we all love UTF8. #+BEGIN_SRC emacs-lisp (set-terminal-coding-system 'utf-8) (set-keyboard-coding-system 'utf-8) (set-language-environment "UTF-8") (prefer-coding-system 'utf-8) (setq-default indent-tabs-mode t - tab-width 4) + tab-width 8 + c-basic-offset tab-width + cperl-indent-level tab-width) (delete-selection-mode) (global-set-key (kbd "RET") 'newline-and-indent) #+END_SRC @@ -709,6 +718,13 @@ (minimap-mode)) #+END_SRC +** Highlight indentation +Vertical demarcations for indent levels +#+BEGIN_SRC emacs-lisp + (use-package highlight-indentation + :ensure t + :hook (prog-mode . highlight-indentation-mode)) +#+END_SRC * Mode line tweaks Diminish is used but is included in init.el such that it can be used throughout this document ** Spaceline @@ -750,10 +766,11 @@ :ensure t :diminish yas-minor-mode :config - (use-package yasnippet-snippets - :ensure t) - (yas-reload-all) (yas-global-mode 1)) + + (use-package yasnippet-snippets + :ensure t + :after yasnippet) #+END_SRC ** Flycheck @@ -785,37 +802,51 @@ :config (global-company-mode) (setq company-idle-delay 0) - (setq company-minimum-prefix-length 3)) + (setq company-minimum-prefix-length 1)) #+END_SRC ** LSP Mode -Use LSP for completion suggestions +Use LSP for completion suggestions. +Causes too much memory usage, need to debug. #+BEGIN_SRC emacs-lisp (use-package lsp-mode :ensure t - :hook ((lsp-mode . lsp-enable-which-key-integration)) + :hook (((c-mode + cpp-mode + tex-mode + latex-mode + TeX-mode + LaTeX-mode + rust-mode + sh-mode + verilog-mode + go-mode) . lsp)) :init (setq lsp-keymap-prefix "C-c l") :commands lsp :config + (add-hook 'lsp-mode-hook 'lsp-enable-which-key-integration) (setq read-process-output-max (* 1024 1024)) (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) #+END_SRC + ** Version control Settings for emacs' own version control system. *** Enable version control on the mode line #+BEGIN_SRC emacs-lisp (vc-mode) #+END_SRC + ** Magit Emacs git client. Pretty good and offers fairly decent features. @@ -876,9 +907,10 @@ ** CEDET *** Semantic Parser library for code, supports many other packages. -Allows emacs to be mode aware of what is being written. +Allows emacs to be more aware of what is being written. #+BEGIN_SRC emacs-lisp (use-package semantic + :hook (prog-mode . semantic-mode) :config (global-semanticdb-minor-mode 1) (global-semantic-idle-scheduler-mode 1) @@ -923,22 +955,16 @@ ** Language specific configs *** C/C++ -**** COMMENT yasnippet -Enable yasnippet for C/C++. -#+BEGIN_SRC emacs-lisp -(add-hook 'c++-mode-hook 'yas-minor-mode) -(add-hook 'c-mode-hook 'yas-minor-mode) -#+END_SRC - **** Flycheck clang Add the clang backend for linting. #+BEGIN_SRC emacs-lisp -(use-package flycheck-clang-analyzer - :ensure t - :config - (with-eval-after-load 'flycheck - (require 'flycheck-clang-analyzer) - (flycheck-clang-analyzer-setup))) + (use-package flycheck-clang-analyzer + :ensure t + :after flycheck + :config + (with-eval-after-load 'flycheck + (require 'flycheck-clang-analyzer) + (flycheck-clang-analyzer-setup))) #+END_SRC **** Company @@ -963,26 +989,31 @@ (use-package company-irony :ensure t + :after irony :config (add-to-list 'company-backends '(company-c-headers company-dabbrev-code company-irony))) #+END_SRC - -**** LSP -Allow completion with LSP. +**** Clang-format +Automatically format buffer on save. #+BEGIN_SRC emacs-lisp -(add-hook 'c-mode-hook 'lsp) -(add-hook 'cpp-mode-hook 'lsp) + (when (file-exists-p "/usr/share/clang/clang-format.el") + (load "/usr/share/clang/clang-format.el") + (setq clang-format-linux-style (concat "{BasedOnStyle: LLVM," + "IndentWidth: 8," + "UseTab: Always," + "BreakBeforeBraces: Linux," + "AllowShortIfStatementsOnASingleLine: false," + "IndentCaseLabels: false}")) + (setq-default clang-format-style clang-format-linux-style) + (defun clang-format-on-save () + (add-hook 'before-save-hook 'clang-format-buffer nil t)) + (add-hook 'c-mode-hook 'clang-format-on-save nil t) + (add-hook 'c++-mode-hook 'clang-format-on-save nil t)) #+END_SRC *** emacs-lisp -**** COMMENT yasnippet -Enable yasnippet. -#+BEGIN_SRC emacs-lisp -(add-hook 'emacs-lisp-mode-hook 'yas-minor-mode) -#+END_SRC - -**** COMMENT company +**** COMMENT Company Add slime backend. #+BEGIN_SRC emacs-lisp (add-hook 'emacs-lisp-mode-hook 'company-mode) @@ -1018,9 +1049,9 @@ (use-package tex :ensure auctex :config - (setq TeX-auto-save t) - (setq TeX-parse-self t) - (setq TeX-view-program-selection '((output-pdf "PDF Tools")) + (setq TeX-auto-save t + TeX-parse-self t + TeX-view-program-selection '((output-pdf "PDF Tools")) TeX-source-correlate-start-server t) (add-hook 'TeX-after-compilation-finished-functions #'TeX-revert-document-buffer)) #+END_SRC @@ -1061,7 +1092,7 @@ (defun get-texcount-latest() (if (not(file-directory-p "~/.texcount")) (make-directory "~/.texcount")) - (url-copy-file "https://app.uio.no/ifi/texcount/download.php?file=texcount_3_1_1.zip" "~/.texcount/texcount.zip" 1) + (url-copy-file "https://app.uio.no/ifi/texcount/download.php?file=texcount_3_2_0_41.zip" "~/.texcount/texcount.zip" 1) (shell-command "unzip -o ~/.texcount/texcount.zip -d ~/.texcount") (add-to-list 'exec-path "~/.texcount/texcount.pl")) @@ -1090,14 +1121,6 @@ (add-hook 'latex-mode-hook (lambda () (define-key latex-mode-map (kbd "C-c c") 'texcount))) #+END_SRC -**** LSP -Allow LSP completion -#+BEGIN_SRC emacs-lisp - (add-hook 'tex-mode-hook 'lsp) - (add-hook 'latex-mode-hook 'lsp) - (add-hook 'TeX-mode-hook 'lsp) - (add-hook 'LaTeX-mode-hook 'lsp) -#+END_SRC *** PlantUML Sets the PlantUML path for the mode to generate models. #+BEGIN_SRC emacs-lisp @@ -1125,74 +1148,19 @@ (autoload 'racket-mode "Racket" "Racket Editing Mode" t) (add-to-list 'auto-mode-alist - '("\\.rkt$" . racket-mode)) - (setq matlab-indent-function t)) + '("\\.rkt$" . racket-mode))) #+END_SRC *** COMMENT Verilog **** Get latest version -Pull the latest version from the web. +Use latest version from repositories. #+BEGIN_SRC emacs-lisp - (defun get-verilog-latest() - (if (not(file-directory-p "~/.emacs.d/elpa/verilog-mode")) - (make-directory "~/.emacs.d/elpa/verilog-mode")) - (if (file-exists-p "~/.emacs.d/elpa/verilog-mode/verilog-mode.el") - (delete-file "~/.emacs.d/elpa/verilog-mode/verilog-mode.el")) - (url-copy-file "https://www.veripool.org/ftp/verilog-mode.el" "~/.emacs.d/elpa/verilog-mode/verilog-mode.el" 1)) -#+END_SRC - -**** Integrate into emacs -Add updated version (based off auto-package-update) and integrate it with Emacs. -#+BEGIN_SRC emacs-lisp - (defun verilog-read-file-as-string (file) - "Read FILE contents." - (when (file-exists-p file) - (with-temp-buffer - (insert-file-contents file) - (buffer-string)))) - - (defun verilog-write-string-to-file (file string) - "Substitute FILE contents with STRING." - (with-temp-buffer - (insert string) - (when (file-writable-p file) - (write-region (point-min) - (point-max) - file)))) - - (defun verilog-today-day () - (time-to-days (current-time))) - - (defun should-update-verilog-p () - "Return non-nil when an update is due." - (and - (or - (not (file-exists-p "~/.emacs.d/.last-verilog-update-day")) - (if (>= (/ (- (verilog-today-day) (verilog-read-last-update-day)) 7) 1) - t - nil)))) - - (defun verilog-read-last-update-day () - "Read last update day." - (string-to-number - (verilog-read-file-as-string "~/.emacs.d/.last-verilog-update-day"))) - - (defun verilog-write-current-day () - "Store current day." - (verilog-write-string-to-file - "~/.emacs.d/.last-verilog-update-day" - (int-to-string (verilog-today-day)))) - (use-package verilog-mode - :hook (verilog-mode . lsp) - :init - (when (should-update-verilog-p) - (get-verilog-latest) - (verilog-write-current-day)) - (add-to-list 'load-path "~/.emacs.d/elpa/verilog-mode/verilog-mode.el") + :ensure t + :pin gnu :config (autoload 'verilog-mode "verilog-mode" "Verilog mode" t ) - (add-to-list 'auto-mode-alist '("\\.[ds]?vh?\\'" . verilog-mode))) + (add-to-list 'auto-mode-alist '("\\.[ds]?va?h?\\'" . verilog-mode))) #+END_SRC *** COMMENT MATLAB @@ -1231,7 +1199,6 @@ #+BEGIN_SRC emacs-lisp (use-package rust-mode :ensure t - :hook (rust-mode . lsp) :config ;; style guide suggests spaces not tabs (add-hook 'rust-mode-hook (lambda () (setq indent-tabs-mode nil))) @@ -1256,22 +1223,29 @@ :config (add-hook 'flyckeck-mode-hook #'flycheck-rust-setup)) #+END_SRC - -**** COMMENT Completion -Code completion with racer. +*** Go +**** Major mode #+BEGIN_SRC emacs-lisp - (use-package racer + (use-package go-mode :ensure t - :hook ((rust-mode . racer-mode) - (racer-mode . (eldoc-mode company-mode))) - :init - (setq racer-command "~/.cargo/bin/racer")) + :config + (add-hook 'before-save-hook #'gofmt-before-save)) #+END_SRC -*** Bash -**** LSP -Completion with LSP + +#+RESULTS: +: t + +**** Flycheck #+BEGIN_SRC emacs-lisp -(add-hook 'sh-mode-hook 'lsp) + (use-package flycheck-golangci-lint + :ensure t + :config + (add-hook 'flycheck-mode-hook #'flycheck-golangci-lint-setup)) +#+END_SRC +**** Company +#+BEGIN_SRC emacs-lisp + (use-package company-go + :ensure t) #+END_SRC * Org mode ** Up to date org @@ -1363,6 +1337,7 @@ ** Org export additions *** Pandoc Call pandoc on org buffer from org export. +Need to add ~#+OPTIONS: H:99~ to enable large level header exports. #+BEGIN_SRC emacs-lisp (use-package ox-pandoc :ensure t) @@ -1487,7 +1462,8 @@ Allow org features to be exported to HTML for site. #+BEGIN_SRC emacs-lisp (use-package htmlize - :ensure t) + :ensure t + :defer t) #+END_SRC * Journaling -- Gitblit v1.9.3