diff options
| author | Joakim Verona | 2012-08-19 02:44:11 +0200 |
|---|---|---|
| committer | Joakim Verona | 2012-08-19 02:44:11 +0200 |
| commit | 5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (patch) | |
| tree | 532faa27319b3bb199d414dc85e63a58246d30b0 /lisp/progmodes | |
| parent | d02344322b0d2fea8dd9ad9dd0a6c70e058f967b (diff) | |
| parent | e757f1c6f393cf82057dbee0a4325b07f0fd55c4 (diff) | |
| download | emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.tar.gz emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.zip | |
upstream
Diffstat (limited to 'lisp/progmodes')
| -rw-r--r-- | lisp/progmodes/subword.el | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/lisp/progmodes/subword.el b/lisp/progmodes/subword.el index 7d8dd4301a2..e541aed8867 100644 --- a/lisp/progmodes/subword.el +++ b/lisp/progmodes/subword.el | |||
| @@ -80,6 +80,20 @@ | |||
| 80 | 80 | ||
| 81 | ;;; Code: | 81 | ;;; Code: |
| 82 | 82 | ||
| 83 | (defvar subword-forward-function 'subword-forward-internal | ||
| 84 | "Function to call for forward subword movement.") | ||
| 85 | |||
| 86 | (defvar subword-backward-function 'subword-backward-internal | ||
| 87 | "Function to call for backward subword movement.") | ||
| 88 | |||
| 89 | (defvar subword-forward-regexp | ||
| 90 | "\\W*\\(\\([[:upper:]]*\\W?\\)[[:lower:][:digit:]]*\\)" | ||
| 91 | "Regexp used by `subword-forward-internal'.") | ||
| 92 | |||
| 93 | (defvar subword-backward-regexp | ||
| 94 | "\\(\\(\\W\\|[[:lower:][:digit:]]\\)\\([[:upper:]]+\\W*\\)\\|\\W\\w+\\)" | ||
| 95 | "Regexp used by `subword-backward-internal'.") | ||
| 96 | |||
| 83 | (defvar subword-mode-map | 97 | (defvar subword-mode-map |
| 84 | (let ((map (make-sparse-keymap))) | 98 | (let ((map (make-sparse-keymap))) |
| 85 | (dolist (cmd '(forward-word backward-word mark-word kill-word | 99 | (dolist (cmd '(forward-word backward-word mark-word kill-word |
| @@ -138,10 +152,10 @@ Optional argument ARG is the same as for `forward-word'." | |||
| 138 | (cond | 152 | (cond |
| 139 | ((< 0 arg) | 153 | ((< 0 arg) |
| 140 | (dotimes (i arg (point)) | 154 | (dotimes (i arg (point)) |
| 141 | (subword-forward-internal))) | 155 | (funcall subword-forward-function))) |
| 142 | ((> 0 arg) | 156 | ((> 0 arg) |
| 143 | (dotimes (i (- arg) (point)) | 157 | (dotimes (i (- arg) (point)) |
| 144 | (subword-backward-internal))) | 158 | (funcall subword-backward-function))) |
| 145 | (t | 159 | (t |
| 146 | (point)))) | 160 | (point)))) |
| 147 | 161 | ||
| @@ -249,9 +263,7 @@ Optional argument ARG is the same as for `capitalize-word'." | |||
| 249 | (if (and | 263 | (if (and |
| 250 | (save-excursion | 264 | (save-excursion |
| 251 | (let ((case-fold-search nil)) | 265 | (let ((case-fold-search nil)) |
| 252 | (re-search-forward | 266 | (re-search-forward subword-forward-regexp nil t))) |
| 253 | (concat "\\W*\\(\\([[:upper:]]*\\W?\\)[[:lower:][:digit:]]*\\)") | ||
| 254 | nil t))) | ||
| 255 | (> (match-end 0) (point))) | 267 | (> (match-end 0) (point))) |
| 256 | (goto-char | 268 | (goto-char |
| 257 | (cond | 269 | (cond |
| @@ -265,11 +277,7 @@ Optional argument ARG is the same as for `capitalize-word'." | |||
| 265 | (defun subword-backward-internal () | 277 | (defun subword-backward-internal () |
| 266 | (if (save-excursion | 278 | (if (save-excursion |
| 267 | (let ((case-fold-search nil)) | 279 | (let ((case-fold-search nil)) |
| 268 | (re-search-backward | 280 | (re-search-backward subword-backward-regexp nil t))) |
| 269 | (concat | ||
| 270 | "\\(\\(\\W\\|[[:lower:][:digit:]]\\)\\([[:upper:]]+\\W*\\)" | ||
| 271 | "\\|\\W\\w+\\)") | ||
| 272 | nil t))) | ||
| 273 | (goto-char | 281 | (goto-char |
| 274 | (cond | 282 | (cond |
| 275 | ((and (match-end 3) | 283 | ((and (match-end 3) |