]> code.delx.au - dotemacs/commitdiff
major config refactor
authorJames Bunton <jamesbunton@delx.net.au>
Sat, 30 Jul 2016 01:31:21 +0000 (11:31 +1000)
committerJames Bunton <jamesbunton@delx.net.au>
Sat, 30 Jul 2016 07:59:39 +0000 (17:59 +1000)
- Document occur in README
- Switch from popwin to shackle
- Added hl-todo
- Added goto-address-mode
- Removed restclient
- Sensible configuration for ediff-mode
- Split configuration into smaller and more sensible files

18 files changed:
.gitmodules
README.md
init.el
lisp/my-completion.el
lisp/my-direx.el [new file with mode: 0644]
lisp/my-editing-defuns.el [moved from lisp/my-defuns.el with 77% similarity]
lisp/my-frame-title.el [new file with mode: 0644]
lisp/my-gui.el
lisp/my-kill-buffers.el [new file with mode: 0644]
lisp/my-minor-modes.el
lisp/my-other-modes.el [deleted file]
lisp/my-scratch.el [new file with mode: 0644]
lisp/my-shackle.el [new file with mode: 0644]
lisp/my-vc.el [new file with mode: 0644]
packages/hl-todo [new submodule]
packages/popwin [deleted submodule]
packages/restclient [deleted submodule]
packages/shackle [new submodule]

index d6897c33fde3a5a5e979228b43ba6227d05fd546..80d2e21c723a2751f9193ece85e5f78660573cc7 100644 (file)
@@ -19,9 +19,6 @@
 [submodule "flycheck"]
        path = packages/flycheck
        url = https://github.com/flycheck/flycheck
-[submodule "restclient"]
-       path = packages/restclient
-       url = https://github.com/pashky/restclient.el.git
 [submodule "ibuffer-vc"]
        path = packages/ibuffer-vc
        url = https://github.com/purcell/ibuffer-vc.git
@@ -91,9 +88,6 @@
 [submodule "direx"]
        path = packages/direx
        url = https://github.com/delxg/direx-el.git
-[submodule "popwin"]
-       path = packages/popwin
-       url = https://github.com/m2ym/popwin-el.git
 [submodule "avy"]
        path = packages/avy
        url = https://github.com/abo-abo/avy.git
 [submodule "fringe-helper"]
        path = packages/fringe-helper
        url = https://github.com/nschum/fringe-helper.el.git
+[submodule "shackle"]
+       path = packages/shackle
+       url = https://github.com/wasamasa/shackle.git
+[submodule "hl-todo"]
+       path = packages/hl-todo
+       url = https://github.com/tarsius/hl-todo.git
index 32e08ed72dd3fc7ba1f271c3b8edc06d210a1145..23568ee31510ae8350a0fb222752d482808f0221 100644 (file)
--- a/README.md
+++ b/README.md
@@ -26,6 +26,8 @@ C-h v                                           Describe variable
 C-h f                                           Describe function
 C-h m                                           Documentation on active modes
 <prefix> C-h                                    Show bindings starting with <prefix>
+C-c C-b                                         Back to previous help topic (while in help-mode)
+q                                               Quit window and bury buffer
 ```
 
 # Search
@@ -33,10 +35,11 @@ C-h m                                           Documentation on active modes
 C-s                                             Search forward (ivy/swiper mode)
 C-r                                             Resume ivy search
 C-7                                             Start a cursor for each result (while searching)
+C-'                                             Switch to avy jump mode
 M-q                                             Replace searched item (while searching)
 M-p                                             Search for previous item (while searching)
 M-n                                             Search for symbol at point (while searching)
-M-%                                             Search and replace
+C-c C-o                                         Dump all results into a buffer (ivy-occur)
 ```
 
 # Files/buffers
