branch: externals/sketch-mode commit da9e1d7ff54a532df76976e3555e7f2fcd2f4424 Author: Daniel Nicolai <dalanico...@gmail.com> Commit: Daniel Nicolai <dalanico...@gmail.com>
Implement help-echo showing coordinates --- sketch-mode.el | 40 ++++++++++++++++++++++++++++++++++------ 1 file changed, 34 insertions(+), 6 deletions(-) diff --git a/sketch-mode.el b/sketch-mode.el index 0f820af..713c67c 100644 --- a/sketch-mode.el +++ b/sketch-mode.el @@ -67,6 +67,14 @@ (defgroup sketch nil "Configure default sketch (object) properties.") +(defcustom sketch-im-x-offset 7 + "Default grid line separation distance (integer)." + :type 'integer) + +(defcustom sketch-im-y-offset 1 + "Default grid line separation distance (integer)." + :type 'integer) + (defcustom sketch-default-image-size '(800 . 600) "Default size for sketch canvas. Cons cell with car and cdr both integers, respectively @@ -157,7 +165,7 @@ In sketch-mode buffer press \\[sketch-transient] to activate the transient." :lighter "sketch-mode" :keymap - '(([drag-mouse-1] . sketch-interactively) + '(([sketch drag-mouse-1] . sketch-interactively) ;; ([C-S-drag-mouse-1] . sketch-interactively) ("" . sketch-transient))) @@ -203,7 +211,17 @@ transient." (svg-line svg-grid 0 pos width pos :stroke-dasharray (when dash "2,4")) (setq dash (if dash nil t))))) (setq svg (append svg-canvas (when sketch-show-grid (cddr svg-grid)))) - (svg-image svg :pointer 'arrow :grid-param grid-param))) + (svg-image svg + :grid-param grid-param + :pointer 'arrow + :map `(((rect . ((0 . 0) . (,(dom-attr svg 'width) . ,(dom-attr svg 'height)))) + ;; :map '(((rect . ((0 . 0) . (800 . 600))) + sketch + (pointer arrow help-echo (lambda (_ _ pos) + (let ((coords (cdr (mouse-pixel-position)))) + (print (format "(%s, %s)" + (- (car coords) sketch-im-x-offset) + (+ (cdr coords) sketch-im-y-offset))))))))))) (sketch-mode) (call-interactively 'sketch-transient) (setq svg-sketch (svg-create width height))) @@ -367,9 +385,9 @@ values" ["Labels" ("l" "Toggle labels" sketch-toggle-labels)]] ["Commands" - [([drag-mouse-1] "Draw object" sketch-interactively-1) - ([mouse-1] "Draw text" sketch-text-interactively) - ([C-S-drag-mouse-1] "Crop image" sketch-crop)] + [([sketch drag-mouse-1] "Draw object" sketch-interactively-1) + ([sketch mouse-1] "Draw text" sketch-text-interactively) + ([sketch C-S-drag-mouse-1] "Crop image" sketch-crop)] [("R" "Remove object" sketch-remove-object) ("u" "Undo" sketch-undo) ("r" "Redo" sketch-redo)] @@ -493,7 +511,17 @@ values" (cddr svg-sketch) (when sketch-show-labels (sketch-labels)))) (erase-buffer) ;; a (not exact) alternative is to use (kill-backward-chars 1) - (insert-image (svg-image svg :pointer 'arrow :grid-param grid-param))) + (insert-image (svg-image svg + :pointer 'arrow + :grid-param grid-param + :map `(((rect . ((0 . 0) . (,(dom-attr svg 'width) . ,(dom-attr svg 'height)))) + ;; :map '(((rect . ((0 . 0) . (800 . 600))) + sketch + (pointer arrow help-echo (lambda (_ _ pos) + (let ((coords (mouse-pixel-position))) + (print (format "(%s, %s)" + (- (cadr coords) pos) + (cddr coords))))))))))) (transient-define-suffix sketch-interactively-1 (event) (interactive "@e")