]> code.delx.au - gnu-emacs/blobdiff - lisp/progmodes/glasses.el
; Merge from origin/emacs-25
[gnu-emacs] / lisp / progmodes / glasses.el
index 0d9359caa779ce66b6341af3caed9cd2f395f46d..17f5ffd5118af7dafee9736eee5a93b5e1f2ad15 100644 (file)
@@ -1,6 +1,6 @@
 ;;; glasses.el --- make cantReadThis readable
 
-;; Copyright (C) 1999-201 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2016 Free Software Foundation, Inc.
 
 ;; Author: Milan Zamazal <pdm@zamazal.org>
 ;; Maintainer: Milan Zamazal <pdm@zamazal.org>
 ;;; Code:
 
 
-(eval-when-compile
-  (require 'cl))
-
-
 ;;; User variables
 
 
@@ -78,7 +74,7 @@ string."
 
 
 (defcustom glasses-original-separator "_"
-  "*String to be displayed as `glasses-separator' in separator positions.
+  "String to be displayed as `glasses-separator' in separator positions.
 For instance, if you set it to \"_\" and set `glasses-separator' to \"-\",
 underscore separators are displayed as hyphens.
 If `glasses-original-separator' is an empty string, no such display change is
@@ -116,6 +112,15 @@ parenthesis expression starts."
   :group 'glasses
   :type '(repeat regexp))
 
+(defcustom glasses-separate-capital-groups t
+  "If non-nil, try to separate groups of capital letters.
+When the value is non-nil, HTMLSomething and IPv6 are displayed
+as HTML_Something and I_Pv6 respectively.  Set the value to nil
+if you prefer to display them unchanged."
+  :group 'glasses
+  :type 'boolean
+  :version "24.1")
+
 (defcustom glasses-uncapitalize-p nil
   "If non-nil, downcase embedded capital letters in identifiers.
 Only identifiers starting with lower case letters are affected, letters inside
@@ -212,8 +217,11 @@ CATEGORY is the overlay category.  If it is nil, use the `glasses' category."
                                'glasses-init))
        ;; Face + separator
        (goto-char beg)
-       (while (re-search-forward "[a-z]\\([A-Z]\\)\\|[A-Z]\\([A-Z]\\)[a-z]"
-                                 end t)
+       (while (re-search-forward
+                (if glasses-separate-capital-groups
+                    "[a-z]\\([A-Z]\\)\\|[A-Z]\\([A-Z]\\)[a-z]"
+                  "[a-z]\\([A-Z]\\)")
+                end t)
          (let* ((n (if (match-string 1) 1 2))
                 (o (glasses-make-overlay (match-beginning n) (match-end n))))
            (goto-char (match-beginning n))
@@ -244,7 +252,7 @@ CATEGORY is the overlay category.  If it is nil, use the `glasses' category."
        ;; Parentheses
        (when glasses-separate-parentheses-p
          (goto-char beg)
-         (while (re-search-forward "[a-zA-Z]_*\\(\(\\)" end t)
+         (while (re-search-forward "[a-zA-Z]_*\\((\\)" end t)
            (unless (glasses-parenthesis-exception-p (point-at-bol) (match-end 1))
              (glasses-make-overlay (match-beginning 1) (match-end 1)
                                    'glasses-parenthesis))))))))
@@ -283,7 +291,7 @@ recognized according to the current value of the variable `glasses-separator'."
              (goto-char (match-beginning 1)))))
        (when glasses-separate-parentheses-p
          (goto-char (point-min))
-         (while (re-search-forward "[a-zA-Z]_*\\( \\)\(" nil t)
+         (while (re-search-forward "[a-zA-Z]_*\\( \\)(" nil t)
            (unless (glasses-parenthesis-exception-p (point-at-bol) (1+ (match-end 1)))
              (replace-match "" t nil nil 1)))))))
   ;; nil must be returned to allow use in write file hooks
@@ -304,8 +312,10 @@ recognized according to the current value of the variable `glasses-separator'."
 ;;;###autoload
 (define-minor-mode glasses-mode
   "Minor mode for making identifiers likeThis readable.
-When this mode is active, it tries to add virtual separators (like underscores)
-at places they belong to."
+With a prefix argument ARG, enable the mode if ARG is positive,
+and disable it otherwise.  If called from Lisp, enable the mode
+if ARG is omitted or nil.  When this mode is active, it tries to
+add virtual separators (like underscores) at places they belong to."
   :group 'glasses :lighter " o^o"
   (save-excursion
     (save-restriction