X-Git-Url: https://iankelling.org/git/?p=spray;a=blobdiff_plain;f=spray.el;h=8e3b9225cf37568d1037e02b3391f4a325daba09;hp=5a4318bba91adf3ce1c04f94242460800f765506;hb=56e5f215f349620f23022947e00676d29bd38794;hpb=82ffa7dc81feace23f4244211016e934980053ce diff --git a/spray.el b/spray.el index 5a4318b..8e3b922 100644 --- a/spray.el +++ b/spray.el @@ -47,6 +47,8 @@ (defvar spray-wpm 400 "words/min") (defvar spray-height 400 "height of characters") +(defvar spray-margin-top 1 "character margin at top of buffer. Characters are as big as spray text characters.") +(defvar spray-margin-left 0 "character margin at left of buffer. Characters are as big as spray text characters.") (defvar spray-mode-map (let ((km (make-sparse-keymap))) @@ -56,7 +58,8 @@ (define-key km (kbd "") 'spray-backward-word) (define-key km (kbd "") 'spray-forward-word) (define-key km (kbd "f") 'spray-faster) - (define-key km (kbd "s") 'spray-slower) + (define-key km (kbd "q") 'spray-quit) + (define-key km (kbd "") 'spray-quit) km) "keymap for spray-mode buffers") @@ -68,8 +71,8 @@ :foreground (face-foreground 'default) :slant 'normal) -(make-face 'spray-orp-face) -(set-face-attribute 'spray-orp-face nil +(make-face 'spray-accent-face) +(set-face-attribute 'spray-accent-face nil :foreground "red" :overline (face-foreground 'default) :underline (face-foreground 'default) @@ -77,7 +80,8 @@ ;; * internal vars -(defvar spray--margin-string "") +(defvar spray--margin-string "" + "Currently not used.") (defvar spray--base-overlay nil) (defvar spray--orp-overlay nil) (defvar spray--running nil) @@ -88,11 +92,11 @@ ;; * utility functions -(defun spray-set-margins (left above) - "add margins before/above the spray text. each arguments can be -an integer or a float value." +(defun spray-set-margins () + "Setup spray--margin-string" (setq spray--margin-string - (propertize " " 'display `((space-width ,left) (height ,(1+ above)))))) + (concat (make-string spray-margin-top 10) ;; 10 = ascii newline + (make-string spray-margin-left 32)))) ;; 32 = ascii space ;; * the mode @@ -116,8 +120,7 @@ an integer or a float value." (overlay-put spray--base-overlay 'priority 100) (overlay-put spray--base-overlay 'face 'spray-base-face) (overlay-put spray--orp-overlay 'priority 101) - (overlay-put spray--orp-overlay 'face 'spray-orp-face) - (add-hook 'pre-command-hook 'spray--pre-command-handler) + (overlay-put spray--orp-overlay 'face 'spray-accent-face) (spray-start)) (t (setq cursor-type spray--saved-cursor-type) @@ -131,12 +134,12 @@ an integer or a float value." (buffer-face-mode 1))) (delete-overlay spray--base-overlay) (delete-overlay spray--orp-overlay) - (remove-hook 'pre-command-hook 'spray--pre-command-handler) (spray-stop)))) -(defun spray--pre-command-handler () - (unless (string-match "^spray-" (symbol-name this-command)) - (spray-mode -1))) +(defun spray-quit () + "Exit spray mode." + (interactive) + (spray-mode -1)) (defun spray--word-at-point () (skip-chars-backward "^\s\t\n") @@ -157,6 +160,7 @@ an integer or a float value." (t 0)))) (move-overlay spray--orp-overlay (1- orp) orp) (move-overlay spray--base-overlay beg end) + (spray-set-margins) (overlay-put spray--base-overlay 'before-string (concat spray--margin-string (make-string (- 5 (- orp beg)) ?\s)))