changeset 45022:4359b383982c

*** empty log message ***
author Richard M. Stallman <rms@gnu.org>
date Tue, 30 Apr 2002 05:42:29 +0000
parents beb07a65a445
children e4546fd8cb33
files etc/NEWS lisp/descr-text.el
diffstat 2 files changed, 242 insertions(+), 35 deletions(-) [+]
line wrap: on
line diff
--- a/etc/NEWS	Tue Apr 30 04:59:24 2002 +0000
+++ b/etc/NEWS	Tue Apr 30 05:42:29 2002 +0000
@@ -79,6 +79,7 @@
 charset and some other latin-N charset or unicode.  You can force a
 more complete unification by calling (unify-8859-on-decoding-mode 1).
 
+---
 ** The scrollbar under Motif has a smoother drag-scrolling.
 On the other hand, the size of the thumb does not represent the actual
 amount of text shown any more (only a crude approximation of it).
@@ -101,6 +102,7 @@
 ** PO translation files are decoded according to their MIME headers
 when Emacs visits them.
 
+---
 ** The game `mpuz' is enhanced.
 
 `mpuz' now allows the 2nd factor not to have two identical digits.  By
@@ -135,6 +137,7 @@
 many columns to scroll.  If the value is a floating-point number, it
 gives the fraction of the window's width to scroll the window.
 
++++
 ** The user option `tex-start-options-string' has been replaced
 by two new user options: `tex-start-options', which should hold
 command-line options to feed to TeX, and `tex-start-commands' which should hold
@@ -144,6 +147,7 @@
 ** The variable `automatic-hscrolling' was renamed to `auto-hscroll-mode'.
 The old name is still available as an alias.
 
