diff options
| author | Michael Kifer | 1995-10-14 02:26:46 +0000 |
|---|---|---|
| committer | Michael Kifer | 1995-10-14 02:26:46 +0000 |
| commit | a595547cc5d1b912543b866b1aaa9de741ec9aee (patch) | |
| tree | c5f875f46306ac75d51f107bdf77d27c122d68c2 | |
| parent | f90edb57db801860dbcceed5147a5244ede1d5db (diff) | |
| download | emacs-a595547cc5d1b912543b866b1aaa9de741ec9aee.tar.gz emacs-a595547cc5d1b912543b866b1aaa9de741ec9aee.zip | |
* viper-mous.el (vip-surrounding-word): modified to understand tripple clicks.
| -rw-r--r-- | lisp/emulation/viper-mous.el | 102 |
1 files changed, 36 insertions, 66 deletions
diff --git a/lisp/emulation/viper-mous.el b/lisp/emulation/viper-mous.el index e3b91fbea6a..d4f134503ef 100644 --- a/lisp/emulation/viper-mous.el +++ b/lisp/emulation/viper-mous.el | |||
| @@ -84,97 +84,65 @@ For convenience, in Lisp modes, `-' is considered alphanumeric. | |||
| 84 | If CLICK-COUNT is 3 or more, returns the line clicked on with leading and | 84 | If CLICK-COUNT is 3 or more, returns the line clicked on with leading and |
| 85 | trailing space and tabs removed. In that case, the first argument, COUNT, | 85 | trailing space and tabs removed. In that case, the first argument, COUNT, |
| 86 | is ignored." | 86 | is ignored." |
| 87 | (let ((basic-alpha "_a-zA-Z0-9") ; it is important for `_' to come first | 87 | (let ((modifiers "") |
| 88 | (basic-alpha-B "[_a-zA-Z0-9]") | ||
| 89 | (basic-nonalphasep-B vip-NONALPHASEP-B) | ||
| 90 | (end-modifiers "") | ||
| 91 | (start-modifiers "") | ||
| 92 | vip-ALPHA vip-ALPHA-B | ||
| 93 | vip-NONALPHA vip-NONALPHA-B | ||
| 94 | vip-ALPHASEP vip-ALPHASEP-B | ||
| 95 | vip-NONALPHASEP vip-NONALPHASEP-B | ||
| 96 | beg skip-flag result | 88 | beg skip-flag result |
| 97 | one-char-word-func word-function-forw word-function-back word-beg) | 89 | word-beg) |
| 98 | (if (> click-count 2) | 90 | (if (> click-count 2) |
| 99 | (save-excursion | 91 | (save-excursion |
| 100 | (beginning-of-line) | 92 | (beginning-of-line) |
| 101 | (skip-chars-forward " \t") | 93 | (vip-skip-all-separators-forward 'within-line) |
| 102 | (setq beg (point)) | 94 | (setq beg (point)) |
| 103 | (end-of-line) | 95 | (end-of-line) |
| 104 | (setq result (buffer-substring beg (point)))) | 96 | (setq result (buffer-substring beg (point)))) |
| 105 | 97 | ||
| 106 | (if (and (looking-at basic-nonalphasep-B) | 98 | (if (and (not (vip-looking-at-alphasep)) |
| 107 | (or (save-excursion (vip-backward-char-carefully) | 99 | (or (save-excursion (vip-backward-char-carefully) |
| 108 | (looking-at basic-alpha-B)) | 100 | (vip-looking-at-alpha)) |
| 109 | (save-excursion (vip-forward-char-carefully) | 101 | (save-excursion (vip-forward-char-carefully) |
| 110 | (looking-at basic-alpha-B)))) | 102 | (vip-looking-at-alpha)))) |
| 111 | (setq start-modifiers | 103 | (setq modifiers |
| 112 | (cond ((looking-at "\\\\") "\\\\") | 104 | (cond ((looking-at "\\\\") "\\\\") |
| 113 | ((looking-at "-") "") | 105 | ((looking-at "-") "C-C-") |
| 114 | ((looking-at "[][]") "][") | 106 | ((looking-at "[][]") "][") |
| 115 | ((looking-at "[()]") ")(") | 107 | ((looking-at "[()]") ")(") |
| 116 | ((looking-at "[{}]") "{}") | 108 | ((looking-at "[{}]") "{}") |
| 117 | ((looking-at "[<>]") "<>") | 109 | ((looking-at "[<>]") "<>") |
| 118 | ((looking-at "[`']") "`'") | 110 | ((looking-at "[`']") "`'") |
| 119 | ((looking-at "\\^") "") | 111 | ((looking-at "\\^") "\\^") |
| 120 | ((looking-at vip-SEP-B) "") | 112 | ((vip-looking-at-separator) "") |
| 121 | (t (char-to-string (following-char)))) | 113 | (t (char-to-string (following-char)))) |
| 122 | end-modifiers | 114 | )) |
| 123 | (cond ((looking-at "-") "C-C-") ;; note the C-C trick | ||
| 124 | ((looking-at "\\^") "^") | ||
| 125 | (t "")))) | ||
| 126 | 115 | ||
| 127 | ;; Add `-' to alphanum, if it wasn't added and in we are in Lisp | 116 | ;; Add `-' to alphanum, if it wasn't added and if we are in Lisp |
| 128 | (or (looking-at "-") | 117 | (or (looking-at "-") |
| 129 | (not (string-match "lisp" (symbol-name major-mode))) | 118 | (not (string-match "lisp" (symbol-name major-mode))) |
| 130 | (setq end-modifiers (concat end-modifiers "C-C-"))) | 119 | (setq modifiers (concat modifiers "C-C-"))) |
| 131 | 120 | ||
| 132 | (setq vip-ALPHA | ||
| 133 | (format "%s%s%s" start-modifiers basic-alpha end-modifiers) | ||
| 134 | vip-ALPHA-B | ||
| 135 | (format "[%s%s%s]" start-modifiers basic-alpha end-modifiers) | ||
| 136 | vip-NONALPHA (concat "^" vip-ALPHA) | ||
| 137 | vip-NONALPHA-B (concat "[" vip-NONALPHA "]") | ||
| 138 | vip-ALPHASEP (concat vip-ALPHA vip-SEP) | ||
| 139 | vip-ALPHASEP-B | ||
| 140 | (format "[%s%s%s%s]" | ||
| 141 | start-modifiers basic-alpha vip-SEP end-modifiers) | ||
| 142 | vip-NONALPHASEP (format "^%s%s" vip-SEP vip-ALPHA) | ||
| 143 | vip-NONALPHASEP-B (format "[^%s%s]" vip-SEP vip-ALPHA) | ||
| 144 | ) | ||
| 145 | |||
| 146 | (if (> click-count 1) | ||
| 147 | (setq one-char-word-func 'vip-one-char-Word-p | ||
| 148 | word-function-forw 'vip-end-of-Word | ||
| 149 | word-function-back 'vip-backward-Word) | ||
| 150 | (setq one-char-word-func 'vip-one-char-word-p | ||
| 151 | word-function-forw 'vip-end-of-word | ||
| 152 | word-function-back 'vip-backward-word)) | ||
| 153 | 121 | ||
| 154 | (save-excursion | 122 | (save-excursion |
| 155 | (cond ((> click-count 1) (skip-chars-backward vip-NONSEP)) | 123 | (cond ((> click-count 1) (vip-skip-nonseparators 'backward)) |
| 156 | ((looking-at vip-ALPHA-B) (skip-chars-backward vip-ALPHA)) | 124 | ((vip-looking-at-alpha modifiers) |
| 157 | ((looking-at vip-NONALPHASEP-B) | 125 | (vip-skip-alpha-backward modifiers)) |
| 158 | (skip-chars-backward vip-NONALPHASEP)) | 126 | ((not (vip-looking-at-alphasep modifiers)) |
| 159 | (t (funcall word-function-back 1))) | 127 | (vip-skip-nonalphasep-backward)) |
| 160 | 128 | (t (if (> click-count 1) | |
| 129 | (vip-skip-nonseparators 'backward) | ||
| 130 | (vip-skip-alpha-backward modifiers)))) | ||
| 131 | |||
| 161 | (setq word-beg (point)) | 132 | (setq word-beg (point)) |
| 162 | 133 | ||
| 163 | (setq skip-flag t) | 134 | (setq skip-flag nil) ; don't move 1 char forw the first time |
| 164 | (while (> count 0) | 135 | (while (> count 0) |
| 165 | ;; skip-flag and the test for 1-char word takes care of the | 136 | (if skip-flag (vip-forward-char-carefully 1)) |
| 166 | ;; special treatment that vip-end-of-word gives to 1-character | 137 | (setq skip-flag t) ; now always move 1 char forward |
| 167 | ;; words. Otherwise, clicking once on such a word will insert two | 138 | (if (> click-count 1) |
| 168 | ;; words. | 139 | (vip-skip-nonseparators 'forward) |
| 169 | (if (and skip-flag (funcall one-char-word-func)) | 140 | (vip-skip-alpha-forward modifiers)) |
| 170 | (setq skip-flag (not skip-flag)) | ||
| 171 | (funcall word-function-forw 1)) | ||
| 172 | (setq count (1- count))) | 141 | (setq count (1- count))) |
| 173 | 142 | ||
| 174 | (vip-forward-char-carefully) | ||
| 175 | (setq result (buffer-substring word-beg (point)))) | 143 | (setq result (buffer-substring word-beg (point)))) |
| 176 | ) ; if | 144 | ) ; if |
| 177 | ;; XEmacs doesn't have set-text-propertiesr, but there buffer-substring | 145 | ;; XEmacs doesn't have set-text-properties, but there buffer-substring |
| 178 | ;; doesn't return properties together with the string, so it's not needed. | 146 | ;; doesn't return properties together with the string, so it's not needed. |
| 179 | (if vip-emacs-p | 147 | (if vip-emacs-p |
| 180 | (set-text-properties 0 (length result) nil result)) | 148 | (set-text-properties 0 (length result) nil result)) |
| @@ -432,12 +400,14 @@ bindings in viper.el and in the Viper manual." | |||
| 432 | 400 | ||
| 433 | 401 | ||
| 434 | (cond ((vip-window-display-p) | 402 | (cond ((vip-window-display-p) |
| 435 | (let* ((search-key (if vip-xemacs-p [(meta button1up)] [S-mouse-1])) | 403 | (let* ((search-key (if vip-xemacs-p |
| 404 | [(meta shift button1up)] [S-mouse-1])) | ||
| 436 | (search-key-catch (if vip-xemacs-p | 405 | (search-key-catch (if vip-xemacs-p |
| 437 | [(meta button1)] [S-down-mouse-1])) | 406 | [(meta shift button1)] [S-down-mouse-1])) |
| 438 | (insert-key (if vip-xemacs-p [(meta button2up)] [S-mouse-2])) | 407 | (insert-key (if vip-xemacs-p |
| 408 | [(meta shift button2up)] [S-mouse-2])) | ||
| 439 | (insert-key-catch (if vip-xemacs-p | 409 | (insert-key-catch (if vip-xemacs-p |
| 440 | [(meta button2)] [S-down-mouse-2])) | 410 | [(meta shift button2)] [S-down-mouse-2])) |
| 441 | (search-key-unbound (and (not (key-binding search-key)) | 411 | (search-key-unbound (and (not (key-binding search-key)) |
| 442 | (not (key-binding search-key-catch)))) | 412 | (not (key-binding search-key-catch)))) |
| 443 | (insert-key-unbound (and (not (key-binding insert-key)) | 413 | (insert-key-unbound (and (not (key-binding insert-key)) |