emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/progmodes/glasses.el


From: Eli Zaretskii
Subject: [Emacs-diffs] Changes to emacs/lisp/progmodes/glasses.el
Date: Sat, 11 Feb 2006 11:45:41 +0000

Index: emacs/lisp/progmodes/glasses.el
diff -u emacs/lisp/progmodes/glasses.el:1.16 
emacs/lisp/progmodes/glasses.el:1.17
--- emacs/lisp/progmodes/glasses.el:1.16        Fri Feb 10 09:00:30 2006
+++ emacs/lisp/progmodes/glasses.el     Sat Feb 11 11:45:41 2006
@@ -67,13 +67,31 @@
 
 
 (defcustom glasses-separator "_"
-  "*String to be displayed as a visual separator in unreadable identifiers."
+  "*String to be displayed as a visual separator in identifiers.
+It is used both for adding missing separators and for replacing separators
+defined by `glasses-original-separator'.  If you don't want to add missing
+separators, set `glasses-separator' to an empty string.  If you don't want to
+replace existent separators, set `glasses-original-separator' to an empty
+string."
   :group 'glasses
   :type 'string
   :set 'glasses-custom-set
   :initialize 'custom-initialize-default)
 
 
+(defcustom glasses-original-separator "_"
+  "*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
+performed."
+  :group 'glasses
+  :type 'string
+  :set 'glasses-custom-set
+  :initialize 'custom-initialize-default
+  :version "22.1")
+
+
 (defcustom glasses-face nil
   "*Face to be put on capitals of an identifier looked through glasses.
 If it is nil, no face is placed at the capitalized letter.
@@ -196,15 +214,20 @@
              (overlay-put o 'invisible t)
              (overlay-put o 'after-string (downcase (match-string n))))))
         ;; Separator change
-        (unless (string= glasses-separator "_")
+       (when (and (not (string= glasses-original-separator glasses-separator))
+                  (not (string= glasses-original-separator "")))
           (goto-char beg)
-          (while (re-search-forward "[a-zA-Z0-9]\\(_+\\)[a-zA-Z0-9]" end t)
-            (goto-char (match-beginning 1))
-            (while (eql (char-after) ?\_)
-              (let ((o (glasses-make-overlay (point) (1+ (point)))))
-                ;; `concat' ensures the character properties won't merge
-                (overlay-put o 'display (concat glasses-separator)))
-              (forward-char))))
+         (let ((original-regexp (regexp-quote glasses-original-separator)))
+           (while (re-search-forward
+                   (format "[a-zA-Z0-9]\\(\\(%s\\)+\\)[a-zA-Z0-9]"
+                           original-regexp)
+                   end t)
+             (goto-char (match-beginning 1))
+             (while (looking-at original-regexp)
+               (let ((o (glasses-make-overlay (point) (1+ (point)))))
+                 ;; `concat' ensures the character properties won't merge
+                 (overlay-put o 'display (concat glasses-separator)))
+               (goto-char (match-end 0))))))
        ;; Parentheses
        (when glasses-separate-parentheses-p
          (goto-char beg)
@@ -237,13 +260,13 @@
          (let ((n (if (match-string 1) 1 2)))
            (replace-match "" t nil nil n)
            (goto-char (match-end n))))
-        (unless (string= glasses-separator "_")
-          (goto-char (point-min))
-          (while (re-search-forward (format "[a-zA-Z0-9]\\(%s+\\)[a-zA-Z0-9]"
-                                            separator)
-                                    nil t)
-            (replace-match "_" nil nil nil 1)
-            (goto-char (match-beginning 1))))
+       (unless (string= glasses-separator glasses-original-separator)
+         (goto-char (point-min))
+         (while (re-search-forward (format "[a-zA-Z0-9]\\(%s+\\)[a-zA-Z0-9]"
+                                           separator)
+                                   nil t)
+           (replace-match glasses-original-separator nil nil nil 1)
+           (goto-char (match-beginning 1))))
        (when glasses-separate-parentheses-p
          (goto-char (point-min))
          (while (re-search-forward "[a-zA-Z]_*\\( \\)\(" nil t)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]