mirror of https://github.com/Chizi123/.emacs.d.git

Joel Grunbaum
2021-12-01 d2a87383f431de4bb1f6f1877ebc894bbb7ffb0b
config.org
@@ -14,7 +14,8 @@
         (use-package exec-path-from-shell
           :ensure t
           :config
           (exec-path-from-shell-initialize))))
           (exec-path-from-shell-initialize))
         (setq default-directory "~/")))
#+END_SRC
* Aesthetic changes
@@ -99,6 +100,7 @@
#+BEGIN_SRC emacs-lisp
  (use-package exwm
    :ensure t
    :defer t
    :config
    (require 'exwm-config)
    (exwm-config-default))
@@ -122,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
@@ -161,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
@@ -383,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
@@ -467,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
@@ -606,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
@@ -749,10 +759,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
@@ -788,17 +799,28 @@
#+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) . 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
@@ -809,12 +831,14 @@
    :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.
@@ -875,9 +899,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)
@@ -922,22 +947,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
@@ -962,26 +981,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)
@@ -1017,9 +1041,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
@@ -1060,7 +1084,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"))
@@ -1089,14 +1113,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
@@ -1183,7 +1199,6 @@
     (int-to-string (verilog-today-day))))
  (use-package verilog-mode
    :hook (verilog-mode . lsp)
    :init
    (when (should-update-verilog-p)
        (get-verilog-latest)
@@ -1230,7 +1245,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)))
@@ -1266,19 +1280,12 @@
    :init
    (setq racer-command "~/.cargo/bin/racer"))
#+END_SRC
*** Bash
**** LSP
Completion with LSP
#+BEGIN_SRC emacs-lisp
(add-hook 'sh-mode-hook 'lsp)
#+END_SRC
* Org mode
** Up to date org
Pull the latest org mode from the repository, rather than the org which comes with emacs.
#+BEGIN_SRC emacs-lisp
    (use-package org
      :ensure org-plus-contrib
      :pin org)
        (use-package org
          :ensure org-contrib)
#+END_SRC
** Small tweaks
@@ -1308,13 +1315,13 @@
               (visual-line-mode 1)))
#+END_SRC
** org-bullets
** Fancy org points
Use bullets of different colours and styles instead of the "\*\*\*" to denote indentation levels.
#+BEGIN_SRC emacs-lisp
  (use-package org-bullets
  (use-package org-superstar
    :ensure t
    :config
    (add-hook 'org-mode-hook (lambda () (org-bullets-mode))))
    (add-hook 'org-mode-hook (lambda () (org-superstar-mode 1))))
#+END_SRC
** Org Babel
@@ -1362,6 +1369,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)
@@ -1486,7 +1494,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