]> git.donarmstrong.com Git - lib.git/blobdiff - emacs_el/configuration/don-configuration.org
require package
[lib.git] / emacs_el / configuration / don-configuration.org
index fc5ef408df3bacffe49b0d3f5fb3aba3bf0e55d2..9b62bb38a1c94b92734dcb9c5381ae4c23aa69f3 100644 (file)
@@ -26,6 +26,7 @@
 * Package management
 ** package repositories and package manager
 #+BEGIN_SRC emacs-lisp
+  (require 'package)
   (setq package-archives '(("gnu" . "https://elpa.gnu.org/packages/")
                            ("melpa" . "https://melpa.org/packages/")
                            ("org" . "http://orgmode.org/elpa/") ))
                         ))
                     )))
 
-              (require 'latex-preview-pane)
-              (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
-                ;; latex-preview-pane uses window-parameters which are
-                ;; not preserved by eyebrowse, so we close the preview
-                ;; pane before switching, it will be regenerated when we
-                ;; edit the TeX file.
-                (when (lpp/window-containing-preview)
-                  (delete-window (lpp/window-containing-preview))))
-
-              (add-to-list 'eyebrowse-pre-window-switch-hook
-                           #'my/close-latex-preview-pane-before-eyebrowse-switch)
-
-              (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
-              (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
-              (my/set-menu-key "'"  #'eyebrowse-next-window-config)
-              (my/set-menu-key "]"  #'eyebrowse-close-window-config)
-              (my/set-menu-key "\\" #'eyebrowse-rename-window-config))
+              ;; I don't use latex-preview-pane
+              ;; (require 'latex-preview-pane)
+              ;; (defun my/close-latex-preview-pane-before-eyebrowse-switch ()
+              ;;   ;; latex-preview-pane uses window-parameters which are
+              ;;   ;; not preserved by eyebrowse, so we close the preview
+              ;;   ;; pane before switching, it will be regenerated when we
+              ;;   ;; edit the TeX file.
+              ;;   (when (lpp/window-containing-preview)
+              ;;     (delete-window (lpp/window-containing-preview))))
+
+              ;; (add-to-list 'eyebrowse-pre-window-switch-hook
+              ;;              #'my/close-latex-preview-pane-before-eyebrowse-switch)
+
+              ;; (my/set-menu-key "["  #'my/eyebrowse-new-window-config)
+              ;; (my/set-menu-key ";"  #'eyebrowse-prev-window-config)
+              ;; (my/set-menu-key "'"  #'eyebrowse-next-window-config)
+              ;; (my/set-menu-key "]"  #'eyebrowse-close-window-config)
+              ;; (my/set-menu-key "\\" #'eyebrowse-rename-window-config)
+              )
     )
 #+END_SRC
 
+** Window handling
+
+*** Splitting
+#+BEGIN_SRC emacs-lisp
+  (defun my/vsplit-last-buffer ()
+    "Split the window vertically and display the previous buffer."
+    (interactive)
+    (split-window-vertically)
+    (other-window 1 nil)
+    (switch-to-next-buffer))
+
+  (defun my/hsplit-last-buffer ()
+    "Split the window horizontally and display the previous buffer."
+    (interactive)
+    (split-window-horizontally)
+    (other-window 1 nil)
+    (switch-to-next-buffer))
+
+  (bind-key "C-x 2" 'my/vsplit-last-buffer)
+  (bind-key "C-x 3" 'my/hsplit-last-buffer)
+
+  (setq split-width-threshold  100)
+  (setq split-height-threshold 60)
+
+  (defun my/split-window-prefer-horizontally (window)
+    "If there's only one window (excluding any possibly active
+           minibuffer), then split the current window horizontally."
+    (if (and (one-window-p t)
+             (not (active-minibuffer-window))
+             ( > (frame-width) (frame-height))
+             )
+        (let ((split-height-threshold nil))
+          (split-window-sensibly window))
+      (split-window-sensibly window)))
+
+  (setq split-window-preferred-function #'my/split-window-prefer-horizontally)
+  (setq window-combination-resize t)
+#+END_SRC
+
+*** Compilation window
+
+If there is no compilation window, open one at the bottom, spanning
+the complete width of the frame. Otherwise, reuse existing window. In
+the former case, if there was no error the window closes
+automatically.
+
+#+BEGIN_SRC emacs-lisp
+  (add-to-list 'display-buffer-alist
+               `(,(rx bos "*compilation*" eos)
+                 (display-buffer-reuse-window
+                  display-buffer-in-side-window)
+                 (reusable-frames . visible)
+                 (side            . bottom)
+                 (window-height   . 0.4)))
+#+END_SRC
+
+#+BEGIN_SRC emacs-lisp
+  (defun my/compilation-exit-autoclose (status code msg)
+    ;; If M-x compile exists with a 0
+    (when (and (eq status 'exit) (zerop code))
+      ;; and delete the *compilation* window
+      (let ((compilation-window (get-buffer-window (get-buffer "*compilation*"))))
+        (when (and (not (window-at-side-p compilation-window 'top))
+                   (window-at-side-p compilation-window 'left)
+                   (window-at-side-p compilation-window 'right))
+          (delete-window compilation-window))))
+    ;; Always return the anticipated result of compilation-exit-message-function
+    (cons msg code))
+
+  ;; Specify my function (maybe I should have done a lambda function)
+  (setq compilation-exit-message-function #'my/compilation-exit-autoclose)
+#+END_SRC
+
+If you change the variable ~compilation-scroll-output~ to a ~non-nil~
+value, the compilation buffer scrolls automatically to follow the
+output. If the value is ~first-error~, scrolling stops when the first
+error appears, leaving point at that error. For any other non-nil
+value, scrolling continues until there is no more output.
+
+#+BEGIN_SRC emacs-lisp
+  (setq compilation-scroll-output 'first-error)
+#+END_SRC
+
+** Mode line cleaning
+*** Diminish
+#+BEGIN_SRC emacs-lisp
+  (use-package diminish
+    :ensure t)
+#+END_SRC
+
+*** Delight 
+#+BEGIN_SRC emacs-lisp
+  (use-package delight
+    :ensure t)
+#+END_SRC
+
 ** Tinyprocmail
 
 #+BEGIN_SRC emacs-lisp
   ; don't verify where we are pushing
   (setq magit-push-always-verify nil)
   ;; refine diffs always (hilight words)
-  (setq magit-diff-refine-hunk 'all)
+  (setq magit-diff-refine-hunk nil)
   ;; load magit-annex
   (setq load-path
         (append '("~/lib/emacs_el/magit-annex")
   (ad-activate 'load)
 #+END_SRC
 
-* Misc (uncharacterized)
+* Mis1c (uncharacterized)
 #+BEGIN_SRC emacs-lisp
   (setq bibtex-user-optional-fields (quote (("annote" "Personal annotation (ignored)") ("abstract" "") ("pmid" "") ("doi" ""))))
   (setq calendar-latitude 40.11)