++++
 ** New display feature: focus follows mouse.  If you set the variable
 mouse-autoselect-window to non-nil value, moving the mouse to a different
 Emacs window will select that window (minibuffer window can be selected
@@ -162,12 +166,14 @@
 buffers to search by their filename.  Internally, Occur mode has been
 rewritten, and now uses font-lock, among other changes.
 
++++
 ** Emacs normally highlights mouse sensitive text whenever the mouse
 is over the text.  By setting the new variable `mouse-highlight', you
 can optionally enable mouse highlighting only after you move the
 mouse, so that highlighting disappears when you press a key.  You can
 also disable mouse highlighting.
 
++++
 ** font-lock: in modes like C and Lisp where the fontification assumes that
 an open-paren in column 0 is always outside of any string or comment,
 font-lock now highlights any such open-paren-in-column-zero in bold-red
@@ -197,8 +203,9 @@
 
 ** Speedbar has moved from the "Tools" top level menu to "Show/Hide".
 
-** Emacs can now indicate in the mode-line the presence of new e-mails in
-directory in addition to file.  See the documentation of the user option
++++
+** Emacs can now indicate in the mode-line the presence of new e-mails
+in a directory or in a file.  See the documentation of the user option
 `display-time-mail-directory'.
 
 +++
@@ -562,13 +569,16 @@
 This option can be disabled, to avoid the normal behaviour of isearch
 which puts calls to `isearch-resume' in the command history.
 
+---
 ** When the *scratch* buffer is recreated, its mode is set from
 initial-major-mode, which normally is lisp-interaction-mode,
 instead of using default-major-mode.
 
+---
 ** Byte compiler warning and error messages have been brought more
 in line with the output of other GNU tools.
 
+---
 ** Lisp-mode now uses font-lock-doc-face for the docstrings.
 
 ** perl-mode has a new variable `perl-indent-continued-arguments'.
@@ -592,23 +602,28 @@
 which do not end in a slash are never considered when a completion
 candidate is a directory.
 
++++
 ** New user option `inhibit-startup-buffer-menu'.
 When loading many files, for instance with `emacs *', Emacs normally
 displays a buffer menu.  This option turns the buffer menu off.
 
+---
 ** Rmail now displays 5-digit message ids in its summary buffer.
 
 ** When using M-x revert-buffer in a compilation buffer to rerun a
 compilation, it is now made sure that the compilation buffer is reused
 in case it has been renamed.
 
+---
 ** On MS Windows, the "system caret" now follows the cursor.
 This enables Emacs to work better with programs that need to track
 the cursor, for example screen magnifiers and text to speech programs.
 
+---
 ** Tooltips now work on MS Windows.
 See the Emacs 21.1 NEWS entry for tooltips for details.
 
+---
 ** Some images are now supported on Windows.
 PBM and XBM images are supported, other formats which require external
 libraries may be supported in future.
@@ -632,16 +647,6 @@
 ---
 ** A French translation of the Emacs Tutorial is available.
 
----
-** Indentation of simple and extended loop forms has been added to the
-cl-indent package.  The new user options
-`lisp-loop-keyword-indentation', `lisp-loop-forms-indentation', and
-`lisp-simple-loop-indentation' can be used to customize the
-indentation of keywords and forms in loop forms.
-
-** Indentation of backquoted forms has been made customizable in the
-cl-indent package.  See the new user option `lisp-backquote-indentation'.
-
 ** When emacs is configured to use `xaw3d' scroll-bars, emacs will
 tell the scroll-bar library which colors to use for the bevels, to
 prevent the library from using dithering.
@@ -704,6 +709,18 @@
 Manual.  A menu item was added to the menu bar that makes it easy
 accessible (Help->More Manuals->Emacs Lisp Reference).
 
+---
+** Indentation of simple and extended loop forms has been added to the
+cl-indent package.  The new user options
+`lisp-loop-keyword-indentation', `lisp-loop-forms-indentation', and
+`lisp-simple-loop-indentation' can be used to customize the
+indentation of keywords and forms in loop forms.
+
+---
+** Indentation of backquoted forms has been made customizable in the
+cl-indent package.  See the new user option `lisp-backquote-indentation'.
+
+---
 *** The Introduction to Programming in Emacs Lisp manual is now part of
 the distribution.
 
@@ -725,36 +742,19 @@
 change the `fill-column', `window-margins' and `tab-stop-list'
 settings.
 
-*** The reveal.el package provides the minor modes `reveal-mode' and
-`global-reveal-mode' which will make text visible on the fly as you
+*** The minor mode Reveal mode makes text visible on the fly as you
 move your cursor into hidden region of the buffer.
 It should work with any package that uses overlays to hide parts
 of a buffer, such as outline-minor-mode, hs-minor-mode, hide-ifdef-mode, ...
 
-*** master-mode.el implements a minor mode for scrolling a slave
-buffer without leaving your current buffer, the master buffer.
-
-It can be used by sql.el, for example: the SQL buffer is the master
-and its SQLi buffer is the slave.  This allows you to scroll the SQLi
-buffer containing the output from the SQL buffer containing the
-commands.
-
-This is how to use sql.el and master.el together: the variable
-sql-buffer contains the slave buffer.  It is a local variable in the
-SQL buffer.
-
-(add-hook 'sql-mode-hook
-   (function (lambda ()
-	       (master-mode t)
-	       (master-set-slave sql-buffer))))
-(add-hook 'sql-set-sqli-hook
-   (function (lambda ()
-	       (master-set-slave sql-buffer))))
-
+There is also Global Reveal mode which affects all buffers.
+
+---
 *** The new package ibuffer provides a powerful, completely
 customizable replacement for buff-menu.el.
 
-** Support for `magic cooky' standout modes has been removed.
+---
+** Support for `magic cookie' standout modes has been removed.
 Emacs will still work on terminals that require magic cookies in order
 to use standout mode, however they will not be able to display
 mode-lines in inverse-video.
@@ -975,6 +975,26 @@
 for a function that could be called with `call-interactively',
 and does not return t for keyboard macros.
 
+** master-mode.el implements a minor mode for scrolling a slave
+buffer without leaving your current buffer, the master buffer.
+
+It can be used by sql.el, for example: the SQL buffer is the master
+and its SQLi buffer is the slave.  This allows you to scroll the SQLi
+buffer containing the output from the SQL buffer containing the
+commands.
+
+This is how to use sql.el and master.el together: the variable
+sql-buffer contains the slave buffer.  It is a local variable in the
+SQL buffer.
+
+(add-hook 'sql-mode-hook
+   (function (lambda ()
+	       (master-mode t)
+	       (master-set-slave sql-buffer))))
+(add-hook 'sql-set-sqli-hook
+   (function (lambda ()
+	       (master-set-slave sql-buffer))))
+
 ** File local variables.
 
 A file local variables list cannot specify a string with text
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/descr-text.el	Tue Apr 30 05:42:29 2002 +0000
@@ -0,0 +1,187 @@
+;;; facemenu.el --- create a face menu for interactively adding fonts to text
+
+;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc.
+
+;; Author: Boris Goldowsky <boris@gnu.org>
+;; Keywords: faces
+
+;; This file is part of GNU Emacs.
+
+;; 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 2, 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
+;; 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:
+
+;;; Describe-Text Mode.
+
+;;; Code:
+
+(defun describe-text-done ()
+  "Delete the current window or bury the current buffer."
+  (interactive)
+  (if (> (count-windows) 1)
+      (delete-window)
+    (bury-buffer)))
+
+(defvar describe-text-mode-map 
+  (let ((map (make-sparse-keymap)))
+    (set-keymap-parent map widget-keymap)
+    map)
+  "Keymap for `describe-text-mode'.")
+  
+(defcustom describe-text-mode-hook nil
+  "List of hook functions ran by `describe-text-mode'."
+  :type 'hook)
+
+(defun describe-text-mode ()
+  "Major mode for buffers created by `describe-text-at'.
+
+\\{describe-text-mode-map}
+Entry to this mode calls the value of `describe-text-mode-hook'
+if that value is non-nil."
+  (kill-all-local-variables)
+  (setq major-mode 'describe-text-mode
+	mode-name "Describe-Text")
+  (use-local-map describe-text-mode-map)
+  (widget-setup)
+  (run-hooks 'describe-text-mode-hook))
+
+;;; Describe-Text Utilities.
+
+(defun describe-text-widget (widget)
+  "Insert text to describe WIDGET in the current buffer."
+  (widget-create 'link
+		 :notify `(lambda (&rest ignore)
+			    (widget-browse ',widget))
+		 (format "%S" (if (symbolp widget) 
+				  widget
+				(car widget))))
+  (widget-insert " ")
+  (widget-create 'info-link :tag "widget" "(widget)Top"))
+
+(defun describe-text-sexp (sexp)
+  "Insert a short description of SEXP in the current buffer."
+  (let ((pp (condition-case signal
+		(pp-to-string sexp)
+	      (error (prin1-to-string signal)))))
+    (when (string-match "\n\\'" pp)
+      (setq pp (substring pp 0 (1- (length pp)))))
+    (if (cond ((string-match "\n" pp)
+	       nil)
+	      ((> (length pp) (- (window-width) (current-column)))
+	       nil)
+	      (t t))
+	(widget-insert pp)
+      (widget-create 'push-button
+		     :tag "show"
+		     :action (lambda (widget &optional event)
+			       (with-output-to-temp-buffer
+				   "*Pp Eval Output*"
+				 (princ (widget-get widget :value))))
+		     pp))))
+  
+
+(defun describe-text-properties (properties)
+  "Insert a description of PROPERTIES in the current buffer.
+PROPERTIES should be a list of overlay or text properties.
+The `category' property is made into a widget button that call 
+`describe-text-category' when pushed."
+  (while properties
+    (widget-insert (format "  %-20s " (car properties)))
+    (let ((key (nth 0 properties))
+	  (value (nth 1 properties)))
+      (cond ((eq key 'category)
+	     (widget-create 'link 
+			    :notify `(lambda (&rest ignore)
+				       (describe-text-category ',value))
+			    (format "%S" value)))
+	    ((widgetp value)
+	     (describe-text-widget value))
+	    (t
+	     (describe-text-sexp value))))
+    (widget-insert "\n")
+    (setq properties (cdr (cdr properties)))))
+
+;;; Describe-Text Commands.
+
+(defun describe-text-category (category)
+  "Describe a text property category."
+  (interactive "S")
+  (when (get-buffer "*Text Category*")
+    (kill-buffer "*Text Category*"))
+  (save-excursion
+    (with-output-to-temp-buffer "*Text Category*"
+      (set-buffer "*Text Category*")
+      (widget-insert "Category " (format "%S" category) ":\n\n")
+      (describe-text-properties (symbol-plist category))
+      (describe-text-mode)
+      (goto-char (point-min)))))
+
+;;;###autoload
+(defun describe-text-at (pos)
+  "Describe widgets, buttons, overlays and text properties at POS."
+  (interactive "d")
+  (when (eq (current-buffer) (get-buffer "*Text Description*"))
+    (error "Can't do self inspection"))
+  (let* ((properties (text-properties-at pos))
+	 (overlays (overlays-at pos))
+	 overlay
+	 (wid-field (get-char-property pos 'field))
+	 (wid-button (get-char-property pos 'button))
+	 (wid-doc (get-char-property pos 'widget-doc))
+	 ;; If button.el is not loaded, we have no buttons in the text.
+	 (button (and (fboundp 'button-at) (button-at pos)))
+	 (button-type (and button (button-type button)))
+	 (button-label (and button (button-label button)))
+	 (widget (or wid-field wid-button wid-doc)))
+    (if (not (or properties overlays))
+	(message "This is plain text.")
+      (when (get-buffer "*Text Description*")
+	(kill-buffer "*Text Description*"))
+      (save-excursion
+	(with-output-to-temp-buffer "*Text Description*"
+	  (set-buffer "*Text Description*")
+	  (widget-insert "Text content at position " (format "%d" pos) ":\n\n")
+	  ;; Widgets
+	  (when (widgetp widget)
+	    (widget-insert (cond (wid-field "This is an editable text area")
+				 (wid-button "This is an active area")
+				 (wid-doc "This is documentation text")))
+	    (widget-insert " of a ")
+	    (describe-text-widget widget)
+	    (widget-insert ".\n\n"))
+	  ;; Buttons
+	  (when (and button (not (widgetp wid-button)))
+	    (widget-insert "Here is a " (format "%S" button-type) 
+			   " button labeled `" button-label "'.\n\n"))
+	  ;; Overlays
+	  (when overlays
+	    (if (eq (length overlays) 1)
+		(widget-insert "There is an overlay here:\n")
+	      (widget-insert "There are " (format "%d" (length overlays))
+			     " overlays here:\n"))
+	    (dolist (overlay overlays)
+	      (widget-insert " From " (format "%d" (overlay-start overlay)) 
+			     " to " (format "%d" (overlay-end overlay)) "\n")
+	      (describe-text-properties (overlay-properties overlay)))
+	    (widget-insert "\n"))
+	  ;; Text properties
+	  (when properties
+	    (widget-insert "There are text properties here:\n")
+	    (describe-text-properties properties))
+	  (describe-text-mode)
+	  (goto-char (point-min)))))))
+
+;;; descr-text.el ends here