X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f67e15be8d94718b2e2ea7da68eb0b2dc94ce016..197daef4ab65cbb5d5add8bbc8e258aa26992d4f:/lisp/emacs-lisp/re-builder.el diff --git a/lisp/emacs-lisp/re-builder.el b/lisp/emacs-lisp/re-builder.el index a0fe628ed3..ec1a704ce0 100644 --- a/lisp/emacs-lisp/re-builder.el +++ b/lisp/emacs-lisp/re-builder.el @@ -1,17 +1,17 @@ ;;; re-builder.el --- building Regexps with visual feedback ;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. ;; Author: Detlev Zundel ;; Keywords: matching, lisp, tools ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; GNU Emacs 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 3, or (at your option) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -19,9 +19,7 @@ ;; 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., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -250,7 +248,7 @@ Except for Lisp syntax this is the same as `reb-regexp'.") (define-key menu-map [rt] '(menu-item "Case sensitive" reb-toggle-case :button (:toggle . case-fold-search) - :help "Toggle case sensitivity of searches for RE Builder target buffer.")) + :help "Toggle case sensitivity of searches for RE Builder target buffer")) (define-key menu-map [rb] '(menu-item "Change target buffer..." reb-change-target-buffer :help "Change the target buffer and display it in the target window")) @@ -275,17 +273,10 @@ Except for Lisp syntax this is the same as `reb-regexp'.") map) "Keymap used by the RE Builder.") -(defun reb-mode () - "Major mode for interactively building Regular Expressions. -\\{reb-mode-map}" - (interactive) - (kill-all-local-variables) - (setq major-mode 'reb-mode - mode-name "RE Builder") +(define-derived-mode reb-mode nil "RE Builder" + "Major mode for interactively building Regular Expressions." (set (make-local-variable 'blink-matching-paren) nil) - (use-local-map reb-mode-map) - (reb-mode-common) - (run-mode-hooks 'reb-mode-hook)) + (reb-mode-common)) (define-derived-mode reb-lisp-mode emacs-lisp-mode "RE Builder Lisp" @@ -351,7 +342,8 @@ Except for Lisp syntax this is the same as `reb-regexp'.") (goto-char (+ 2 (point-min))) (cond ((reb-lisp-syntax-p) (reb-lisp-mode)) - (t (reb-mode)))) + (t (reb-mode))) + (reb-do-update)) (defun reb-mode-buffer-p () "Return non-nil if the current buffer is a RE Builder buffer." @@ -372,9 +364,11 @@ Except for Lisp syntax this is the same as `reb-regexp'.") (when reb-target-buffer (reb-delete-overlays)) (setq reb-target-buffer (current-buffer) - reb-target-window (selected-window) - reb-window-config (current-window-configuration)) - (select-window (split-window (selected-window) (- (window-height) 4))) + reb-target-window (selected-window)) + (select-window (or (get-buffer-window reb-buffer) + (progn + (setq reb-window-config (current-window-configuration)) + (split-window (selected-window) (- (window-height) 4))))) (switch-to-buffer (get-buffer-create reb-buffer)) (reb-initialize-buffer))) @@ -526,7 +520,6 @@ optional fourth argument FORCE is non-nil." (condition-case nil (progn (when (or (reb-update-regexp) force) - (reb-assert-buffer-in-window) (reb-do-update)) "") (error " *invalid*")))) @@ -571,7 +564,7 @@ optional fourth argument FORCE is non-nil." (interactive) (setq reb-subexp-displayed - (or subexp (string-to-number (format "%c" last-command-char)))) + (or subexp (string-to-number (format "%c" last-command-event)))) (reb-update-modestring) (reb-do-update reb-subexp-displayed)) @@ -665,8 +658,7 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions." (matches 0) (submatches 0) firstmatch) - (save-excursion - (set-buffer reb-target-buffer) + (with-current-buffer reb-target-buffer (reb-delete-overlays) (goto-char (point-min)) (while (and (not (eobp)) @@ -727,7 +719,7 @@ If SUBEXP is non-nil mark only the corresponding sub-expressions." (remove-hook 'kill-buffer-hook 'reb-kill-buffer t) (when (reb-mode-buffer-p) (reb-delete-overlays) - (funcall default-major-mode)))) + (funcall (or (default-value 'major-mode) 'fundamental-mode))))) ;; continue standard unloading nil)