@@ -143,6 +146,15 @@ C-c m                                           Ask to insert extra cursor at lo
 M-=                                             Display info about region
 ```
 
+# Highlighting
+```
+M-s h u                                         Unhighlight regexp
+M-s h .                                         Highlight symbol at point
+M-s h p                                         Highlight phrase
+M-s h r                                         Highlight regexp
+M-s h l                                         Highlight lines matching regexp
+```
+
 # Killing and deleting
 ```
 C-M-k                                           Kill s-expression / symbol
@@ -191,6 +203,8 @@ C-x C-j                                         Open direx at current file
 F8                                              Toggle flyspell-mode
 F9                                              Toggle whitespace mode
 F10                                             Toggle word wrap
+M-s o                                           Search in buffer and display results in occur-mode
+M-x multi-occur                                 Search in buffers and display results in occur-mode
 M-x eshell                                      Run eshell
 M-x ielm                                        Run Emacs Lisp REPL
 M-x linum-mode                                  Display line numbers
@@ -203,6 +217,15 @@ M-x term                                        Run terminal
 M-x yas-reload-all                              Reload all snippets
 ```
 
+# Occur
+```
+g                                               Reload
+e                                               Switch to edit mode
+C-c C-c                                         Switch back to occur mode
+M-g M-p                                         Previous occurence
+M-g M-n                                         Next occurence
+```
+
 # Lisp
 ```
 C-M-x                                           Eval top-level form
