annotate lisp/progmodes/cc-subword.el @ 68807:7ba97c461db7

Revision: emacs@sv.gnu.org/emacs--devo--0--patch-69 rcirc: Add flexible response formatting; Add nick abbrevs 2006-02-12 Miles Bader <miles@gnu.org> * lisp/net/rcirc.el (rcirc-nick-abbrevs, rcirc-response-formats): New variables. (rcirc-abbrev-nick): New function. (rcirc-format-response-string): Rewrite to use the formats in `rcirc-response-formats' and expand escape sequences therein. A text-property `rcirc-text' is added over the actual response text to make easy to find inside the returned string. (rcirc-print): When filling, just look for the `rcirc-text' text-property to find the appropriate fill prefix, instead of using hardwired patterns.
author Miles Bader <miles@gnu.org>
date Sat, 11 Feb 2006 21:42:23 +0000
parents dc49655f57ae
children 1be7d556ba69
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
67252
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
1 ;;; cc-subword.el --- Handling capitalized subwords in a nomenclature
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
2
68773
dc49655f57ae Update copyright for 2006.
Nick Roberts <nickrob@snap.net.nz>
parents: 67252
diff changeset
3 ;; Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
67252
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
4
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
5 ;; Author: Masatake YAMATO
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
6
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
7 ;; This program is free software; you can redistribute it and/or modify
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
8 ;; it under the terms of the GNU General Public License as published by
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
9 ;; the Free Software Foundation; either version 2, or (at your option)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
10 ;; any later version.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
11
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
12 ;; This program is distributed in the hope that it will be useful,
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
15 ;; GNU General Public License for more details.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
16
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
17 ;; You should have received a copy of the GNU General Public License
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
18 ;; along with this program; see the file COPYING. If not, write to
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
19 ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
20 ;; Boston, MA 02110-1301, USA.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
21
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
22 ;;; Commentary:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
23
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
24 ;; This package provides `subword' oriented commands and a minor mode
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
25 ;; (`c-subword-mode') that substitutes the common word handling
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
26 ;; functions with them.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
27
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
28 ;; In spite of GNU Coding Standards, it is popular to name a symbol by
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
29 ;; mixing uppercase and lowercase letters, e.g. "GtkWidget",
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
30 ;; "EmacsFrameClass", "NSGraphicsContext", etc. Here we call these
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
31 ;; mixed case symbols `nomenclatures'. Also, each capitalized (or
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
32 ;; completely uppercase) part of a nomenclature is called a `subword'.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
33 ;; Here are some examples:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
34
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
35 ;; Nomenclature Subwords
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
36 ;; ===========================================================
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
37 ;; GtkWindow => "Gtk" and "Window"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
38 ;; EmacsFrameClass => "Emacs", "Frame" and "Class"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
39 ;; NSGraphicsContext => "NS", "Graphics" and "Context"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
40
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
41 ;; The subword oriented commands defined in this package recognize
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
42 ;; subwords in a nomenclature to move between them and to edit them as
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
43 ;; words.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
44
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
45 ;; In the minor mode, all common key bindings for word oriented
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
46 ;; commands are overridden by the subword oriented commands:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
47
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
48 ;; Key Word oriented command Subword oriented command
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
49 ;; ============================================================
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
50 ;; M-f `forward-word' `c-forward-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
51 ;; M-b `backward-word' `c-backward-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
52 ;; M-@ `mark-word' `c-mark-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
53 ;; M-d `kill-word' `c-kill-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
54 ;; M-DEL `backward-kill-word' `c-backward-kill-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
55 ;; M-t `transpose-words' `c-transpose-subwords'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
56 ;; M-c `capitalize-word' `c-capitalize-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
57 ;; M-u `upcase-word' `c-upcase-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
58 ;; M-l `downcase-word' `c-downcase-subword'
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
59 ;;
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
60 ;; Note: If you have changed the key bindings for the word oriented
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
61 ;; commands in your .emacs or a similar place, the keys you've changed
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
62 ;; to are also used for the corresponding subword oriented commands.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
63
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
64 ;; To make the mode turn on automatically, put the following code in
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
65 ;; your .emacs:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
66 ;;
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
67 ;; (add-hook 'c-mode-common-hook
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
68 ;; (lambda () (c-subword-mode 1)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
69 ;;
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
70
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
71 ;; Acknowledgment:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
72 ;; The regular expressions to detect subwords are mostly based on
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
73 ;; the old `c-forward-into-nomenclature' originally contributed by
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
74 ;; Terry_Glanfield dot Southern at rxuk dot xerox dot com.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
75
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
76 ;; TODO: ispell-word and subword oriented C-w in isearch.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
77
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
78 ;;; Code:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
79
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
80 (eval-when-compile
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
81 (let ((load-path
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
82 (if (and (boundp 'byte-compile-dest-file)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
83 (stringp byte-compile-dest-file))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
84 (cons (file-name-directory byte-compile-dest-file) load-path)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
85 load-path)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
86 (load "cc-bytecomp" nil t)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
87
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
88 (cc-require 'cc-defs)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
89 (cc-require 'cc-cmds)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
90
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
91 ;; Don't complain about the `define-minor-mode' form if it isn't defined.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
92 (cc-bytecomp-defvar c-subword-mode)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
93
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
94 ;;; Autoload directives must be on the top level, so we construct an
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
95 ;;; autoload form instead.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
96 ;;;###autoload (autoload 'c-subword-mode "cc-subword" "Mode enabling subword movement and editing keys." t)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
97
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
98 (if (not (fboundp 'define-minor-mode))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
99 (defun c-subword-mode ()
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
100 "(Missing) mode enabling subword movement and editing keys.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
101 This mode is not (yet) available in this version of (X)Emacs. Sorry! If
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
102 you really want it, please send a request to <bug-gnu-emacs@gnu.org>,
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
103 telling us which (X)Emacs version you're using."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
104 (interactive)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
105 (error
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
106 "c-subword-mode is not (yet) available in this version of (X)Emacs. Sorry!"))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
107
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
108 (defvar c-subword-mode-map
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
109 (let ((map (make-sparse-keymap)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
110 (substitute-key-definition 'forward-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
111 'c-forward-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
112 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
113 (substitute-key-definition 'backward-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
114 'c-backward-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
115 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
116 (substitute-key-definition 'mark-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
117 'c-mark-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
118 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
119
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
120 (substitute-key-definition 'kill-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
121 'c-kill-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
122 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
123 (substitute-key-definition 'backward-kill-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
124 'c-backward-kill-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
125 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
126
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
127 (substitute-key-definition 'transpose-words
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
128 'c-transpose-subwords
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
129 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
130
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
131 (substitute-key-definition 'capitalize-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
132 'c-capitalize-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
133 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
134 (substitute-key-definition 'upcase-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
135 'c-upcase-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
136 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
137 (substitute-key-definition 'downcase-word
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
138 'c-downcase-subword
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
139 map global-map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
140 map)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
141 "Keymap used in command `c-subword-mode' minor mode.")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
142
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
143 (define-minor-mode c-subword-mode
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
144 "Mode enabling subword movement and editing keys.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
145 In spite of GNU Coding Standards, it is popular to name a symbol by
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
146 mixing uppercase and lowercase letters, e.g. \"GtkWidget\",
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
147 \"EmacsFrameClass\", \"NSGraphicsContext\", etc. Here we call these
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
148 mixed case symbols `nomenclatures'. Also, each capitalized (or
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
149 completely uppercase) part of a nomenclature is called a `subword'.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
150 Here are some examples:
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
151
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
152 Nomenclature Subwords
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
153 ===========================================================
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
154 GtkWindow => \"Gtk\" and \"Window\"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
155 EmacsFrameClass => \"Emacs\", \"Frame\" and \"Class\"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
156 NSGraphicsContext => \"NS\", \"Graphics\" and \"Context\"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
157
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
158 The subword oriented commands activated in this minor mode recognize
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
159 subwords in a nomenclature to move between subwords and to edit them
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
160 as words.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
161
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
162 \\{c-subword-mode-map}"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
163 nil
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
164 nil
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
165 c-subword-mode-map
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
166 (c-update-modeline))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
167
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
168 )
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
169
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
170 (defun c-forward-subword (&optional arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
171 "Do the same as `forward-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
172 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
173 Optional argument ARG is the same as for `forward-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
174 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
175 (unless arg (setq arg 1))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
176 (c-keep-region-active)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
177 (cond
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
178 ((< 0 arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
179 (dotimes (i arg (point))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
180 (c-forward-subword-internal)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
181 ((> 0 arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
182 (dotimes (i (- arg) (point))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
183 (c-backward-subword-internal)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
184 (t
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
185 (point))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
186
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
187 (defun c-backward-subword (&optional arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
188 "Do the same as `backward-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
189 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
190 Optional argument ARG is the same as for `backward-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
191 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
192 (c-forward-subword (- (or arg 1))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
193
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
194 (defun c-mark-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
195 "Do the same as `mark-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
196 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
197 Optional argument ARG is the same as for `mark-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
198 ;; This code is almost copied from `mark-word' in GNU Emacs.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
199 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
200 (cond ((and (eq last-command this-command) (mark t))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
201 (set-mark
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
202 (save-excursion
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
203 (goto-char (mark))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
204 (c-forward-subword arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
205 (point))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
206 (t
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
207 (push-mark
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
208 (save-excursion
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
209 (c-forward-subword arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
210 (point))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
211 nil t))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
212
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
213 (defun c-kill-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
214 "Do the same as `kill-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
215 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
216 Optional argument ARG is the same as for `kill-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
217 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
218 (kill-region (point) (c-forward-subword arg)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
219
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
220 (defun c-backward-kill-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
221 "Do the same as `backward-kill-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
222 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
223 Optional argument ARG is the same as for `backward-kill-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
224 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
225 (c-kill-subword (- arg)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
226
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
227 (defun c-transpose-subwords (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
228 "Do the same as `transpose-words' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
229 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
230 Optional argument ARG is the same as for `transpose-words'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
231 (interactive "*p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
232 (transpose-subr 'c-forward-subword arg))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
233
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
234 (defun c-capitalize-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
235 "Do the same as `capitalize-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
236 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
237 Optional argument ARG is the same as for `capitalize-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
238 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
239 (let ((count (abs arg))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
240 (direction (if (< 0 arg) 1 -1)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
241 (dotimes (i count)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
242 (when (re-search-forward
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
243 (concat "[" c-alpha "]")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
244 nil t)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
245 (goto-char (match-beginning 0)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
246 (let* ((p (point))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
247 (pp (1+ p))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
248 (np (c-forward-subword direction)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
249 (upcase-region p pp)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
250 (downcase-region pp np)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
251 (goto-char np)))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
252
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
253 (defun c-downcase-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
254 "Do the same as `downcase-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
255 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
256 Optional argument ARG is the same as for `downcase-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
257 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
258 (downcase-region (point) (c-forward-subword arg)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
259
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
260 (defun c-upcase-subword (arg)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
261 "Do the same as `upcase-word' but on subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
262 See the command `c-subword-mode' for a description of subwords.
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
263 Optional argument ARG is the same as for `upcase-word'."
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
264 (interactive "p")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
265 (upcase-region (point) (c-forward-subword arg)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
266
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
267
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
268 ;;
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
269 ;; Internal functions
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
270 ;;
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
271 (defun c-forward-subword-internal ()
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
272 (if (and
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
273 (save-excursion
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
274 (let ((case-fold-search nil))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
275 (re-search-forward
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
276 (concat "\\W*\\(\\([" c-upper "]*\\W?\\)[" c-lower c-digit "]*\\)")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
277 nil t)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
278 (> (match-end 0) (point))) ; So we don't get stuck at a
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
279 ; "word-constituent" which isn't c-upper,
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
280 ; c-lower or c-digit
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
281 (goto-char
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
282 (cond
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
283 ((< 1 (- (match-end 2) (match-beginning 2)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
284 (1- (match-end 2)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
285 (t
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
286 (match-end 0))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
287 (forward-word 1)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
288
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
289
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
290 (defun c-backward-subword-internal ()
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
291 (if (save-excursion
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
292 (let ((case-fold-search nil))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
293 (re-search-backward
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
294 (concat
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
295 "\\(\\(\\W\\|[" c-lower c-digit "]\\)\\([" c-upper "]+\\W*\\)"
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
296 "\\|\\W\\w+\\)")
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
297 nil t)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
298 (goto-char
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
299 (cond
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
300 ((and (match-end 3)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
301 (< 1 (- (match-end 3) (match-beginning 3)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
302 (not (eq (point) (match-end 3))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
303 (1- (match-end 3)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
304 (t
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
305 (1+ (match-beginning 0)))))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
306 (backward-word 1)))
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
307
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
308
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
309 (cc-provide 'cc-subword)
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
310
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
311 ;;; arch-tag: 2be9d294-7f30-4626-95e6-9964bb93c7a3
04d2abb755d9 Update CC Mode to release 5.31.
Alan Mackenzie <acm@muc.de>
parents:
diff changeset
312 ;;; cc-subword.el ends here