diff --git a/global.org b/global.org index c6d6822..bb215e2 100644 --- a/global.org +++ b/global.org @@ -990,15 +990,38 @@ (autoload 'enable-paredit-mode "paredit" "Turn on pseudo-structural editing of Lisp code." t) (add-hook 'emacs-lisp-mode-hook #'enable-paredit-mode) - (with-eval-after-load "paredit" - (define-paredit-pair ?“ ?” "pretty-quotes") - (require 'hydra) - (defhydra hydra-paren (global-map "C-SPC") - "paren slurp and barf" - ("C-f" paredit-forward-slurp-sexp "slurp forward") - ("M-f" paredit-forward-barf-sexp "barf forward") - ("C-b" paredit-backward-slurp-sexp "slurp backward") - ("M-b" paredit-backward-barf-sexp "barf backward"))) + (require 'hydra) + (require 'highlight-parentheses) + + (defun hydra-paren/hl-paren-force-fix () + ;;; This is needed b/c hl-parent caches the point position and + ;;; refuses to update if the point did not move + (let ((hl-paren-last-point -1)) + (hl-paren-highlight))) + (defun hydra-paren/pre () + (unless (boundp 'hydra-paren/hpm) + (highlight-parentheses-mode 1)) + (setq hydra-paren/hpm t)) + (defun hydra-paren/post () + (highlight-parentheses-mode -1) + (makunbound 'hydra-paren/hpm)) + (global-set-key + (kbd "C-SPC") + (defhydra hydra-paren + (:pre hydra-paren/pre :post hydra-paren/post) + "paren slurp and barf" + ("l" (progn + (paredit-forward-slurp-sexp) + (hydra-paren/hl-paren-force-fix)) "slurp forward") + ("j" (progn + (paredit-forward-barf-sexp) + (hydra-paren/hl-paren-force-fix)) "barf forward") + ("s" (progn + (paredit-backward-slurp-sexp) + (hydra-paren/hl-paren-force-fix)) "slurp backward") + ("f" (progn + (paredit-backward-barf-sexp) + (hydra-paren/hl-paren-force-fix)) "barf backward"))) #+END_SRC *** Replace last sexp I use this a lot to evaluate (e.g.) quick computations in files diff --git a/margin-current-line b/margin-current-line index 6826044..5c1676f 160000 --- a/margin-current-line +++ b/margin-current-line @@ -1 +1 @@ -Subproject commit 6826044e5167c64646bb5b18101184d8da6e666c +Subproject commit 5c1676f44a5eb251c68b7219b0815d42d7d81080