diff --git a/init.el b/init.el
index 934aa81b26e77d8c91e8b4ccad4f8857a16ff268..23d4a92a37d8095d36bb8f51e5489d4f57de2d7e 100644 (file)
--- a/init.el
+++ b/init.el
@@ -9,15 +9,20 @@
             (add-to-list 'load-path dirname)))))
 
 (load-library "my-backups")
-(load-library "my-defuns")
-(load-library "my-gui")
 (load-library "my-completion")
-(load-library "my-recentf")
-(load-library "my-flycheck")
-(load-library "my-find-test-file")
-(load-library "my-other-modes")
-(load-library "my-minor-modes")
+(load-library "my-direx")
+(load-library "my-editing-defuns")
 (load-library "my-file-modes")
+(load-library "my-find-test-file")
+(load-library "my-flycheck")
+(load-library "my-frame-title")
+(load-library "my-gui")
 (load-library "my-keys")
+(load-library "my-kill-buffers")
+(load-library "my-minor-modes")
+(load-library "my-recentf")
+(load-library "my-scratch")
+(load-library "my-shackle")
+(load-library "my-vc")
 
 (message "Successfully loaded init.el")
index 95bfa3ed75a5310842e6aaf3a6cfa6c8b5994b59..530194774fe6124b2b1eb28dcb0f3ace83709847 100644 (file)
@@ -3,10 +3,16 @@
 (require 'counsel)
 (require 'ivy)
 (require 'swiper)
-(ivy-mode 1)
-(setq counsel-find-file-at-point t)
-(setq counsel-find-file-ignore-regexp "\\(?:\\`[#.]\\)\\|\\(?:[#~]\\'\\)")
+
 (setq ivy-wrap t)
+
 (setq ivy-extra-directories nil)
+
+(setq counsel-find-file-at-point t)
+
+(setq counsel-find-file-ignore-regexp "\\(?:\\`[#.]\\)\\|\\(?:[#~]\\'\\)")
+
 (setq counsel-git-cmd "git ls-files --full-name --cached --others --exclude-standard --")
 (setq counsel-git-grep-cmd-default "git --no-pager grep --full-name -n --no-color --untracked -i -e %S")
+
+(ivy-mode 1)
diff --git a/lisp/my-direx.el b/lisp/my-direx.el
new file mode 100644 (file)
index 0000000..89ca4b7
--- /dev/null
@@ -0,0 +1,7 @@
+;;; -*- lexical-binding: t -*-
+
+(require 'direx)
+(require 'direx-project)
+(require 'dired-x)
+
+(defalias 'direx:find-item 'direx:find-item-other-window)
similarity index 77%
rename from lisp/my-defuns.el
rename to lisp/my-editing-defuns.el
index d9de53ac31ea3f45493f7866b214c40a14da7e84..1799fdedba8e32d57eae844c1fc371fe53b17e74 100644 (file)
   (forward-line (- arg))
   (back-to-indentation))
 
-(defun my/git-reset-buffer ()
-  "Runs git-reset to unstage all changes on the current file. Then updates the git-gutter."
-  (interactive)
-  (call-process "git" nil nil nil "reset" (buffer-file-name))
-  (git-gutter)
-  (message "Finished git reset"))
-
 (defun my/open-line-above (arg)
   "Open a new line above point with indentation. With ARG insert that many lines."
   (interactive "*p")
   (newline arg)
   (indent-for-tab-command))
 
-(defun my/scratch-buffer ()
-  "Create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
-  (interactive)
-  (let ((n 0)
-        bufname)
-    (while (progn
-             (setq bufname (concat "*scratch"
-                                   (if (= n 0) "" (int-to-string n))
-                                   "*"))
-             (setq n (1+ n))
-             (get-buffer bufname)))
-    (switch-to-buffer (get-buffer-create bufname))
-    (emacs-lisp-mode)))
-
 (defun my/substitute-line (arg)
   "Kill the current line and leave point at correct indentation level. With ARG kill that many lines first."
   (interactive "*P")
diff --git a/lisp/my-frame-title.el b/lisp/my-frame-title.el
new file mode 100644 (file)
index 0000000..e640c45
--- /dev/null
@@ -0,0 +1,30 @@
+;;; -*- lexical-binding: t -*-
+
+(setq frame-title-format '((:eval (funcall #'my/generate-frame-title))))
+
+(setq icon-title-format frame-title-format)
+
+(add-to-list 'post-command-hook #'my/terminal-update-title)
+
+
+(defun my/generate-frame-title ()
+  "Returns a string like 'filename (dirname) - Emacs'"
+  (if (buffer-file-name)
+      (concat
+       (file-name-nondirectory (buffer-file-name))
+       (if (buffer-modified-p)
+           " +")
+       " ("
+       (abbreviate-file-name (substring (file-name-directory (buffer-file-name)) 0 -1))
+       ") - Emacs"
+       )
+    (concat
+     (buffer-name)
+     (if (buffer-modified-p)
+         " +")
+     " - Emacs")))
+
+(defun my/terminal-update-title ()
+  "If using a terminal frame then sends the escape codes to update the title."
+  (if (terminal-parameter (frame-terminal) 'terminal-initted)
+      (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007"))))
index 4408b31d5fd03af349225f224d86f3b58e2fdcd3..c4f1ec33dd902b083e4733577885edfc366aa8d2 100644 (file)
 
 (show-paren-mode t)
 
+(dolist (hook '(prog-mode-hook text-mode-hook))
+  (add-hook hook (lambda ()
+                   (setq show-trailing-whitespace t))))
+
+(setq shift-select-mode nil)
+(delete-selection-mode t)
+
 (require 'uniquify)
 (setq uniquify-strip-common-suffix t)
 (setq uniquify-buffer-name-style 'post-forward)
 
-(add-to-list 'delete-frame-functions #'my/kill-buffers-if-deleting-last-frame)
-
-(setq frame-title-format '((:eval (funcall #'my/generate-frame-title))))
-(setq icon-title-format frame-title-format)
-
-(add-to-list 'post-command-hook #'my/terminal-update-title)
-
 (defalias 'yes-or-no-p 'y-or-n-p)
 
+(setq find-file-visit-truename t)
 
-(defun my/frame-initial-frame-p (frame)
-  "Returns true if the given frame is the magic 'initial frame' that always exists in GUI emacs sessions"
-  (equal "initial_terminal" (terminal-name frame)))
-
-(defun my/frame-list-ignoring-initial-frame ()
-  "Returns all frames except the magic 'initial frame' that always exists in GUI emacs sessions"
-  (filtered-frame-list (lambda (frame) (not (my/frame-initial-frame-p frame)))))
-
-(defun my/generate-frame-title ()
-  "Returns a string like 'filename (dirname) - Emacs'"
-  (if (buffer-file-name)
-      (concat
-       (file-name-nondirectory (buffer-file-name))
-       (if (buffer-modified-p)
-           " +")
-       " ("
-       (abbreviate-file-name (substring (file-name-directory (buffer-file-name)) 0 -1))
-       ") - Emacs"
-       )
-    (concat
-     (buffer-name)
-     (if (buffer-modified-p)
-         " +")
-     " - Emacs")))
-
-(defun my/kill-buffer-safely (buffer)
-  "Kill the buffer if it is not special or modified"
-  (if (and
-       (not (string-match "^ " (buffer-name buffer)))
-       (not (equal "*Messages*" (buffer-name buffer)))
-       (or
-        (not (buffer-modified-p buffer))
-        (null (buffer-file-name buffer))))
-      (kill-buffer buffer)))
-
-(defun my/kill-buffers-if-deleting-last-frame (frame)
-  "Kill all buffers when closing the last frame"
-  (when (equal (list frame) (my/frame-list-ignoring-initial-frame))
-    (dolist (buffer (buffer-list))
-      (my/kill-buffer-safely buffer))))
+(setq disabled-command-function nil)
 
-(defun my/kill-buffers-not-in-frame ()
-  "Kill buffers which are not loaded into some frame"
-  (interactive)
-  (let ((kill-count 0))
-    (dolist (buffer (buffer-list))
-      (let* ((window (get-buffer-window buffer t))
-             (frame (window-frame window)))
-        (if (or (null frame) (not (window-live-p window)) (my/frame-initial-frame-p frame))
-            (if (my/kill-buffer-safely buffer)
-                (cl-incf kill-count)))))
-    (message "Killed %d buffers" kill-count)))
+(setq save-interprogram-paste-before-kill t)
 
-(defun my/terminal-update-title ()
-  "If using a terminal frame then sends the escape codes to update the title."
-  (if (terminal-parameter (frame-terminal) 'terminal-initted)
-      (send-string-to-terminal (concat "\033]0;" (my/generate-frame-title) "\007"))))
+(setq undo-limit 10000000)
+(setq undo-strong-limit undo-limit)
diff --git a/lisp/my-kill-buffers.el b/lisp/my-kill-buffers.el
new file mode 100644 (file)
index 0000000..8e262f5
--- /dev/null
@@ -0,0 +1,41 @@
+;;; -*- lexical-binding: t -*-
+
+(add-to-list 'delete-frame-functions #'my/kill-buffers-if-deleting-last-frame)
+
+(defun my/kill-buffers-if-deleting-last-frame (frame)
+  "Kill all buffers when closing the last frame"
+  (when (equal (list frame) (my/frame-list-ignoring-initial-frame))
+    (dolist (buffer (buffer-list))
+      (my/kill-buffer-safely buffer))))
+
+(defun my/kill-buffers-not-in-frame ()
+  "Kill buffers which are not loaded into some frame"
+  (interactive)
+  (let ((kill-count 0))
+    (dolist (buffer (buffer-list))
+      (let* ((window (get-buffer-window buffer t))
+             (frame (window-frame window)))
+        (if (or (null frame) (not (window-live-p window)) (my/frame-initial-frame-p frame))
+            (if (my/kill-buffer-safely buffer)
+                (cl-incf kill-count)))))
+    (message "Killed %d buffers" kill-count)))
+
+
+
+(defun my/frame-initial-frame-p (frame)
+  "Returns true if the given frame is the magic 'initial frame' that always exists in GUI emacs sessions"
+  (equal "initial_terminal" (terminal-name frame)))
+
+(defun my/frame-list-ignoring-initial-frame ()
+  "Returns all frames except the magic 'initial frame' that always exists in GUI emacs sessions"
+  (filtered-frame-list (lambda (frame) (not (my/frame-initial-frame-p frame)))))
+
+(defun my/kill-buffer-safely (buffer)
+  "Kill the buffer if it is not special or modified"
+  (if (and
+       (not (string-match "^ " (buffer-name buffer)))
+       (not (equal "*Messages*" (buffer-name buffer)))
+       (or
+        (not (buffer-modified-p buffer))
+        (null (buffer-file-name buffer))))
+      (kill-buffer buffer)))
index 3368f22851d506c44d7efad8d7434633a5642755..899425a0f19f342785480b91e277eb0b7a746ace 100644 (file)
@@ -1,5 +1,10 @@
 ;;; -*- lexical-binding: t -*-
 
+(require 'autorevert)
+(global-auto-revert-mode 1)
+(setq global-auto-revert-non-file-buffers t)
+(setq auto-revert-verbose nil)
+
 (require 'avy)
 (setq avy-background t)
 (setq avy-all-windows nil)
 
 (require 'expand-region)
 
-(require 'git-gutter)
-(require 'git-gutter-fringe)
-(setq git-gutter:ask-p nil)
-(global-git-gutter-mode)
+(require 'goto-addr)
+(add-hook 'text-mode-hook #'goto-address-mode)
+(add-hook 'prog-mode-hook #'goto-address-prog-mode)
+
+(require 'hl-line)
+(global-hl-line-mode)
+
+(require 'hl-todo)
+(add-hook 'prog-mode-hook #'hl-todo-mode)
 
 (require 'indent-guide)
 (indent-guide-global-mode)
 
 (require 'multiple-cursors)
 
+(require 'saveplace)
+(setq-default save-place t)
+
 (require 'xt-mouse)
 (xterm-mouse-mode)
 
 (require 'yasnippet)
-(setq yas-snippet-dirs '("~/.emacs.d/snippets"))
 (add-hook 'prog-mode-hook #'yas-minor-mode)
 (add-hook 'python-mode-hook
           (lambda () (set (make-local-variable 'yas-indent-line) 'fixed)))
+(yas-reload-all)
 
 (require 'diminish)
-(diminish 'git-gutter-mode)
-(diminish 'indent-guide-mode)
-(diminish 'ivy-mode)
-(diminish 'yas-minor-mode)
+(add-hook 'after-init-hook
+          (lambda ()
+            (diminish 'git-gutter-mode)
+            (diminish 'indent-guide-mode)
+            (diminish 'ivy-mode)
+            (diminish 'yas-minor-mode)))
diff --git a/lisp/my-other-modes.el b/lisp/my-other-modes.el
deleted file mode 100644 (file)
index da3cff1..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-;;; -*- lexical-binding: t -*-
-
-(require 'autorevert)
-(global-auto-revert-mode 1)
-(setq global-auto-revert-non-file-buffers t)
-(setq auto-revert-verbose nil)
-
-(require 'dired-x)
-(require 'direx)
-(require 'direx-project)
-(defalias 'direx:find-item 'direx:find-item-other-window)
-
-(setq disabled-command-function nil)
-
-(setq find-file-visit-truename t)
-
-(require 'hl-line)
-(global-hl-line-mode)
-
-(require 'ibuffer-vc)
-(add-hook 'ibuffer-hook
-          (lambda ()
-            (ibuffer-vc-set-filter-groups-by-vc-root)
-            (unless (eq ibuffer-sorting-mode 'alphabetic)
-              (ibuffer-do-sort-by-alphabetic))))
-
-(require 'popwin)
-(popwin-mode 1)
-(push '(direx:direx-mode :position left :width 40 :dedicated t)
-      popwin:special-display-config)
-(push '("*git-gutter:diff*" :stick t)
-      popwin:special-display-config)
-
-(require 'restclient)
-
-(setq require-final-newline t)
-
-(setq save-interprogram-paste-before-kill t)
-
-(setq shift-select-mode nil)
-(delete-selection-mode t)
-
-(require 'saveplace)
-(setq-default save-place t)
-
-(dolist (hook '(prog-mode-hook text-mode-hook))
-  (add-hook hook (lambda ()
-                   (setq show-trailing-whitespace t))))
-
-(setq undo-limit 10000000)
-(setq undo-strong-limit undo-limit)
-
-(require 'vc)
-(setq vc-follow-symlinks t)
diff --git a/lisp/my-scratch.el b/lisp/my-scratch.el
new file mode 100644 (file)
index 0000000..dc387d8
--- /dev/null
@@ -0,0 +1,18 @@
+;;; -*- lexical-binding: t -*-
+
+(setq initial-scratch-message nil)
+(setq initial-major-mode 'emacs-lisp-mode)
+
+(defun my/scratch-buffer ()
+  "Create a new scratch buffer to work in. (could be *scratch* - *scratchX*)"
+  (interactive)
+  (let ((n 0)
+        bufname)
+    (while (progn
+             (setq bufname (concat "*scratch"
+                                   (if (= n 0) "" (int-to-string n))
+                                   "*"))
+             (setq n (1+ n))
+             (get-buffer bufname)))
+    (switch-to-buffer (get-buffer-create bufname))
+    (funcall initial-major-mode)))
diff --git a/lisp/my-shackle.el b/lisp/my-shackle.el
new file mode 100644 (file)
index 0000000..b81a438
--- /dev/null
@@ -0,0 +1,14 @@
+;;; -*- lexical-binding: t -*-
+
+(require 'shackle)
+
+(setq shackle-rules '(((:custom buffer-file-name) :other t)
+                      (direx:direx-mode :align left :size 40 :select t)))
+
+(setq shackle-default-rule '(:align t :select t :size 15))
+
+(setq shackle-default-alignment 'below)
+
+(setq shackle-default-size 0.5)
+
+(shackle-mode)
diff --git a/lisp/my-vc.el b/lisp/my-vc.el
new file mode 100644 (file)
index 0000000..cba3ea9
--- /dev/null
@@ -0,0 +1,44 @@
+;;; -*- lexical-binding: t -*-
+
+(require 'ediff)
+(setq ediff-window-setup-function 'ediff-setup-windows-plain
+      ediff-split-window-function 'split-window-horizontally)
+
+
+(require 'git-gutter)
+(require 'git-gutter-fringe)
+
+(setq git-gutter:ask-p nil)
+
+(defun git-gutter:popup-hunk (&optional diffinfo)
+  "MODIFIED!! Popup current diff hunk. Removed the `save-window-excursion' so I can control it with shackle."
+  (interactive)
+  (git-gutter:awhen (or diffinfo
+                        (git-gutter:search-here-diffinfo git-gutter:diffinfos))
+    (pop-to-buffer (git-gutter:update-popuped-buffer it))))
+
+(global-git-gutter-mode)
+
+
+
+(defun my/git-reset-buffer ()
+  "Runs git-reset to unstage all changes on the current file. Then updates the git-gutter."
+  (interactive)
+  (call-process "git" nil nil nil "reset" (buffer-file-name))
+  (git-gutter)
+  (message "Finished git reset"))
+
+
+
+(require 'ibuffer-vc)
+
+(add-hook 'ibuffer-hook
+          (lambda ()
+            (ibuffer-vc-set-filter-groups-by-vc-root)
+            (unless (eq ibuffer-sorting-mode 'alphabetic)
+              (ibuffer-do-sort-by-alphabetic))))
+
+
+
+(require 'vc)
+(setq vc-follow-symlinks t)
diff --git a/packages/hl-todo b/packages/hl-todo
new file mode 160000 (submodule)
index 0000000..dff381a
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit dff381a5b2c9235bbdbe32123751ecdf17df7432
diff --git a/packages/popwin b/packages/popwin
deleted file mode 160000 (submodule)
index 95dea14..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 95dea14c60019d6cccf9a3b33e0dec4e1f22c304
diff --git a/packages/restclient b/packages/restclient
deleted file mode 160000 (submodule)
index 07a934d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 07a934df9a928de9602f2b6b6c6ab441f3d0713c
diff --git a/packages/shackle b/packages/shackle
new file mode 160000 (submodule)
index 0000000..730ccb2
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 730ccb2143e97ed69ae373edac34b460d45f9deb