Reformat to get rid of very long lines

This commit is contained in:
Dan Holmsand 2015-10-07 18:01:13 +02:00
parent fefbcf109e
commit b86e6278eb
1 changed files with 23 additions and 18 deletions

View File

@ -112,26 +112,31 @@
; just set the value, no need to worry about a cursor
(.! node :value value)
;; Setting "value" (below) moves the cursor position to the end which
;; gives the user a jarring experience.
;; Setting "value" (below) moves the cursor position to the
;; end which gives the user a jarring experience.
;;
;; But repositioning the cursor within the text, turns out
;; to be quite a challenge because changes in the text can be
;; But repositioning the cursor within the text, turns out to
;; be quite a challenge because changes in the text can be
;; triggered by various events like:
;; - a validation function rejecting a certain user inputted char
;; - the user enters a lower case char, but is transformed to upper.
;; - the user selects multiple chars and deletes text
;; - the user pastes in multiple chars, and some of them are rejected
;; by a validator.
;; - the user selects multiple chars and then types in a single
;; new char to repalce them all.
;; Coming up with a sane cursor repositioning strategy hasn't been easy
;; ALTHOUGH in the end, it kinda fell out nicely, and it appears to sanely
;; handle all the cases we could think of.
;; So this is just a warning. The code below is simple enough, but if
;; you are tempted to change it, be aware of all the scenarios you have handle.
(let [existing-offset-from-end (- (count node-value) (.' node :selectionStart))
new-cursor-offset (- (count value) existing-offset-from-end)]
;; - a validation function rejecting a user inputted char
;; - the user enters a lower case char, but is transformed to
;; upper.
;; - the user selects multiple chars and deletes text
;; - the user pastes in multiple chars, and some of them are
;; rejected by a validator.
;; - the user selects multiple chars and then types in a
;; single new char to repalce them all.
;; Coming up with a sane cursor repositioning strategy hasn't
;; been easy ALTHOUGH in the end, it kinda fell out nicely,
;; and it appears to sanely handle all the cases we could
;; think of.
;; So this is just a warning. The code below is simple
;; enough, but if you are tempted to change it, be aware of
;; all the scenarios you have handle.
(let [existing-offset-from-end (- (count node-value)
(.' node :selectionStart))
new-cursor-offset (- (count value)
existing-offset-from-end)]
(.! node :value value)
(.! node :selectionStart new-cursor-offset)
(.! node :selectionEnd new-cursor-offset)))))))