[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/progmodes/cap-words.el [emacs-unicod
From: |
Kenichi Handa |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/progmodes/cap-words.el [emacs-unicode-2] |
Date: |
Mon, 08 Sep 2003 08:56:09 -0400 |
Index: emacs/lisp/progmodes/cap-words.el
diff -c /dev/null emacs/lisp/progmodes/cap-words.el:1.1.4.1
*** /dev/null Mon Sep 8 08:56:09 2003
--- emacs/lisp/progmodes/cap-words.el Mon Sep 8 08:53:41 2003
***************
*** 0 ****
--- 1,91 ----
+ ;;; cap-words.el --- minor mode for motion in CapsitalizedWordIdentifiers
+
+ ;; Copyright (C) 2002 Free Software Foundation, Inc.
+
+ ;; Author: Dave Love <address@hidden>
+ ;; Keywords: languages
+
+ ;; This file is free software; you can redistribute it and/or modify
+ ;; it under the terms of the GNU General Public License as published by
+ ;; the Free Software Foundation; either version 2, or (at your option)
+ ;; any later version.
+
+ ;; This file is distributed in the hope that it will be useful,
+ ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+ ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ ;; GNU General Public License for more details.
+
+ ;; You should have received a copy of the GNU General Public License
+ ;; along with GNU Emacs; see the file COPYING. If not, write to
+ ;; the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ ;; Boston, MA 02111-1307, USA.
+
+ ;;; Commentary:
+
+ ;; Provides Capitalized Words minor mode for word movement in
+ ;; identifiers CapitalizedLikeThis.
+
+ ;; Note that the same effect could be obtained by frobbing the
+ ;; category of upper case characters to produce word boundaries, but
+ ;; the necessary processing isn't done for ASCII characters.
+
+ ;; Fixme: This doesn't work properly for mouse double clicks.
+
+ ;;; Code:
+
+ (defun capitalized-next-word-boundary (pos limit)
+ "Function for use in `next-word-boundary-function-table'.
+ Looks for word boundaries before capitals."
+ (save-excursion
+ (goto-char pos)
+ (let (case-fold-search)
+ (if (<= pos limit)
+ ;; Fixme: Are these regexps the best?
+ (or (and (re-search-forward "\\=.\\w*[[:upper:]]"
+ limit t)
+ (progn (backward-char)
+ t))
+ (re-search-forward "\\>" limit t))
+ (or (re-search-backward "[[:upper:]]\\w*\\=" limit t)
+ (re-search-backward "\\<" limit t))))
+ (point)))
+
+ (defconst capitalized-next-word-boundary-function-table
+ (let ((tab (make-char-table nil)))
+ (set-char-table-range tab t #'capitalized-next-word-boundary)
+ tab)
+ "Assigned to `next-word-boundary-function-table' in Capitalized Words
mode.")
+
+ (define-minor-mode capitalized-words-mode
+ "Toggle Capitalized- Words mode.
+
+ In this minor mode, a word boundary occurs immediately before an
+ uppercase letter in a symbol. This is in addition to all the normal
+ boundaries given by the syntax and category tables. There is no
+ restriction to ASCII.
+
+ E.g. the beginning of words in the following identifier are as marked:
+
+ capitalizedWorDD
+ ^ ^ ^^
+
+ Note that these word boundaries only apply for word motion and
+ marking commands such as \\[forward-word]. This mode does not affect word
+ boundaries in found by regexp matching (`\\>', `\\w' &c).
+
+ This style of identifiers is common in environments like Java ones,
+ where underscores aren't trendy enough. Capitalization rules are
+ sometimes part of the language, e.g. Haskell, which may encourage such
+ a style. It is appropriate to add `capitalized-words-mode' to the
+ mode hook for programming langauge modes in which you encounter such
+ variables, e.g. `java-mode-hook', since it's unlikely to cause trouble
+ if such identifiers aren't used.
+
+ See also `glasses-mode' and `studlify-word'.
+ Obsoletes `c-forward-into-nomenclature'."
+ nil " Caps" nil :group 'programming
+ (set (make-local-variable 'next-word-boundary-function-table)
+ capitalized-next-word-boundary-function-table))
+
+ (provide 'cap-words)
+ ;;; cap-words.el ends here
- [Emacs-diffs] Changes to emacs/lisp/progmodes/cap-words.el [emacs-unicode-2],
Kenichi Handa <=