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

Joel Grunbaum
2021-12-28 51fdbd03573d8b1e11e78aac00d329a4ac55eb78
config.org
@@ -124,7 +124,7 @@
  (diminish 'flyspell-mode)
#+END_SRC
** Language Tool
** COMMENT Language Tool
Language tool is an open source grammar checker.
#+BEGIN_SRC emacs-lisp
  (use-package langtool
@@ -135,17 +135,14 @@
** Switch-window
Helps to change windows easily when many are open at once.
#+BEGIN_SRC emacs-lisp
(use-package switch-window
  :ensure t
  :config
    (setq switch-window-input-style 'minibuffer)
    (setq switch-window-increase 4)
    (setq switch-window-threshold 2)
    (setq switch-window-shortcut-style 'qwerty)
    (setq switch-window-qwerty-shortcuts
        '("a" "s" "d" "f" "j" "k" "l" "i" "o"))
  :bind
    ([remap other-window] . switch-window))
  (use-package switch-window
    :ensure t
    :config
      ;; (setq switch-window-input-style 'minibuffer)
      (setq switch-window-threshold 2)
      (setq switch-window-shortcut-style 'qwerty)
    :bind
      ([remap other-window] . switch-window))
#+END_SRC
** Go to new window when opened
@@ -488,7 +485,7 @@
#+END_SRC
Shows trailing white space
#+BEGIN_SRC emacs-lisp
(add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
  (add-hook 'prog-mode-hook (lambda () (interactive) (setq show-trailing-whitespace 1)))
#+END_SRC
** Whitespace mode
@@ -595,7 +592,7 @@
** Garbage collection
Starts garbage collection every 100MB.
#+BEGIN_SRC emacs-lisp
(setq gc-cons-threshold 100000000)
  (setq gc-cons-threshold (* 1024 1024 100))
#+END_SRC
** Kill ring
@@ -867,61 +864,93 @@
Emacs git client.
Pretty good and offers fairly decent features.
#+BEGIN_SRC emacs-lisp
  (use-package magit
    :ensure t
    :commands magit-get-top-dir
    :bind ("C-x g" . magit-status)
    :init
    (progn
      ;; make magit status go full-screen but remember previous window
      ;; settings
      ;; from: http://whattheemacsd.com/setup-magit.el-01.html
      (defadvice magit-status (around magit-fullscreen activate)
        (window-configuration-to-register :magit-fullscreen)
        ad-do-it
        (delete-other-windows))
      ;; Close popup when committing - this stops the commit window
      ;; hanging around
      ;; From: http://git.io/rPBE0Q
      (defadvice git-commit-commit (after delete-window activate)
        (delete-window))
      (defadvice git-commit-abort (after delete-window activate)
        (delete-window))
      :config
    (use-package magit
      :ensure t
      :commands magit-get-top-dir
      :bind ("C-x g" . magit-status)
      :init
      (progn
        ;; restore previously hidden windows
        (defadvice magit-quit-window (around magit-restore-screen activate)
          (let ((current-mode major-mode))
            ad-do-it
            ;; we only want to jump to register when the last seen buffer
            ;; was a magit-status buffer.
            (when (eq 'magit-status-mode current-mode)
              (jump-to-register :magit-fullscreen)))))
        ;; make magit status go full-screen but remember previous window
        ;; settings
        ;; from: http://whattheemacsd.com/setup-magit.el-01.html
        (defadvice magit-status (around magit-fullscreen activate)
          (window-configuration-to-register :magit-fullscreen)
          ad-do-it
          (delete-other-windows))
      ;; magit settings
      (setq
       ;; don't put "origin-" in front of new branch names by default
       magit-default-tracking-name-function 'magit-default-tracking-name-branch-only
       ;; open magit status in same window as current buffer
       magit-status-buffer-switch-function 'switch-to-buffer
       ;; highlight word/letter changes in hunk diffs
       magit-diff-refine-hunk t
       ;; ask me if I want to include a revision when rewriting
       magit-rewrite-inclusive 'ask
       ;; ask me to save buffers
       magit-save-some-buffers t
       ;; pop the process buffer if we're taking a while to complete
       magit-process-popup-time 10
       ;; ask me if I want a tracking upstream
       magit-set-upstream-on-push 'askifnotset
       )))
        ;; Close popup when committing - this stops the commit window
        ;; hanging around
        ;; From: http://git.io/rPBE0Q
        (defadvice git-commit-commit (after delete-window activate)
          (delete-window))
        (defadvice git-commit-abort (after delete-window activate)
          (delete-window))
        :config
        (progn
          ;; restore previously hidden windows
          (defadvice magit-quit-window (around magit-restore-screen activate)
            (let ((current-mode major-mode))
              ad-do-it
              ;; we only want to jump to register when the last seen buffer
              ;; was a magit-status buffer.
              (when (eq 'magit-status-mode current-mode)
                (jump-to-register :magit-fullscreen)))))
        ;; magit settings
        (setq
         ;; don't put "origin-" in front of new branch names by default
         magit-default-tracking-name-function 'magit-default-tracking-name-branch-only
         ;; open magit status in same window as current buffer
         magit-status-buffer-switch-function 'switch-to-buffer
         ;; highlight word/letter changes in hunk diffs
         magit-diff-refine-hunk t
         ;; ask me if I want to include a revision when rewriting
         magit-rewrite-inclusive 'ask
         ;; ask me to save buffers
         magit-save-some-buffers t
         ;; pop the process buffer if we're taking a while to complete
         magit-process-popup-time 10
         ;; ask me if I want a tracking upstream
         magit-set-upstream-on-push 'askifnotset
         ))
      )
#+END_SRC
*** More general yes and no prompt
The default setting can miss some.
Don't redefine the regex in case this is too general.
#+BEGIN_SRC emacs-lisp
  ;;(when-let ((regex "[\[\(]]?\\([Yy]\\(es\\)?\\)[/|]\\([Nn]o?\\)[\]\)]")
  (defun magit-process-general-yn-prompt-hook (proc str)
    "Handle [y/n] prompts"
    (when-let ((beg (string-match "[\[\(]]?\\([Yy]\\(es\\)?\\)[/|]\\([Nn]o?\\)[\]\)]" str)))
      (let ;; ((max-mini-window-height 30))
          (process-send-string
           proc
           (downcase
            (concat
             (match-string
              (if (save-match-data
                    (magit-process-kill-on-abort proc
                                                 (y-or-n-p (substring str 0 beg)))) 1 2)
              str)
             "\n"))))))
  (add-hook 'magit-process-prompt-functions
            #'magit-process-general-yn-prompt-hook)
#+END_SRC
*** Gerrit integration
Gerrit takes ~origin:refs/for/master~ as a destination.
Enable magit to work with its oddities.
#+BEGIN_SRC emacs-lisp
  (use-package magit-gerrit
    :ensure t)
#+END_SRC
** CEDET
*** Semantic
*** COMMENT Semantic
Parser library for code, supports many other packages.
Allows emacs to be more aware of what is being written.
#+BEGIN_SRC emacs-lisp
@@ -1000,7 +1029,6 @@
  (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
@@ -1010,41 +1038,53 @@
      :config
      (add-hook 'c++-mode-hook 'company-mode)
      (add-hook 'c-mode-hook 'company-mode))
#+END_SRC
**** COMMENT Irony
#+BEGIN_SRC emacs-lisp
  (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.
#+BEGIN_SRC emacs-lisp
  (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))
      (defun set-clang-format-style ()
          (if (file-exists-p (concat
                              (projectile-project-root)
                              ".clang-format"))
              (setq-local clang-format-style nil)
            (setq-local clang-format-style (concat "{BasedOnStyle: LLVM,"
                                                   "IndentWidth: " (format "%s" tab-width) ","
                                                   "UseTab: " (if (eq indent-tabs-mode nil)
                                                                  "Never"
                                                                "AlignWithSpaces")
  ","
                                                   "BreakBeforeBraces: Linux,"
                                                   "AllowShortIfStatementsOnASingleLine: false,"
                                                   "IndentCaseLabels: false}"))))
      (use-package clang-format
        :ensure t
        :hook (c-mode-common . (set-clang-format-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 Company
@@ -1289,9 +1329,6 @@
    (add-hook 'before-save-hook #'gofmt-before-save))
#+END_SRC
#+RESULTS:
: t
**** Flycheck
#+BEGIN_SRC emacs-lisp
  (use-package flycheck-golangci-lint
@@ -1315,14 +1352,14 @@
** Small tweaks
Small quality of life changes to org-mode.
#+BEGIN_SRC emacs-lisp
(setq org-src-fontify-natively t)
(setq org-src-tab-acts-natively t)
(setq org-confirm-babel-evaluate nil)
(setq org-export-with-smart-quotes t)
(setq org-src-window-setup 'current-window)
(add-hook 'org-mode-hook 'org-indent-mode)
(diminish 'org-indent-mode)
(diminish 'visual-line-mode)
  (setq org-src-fontify-natively t
        org-src-tab-acts-natively t
        org-confirm-babel-evaluate nil
        org-export-with-smart-quotes t
        org-src-window-setup 'current-window)
  (add-hook 'org-mode-hook 'org-indent-mode)
  (diminish 'org-indent-mode)
  (diminish 'visual-line-mode)
#+END_SRC
*** Spell checking for code and latex
#+BEGIN_SRC emacs-lisp
@@ -1521,7 +1558,7 @@
    :defer t)
#+END_SRC
* Journaling
* COMMENT Journaling
** Noteworthy entries
I write weekly journal entries recapping my week.
These files are in org mode.