aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/progmodes
diff options
context:
space:
mode:
authorJoakim Verona2012-08-19 02:44:11 +0200
committerJoakim Verona2012-08-19 02:44:11 +0200
commit5436d1df5e2ba0b4d4f72b03a1cd09b20403654b (patch)
tree532faa27319b3bb199d414dc85e63a58246d30b0 /lisp/progmodes
parentd02344322b0d2fea8dd9ad9dd0a6c70e058f967b (diff)
parente757f1c6f393cf82057dbee0a4325b07f0fd55c4 (diff)
downloademacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.tar.gz
emacs-5436d1df5e2ba0b4d4f72b03a1cd09b20403654b.zip
upstream
Diffstat (limited to 'lisp/progmodes')
-rw-r--r--lisp/progmodes/subword.el28
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)