diff --git a/emacs.el b/emacs.el index f8125a5..0468bd7 100644 --- a/emacs.el +++ b/emacs.el @@ -530,8 +530,9 @@ Otherwize hook it." (run-with-idle-timer 10 t (lambda () (push-mark) - (when (fboundp 'visible-mark-move-overlays) - (visible-mark-move-overlays)))) + ;; (when (fboundp 'visible-mark-move-overlays) + ;; (visible-mark-move-overlays)) + )) (when (fboundp 'back-button-mode) (back-button-mode 1)) @@ -555,7 +556,8 @@ THEM are function and its args." :around 'visible-mark-move-overlays--avoid-disappear) - (global-visible-mark-mode 1)) + ;; (global-visible-mark-mode 1) + ) ;; visible-mark-mode ;; visible-mark-overlays @@ -2917,6 +2919,56 @@ Any output will be written to current buffer." (add-hook 'post-command-hook 'highlight-mark-post-command) +;;;;;;;;;;;;;; +;; mmv +;; https://www.emacswiki.org/emacs/MakingMarkVisible + +;;;; Make the mark visible, and the visibility toggleable. ('mmv' means 'make +;;;; mark visible'.) By Patrick Gundlach, Teemu Leisti, and Stefan. + +(defface mmv-face + '((t :background "maroon2" :foreground "white")) + "Face used for showing the mark's position.") + +(defvar-local mmv-mark-overlay nil + "The overlay for showing the mark's position.") + +(defvar-local mmv-is-mark-visible t + "The overlay is visible only when this variable's value is t.") + +(defun mmv-draw-mark (&rest _) + "Make the mark's position stand out by means of a one-character-long overlay. + If the value of variable `mmv-is-mark-visible' is nil, the mark will be + invisible." + (unless mmv-mark-overlay + (setq mmv-mark-overlay (make-overlay 0 0 nil t)) + (overlay-put mmv-mark-overlay 'face 'mmv-face)) + (let ((mark-position (mark t))) + (cond + ((null mark-position) (delete-overlay mmv-mark-overlay)) + ((and (< mark-position (point-max)) + (not (eq ?\n (char-after mark-position)))) + (overlay-put mmv-mark-overlay 'after-string nil) + (move-overlay mmv-mark-overlay mark-position (1+ mark-position))) + (t + ;; This branch is called when the mark is at the end of a line or at the + ;; end of the buffer. We use a bit of trickery to avoid the higlight + ;; extending from the mark all the way to the right end of the frame. + (overlay-put mmv-mark-overlay 'after-string + (propertize " " 'face (overlay-get mmv-mark-overlay 'face))) + (move-overlay mmv-mark-overlay mark-position mark-position))))) + +(add-hook 'pre-redisplay-functions #'mmv-draw-mark) + +(defun mmv-toggle-mark-visibility () + "Toggles the mark's visiblity and redraws it (whether invisible or visible)." + (interactive) + (setq mmv-is-mark-visible (not mmv-is-mark-visible)) + (if mmv-is-mark-visible + (set-face-attribute 'mmv-face nil :background "maroon2" :foreground "white") + (set-face-attribute 'mmv-face nil :background 'unspecified :foreground 'unspecified)) + (mmv-draw-mark)) + ;; Local Variables: ;; flycheck-disabled-checkers: (emacs-lisp-checkdoc)