X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;f=spray.el;h=1ebdab22537a6b6493fc25e32126aa520ff906b8;hb=02d31260eed4067fbbff2d5a194171a0228bc791;hp=afefae2541f06ae66cc38f2af4e5da1e9967c3f9;hpb=280e554878f25318f94e032f8acde6281905aa2e;p=spray diff --git a/spray.el b/spray.el index afefae2..1ebdab2 100644 --- a/spray.el +++ b/spray.el @@ -35,6 +35,10 @@ ;; ;; For more informations, see Readme.org. +;; Known bugs. +;; repeated words are indistinguishable, for example +;; "going, going, gone" reads like going, gone, with a slight delay. + ;;; Change Log: ;; 0.0.0 test release ;; 0.0.1 add spray-set-margins @@ -49,7 +53,7 @@ (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-margin-left 1 "character margin at left of buffer. Characters are as big as spray text characters.") (defvar spray-mode-map (let ((km (make-sparse-keymap))) @@ -118,10 +122,13 @@ buffer-face-mode buffer-face-mode-face) spray--saved-smartparens-enabled (and (boundp 'smartparens-mode) - smartparens-mode)) + smartparens-mode) + spray--saved-highlight-symbol-enabled (and (boundp 'highlight-symbol-mode) + highlight-symbol-mode)) ;; smartparens wrapping of all letter binds can cause problems. ;; for example, it can cause auto-complete to activate (and spray--saved-smartparens-enabled (smartparens-mode -1)) + (and spray--saved-highlight-symbol-enabled (highlight-symbol-mode -1)) (setq cursor-type nil) (let ((buffer-face-mode-face `(:height ,spray-height))) (buffer-face-mode 1)) @@ -132,6 +139,7 @@ (spray-start)) (t (and spray--saved-smartparens-enabled (smartparens-mode 1)) + (and spray--saved-highlight-symbol-enabled (highlight-symbol-mode 1)) (setq cursor-type spray--saved-cursor-type) (if spray--saved-restriction (narrow-to-region (car spray--saved-restriction) @@ -151,9 +159,9 @@ (spray-mode -1)) (defun spray--word-at-point () - (skip-chars-backward "^\s\t\n") + (skip-chars-backward "^\s\t\n—") (let* ((beg (point)) - (len (skip-chars-forward "^\s\t\n")) + (len (+ (skip-chars-forward "^\s\t\n—") (skip-chars-forward "—"))) (end (point)) (accent (+ beg (cl-case len ((1) 1) @@ -161,11 +169,15 @@ ((6 7 8 9) 3) ((10 11 12 13) 4) (t 5))))) + ;; this fairly obfuscated, using magic numbers to store state + ;; it would be nice to sometime patch this so it is more readable. + ;; for greater than 9 length, we display for twice as long + ;; for some punctuation, we display a blank (setq spray--delay (+ (if (> len 9) 1 0) (if (looking-at "\n[\s\t\n]") 3 0) (cl-case (char-before) ((?. ?! ?\? ?\;) 3) - ((?, ?:) 1) + ((?, ?: ?—) 1) (t 0)))) (move-overlay spray--accent-overlay (1- accent) accent) (move-overlay spray--base-overlay beg end) @@ -184,7 +196,7 @@ (widen) (if (eobp) (spray-mode -1) - (skip-chars-forward "\s\t\n") + (skip-chars-forward "\s\t\n—") (spray--word-at-point))))) ;; * interactive commands @@ -214,15 +226,15 @@ Returns t if spray was unpaused." (interactive) (spray-stop) (widen) - (skip-chars-forward "\s\t\n") + (skip-chars-forward "\s\t\n—") (spray--word-at-point)) (defun spray-backward-word () (interactive) (spray-stop) (widen) - (skip-chars-backward "^\s\t\n") - (skip-chars-backward "\s\t\n") + (skip-chars-backward "^\s\t\n—") + (skip-chars-backward "\s\t\n—") (spray--word-at-point)) (defun spray-faster ()