1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-01 11:14:55 +00:00

Merged in changes from CVS trunk.

Patches applied:

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-593
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-594
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-595
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-596
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-597
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-598
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-599
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-600
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-601
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-602
   Update from CVS

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-603
   Merge from gnus--rel--5.10

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-42
   Update from CVS

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-43
   Merge from emacs--cvs-trunk--0

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-44
   Update from CVS


git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-253
This commit is contained in:
Karoly Lorentey 2004-10-07 16:52:19 +00:00
commit c5f80d9d13
50 changed files with 2778 additions and 728 deletions

View File

@ -1,3 +1,13 @@
2004-10-06 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* configure.in (HAVE_RANDOM_HEAPSTART): Change AC_MSG_ERROR to
AC_MSG_WARN. Move output of warning message to end of configure run.
2004-10-05 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
* configure.in (HAVE_RANDOM_HEAPSTART): Renamed HAVE_EXECSHIELD.
Run test to see if heap start address is random.
2004-09-29 Miles Bader <miles@gnu.org>
* configure.in (HAVE_EXECSHIELD): Test correct env variable to see

View File

@ -28,8 +28,6 @@ isearch faces.
** Finish updating the Emacs Lisp manual.
*** New display properties (KFS to provide input).
** Update the Emacs manual.
*** Update man/info.texi.
@ -88,7 +86,7 @@ man/rmail.texi
man/screen.texi "Luc Teirlinck"
man/search.texi "Luc Teirlinck"
man/sending.texi
man/text.texi
man/text.texi "Luc Teirlinck"
man/trouble.texi
man/windows.texi "Luc Teirlinck"
man/xresources.texi

767
configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -1286,25 +1286,6 @@ AC_LINK_IFELSE([main(){return 0;}],
dnl checks for Unix variants
AC_AIX
dnl check if exec-shield is present.
AC_CHECK_FILE(/proc/sys/kernel/exec-shield, emacs_cv_execshield=1,
emacs_cv_execshield=0)
if test "$emacs_cv_execshield" = 1; then
AC_PATH_PROG(SETARCH, setarch, no)
AC_SUBST(SETARCH)
if test "$SETARCH" != no && test "$machine" = "intel386"; then
AC_DEFINE(HAVE_EXECSHIELD, 1,
[Define to 1 if this OS has exec shield and we can handle it.])
else
case "`cat /proc/sys/kernel/exec-shield`" in
0) ;;
*)
AC_MSG_ERROR([Exec-shield is turned on.
Emacs can not dump itself if exec-shield is turned on.
See `etc/PROBLEMS' for further information.])
esac
fi
fi
#### Extract some information from the operating system and machine files.
@ -1591,6 +1572,53 @@ AH_TEMPLATE(POINTER_TYPE,
[Define as `void' if your compiler accepts `void *'; otherwise
define as `char'.])dnl
dnl Test if heap start address is randomized (exec-shield does this).
dnl The test program requires unistd.h and stdlib.h. They are present
dnl on the systems that currently have exec-shield.
AC_MSG_CHECKING(whether heap start address is randomized)
if test x"$ac_cv_header_unistd_h" != x && test x"$ac_cv_header_stdlib_h" != x
then
AC_TRY_RUN([#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main (int argc, char *argv[])
{
unsigned long old_sbrk = 0;
unsigned long this_sbrk = (unsigned long) sbrk(0);
int nr = 1;
if (argc != 1) {
old_sbrk = strtoul (argv[1], 0, 0);
nr = atoi (argv[2])+1;
}
if (argc == 1 || (old_sbrk == this_sbrk && nr < 3))
{
char buf1[32], buf2[32];
sprintf (buf1, "%lu", this_sbrk);
sprintf (buf2, "%d", nr);
execl (argv[0], argv[0], buf1, buf2, 0);
exit (-1);
}
exit (this_sbrk == old_sbrk);
}], emacs_cv_randomheap=yes, emacs_cv_randomheap=no,
emacs_cv_randomheap='assuming no')
else
emacs_cv_randomheap='assuming no'
fi
AC_MSG_RESULT($emacs_cv_randomheap)
if test "$emacs_cv_randomheap" = yes; then
AC_PATH_PROG(SETARCH, setarch, no)
AC_SUBST(SETARCH)
if test "$SETARCH" != no && test "$machine" = "intel386"; then
AC_DEFINE(HAVE_RANDOM_HEAPSTART, 1,
[Define to 1 if this OS randomizes the start address of the heap.])
else
dnl We do the warning at the end of the configure run so it is seen.
emacs_cv_randomheap=warn
fi
fi
dnl This could be used for targets which can have both byte sexes.
dnl We could presumably replace the hardwired WORDS_BIG_ENDIAN generally.
dnl AC_C_BIGENDIAN
@ -3058,6 +3086,19 @@ echo " Does Emacs use -lpng? ${HAVE_PNG}"
echo " Does Emacs use X toolkit scroll bars? ${USE_TOOLKIT_SCROLL_BARS}"
echo
if test "$emacs_cv_randomheap" = warn; then
AC_MSG_WARN([
**********************************************************************
Heap start address is randomized and no workaround is known.
Emacs will probably dump core when temacs is run in the build phase.
Maybe exec-shield is turned on. Read about exec-shield in `etc/PROBLEMS'
for further information.
**********************************************************************
])
fi
# Remove any trailing slashes in these variables.
[test "${prefix}" != NONE &&
prefix=`echo "${prefix}" | sed 's,\([^/]\)/*$,\1,'`

View File

@ -1,3 +1,12 @@
2004-10-04 Luc Teirlinck <teirllm@auburn.edu>
* enriched.doc: Update for new bindings of `set-left-margin' and
`set-right-margin'.
2004-10-04 Kim F. Storm <storm@cua.dk>
* DEBUG: Mention pp and ff commands.
2004-09-26 Luc Teirlinck <teirllm@auburn.edu>
* enriched.doc: `enriched-annotation-alist' is now called

View File

@ -69,9 +69,11 @@ fatal error, you can use the GDB command `pr'. First print the value
in the ordinary way, with the `p' command. Then type `pr' with no
arguments. This calls a subroutine which uses the Lisp printer.
Note: It is not a good idea to try `pr' if you know that Emacs is in
deep trouble: its stack smashed (e.g., if it encountered SIGSEGV due
to stack overflow), or crucial data structures, such as `obarray',
You can also use `pp value' to print the emacs value directly.
Note: It is not a good idea to try `pr' or `pp' if you know that Emacs
is in deep trouble: its stack smashed (e.g., if it encountered SIGSEGV
due to stack overflow), or crucial data structures, such as `obarray',
corrupted, etc. In such cases, the Emacs subroutine called by `pr'
might make more damage, like overwrite some data that is important for
debugging the original problem.
@ -442,6 +444,9 @@ Several more functions for debugging display code are available in
Emacs compiled with GLYPH_DEBUG defined; type "C-h f dump- TAB" and
"C-h f trace- TAB" to see the full list.
When you debug display problems running emacs under X, you can use
the `ff' command to flush all pending display updates to the screen.
** Debugging LessTif

View File

@ -98,6 +98,11 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types.
* Changes in Emacs 21.4
+++
** In Enriched mode, `set-left-margin' and `set-right-margin' are now
by default bound to `C-c [' and `C-c ]' instead of the former `C-c C-l'
and `C-c C-r'.
+++
** In processing a local variables list, Emacs strips the prefix and
suffix are from every line before processing all the lines.
@ -1390,6 +1395,10 @@ of the recognized cursor types.
controls whether or not the function `make-auto-save-file-name' will
attempt to construct a unique auto-save name (e.g. for remote files).
+++
** There is a new calendar package, icalendar.el, that can be used to
convert Emacs diary entries to/from the iCalendar format.
+++
** Diary sexp entries can have custom marking in the calendar.
Diary sexp functions which only apply to certain days (such as
@ -1406,6 +1415,11 @@ appointments, paydays or anything else using a sexp.
year and day number, and moves to that date. Negative day numbers
count backward from the end of the year.
+++
** The new Calendar function `calendar-goto-iso-week' (g w)
prompts for a year and a week number, and moves to the first
day of that ISO week.
---
** The functions `holiday-easter-etc' and `holiday-advent' now take
arguments, and only report on the specified holiday rather than all.
@ -2483,9 +2497,8 @@ symbol identifying a fringe bitmap, either built-in or defined with
`define-fringe-bitmap', and FACE is an optional face name to be used
for displaying the bitmap.
*** New function `fringe-bitmaps-at-pos' returns a cons (LEFT . RIGHT)
identifying the current fringe bitmaps in the display line at a given
buffer position. A nil value means no bitmap.
*** New function `fringe-bitmaps-at-pos' returns the current fringe
bitmaps in the display line at a given buffer position.
** Multiple overlay arrows can now be defined and managed via the new
variable `overlay-arrow-variable-list'. It contains a list of

View File

@ -98,8 +98,8 @@ direct request, such as using the return key or the <fixed>C-o
<indent>The fill functions also understand margins, which can be set for
any region of a document. In addition to the menu items, which
increase or decrease the margins, there are two commands for
setting the margins absolutely: <fixed>C-c C-l (set-left-margin)</fixed> and <fixed>C-c
C-r (set-right-margin)</fixed>.
setting the margins absolutely: <fixed>C-c [ (set-left-margin)</fixed> and <fixed>C-c
] (set-right-margin)</fixed>.
You <indent>can change indentation at any point in a paragraph, which

View File

@ -1,3 +1,69 @@
2004-10-06 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-ann3): (Re-)initialise gdb-input-queue.
2004-10-06 John Paul Wallington <jpw@gnu.org>
* xml.el (xml-parse-dtd): Fix `error' call.
2004-10-05 Mark A. Hershberger <mah@everybody.org>
* xml.el (xml-substitute-special): Return a single string instead
of a list of strings if an entity substitution is made.
2004-10-05 Ulf Jasper <ulf.jasper@web.de>
* calendar/icalendar.el: New file.
2004-10-05 Juri Linkov <juri@jurta.org>
* isearch.el (isearch-done): Set mark after running hook.
Suggested by Drew Adams <drew.adams@oracle.com>.
* info.el (Info-history, Info-toc): Fix Info headers.
(Info-toc): Narrow buffer before Info-fontify-node.
(Info-build-toc): Don't check for special Info file names.
Set main-file to nil if Info-find-file returns a symbol.
2004-10-05 Emilio C. Lopes <eclig@gmx.net>:
* calendar/calendar.el (calendar-goto-iso-week): Add autoload.
(calendar-mode-map): Add binding for `calendar-goto-iso-week'.
* calendar/cal-menu.el (calendar-mode-map): Ditto.
2004-10-05 Glenn Morris <gmorris@ast.cam.ac.uk>
* calendar/cal-iso.el (calendar-iso-read-args): New function,
for old interactive spec from calendar-goto-iso-date.
(calendar-goto-iso-date): Use it.
(calendar-goto-iso-week): New function. Suggested by Emilio
C. Lopes <eclig@gmx.net>.
2004-10-04 Luc Teirlinck <teirllm@auburn.edu>
* textmodes/enriched.el (enriched-mode-map): Give
`set-left-margin' and `set-right-margin' bindings that follow the
minor mode conventions.
2004-10-03 Stefan <monnier@iro.umontreal.ca>
* textmodes/tex-mode.el (tex-dvi-view-command): Use `yap' on w32.
(tex-font-lock-keywords-1): Add url and nolinkurl for args with `_'.
(latex-block-args-alist): Add minipage and picture.
(latex-block-body-alist): Use reftex-label if enabled.
(latex-insert-block): Don't insert a \n if not necessary.
(tex-compile-commands): Make sure dvips doesn't send to printer.
(tex-compile-default): Handle the case where no executable is found.
(latex-noindent-environments): New var.
(latex-find-indent): Use it. Take an empty line as an arg-breaker.
If tex-indent-allhanging is non-nil, make sure we only align for macros
at beginning of line.
2004-10-03 Daniel Pfeiffer <occitan@esperanto.org>
* newcomment.el (comment-beginning): Doc fix and don't choke on
unset `comment-end-skip' when at beginning of comment.
2004-10-02 Dan Nicolaescu <dann@ics.uci.edu>
* term.el (term-adjust-current-row-cache): Don't allow the current
@ -5,9 +71,8 @@
(term-emulate-terminal): Fix insert mode. Handle tab insertion at
the end of the line. Fix scroll down. Add comments.
(term-handle-ansi-escape): Don't exceed terminal width when moving
right.
(term-scroll-region): Move the cursor after setting the scroll
region.
right.
(term-scroll-region): Move the cursor after setting the scroll region.
2004-10-01 Luc Teirlinck <teirllm@auburn.edu>
@ -33,8 +98,8 @@
2004-09-29 Luc Teirlinck <teirllm@auburn.edu>
* textmodes/paragraphs.el (forward-paragraph): Avoid
args-out-of-range error when point winds up at the beginning of
* textmodes/paragraphs.el (forward-paragraph):
Avoid args-out-of-range error when point winds up at the beginning of
the buffer and hard newlines are enabled.
* newcomment.el (comment-multi-line): Doc fix.

View File

@ -1,8 +1,9 @@
;;; cal-iso.el --- calendar functions for the ISO calendar
;; Copyright (C) 1995, 1997 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1997, 2004 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
;; Keywords: calendar
;; Human-Keywords: ISO calendar, calendar, diary
@ -96,27 +97,39 @@ Defaults to today's date if DATE is not given."
(message "ISO date: %s"
(calendar-iso-date-string (calendar-cursor-to-date t))))
(defun calendar-iso-read-args (&optional dayflag)
"Interactively read the arguments for an iso date command."
(let* ((today (calendar-current-date))
(year (calendar-read
"ISO calendar year (>0): "
'(lambda (x) (> x 0))
(int-to-string (extract-calendar-year today))))
(no-weeks (extract-calendar-month
(calendar-iso-from-absolute
(1-
(calendar-dayname-on-or-before
1 (calendar-absolute-from-gregorian
(list 1 4 (1+ year))))))))
(week (calendar-read
(format "ISO calendar week (1-%d): " no-weeks)
'(lambda (x) (and (> x 0) (<= x no-weeks)))))
(day (if dayflag (calendar-read
"ISO day (1-7): "
'(lambda (x) (and (<= 1 x) (<= x 7))))
1)))
(list (list week day year))))
(defun calendar-goto-iso-date (date &optional noecho)
"Move cursor to ISO DATE; echo ISO date unless NOECHO is t."
(interactive
(let* ((today (calendar-current-date))
(year (calendar-read
"ISO calendar year (>0): "
'(lambda (x) (> x 0))
(int-to-string (extract-calendar-year today))))
(no-weeks (extract-calendar-month
(calendar-iso-from-absolute
(1-
(calendar-dayname-on-or-before
1 (calendar-absolute-from-gregorian
(list 1 4 (1+ year))))))))
(week (calendar-read
(format "ISO calendar week (1-%d): " no-weeks)
'(lambda (x) (and (> x 0) (<= x no-weeks)))))
(day (calendar-read
"ISO day (1-7): "
'(lambda (x) (and (<= 1 x) (<= x 7))))))
(list (list week day year))))
(interactive (calendar-iso-read-args t))
(calendar-goto-date (calendar-gregorian-from-absolute
(calendar-absolute-from-iso date)))
(or noecho (calendar-print-iso-date)))
(defun calendar-goto-iso-week (date &optional noecho)
"Move cursor to ISO DATE; echo ISO date unless NOECHO is t.
Interactively, goes to the first day of the specified week."
(interactive (calendar-iso-read-args))
(calendar-goto-date (calendar-gregorian-from-absolute
(calendar-absolute-from-iso date)))
(or noecho (calendar-print-iso-date)))

View File

@ -1,9 +1,10 @@
;;; cal-menu.el --- calendar functions for menu bar and popup menu support
;; Copyright (C) 1994, 1995, 2001, 2003 Free Software Foundation, Inc.
;; Copyright (C) 1994, 1995, 2001, 2003, 2004 Free Software Foundation, Inc.
;; Author: Edward M. Reingold <reingold@cs.uiuc.edu>
;; Lara Rios <lrios@coewl.cen.uiuc.edu>
;; Maintainer: Glenn Morris <gmorris@ast.cam.ac.uk>
;; Keywords: calendar
;; Human-Keywords: calendar, popup menus, menu bar
@ -121,6 +122,8 @@
'("Astronomical Date" . calendar-goto-astro-day-number))
(define-key calendar-mode-map [menu-bar goto iso]
'("ISO Date" . calendar-goto-iso-date))
(define-key calendar-mode-map [menu-bar goto iso-week]
'("ISO Week" . calendar-goto-iso-week))
(define-key calendar-mode-map [menu-bar goto day-of-year]
'("Day of Year" . calendar-goto-day-of-year))
(define-key calendar-mode-map [menu-bar goto gregorian]

View File

@ -1769,6 +1769,10 @@ Driven by the variable `calendar-date-display-form'.")
"Move cursor to ISO date."
t)
(autoload 'calendar-goto-iso-week "cal-iso"
"Move cursor to start of ISO week."
t)
(autoload 'calendar-print-iso-date "cal-iso"
"Show the ISO date equivalents of date."
t)
@ -2204,6 +2208,7 @@ the inserted text. Value is always t."
(define-key calendar-mode-map "ge" 'calendar-goto-ethiopic-date)
(define-key calendar-mode-map "gp" 'calendar-goto-persian-date)
(define-key calendar-mode-map "gc" 'calendar-goto-iso-date)
(define-key calendar-mode-map "gw" 'calendar-goto-iso-week)
(define-key calendar-mode-map "gf" 'calendar-goto-french-date)
(define-key calendar-mode-map "gml" 'calendar-goto-mayan-long-count-date)
(define-key calendar-mode-map "gmpc" 'calendar-previous-calendar-round-date)

1299
lisp/calendar/icalendar.el Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,3 +1,21 @@
2004-10-06 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-group.el (gnus-update-group-mark-positions):
* gnus-sum.el (gnus-update-summary-mark-positions):
* message.el (message-check-news-body-syntax):
* gnus-msg.el (gnus-debug): Use mm-string-as-multibyte instead
of string-as-multibyte.
* gnus-sum.el (gnus-summary-insert-subject): Remove redundant setq.
2004-10-05 Juri Linkov <juri@jurta.org>
* gnus-group.el (gnus-update-group-mark-positions):
* gnus-sum.el (gnus-update-summary-mark-positions):
* message.el (message-check-news-body-syntax):
* gnus-msg.el (gnus-debug): Use `string-as-multibyte' to convert
8-bit unibyte values to a multibyte string for search functions.
2004-10-01 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-sum.el (gnus-summary-toggle-header): Make it work even if

View File

@ -1046,7 +1046,8 @@ The following commands are available:
(gnus-group-insert-group-line "dummy.group" 0 nil 0 nil)
(goto-char (point-min))
(setq gnus-group-mark-positions
(list (cons 'process (and (search-forward "\200" nil t)
(list (cons 'process (and (search-forward
(mm-string-as-multibyte "\200") nil t)
(- (point) 2))))))))
(defun gnus-mouse-pick-group (e)

View File

@ -1534,7 +1534,8 @@ The source file has to be in the Emacs load path."
;; Remove any control chars - they seem to cause trouble for some
;; mailers. (Byte-compiled output from the stuff above.)
(goto-char point)
(while (re-search-forward "[\000-\010\013-\037\200-\237]" nil t)
(while (re-search-forward (mm-string-as-multibyte
"[\000-\010\013-\037\200-\237]") nil t)
(replace-match (format "\\%03o" (string-to-char (match-string 0)))
t t))))

View File

@ -3231,20 +3231,24 @@ buffer that was in action when the last article was fetched."
[0 "" "" "05 Apr 2001 23:33:09 +0400" "" "" 0 0 "" nil]
0 nil t 128 t nil "" nil 1)
(goto-char (point-min))
(setq pos (list (cons 'unread (and (search-forward "\200" nil t)
(- (point) (point-min) 1)))))
(setq pos (list (cons 'unread
(and (search-forward
(mm-string-as-multibyte "\200") nil t)
(- (point) (point-min) 1)))))
(goto-char (point-min))
(push (cons 'replied (and (search-forward "\201" nil t)
(push (cons 'replied (and (search-forward
(mm-string-as-multibyte "\201") nil t)
(- (point) (point-min) 1)))
pos)
(goto-char (point-min))
(push (cons 'score (and (search-forward "\202" nil t)
(push (cons 'score (and (search-forward
(mm-string-as-multibyte "\202") nil t)
(- (point) (point-min) 1)))
pos)
(goto-char (point-min))
(push (cons 'download
(and (search-forward "\203" nil t)
(- (point) (point-min) 1)))
(push (cons 'download (and (search-forward
(mm-string-as-multibyte "\203") nil t)
(- (point) (point-min) 1)))
pos)))
(setq gnus-summary-mark-positions pos))))
@ -6009,8 +6013,7 @@ the subject line on."
;; Remove list identifiers from subject.
(when gnus-list-identifiers
(let ((gnus-newsgroup-headers (list header)))
(gnus-summary-remove-list-identifiers)
(setq header (car gnus-newsgroup-headers))))
(gnus-summary-remove-list-identifiers)))
(when old-header
(mail-header-set-number header (mail-header-number old-header)))
(setq gnus-newsgroup-sparse

View File

@ -4399,7 +4399,9 @@ Otherwise, generate and save a value for `canlock-password' first."
nil))))
;; Check for control characters.
(message-check 'control-chars
(if (re-search-forward "[\000-\007\013\015-\032\034-\037\200-\237]" nil t)
(if (re-search-forward
(mm-string-as-multibyte "[\000-\007\013\015-\032\034-\037\200-\237]")
nil t)
(y-or-n-p
"The article contains control characters. Really post? ")
t))

View File

@ -1729,7 +1729,7 @@ If SAME-FILE is non-nil, do not move to a different Info file."
(let ((inhibit-read-only t))
(erase-buffer)
(goto-char (point-min))
(insert "\n\^_\nFile: history Node: Top, Up: (dir)\n\n")
(insert "\n\^_\nFile: history, Node: Top, Up: (dir)\n\n")
(insert "Recently Visited Nodes\n**********************\n\n")
(insert "* Menu:\n\n")
(let ((hl (delete '("history" "Top") Info-history-list)))
@ -1749,26 +1749,31 @@ If SAME-FILE is non-nil, do not move to a different Info file."
"Go to a node with table of contents of the current Info file.
Table of contents is created from the tree structure of menus."
(interactive)
(let ((curr-file Info-current-file)
(curr-node Info-current-node)
(let ((curr-file (substring-no-properties Info-current-file))
(curr-node (substring-no-properties Info-current-node))
p)
(with-current-buffer (get-buffer-create " *info-toc*")
(let ((inhibit-read-only t)
(node-list (Info-build-toc curr-file)))
(erase-buffer)
(goto-char (point-min))
(insert "\n\^_\nFile: toc Node: Top, Up: (dir)\n\n")
(insert "\n\^_\nFile: toc, Node: Top, Up: (dir)\n\n")
(insert "Table of Contents\n*****************\n\n")
(insert "*Note Top::\n")
(insert "*Note Top: (" curr-file ")Top.\n")
(Info-insert-toc
(nth 2 (assoc "Top" node-list)) ; get Top nodes
node-list 0 (substring-no-properties curr-file)))
node-list 0 curr-file))
(if (not (bobp))
(let ((Info-hide-note-references 'hide)
(Info-fontify-visited-nodes nil))
(Info-mode)
(setq Info-current-file "toc" Info-current-node "Top")
(Info-fontify-node)))
(goto-char (point-min))
(narrow-to-region (or (re-search-forward "\n[\^_\f]\n" nil t)
(point-min))
(point-max))
(Info-fontify-node)
(widen)))
(goto-char (point-min))
(if (setq p (search-forward (concat "*Note " curr-node ":") nil t))
(setq p (- p (length curr-node) 2))))
@ -1789,14 +1794,12 @@ Table of contents is created from the tree structure of menus."
(defun Info-build-toc (file)
"Build table of contents from menus of Info FILE and its subfiles."
(if (equal file "dir")
(error "Table of contents for Info directory is not supported yet"))
(with-temp-buffer
(let* ((default-directory (or (and (stringp file)
(file-name-directory
(setq file (Info-find-file file))))
(let* ((file (and (stringp file) (Info-find-file file)))
(default-directory (or (and (stringp file)
(file-name-directory file))
default-directory))
(main-file file)
(main-file (and (stringp file) file))
(sections '(("Top" "Top")))
nodes subfiles)
(while (or main-file subfiles)

View File

@ -680,16 +680,7 @@ is treated as a regexp. See \\[isearch-forward] for more info."
(if isearch-small-window
(goto-char found-point)
;; Exiting the save-window-excursion clobbers window-start; restore it.
(set-window-start (selected-window) found-start t))
;; If there was movement, mark the starting position.
;; Maybe should test difference between and set mark iff > threshold.
(if (/= (point) isearch-opoint)
(or (and transient-mark-mode mark-active)
(progn
(push-mark isearch-opoint t)
(or executing-kbd-macro (> (minibuffer-depth) 0)
(message "Mark saved where search started"))))))
(set-window-start (selected-window) found-start t)))
(setq isearch-mode nil)
(if isearch-input-method-local-p
@ -714,6 +705,16 @@ is treated as a regexp. See \\[isearch-forward] for more info."
(isearch-update-ring isearch-string isearch-regexp))
(run-hooks 'isearch-mode-end-hook)
;; If there was movement, mark the starting position.
;; Maybe should test difference between and set mark iff > threshold.
(if (/= (point) isearch-opoint)
(or (and transient-mark-mode mark-active)
(progn
(push-mark isearch-opoint t)
(or executing-kbd-macro (> (minibuffer-depth) 0)
(message "Mark saved where search started")))))
(and (not edit) isearch-recursive-edit (exit-recursive-edit)))
(defun isearch-update-ring (string &optional regexp)

View File

@ -423,7 +423,7 @@ and raises an error or returns nil if NOERROR is non-nil."
(defun comment-beginning ()
"Find the beginning of the enclosing comment.
Returns nil if not inside a comment, else moves point and returns
the same as `comment-search-forward'."
the same as `comment-search-backward'."
;; HACK ATTACK!
;; We should really test `in-string-p' but that can be expensive.
(unless (eq (get-text-property (point) 'face) 'font-lock-string-face)
@ -435,7 +435,7 @@ the same as `comment-search-forward'."
(and
;; For modes where comment-start and comment-end are the same,
;; the search above may have found a `ce' rather than a `cs'.
(or (not (looking-at comment-end-skip))
(or (if comment-end-skip (not (looking-at comment-end-skip)))
;; Maybe font-lock knows that it's a `cs'?
(eq (get-text-property (match-end 0) 'face)
'font-lock-comment-face)

View File

@ -188,6 +188,7 @@ detailed description of this mode.
(setq gdb-var-changed nil)
(setq gdb-first-prompt nil)
(setq gdb-prompting nil)
(setq gdb-input-queue nil)
(setq gdb-current-item nil)
(setq gdb-pending-triggers nil)
(setq gdb-output-sink 'user)

View File

@ -258,8 +258,8 @@ Commands:
(define-key enriched-mode-map "\M-j" 'facemenu-justification-menu)
(define-key enriched-mode-map "\M-S" 'set-justification-center)
(define-key enriched-mode-map "\C-x\t" 'increase-left-margin)
(define-key enriched-mode-map "\C-c\C-l" 'set-left-margin)
(define-key enriched-mode-map "\C-c\C-r" 'set-right-margin)
(define-key enriched-mode-map "\C-c[" 'set-left-margin)
(define-key enriched-mode-map "\C-c]" 'set-right-margin)
;;;
;;; Some functions dealing with text-properties, especially indentation

View File

@ -1,7 +1,7 @@
;;; tex-mode.el --- TeX, LaTeX, and SliTeX mode commands -*- coding: utf-8 -*-
;; Copyright (C) 1985,86,89,92,94,95,96,97,98,1999,2002,03,2004
;; Free Software Foundation, Inc.
;; Copyright (C) 1985, 1986, 1989, 1992, 1994, 1995, 1996, 1997, 1998, 1999,
;; 2002, 2003, 2004 Free Software Foundation, Inc.
;; Maintainer: FSF
;; Keywords: tex
@ -196,7 +196,11 @@ use."
:group 'tex-view)
;;;###autoload
(defcustom tex-dvi-view-command '(if (eq window-system 'x) "xdvi" "dvi2tty * | cat -s")
(defcustom tex-dvi-view-command
'(cond
((eq window-system 'x) "xdvi")
((eq window-system 'w32) "yap")
(t "dvi2tty * | cat -s"))
"*Command used by \\[tex-view] to display a `.dvi' file.
If it is a string, that specifies the command directly.
If this string contains an asterisk (`*'), that is replaced by the file name;
@ -453,7 +457,8 @@ An alternative value is \" . \", if you use a font with a narrow period."
'("input" "include" "includeonly" "bibliography"
"epsfig" "psfig" "epsf" "nofiles" "usepackage"
"documentstyle" "documentclass" "verbatiminput"
"includegraphics" "includegraphics*")
"includegraphics" "includegraphics*"
"url" "nolinkurl")
t))
;; Miscellany.
(slash "\\\\")
@ -771,8 +776,10 @@ Inherits `shell-mode-map' with a few additions.")
"part" "chapter" "newcommand"
"renewcommand") 'words)
"\\|NeedsTeXFormat{LaTeX")))
(if (looking-at
"document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
(if (and (looking-at
"document\\(style\\|class\\)\\(\\[.*\\]\\)?{slides}")
;; SliTeX is almost never used any more nowadays.
(tex-executable-exists-p slitex-run-command))
'slitex-mode
'latex-mode)
'plain-tex-mode))))
@ -1219,8 +1226,13 @@ A prefix arg inhibits the checking."
(defvar latex-block-default "enumerate")
(defvar latex-block-args-alist
'(("array" nil ?\{ (skeleton-read "[options]: ") ?\})
("tabular" nil ?\{ (skeleton-read "[options]: ") ?\}))
'(("array" nil ?\{ (skeleton-read "Format: ") ?\})
("tabular" nil ?\{ (skeleton-read "Format: ") ?\})
("minipage" nil ?\{ (skeleton-read "Size: ") ?\})
("picture" nil ?\( (skeleton-read "SizeX,SizeY: ") ?\))
;; FIXME: This is right for Prosper, but not for seminar.
;; ("slide" nil ?\{ (skeleton-read "Title: ") ?\})
)
"Skeleton element to use for arguments to particular environments.
Every element of the list has the form (NAME . SKEL-ELEM) where NAME is
the name of the environment and SKEL-ELEM is an element to use in
@ -1229,8 +1241,11 @@ a skeleton (see `skeleton-insert').")
(defvar latex-block-body-alist
'(("enumerate" nil '(latex-insert-item) > _)
("itemize" nil '(latex-insert-item) > _)
("table" nil "\\caption{" > - "}" > \n _)
("figure" nil > _ \n "\\caption{" > _ "}" >))
("table" nil "\\caption{" > (skeleton-read "Caption: ") "}" > \n
'(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table"))
\n _)
("figure" nil > _ \n "\\caption{" > (skeleton-read "Caption: ") "}" > \n
'(if (and (boundp 'reftex-mode) reftex-mode) (reftex-label "table"))))
"Skeleton element to use for the body of particular environments.
Every element of the list has the form (NAME . SKEL-ELEM) where NAME is
the name of the environment and SKEL-ELEM is an element to use in
@ -1254,7 +1269,8 @@ Puts point on a blank line between them."
choice)
\n "\\begin{" str "}"
(cdr (assoc str latex-block-args-alist))
> \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _)) \n
> \n (or (cdr (assoc str latex-block-body-alist)) '(nil > _))
(unless (bolp) '\n)
"\\end{" str "}" > \n)
(define-skeleton latex-insert-item
@ -1598,7 +1614,7 @@ If NOT-ALL is non-nil, save the `.dvi' file."
("texindex %r.??")
("dvipdfm %r" "%r.dvi" "%r.pdf")
("dvipdf %r" "%r.dvi" "%r.pdf")
("dvips %r" "%r.dvi" "%r.ps")
("dvips -o %r.ps %r" "%r.dvi" "%r.ps")
("ps2pdf %r.ps" "%r.ps" "%r.pdf")
("gv %r.ps &" "%r.ps")
("gv %r.pdf &" "%r.pdf")
@ -1767,7 +1783,7 @@ FILE is typically the output DVI or PDF file."
(not (tex-uptodate-p (format-spec out fspec)))))))
(defun tex-compile-default (fspec)
"Guess a default command given the format-spec FSPEC."
"Guess a default command given the `format-spec' FSPEC."
;; TODO: Learn to do latex+dvips!
(let ((cmds nil)
(unchanged-in nil))
@ -1777,6 +1793,9 @@ FILE is typically the output DVI or PDF file."
(if (tex-command-active-p cmd fspec)
(push cmd cmds)
(push (nth 1 cmd) unchanged-in))))
;; If no command seems to be applicable, arbitrarily pick the first one.
(unless cmds
(setq cmds (list (car tex-compile-commands))))
;; Remove those commands whose input was considered stable for
;; some other command (typically if (t . "%.pdf") is inactive
;; then we're using pdflatex and the fact that the dvi file
@ -2261,6 +2280,7 @@ Runs the shell command defined by `tex-show-queue-command'."
(defvar tex-indent-basic 2)
(defvar tex-indent-item tex-indent-basic)
(defvar tex-indent-item-re "\\\\\\(bib\\)?item\\>")
(defvar latex-noindent-environments '("document"))
(defvar tex-latex-indent-syntax-table
(let ((st (make-syntax-table tex-mode-syntax-table)))
@ -2311,7 +2331,6 @@ There might be text before point."
(latex-find-indent 'virtual))))
;; Default (maybe an argument)
(let ((pos (point))
(char (char-after))
;; Outdent \item if necessary.
(indent (if (looking-at tex-indent-item-re) (- tex-indent-item) 0))
up-list-pos)
@ -2329,6 +2348,17 @@ There might be text before point."
;; Have to indent relative to the open-paren.
(goto-char up-list-pos)
(if (and (not tex-indent-allhanging)
(save-excursion
;; Make sure we're an argument to a macro and
;; that the macro is at the beginning of a line.
(condition-case nil
(progn
(while (eq (char-syntax (char-after)) ?\()
(forward-sexp -1))
(and (eq (char-syntax (char-after)) ?/)
(progn (skip-chars-backward " \t&")
(bolp))))
(scan-error nil)))
(> pos (progn (latex-down-list)
(forward-comment (point-max))
(point))))
@ -2336,18 +2366,24 @@ There might be text before point."
(current-column)
;; We're the first element after a hanging brace.
(goto-char up-list-pos)
(+ indent tex-indent-basic (latex-find-indent 'virtual))))
(+ (if (and (looking-at "\\\\begin *{\\([^\n}]+\\)")
(member (match-string 1)
latex-noindent-environments))
0 tex-indent-basic)
indent (latex-find-indent 'virtual))))
;; We're now at the "beginning" of a line.
((not (and (not virtual) (eq (char-after) ?\\)))
;; Nothing particular here: just keep the same indentation.
(+ indent (current-column)))
;; We're now looking at a macro call.
((looking-at tex-indent-item-re)
;; Indenting relative to an item, have to re-add the outdenting.
((looking-at tex-indent-item-re)
;; Indenting relative to an item, have to re-add the outdenting.
(+ indent (current-column) tex-indent-item))
(t
(let ((col (current-column)))
(if (or (null char) (not (eq (char-syntax char) ?\()))
(if (or (not (eq (char-syntax (or (char-after pos) ?\ )) ?\())
;; Can't be an arg if there's an empty line inbetween.
(save-excursion (re-search-forward "^[ \t]*$" pos t)))
;; If the first char was not an open-paren, there's
;; a risk that this is really not an argument to the
;; macro at all.
@ -2422,5 +2458,5 @@ There might be text before point."
(provide 'tex-mode)
;;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080
;; arch-tag: c0a680b1-63aa-4547-84b9-4193c29c0080
;;; tex-mode.el ends here

View File

@ -1,3 +1,8 @@
2004-10-06 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-insert-file-contents): Use the URL to decide the
encoding, not the buffer-file-name (which might not even exist).
2004-09-20 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-insert-file-contents): Decode contents.

View File

@ -208,7 +208,7 @@ accessible."
;; annotation which we could use as a hint of the locale in use
;; at the remote site. Not sure how/if that should be done. --Stef
(decode-coding-inserted-region
start (point) buffer-file-name visit beg end replace)))
start (point) url visit beg end replace)))
(list url (length data))))
(defun url-file-name-completion (url directory)

View File

@ -598,8 +598,8 @@ This follows the rule [28] in the XML specifications."
nil)
(t
(if xml-validating-parser
error "XML: (Validity) Invalid element type in the DTD")))
(error "XML: (Validity) Invalid element type in the DTD"))))
;; rule [45]: the element declaration must be unique
(if (and (assoc element dtd)
xml-validating-parser)
@ -727,13 +727,13 @@ This follows the rule [28] in the XML specifications."
(match-string 1 this-part)))))))
(cond ((null children)
(if (stringp expansion)
(if (and (eq (length expansion) 1)
(stringp (cadr expansion)))
(setq children (concat prev-part expansion))
(if (stringp (car (last expansion)))
(progn
(setq children
(list (concat prev-part (car expansion))
(cdr expansion))))
(if (stringp (car expansion))
(setq children
(list (concat prev-part (car expansion))
(append (cdr expansion))))
(setq children (append expansion prev-part)))))
((stringp children)
(if (stringp expansion)
@ -756,11 +756,15 @@ This follows the rule [28] in the XML specifications."
(cond ((stringp children)
(concat children (substring string point)))
((stringp (car (last children)))
(concat (car children) (substring string point)))
(concat (car (last children)) (substring string point)))
((null children)
string)
(t
(nreverse children)))))
(concat (mapconcat 'identity
(nreverse children)
"")
(substring string point))))))
;;*******************************************************************
;;**
;;** Printing a tree.

View File

@ -1,6 +1,7 @@
@c \input texinfo @c -*-texinfo-*-
\input texinfo @c -*-texinfo-*-
@comment %**start of header
@setfilename ../info/eintr
@c setfilename emacs-lisp-intro.info
@c sethtmlfilename emacs-lisp-intro.html
@settitle Programming in Emacs Lisp
@syncodeindex vr cp
@ -21,8 +22,8 @@
@comment %**end of header
@set edition-number 2.12
@set update-date 2003 Nov 19
@set edition-number 2.13
@set update-date 2004 Oct 5
@ignore
## Summary of shell commands to create various output formats:
@ -61,6 +62,8 @@
## View Info output with standalone reader
info emacs-lisp-intro.info
## popd
@end ignore
@c ================ Included Figures ================
@ -180,7 +183,7 @@ people who are not programmers.
Edition @value{edition-number}, @value{update-date}
@sp 1
Copyright @copyright{} 1990, 1991, 1992, 1993, 1994, 1995, 1997, 2001,
2002, 2003 Free Software Foundation, Inc.
2002, 2003, 2004 Free Software Foundation, Inc.
@sp 1
@iftex
@ -1050,13 +1053,16 @@ Robert J. Chassell
@chapter List Processing
To the untutored eye, Lisp is a strange programming language. In Lisp
code there are parentheses everywhere. Some people even claim that the
name stands for `Lots of Isolated Silly Parentheses'. But the claim is
unwarranted. Lisp stands for LISt Processing, and the programming
language handles @emph{lists} (and lists of lists) by putting them
between parentheses. The parentheses mark the boundaries of the list.
Sometimes a list is preceded by a single apostrophe or quotation mark,
@samp{'}. Lists are the basis of Lisp.
code there are parentheses everywhere. Some people even claim that
the name stands for `Lots of Isolated Silly Parentheses'. But the
claim is unwarranted. Lisp stands for LISt Processing, and the
programming language handles @emph{lists} (and lists of lists) by
putting them between parentheses. The parentheses mark the boundaries
of the list. Sometimes a list is preceded by a single apostrophe or
quotation mark, @samp{'}@footnote{The single apostrophe or quotation
mark is an abbreviation for the function @code{quote}; you need not
think about functions now; functions are defined in @ref{Making
Errors, , Generate an Error Message}.} Lists are the basis of Lisp.
@menu
* Lisp Lists:: What are lists?
@ -2135,7 +2141,8 @@ Debugger entered--Lisp error:
@need 1250
As usual, the error message tries to be helpful and makes sense after you
learn how to read it.
learn how to read it.@footnote{@code{(quote hello)} is an expansion of
the abbreviation @code{'hello}.}
The first part of the error message is straightforward; it says
@samp{wrong type argument}. Next comes the mysterious jargon word
@ -20638,6 +20645,7 @@ each column."
@end smallexample
@end ifnottex
@c qqq
@ignore
Graphing Definitions Re-listed
@ -21137,6 +21145,7 @@ each column."
(print-X-axis numbers-list horizontal-step)))
@end group
@end smallexample
@c qqq
@end ignore
@page

View File

@ -1,3 +1,7 @@
2004-10-05 Kim F. Storm <storm@cua.dk>
* display.texi (Fringe Bitmaps): Update fringe-bitmaps-at-pos.
2004-09-29 Kim F. Storm <storm@cua.dk>
* display.texi (Fringe Bitmaps): Use symbols rather than numbers

View File

@ -2655,9 +2655,10 @@ symbols have their own name space.
@defun fringe-bitmaps-at-pos &optional pos window
This function returns the fringe bitmaps of the display line
containing position @var{pos} in window @var{window}. The return
value has the form @code{(@var{left} . @var{right})}, where @var{left}
value has the form @code{(@var{left} @var{right} @var{ov})}, where @var{left}
is the symbol for the fringe bitmap in the left fringe (or @code{nil}
if no bitmap), and @var{right} is similar for the right fringe.
if no bitmap), @var{right} is similar for the right fringe, and @var{ov}
is non-@code{nil} if there is an overlay arrow in the left fringe.
The value is @code{nil} if @var{pos} is not visible in @var{window}.
If @var{window} is @code{nil}, that stands for the selected window.

View File

@ -1,3 +1,53 @@
2004-10-06 Karl Berry <karl@gnu.org>
* info.texi (@kbd{1}--@kbd{9}): no space around --, for
consistency with other uses of dashes.
2004-10-06 Nick Roberts <nickrob@snap.net.nz>
* building.texi (Starting GUD): Note that multiple debugging
sessions requires `gdb --fullname'.
2004-10-05 Karl Berry <karl@gnu.org>
* info.texi: consistently use --- throughout, periods at end of
menu descriptions, and a couple typos.
From: Benno Schulenberg <benno@nietvergeten.nl>,
in bug-texinfo mail.
2004-10-05 Luc Teirlinck <teirllm@auburn.edu>
* text.texi: Various small changes in addition to the following.
(Text): Replace xref for autotype with inforef.
(Sentences): Explain nil value for `sentence-end'.
(Paragraphs): Update default values for `paragraph-start' and
`paragraph-separate'.
(Text Mode): Correct description of Text mode's effect on the
syntax table.
(Outline Visibility): `hide-other' does not hide top level headings.
`selective-display-ellipses' no longer has an effect on Outline mode.
(TeX Misc): Add missing @cindex.
Replace xref for RefTeX with inforef.
(Requesting Formatted Text): the variable
`enriched-fill-after-visiting' no longer exists.
(Editing Format Info): Update names of menu items and commands.
(Format Faces): Mention special effect of specifying the default face.
Describe inheritance of text properties.
Correct description of `fixed' face.
(Format Indentation): Correct description of effect of setting
margins. Mention `set-left-margin' and `set-right-margin'.
(Format Justification): Update names of menu items.
`set-justification-full' is now bound to `M-j b'.
Mention that `default-justification' is a per buffer variable.
(Format Properties): Update name of menu item.
(Forcing Enriched Mode): `format-decode-buffer' automatically
turns on Enriched mode if the buffer is in text/enriched format.
2004-10-05 Emilio C. Lopes <eclig@gmx.net>
* calendar.texi (From Other Calendar): Add calendar-goto-iso-week.
2004-09-28 Kim F. Storm <storm@cua.dk>
* display.texi (Display Custom) <indicate-buffer-boundaries>:
@ -893,7 +943,7 @@
* misc.texi: Section "Saving Emacs Sessions" rewritten.
2003-09-29 Jan D. <jhd@gaffa.gaia.swipnet.se>
2003-09-29 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
* xresources.texi (GTK names in Emacs): Correct typo.

View File

@ -336,11 +336,13 @@ to a particular debugger program.
@findex gdb
Run GDB as a subprocess of Emacs. If the variable
@code{gud-gdb-command-name} is ``gdb --annotate=3'' (the default
value) then GDB starts as for @kbd{M-x gdba} below. If you want to
GDB to start as in Emacs 21.3 and earlier then set
@code{gud-gdb-command-name} to ``gdb --fullname''. In this case, the
command creates a buffer for input and output to GDB, and switches to
it. If a GDB buffer already exists, it just switches to that buffer.
value) then GDB starts as for @kbd{M-x gdba} below. If you want GDB
to start as in Emacs 21.3 and earlier then edit the string in the
minibuffer or set @code{gud-gdb-command-name} to ``gdb --fullname''.
You need to do this if you want to run multiple debugging sessions
within one Emacs session. In this case, the command creates a buffer
for input and output to GDB, and switches to it. If a GDB buffer
already exists, it just switches to that buffer.
@item M-x gdba @key{RET} @var{file} @key{RET}
Run GDB as a subprocess of Emacs, providing a graphical interface

View File

@ -37,6 +37,7 @@ information about the calendar and diary.
* Other Calendars:: Converting dates to other calendar systems.
* Diary:: Displaying events from your diary.
* Appointments:: Reminders when it's time to do something.
* iCalendar:: Converting diary events to/from iCalendar format.
* Daylight Savings:: How to specify when daylight savings time is active.
* Time Intervals:: Keeping track of time intervals.
@end menu
@ -754,6 +755,7 @@ other than Mayan; for the Mayan calendar, see the following section.
@kindex g @var{char} @r{(Calendar mode)}
@findex calendar-goto-iso-date
@findex calendar-goto-iso-week
@findex calendar-goto-julian-date
@findex calendar-goto-astro-day-number
@findex calendar-goto-hebrew-date
@ -767,6 +769,9 @@ other than Mayan; for the Mayan calendar, see the following section.
@item g c
Move to a date specified in the ISO commercial calendar
(@code{calendar-goto-iso-date}).
@item g w
Move to a week specified in the ISO commercial calendar
(@code{calendar-goto-iso-week}).
@item g j
Move to a date specified in the Julian calendar
(@code{calendar-goto-julian-date}).
@ -1379,6 +1384,57 @@ clock. The command @kbd{M-x appt-add} adds entries to the appointment
list without affecting your diary file. You delete entries from the
appointment list with @kbd{M-x appt-delete}.
@node iCalendar
@section iCalendar
@cindex iCalendar support
The icalendar package aims at providing an implementation of the
iCalendar standard, as defined in ``RFC 2445 -- Internet Calendaring and
Scheduling Core Object Specification (iCalendar)''. It provides a means
for importing [iv]Calendar data into Emacs diary files and vice versa.
Importing should work correctly for ``ordinary'', i.e. non-recurring,
events. Recurring events may not be imported correctly, if they are
imported at all. Exporting of diary files into iCalendar files should
work correctly for most diary entries. Please note that
@file{icalendar.el} is work in progress, so usage may evolve in future.
@subsection Usage
To activate the package, use @code{(require 'icalendar)}.
@findex icalendar-extract-ical-from-buffer
The command @code{icalendar-extract-ical-from-buffer} extracts
iCalendar data from the current buffer and adds it to your (default)
diary file. It can be used interactively, or for automatic extraction
of iCalendar data; for example with the VM mail reader one could use:
@example
(add-hook 'vm-select-new-message-hook 'icalendar-extract-ical-from-buffer)
@end example
@findex icalendar-import-file
The function @code{icalendar-import-file} can be used
non-interactively to import an iCalendar file. @strong{Caution:} the
contents of the target diary file are @emph{deleted} by default! It is
highly recommended to use a dedicated diary file for importing. For
example:
@example
(icalendar-import-file "/here/is/calendar.ics" "/there/goes/ical-diary")
@end example
@noindent
The import file can be added to the diary using an @code{#include}
directive. @xref{Fancy Diary Display,,, elisp, The Emacs Lisp Reference
Manual}.
@findex icalendar-convert-diary-to-ical
Use @code{icalendar-convert-diary-to-ical} to interactively export an
Emacs diary file to iCalendar format. @strong{Caution:} the contents of
the target file are @emph{deleted} by default!
@node Daylight Savings
@section Daylight Savings Time
@cindex daylight savings time

View File

@ -130,15 +130,15 @@ the screen.
@end ifnotinfo
@menu
* Help-Small-Screen:: Starting Info on a Small Screen
* Help:: How to use Info
* Help-P:: Returning to the Previous node
* Help-Small-Screen:: Starting Info on a Small Screen.
* Help:: How to use Info.
* Help-P:: Returning to the Previous node.
* Help-^L:: The Space, DEL, B and ^L commands.
* Help-Inv:: Invisible text in Emacs Info.
* Help-M:: Menus
* Help-Xref:: Following cross-references
* Help-Int:: Some intermediate Info commands
* Help-Q:: Quitting Info
* Help-M:: Menus.
* Help-Xref:: Following cross-references.
* Help-Int:: Some intermediate Info commands.
* Help-Q:: Quitting Info.
@end menu
@node Help-Small-Screen
@ -212,8 +212,8 @@ This is line 59
If you have managed to get here, go back to the beginning with
@kbd{DEL} (or @key{BACKSPACE}), and come back here again, then you
understand the about the @samp{Space} and @samp{Backspace} keys. So
now type an @kbd{n} ---just one character; don't type the quotes and
don't type the Return key afterward--- to get to the normal start of
now type an @kbd{n}---just one character; don't type the quotes and
don't type the Return key afterward---to get to the normal start of
the course.
@end ifinfo
@ -243,8 +243,8 @@ well. In Emacs, the header line is duplicated in a special typeface,
and the duplicate remains at the top of the window all the time even
if you scroll through the node.
Besides a @samp{Next}, a node can have a @samp{Previous} or an
@samp{Up} links, or both. As you can see, this node has all of these
Besides a @samp{Next}, a node can have a @samp{Previous} link, or an
@samp{Up} link, or both. As you can see, this node has all of these
links.
@kindex n @r{(Info mode)}
@ -375,7 +375,7 @@ scroll beyond the beginning or the end of the current node.
@kindex C-l @r{(Info mode)}
If your screen is ever garbaged, you can tell Info to display it
again by typing @kbd{C-l} (@kbd{Control-L}, that is---hold down
again by typing @kbd{C-l} (@kbd{Control-L}---that is, hold down
@key{CTRL} and type @kbd{L} or @kbd{l}).
@format
@ -414,8 +414,8 @@ the list, make it go away by typing a @key{SPC} repeatedly.
(If you are using the stand-alone Info reader, type @kbd{C-x 0} to
return here, that is---press and hold @key{CTRL}, type an @kbd{x},
then release @key{CTRL} and @kbd{x}, and press @kbd{0}---a zero, not
the letter ``o''.)
then release @key{CTRL} and @kbd{x}, and press @kbd{0}; that's a zero,
not the letter ``o''.)
From now on, you will encounter large nodes without warning, and
will be expected to know how to use @key{SPC} and @key{BACKSPACE} to
@ -971,7 +971,7 @@ the node @samp{Top} in the Info file @file{dir}. Likewise,
all of the current file by typing @kbd{g*@key{RET}} or all of any
other file with @kbd{g(@var{filename})@key{RET}}.
@subheading @kbd{1} -- @kbd{9} choose a menu subtopic by its number
@subheading @kbd{1}--@kbd{9} choose a menu subtopic by its number
@kindex 1 @r{through} 9 @r{(Info mode)}
@findex Info-nth-menu-item
@ -1061,7 +1061,7 @@ you typed @emph{as a substring}. For each match, Info shows in the
echo area the full index entry it found. Often, the text of the full
index entry already gives you enough information to decide whether it
is relevant to what you are looking for, so we recommend that you read
what Emacs shows in the echo area before looking at the node it
what Info shows in the echo area before looking at the node it
displays.
Since @kbd{i} looks for a substring, you can search for subjects even
@ -1205,7 +1205,7 @@ reads from the terminal.
A menu begins with a line starting with @w{@samp{* Menu:}}. The
rest of the line is a comment. After the starting line, every line
that begins with a @samp{* } lists a single topic. The name of the
topic--what the user must type at the @kbd{m}'s command prompt to
topic---what the user must type at the @kbd{m}'s command prompt to
select this topic---comes right after the star and space, and is
followed by a colon, spaces and tabs, and the name of the node which
discusses that topic. The node name, like node names following

View File

@ -1,5 +1,5 @@
@c This is part of the Emacs manual.
@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002
@c Copyright (C) 1985,86,87,93,94,95,97,2000,2001, 2002, 2004
@c Free Software Foundation, Inc.
@c See file emacs.texi for copying conditions.
@node Text, Programs, Indentation, Top
@ -55,7 +55,7 @@ Then the formatting appears on the screen in Emacs while you edit.
@cindex autotyping
@cindex automatic typing
The ``automatic typing'' features may be useful when writing text.
@xref{Top,, Autotyping, autotype, Features for Automatic Typing}.
@inforef{Top,, autotype}.
@menu
* Words:: Moving over and killing words.
@ -215,10 +215,12 @@ followed by the end of a line or two spaces, with any number of
A sentence also begins or ends wherever a paragraph begins or ends.
@vindex sentence-end
The variable @code{sentence-end} controls recognition of the end of a
sentence. It is a regexp that matches the last few characters of a
sentence, together with the whitespace following the sentence. Its
normal value is
The variable @code{sentence-end} controls recognition of the end of
a sentence. If non-@code{nil}, it is a regexp that matches the last
few characters of a sentence, together with the whitespace following
the sentence. If the value is @code{nil}, the default, then Emacs
computes the regexp according to various criteria. The result is
normally similar to the following regexp:
@example
"[.?!][]\"')]*\\($\\| $\\|\t\\| \\)[ \t\n]*"
@ -298,9 +300,10 @@ that either starts or separates paragraphs. The value of
that separate paragraphs without being part of any paragraph (for
example, blank lines). Lines that start a new paragraph and are
contained in it must match only @code{paragraph-start}, not
@code{paragraph-separate}. For example, in Fundamental mode,
@code{paragraph-start} is @w{@code{"[ \t\n\f]"}}, and
@code{paragraph-separate} is @w{@code{"\f\\|[ \t]*$"}}.
@code{paragraph-separate}. Each regular expression must match at the
left margin. For example, in Fundamental mode, @code{paragraph-start}
is @w{@code{"\f\\|[ \t]*$"}}, and @code{paragraph-separate} is
@w{@code{"[ \t\f]*$"}}.
Normally it is desirable for page boundaries to separate paragraphs.
The default values of these variables recognize the usual separator for
@ -312,9 +315,9 @@ pages.
@cindex pages
@cindex formfeed
Files are often thought of as divided into @dfn{pages} by the
@dfn{formfeed} character (@acronym{ASCII} control-L, octal code 014). When you
print hardcopy for a file, this character forces a page break; thus,
each page of the file goes on a separate page on paper. Most Emacs
@dfn{formfeed} character (@acronym{ASCII} control-L, octal code 014).
When you print hardcopy for a file, this character forces a page break;
thus, each page of the file goes on a separate page on paper. Most Emacs
commands treat the page-separator character just like any other
character: you can insert it with @kbd{C-q C-l}, and delete it with
@key{DEL}. Thus, you are free to paginate your file or not. However,
@ -575,7 +578,7 @@ period. Set the variable @code{sentence-end-without-period} to
conditions for where line-breaking is allowed. Its value is either
@code{nil} or a Lisp function; the function is called with no
arguments, and if it returns a non-@code{nil} value, then point is not
a good place to break the line. The standard functions you can use
a good place to break the line. Two standard functions you can use are
@code{fill-single-word-nobreak-p} (don't break after the first word of
a sentence or before the last) and @code{fill-french-nobreak-p} (don't
break after @samp{(} or before @samp{)}, @samp{:} or @samp{?}).
@ -606,11 +609,12 @@ a new paragraph.
@kindex C-x .
@findex set-fill-prefix
To specify a fill prefix, move to a line that starts with the desired
prefix, put point at the end of the prefix, and give the command
@w{@kbd{C-x .}}@: (@code{set-fill-prefix}). That's a period after the
@kbd{C-x}. To turn off the fill prefix, specify an empty prefix: type
@w{@kbd{C-x .}}@: with point at the beginning of a line.@refill
To specify a fill prefix for the current buffer, move to a line that
starts with the desired prefix, put point at the end of the prefix,
and give the command @w{@kbd{C-x .}}@: (@code{set-fill-prefix}).
That's a period after the @kbd{C-x}. To turn off the fill prefix,
specify an empty prefix: type @w{@kbd{C-x .}}@: with point at the
beginning of a line.@refill
When a fill prefix is in effect, the fill commands remove the fill
prefix from each line before filling and insert it on each line after
@ -824,14 +828,14 @@ filling determines what indentation to use when filling a paragraph.
@kindex TAB @r{(Text mode)}
Text mode defines @key{TAB} to run @code{indent-relative}
(@pxref{Indentation}), so that you can conveniently indent a line like
the previous line. When the previous line is not indented,
@code{indent-relative} runs @code{tab-to-tab-stop}, which uses Emacs tab
stops that you can set (@pxref{Tab Stops}).
the previous line.
Text mode turns off the features concerned with comments except when
you explicitly invoke them. It changes the syntax table so that periods
are not considered part of a word, while apostrophes, backspaces and
underlines are considered part of words.
you explicitly invoke them. It changes the syntax table so that
single-quotes are considered part of words. However, if a word starts
with single-quotes, then these are treated as a prefix for purposes
such as capitalization. That is, @kbd{M-c} will convert
@samp{'hello'} into @samp{'Hello'}, as expected.
@cindex Paragraph-Indent Text mode
@cindex mode, Paragraph-Indent Text
@ -896,8 +900,8 @@ invisible lines follow).
Editing commands that operate on lines, such as @kbd{C-n} and
@kbd{C-p}, treat the text of the invisible line as part of the previous
visible line. Killing an entire visible line, including its terminating
newline, really kills all the following invisible lines along with it.
visible line. Killing the ellipsis at the end of a visible line
really kills all the following invisible lines.
Outline minor mode provides the same commands as the major mode,
Outline mode, but you can use it in conjunction with other major modes.
@ -1137,12 +1141,9 @@ except the top @var{n} levels of heading lines.
@findex hide-other
@kindex C-c C-o @r{(Outline mode)}
The command @kbd{C-c C-o} (@code{hide-other}) hides everything except
the heading or body text that point is in, plus its parents (the headers
leading up from there to top level in the outline).
You can turn off the use of ellipses at the ends of visible lines by
setting @code{selective-display-ellipses} to @code{nil}. Then there is
no visible indication of the presence of invisible lines.
the heading and body text that point is in, plus its parents (the headers
leading up from there to top level in the outline) and the top level
headings.
@findex reveal-mode
When incremental search finds text that is hidden by Outline mode,
@ -1180,7 +1181,7 @@ buffers.
nested portion of the outline, while hiding its relatives at higher
levels.
Consider an Outline mode buffer all the text and subheadings under
Consider an Outline mode buffer with all the text and subheadings under
level-1 headings hidden. To look at what is hidden under one of these
headings, you could use @kbd{C-c C-e} (@kbd{M-x show-entry}) to expose
the body, or @kbd{C-c C-i} to expose the child (level-2) headings.
@ -1215,8 +1216,8 @@ particular chapter or section of your document.
To unzoom (exit) a fold, use @kbd{C-c C-x} (@kbd{M-x foldout-exit-fold}).
This hides all the text and subheadings under the top-level heading and
returns you to the previous view of the buffer. Specifying a numeric
argument exits that many levels of folds. Specifying a zero argument exits all
folds.
argument exits that many levels of folds. Specifying a zero argument
exits all folds.
To cancel the narrowing of a fold without hiding the text and
subheadings, specify a negative argument. For example, @kbd{M--2 C-c
@ -1633,7 +1634,7 @@ current buffer's file. Generally, you need to do @kbd{C-c C-f}
@findex iso-iso2gtex
@findex iso-gtex2iso
@cindex Latin-1 @TeX{} encoding
@TeX{} encoding
@cindex @TeX{} encoding
The commands @kbd{M-x iso-iso2tex}, @kbd{M-x iso-tex2iso}, @kbd{M-x
iso-iso2gtex} and @kbd{M-x iso-gtex2iso} can be used to convert
between Latin-1 encoded files and @TeX{}-encoded equivalents.
@ -1659,7 +1660,7 @@ required. This is set up for Czech---customize the group
@cindex references, La@TeX{}
@cindex La@TeX{} references
For managing all kinds of references for La@TeX{}, you can use
Ref@TeX{}. @xref{Top, , RefTeX, reftex}.
Ref@TeX{}. @inforef{Top,, reftex}.
@node HTML Mode
@section SGML, XML, and HTML Modes
@ -1880,16 +1881,6 @@ into the file. When you visit the file again, Emacs will automatically
recognize the format, reconvert the text, and turn on Enriched mode
again.
@vindex enriched-fill-after-visiting
Normally, after visiting a file in text/enriched format, Emacs refills
each paragraph to fit the specified right margin. You can turn off this
refilling, to save time, by setting the variable
@code{enriched-fill-after-visiting} to @code{nil} or to @code{ask}.
However, when visiting a file that was saved from Enriched mode, there
is no need for refilling, because Emacs saves the right margin settings
along with the text.
@vindex enriched-translations
You can add annotations for saving additional text properties, which
Emacs normally does not save, by adding to @code{enriched-translations}.
@ -1951,22 +1942,22 @@ commands directly:
@table @code
@findex facemenu-remove-face-props
@item Remove Face Properties
Delete from the region all the text properties that the Text Properties
menu works with (@code{facemenu-remove-face-props}).
Delete from the region all face and color text properties
(@code{facemenu-remove-face-props}).
@findex facemenu-remove-all
@item Remove All
@item Remove Text Properties
Delete @emph{all} text properties from the region
(@code{facemenu-remove-all}).
@findex describe-text-at
@findex describe-text-properties
@cindex text properties of characters
@cindex overlays at character position
@cindex widgets at buffer position
@cindex buttons at buffer position
@item Describe Text
@item Describe Properties
List all the text properties, widgets, buttons, and overlays of the
character following point (@code{describe-text-at}).
character following point (@code{describe-text-properties}).
@item Display Faces
Display a list of all the defined faces (@code{list-faces-display}).
@ -2018,8 +2009,20 @@ Set the region, or the next inserted character, to the face @var{face}
If you use these commands with a prefix argument---or, in Transient Mark
mode, if the region is not active---then these commands specify a face
to use for your next self-inserting input. @xref{Transient Mark}. This
applies to both the keyboard commands and the menu commands.
to use for any immediately following self-inserting input.
@xref{Transient Mark}. This applies to both the keyboard commands and
the menu commands.
Specifying the @code{default} face also resets foreground and
background color to their defaults.(@pxref{Format Colors}).
Any self-inserting character you type inherits, by default, the face
properties (as well as most other text properties) of the preceding
character. Specifying any face property, including foreground or
background color, for your next self-inserting character will prevent
it from inheriting any face properties from the preceding character,
although it will still inherit other text properties. Characters
inserted by yanking do not inherit text properties.
Enriched mode defines two additional faces: @code{excerpt} and
@code{fixed}. These correspond to codes used in the text/enriched file
@ -2029,20 +2032,17 @@ format.
same as @code{italic} unless you customize it (@pxref{Face Customization}).
The @code{fixed} face means, ``Use a fixed-width font for this part
of the text.'' This makes a visible difference only if you have
specified a variable-width font in the default face; however, even if
the default font is fixed-width, applying the @code{fixed} face to a
part of the text will cause that part of the text to appear in a
fixed-width font, if the file is ever displayed with a variable-width
default font. This applies to Emacs and to other systems that display
text/enriched format. So if you specifically want a certain part of
the text to use a fixed-width font, you should specify the
@code{fixed} face for that part.
of the text.'' Applying the @code{fixed} face to a part of the text
will cause that part of the text to appear in a fixed-width font, even
if the default font is variable-width. This applies to Emacs and to
other systems that display text/enriched format. So if you
specifically want a certain part of the text to use a fixed-width
font, you should specify the @code{fixed} face for that part.
The @code{fixed} face is normally set up to use a different font
from the default, even if the default face is also fixed-width.
Different systems have different fonts installed, so you may need to
customize this. @xref{Face Customization}.
By default, the @code{fixed} face looks the same as @code{bold}.
This is an attempt to distinguish it from @code{default}. You may
wish to customize @code{fixed} to some other fixed-width medium font.
@xref{Face Customization}.
If your terminal cannot display different faces, you will not be
able to see them, but you can still edit documents containing faces,
@ -2058,20 +2058,20 @@ text. There is a menu for specifying the foreground color and a menu
for specifying the background color. Each color menu lists all the
colors that you have used in Enriched mode in the current Emacs session.
If you specify a color with a prefix argument---or, in Transient Mark
mode, if the region is not active---then it applies to your next
self-inserting input. @xref{Transient Mark}. Otherwise, the command
applies to the region.
If you specify a color with a prefix argument---or, in Transient
Mark mode, if the region is not active---then it applies to any
immediately following self-inserting input. @xref{Transient Mark}.
Otherwise, the command applies to the region.
Each color menu contains one additional item: @samp{Other}. You can use
this item to specify a color that is not listed in the menu; it reads
the color name with the minibuffer. To display list of available colors
the color name with the minibuffer. To display a list of available colors
and their names, use the @samp{Display Colors} menu item in the Text
Properties menu (@pxref{Editing Format Info}).
Any color that you specify in this way, or that is mentioned in a
formatted text file that you read in, is added to both color menus for
the duration of the Emacs session.
formatted text file that you read in, is added to the corresponding
color menu for the duration of the Emacs session.
@findex facemenu-set-foreground
@findex facemenu-set-background
@ -2113,33 +2113,42 @@ Remove 4 columns of indentation from the right margin.
You can use these commands repeatedly to increase or decrease the
indentation.
The most common way to use these commands is to change the indentation
of an entire paragraph. However, that is not the only use. You can
change the margins at any point; the new values take effect at the end
of the line (for right margins) or the beginning of the next line (for
left margins).
The most common way to use them is to change the indentation of an
entire paragraph. For other uses, the effects of refilling can be
hard to predict, except in some special cases like the one described
next.
This makes it possible to format paragraphs with @dfn{hanging indents},
which means that the first line is indented less than subsequent lines.
To set up a hanging indent, increase the indentation of the region
starting after the first word of the paragraph and running until the end
of the paragraph.
The most common other use is to format paragraphs with @dfn{hanging
indents}, which means that the first line is indented less than
subsequent lines. To set up a hanging indent, increase the
indentation of the region starting after the first word of the
paragraph and running until the end of the paragraph.
Indenting the first line of a paragraph is easier. Set the margin for
the whole paragraph where you want it to be for the body of the
paragraph, then indent the first line by inserting extra spaces or tabs.
Sometimes, as a result of editing, the filling of a paragraph becomes
messed up---parts of the paragraph may extend past the left or right
margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
refill the paragraph.
@vindex standard-indent
The variable @code{standard-indent} specifies how many columns these
commands should add to or subtract from the indentation. The default
value is 4. The overall default right margin for Enriched mode is
controlled by the variable @code{fill-column}, as usual.
@kindex C-c [ @r{(Enriched mode)}
@kindex C-c ] @r{(Enriched mode)}
@findex set-left-margin
@findex set-right-margin
There are also two commands for setting the left or right margin of
the region absolutely: @code{set-left-margin} and
@code{set-right-margin}. Enriched mode binds these commands to
@kbd{C-c [} and @kbd{C-c ]}, respectively. You can specify the
margin width either with a numeric argument or in the minibuffer.
Sometimes, as a result of editing, the filling of a paragraph becomes
messed up---parts of the paragraph may extend past the left or right
margins. When this happens, use @kbd{M-q} (@code{fill-paragraph}) to
refill the paragraph.
The fill prefix, if any, works in addition to the specified paragraph
indentation: @kbd{C-x .} does not include the specified indentation's
whitespace in the new value for the fill prefix, and the fill commands
@ -2157,11 +2166,11 @@ affects the Emacs fill commands.
the style. The submenu contains five items:
@table @code
@item Flush Left
@item Left
This is the most common style of justification (at least for English).
Lines are aligned at the left margin but left uneven at the right.
@item Flush Right
@item Right
This aligns each line with the right margin. Spaces and tabs are added
on the left, if necessary, to make lines line up on the right.
@ -2175,7 +2184,7 @@ the width of spaces in a line to achieve elegant justification.
@item Center
This centers every line between the current margins.
@item None
@item Unfilled
This turns off filling entirely. Each line will remain as you wrote it;
the fill and auto-fill functions will have no effect on text which has
this setting. You can, however, still indent the left margin. In
@ -2195,9 +2204,9 @@ Make the region left-filled (@code{set-justification-left}).
@findex set-justification-right
@item M-j r
Make the region right-filled (@code{set-justification-right}).
@kindex M-j f @r{(Enriched mode)}
@kindex M-j b @r{(Enriched mode)}
@findex set-justification-full
@item M-j f
@item M-j b
Make the region fully justified (@code{set-justification-full}).
@kindex M-j c @r{(Enriched mode)}
@kindex M-S @r{(Enriched mode)}
@ -2220,11 +2229,15 @@ region.
The default justification style is specified by the variable
@code{default-justification}. Its value should be one of the symbols
@code{left}, @code{right}, @code{full}, @code{center}, or @code{none}.
This is a per-buffer variable. Setting the variable directly affects
only the current buffer. However, customizing it in a Custom buffer
sets (as always) the default value for buffers that do not override it.
@xref{Locals}, and @ref{Easy Customization}.
@node Format Properties
@subsection Setting Other Text Properties
The Other Properties menu lets you add or remove three other useful text
The Special Properties menu lets you add or remove three other useful text
properties: @code{read-only}, @code{invisible} and @code{intangible}.
The @code{intangible} property disallows moving point within the text,
the @code{invisible} text property hides text from display, and the
@ -2253,10 +2266,10 @@ When you visit a file that was created with some other editor, Emacs may
not recognize the file as being in the text/enriched format. In this
case, when you visit the file you will see the formatting commands
rather than the formatted text. Type @kbd{M-x format-decode-buffer} to
translate it.
translate it. This also automatically turns on Enriched mode.
@item
When you @emph{insert} a file into a buffer, rather than visiting it.
When you @emph{insert} a file into a buffer, rather than visiting it,
Emacs does the necessary conversions on the text which you insert, but
it does not enable Enriched mode. If you wish to do that, type @kbd{M-x
enriched-mode}.
@ -2268,7 +2281,7 @@ to translate from; however, normally you can type just @key{RET}, which
tells Emacs to guess the format.
@findex format-find-file
If you wish to look at text/enriched file in its raw form, as a
If you wish to look at a text/enriched file in its raw form, as a
sequence of characters rather than as formatted text, use the @kbd{M-x
find-file-literally} command. This visits a file, like
@code{find-file}, but does not do format conversion. It also inhibits

View File

@ -1,3 +1,8 @@
2004-10-06 Eli Zaretskii <eliz@gnu.org>
* sed1v2.inp (LC_ALL=C): Fix src/Makefile breakage caused by
recent (2004-09-24) changes in src/Makefile.in.
2004-08-14 Eli Zaretskii <eliz@gnu.org>
* sedleim.inp: Remove the lines which say "<TAB>@true", to avoid

View File

@ -20,9 +20,9 @@ s/^#.*//
s/^[ \f\t][ \f\t]*$//
s/^ / /
s/\.h\.in/.h-in/
/^ LC_ALL=C \.\/temacs/i\
/^ LC_ALL=C \$(RUN_TEMACS)/i\
stubedit temacs.exe minstack=100k
/^ LC_ALL=C.*temacs/s/LC_ALL=C/set &;/
/^ LC_ALL=C.*\$(RUN_TEMACS)/s/LC_ALL=C/set &;/
/^MAKE *=/s/^/# /
/^SHELL *=/s/^/# /
/^srcdir *=/s/@[^@\n]*@/./

View File

@ -77,7 +77,7 @@
* multi-install-info.bat: New file.
2003-06-27 Jan D. <jan.h.d@swipnet.se>
2003-06-27 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* config.nt (my_strftime): New define.

View File

@ -60,6 +60,16 @@ Print the emacs s-expression which is $.
Works only when an inferior emacs is executing.
end
# Print out s-expressions
define pp
set $tmp = $arg0
set debug_print ($tmp)
end
document pp
Print the argument as an emacs s-expression
Works only when an inferior emacs is executing.
end
define xtype
xgettype $
output $type
@ -429,6 +439,16 @@ document xreload
end
xreload
# Flush display (X only)
define ff
set x_flush (0)
end
document ff
Flush pending X window display updates to screen.
Works only when an inferior emacs is executing.
end
define hook-run
xreload
end

View File

@ -1,3 +1,72 @@
2004-10-06 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* macfns.c (mac_get_window_bounds): Add extern.
(x_real_positions): Use mac_get_window_bounds.
* macmenu.c (update_submenu_strings): Apply 2004-09-07 change for
xmenu.c (YAILOM).
* macterm.c [!MAC_OSX]: Include Windows.h.
(front_emacs_window): Rename from mac_front_window. All uses
changed. Return the frontmost non-tooltip emacs window.
(mac_get_window_bounds): New function.
(x_calc_absolute_position): Use the difference of width and height
between the inner and outer window.
(x_set_offset): Specify window position by the coordinae of the
outer window. Adjust the position if the title bar is completely
outside the screen.
(app_is_suspended, app_sleep_time): Remove unused variables.
(do_app_resume, do_app_suspend): Remove their contents because
window-activate/deactivate events will do the job.
(do_zoom_window): Remove unused variables. Make compliant to the
standard way of zooming. Set f->left_pos and f->top_pos.
(XTread_socket): Don't use argument `expected'. Don't use
FrontWindow to determine the clicked window. Exclude unprocessed
mouseUp cases in the early stage. Add parentheses to fix operator
precedence.
(XTread_socket) [TARGET_API_MAC_CARBON]: Don't specify drag area.
2004-10-05 Jan Dj,Ad(Brv. <jan.h.d@swipnet.se>
* config.in: Regenerate.
* Makefile.in (RUN_TEMACS): Check HAVE_RANDOM_HEAPSTART instead of
HAVE_EXECSHIELD.
2004-10-05 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* xterm.c (x_find_modifier_meanings): Ignore any Super or Hyper for
a row if Alt or Meta has been found for that row. Also stop scanning
for Keysyms for that row.
2004-10-04 Kim F. Storm <storm@cua.dk>
* fringe.c (Ffringe_bitmaps_at_pos): Change return value from cons
to list. Include overlay arrow bitmap in return value.
* xterm.c (XTset_vertical_scroll_bar): Improve handling of scroll
bars with fractional column width. If scroll bar separates two
windows, move it towards the window it belongs to. Only update
the padding area below the scroll bar widget when necessary,
i.e. when scroll bar widget is created, moved, or resized.
* xdisp.c (define_frame_cursor1): Do not change frame cursor
while tracking/dragging mouse.
(x_draw_vertical_border): Do not draw line if frame has scroll bars.
* window.c (coordinates_in_window): Relax check for cursor
on vertial border between mode lines.
(Fset_window_fringes): Do not allow negative widths.
(Fset_window_scroll_bars): Likewise.
* .gdbinit (pp): Shorthand for p ARG + pr.
(ff): New command: flush frame updates (X only).
2004-10-03 Michael Albinus <michael.albinus@gmx.de>
* fileio.c (auto_save_1) Call Ffile_modes for remote files.
2004-09-30 Kenichi Handa <handa@m17n.org>
* process.c (send_process): Free composition data.

View File

@ -909,7 +909,7 @@ LIBES = $(LOADLIBES) $(LIBS) $(LIBX) $(LIBSOUND) \
#define OBJECTS_MACHINE
#endif
#ifdef HAVE_EXECSHIELD
#ifdef HAVE_RANDOM_HEAPSTART
#undef i386
RUN_TEMACS = @SETARCH@ i386 ./temacs
#else

View File

@ -136,9 +136,6 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `euidaccess' function. */
#undef HAVE_EUIDACCESS
/* Define to 1 if this OS has exec shield and we can handle it. */
#undef HAVE_EXECSHIELD
/* Define to 1 if you have the <fcntl.h> header file. */
#undef HAVE_FCNTL_H
@ -432,6 +429,9 @@ Boston, MA 02111-1307, USA. */
/* Define to 1 if you have the `random' function. */
#undef HAVE_RANDOM
/* Define to 1 if this OS randomizes the start address of the heap. */
#undef HAVE_RANDOM_HEAPSTART
/* Define to 1 if you have the `recvfrom' function. */
#undef HAVE_RECVFROM

View File

@ -5720,6 +5720,9 @@ auto_save_1 ()
&& stat (SDATA (current_buffer->filename), &st) >= 0)
/* But make sure we can overwrite it later! */
auto_save_mode_bits = st.st_mode | 0600;
else if (! NILP (current_buffer->filename))
/* Remote files don't cooperate with stat. */
auto_save_mode_bits = XINT (Ffile_modes (current_buffer->filename)) | 0600;
else
auto_save_mode_bits = 0666;

View File

@ -1348,9 +1348,10 @@ DEFUN ("fringe-bitmaps-at-pos", Ffringe_bitmaps_at_pos, Sfringe_bitmaps_at_pos,
0, 2, 0,
doc: /* Return fringe bitmaps of row containing position POS in window WINDOW.
If WINDOW is nil, use selected window. If POS is nil, use value of point
in that window. Return value is a cons (LEFT . RIGHT) where LEFT and RIGHT
are the fringe bitmap numbers for the bitmaps in the left and right fringe,
resp. If left or right fringe is empty, the corresponding element is nil.
in that window. Return value is a list (LEFT RIGHT OV), where LEFT
is the symbol for the bitmap in the left fringe (or nil if no bitmap),
RIGHT is similar for the right fringe, and OV is non-nil if there is an
overlay arrow in the left fringe.
Return nil if POS is not visible in WINDOW. */)
(pos, window)
Lisp_Object pos, window;
@ -1377,8 +1378,9 @@ Return nil if POS is not visible in WINDOW. */)
row = MATRIX_FIRST_TEXT_ROW (w->current_matrix);
row = row_containing_pos (w, textpos, row, NULL, 0);
if (row)
return Fcons (get_fringe_bitmap_name (row->left_fringe_bitmap),
get_fringe_bitmap_name (row->right_fringe_bitmap));
return list3 (get_fringe_bitmap_name (row->left_fringe_bitmap),
get_fringe_bitmap_name (row->right_fringe_bitmap),
(row->overlay_arrow_p ? Qt : Qnil));
else
return Qnil;
}

View File

@ -312,6 +312,9 @@ static Lisp_Object x_default_scroll_bar_color_parameter P_ ((struct frame *,
Lisp_Object,
char *, char *,
int));
extern void mac_get_window_bounds P_ ((struct frame *, Rect *, Rect *));
/* Store the screen positions of frame F into XPTR and YPTR.
These are the positions of the containing window manager window,
not Emacs's own window. */
@ -321,33 +324,15 @@ x_real_positions (f, xptr, yptr)
FRAME_PTR f;
int *xptr, *yptr;
{
Point pt;
GrafPtr oldport;
Rect inner, outer;
GetPort (&oldport);
SetPortWindowPort (FRAME_MAC_WINDOW (f));
mac_get_window_bounds (f, &inner, &outer);
#if TARGET_API_MAC_CARBON
{
Rect r;
f->x_pixels_diff = inner.left - outer.left;
f->y_pixels_diff = inner.top - outer.top;
GetWindowPortBounds (FRAME_MAC_WINDOW (f), &r);
SetPt (&pt, r.left, r.top);
}
#else /* not TARGET_API_MAC_CARBON */
SetPt (&pt,
FRAME_MAC_WINDOW (f)->portRect.left,
FRAME_MAC_WINDOW (f)->portRect.top);
#endif /* not TARGET_API_MAC_CARBON */
LocalToGlobal (&pt);
SetPort (oldport);
/* MAC has no frame pixel diff. */
f->x_pixels_diff = 0;
f->y_pixels_diff = 0;
*xptr = pt.h;
*yptr = pt.v;
*xptr = outer.left;
*yptr = outer.top;
}

View File

@ -1322,7 +1322,7 @@ update_submenu_strings (first_wv)
for (wv = first_wv; wv; wv = wv->next)
{
if (wv->lname && ! NILP (wv->lname))
if (STRINGP (wv->lname))
{
wv->name = SDATA (wv->lname);
@ -1336,7 +1336,7 @@ update_submenu_strings (first_wv)
}
}
if (wv->lkey && ! NILP (wv->lkey))
if (STRINGP (wv->lkey))
wv->key = SDATA (wv->lkey);
if (wv->contents)

View File

@ -50,6 +50,7 @@ Boston, MA 02111-1307, USA. */
#include <TextUtils.h>
#include <LowMem.h>
#include <Controls.h>
#include <Windows.h>
#if defined (__MRC__) || (__MSL__ >= 0x6000)
#include <ControlDefinitions.h>
#endif
@ -3887,18 +3888,21 @@ remember_mouse_glyph (f1, gx, gy)
static WindowPtr
mac_front_window ()
front_emacs_window ()
{
#if TARGET_API_MAC_CARBON
return GetFrontWindowOfClass (kDocumentWindowClass, true);
#else
WindowPtr front_window = FrontWindow ();
WindowPtr wp = GetFrontWindowOfClass (kDocumentWindowClass, true);
if (tip_window && front_window == tip_window)
return GetNextWindow (front_window);
else
return front_window;
while (wp && !is_emacs_window (wp))
wp = GetNextWindowOfClass (wp, kDocumentWindowClass, true);
#else
WindowPtr wp = FrontWindow ();
while (wp && (wp == tip_window || !is_emacs_window (wp)))
wp = GetNextWindow (wp);
#endif
return wp;
}
#define mac_window_to_frame(wp) (((mac_output *) GetWRefCon (wp))->mFP)
@ -3934,7 +3938,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time)
{
Point mouse_pos;
int ignore1, ignore2;
WindowPtr wp = mac_front_window ();
WindowPtr wp = front_emacs_window ();
struct frame *f;
Lisp_Object frame, tail;
@ -4551,7 +4555,7 @@ x_scroll_bar_report_motion (fp, bar_window, part, x, y, time)
unsigned long *time;
{
struct scroll_bar *bar = XSCROLL_BAR (last_mouse_scroll_bar);
WindowPtr wp = mac_front_window ();
WindowPtr wp = front_emacs_window ();
Point mouse_pos;
struct frame *f = mac_window_to_frame (wp);
int win_y, top_range;
@ -5036,6 +5040,26 @@ xim_close_dpy (dpyinfo)
*/
void
mac_get_window_bounds (f, inner, outer)
struct frame *f;
Rect *inner, *outer;
{
#if TARGET_API_MAC_CARBON
GetWindowBounds (FRAME_MAC_WINDOW (f), kWindowContentRgn, inner);
GetWindowBounds (FRAME_MAC_WINDOW (f), kWindowStructureRgn, outer);
#else /* not TARGET_API_MAC_CARBON */
RgnHandle region = NewRgn ();
GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowContentRgn, region);
*inner = (*region)->rgnBBox;
GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowStructureRgn, region);
*outer = (*region)->rgnBBox;
DisposeRgn (region);
#endif /* not TARGET_API_MAC_CARBON */
}
/* Calculate the absolute position in frame F
from its current recorded position values and gravity. */
@ -5043,47 +5067,36 @@ void
x_calc_absolute_position (f)
struct frame *f;
{
Point pt;
int width_diff = 0, height_diff = 0;
int flags = f->size_hint_flags;
Rect inner, outer;
pt.h = pt.v = 0;
/* We have nothing to do if the current position
is already for the top-left corner. */
if (! ((flags & XNegative) || (flags & YNegative)))
return;
/* Find the position of the outside upper-left corner of
/* Find the offsets of the outside upper-left corner of
the inner window, with respect to the outer window. */
if (f->output_data.mac->parent_desc != FRAME_MAC_DISPLAY_INFO (f)->root_window)
{
GrafPtr savePort;
GetPort (&savePort);
mac_get_window_bounds (f, &inner, &outer);
SetPortWindowPort (FRAME_MAC_WINDOW (f));
#if TARGET_API_MAC_CARBON
{
Rect r;
GetWindowPortBounds (FRAME_MAC_WINDOW (f), &r);
SetPt(&pt, r.left, r.top);
}
#else /* not TARGET_API_MAC_CARBON */
SetPt(&pt, FRAME_MAC_WINDOW (f)->portRect.left, FRAME_MAC_WINDOW (f)->portRect.top);
#endif /* not TARGET_API_MAC_CARBON */
LocalToGlobal (&pt);
SetPort (savePort);
}
width_diff = (outer.right - outer.left) - (inner.right - inner.left);
height_diff = (outer.bottom - outer.top) - (inner.bottom - inner.top);
/* Treat negative positions as relative to the leftmost bottommost
position that fits on the screen. */
if (flags & XNegative)
f->left_pos = (FRAME_MAC_DISPLAY_INFO (f)->width
- 2 * f->border_width - pt.h
- width_diff
- FRAME_PIXEL_WIDTH (f)
+ f->left_pos);
/* NTEMACS_TODO: Subtract menubar height? */
if (flags & YNegative)
f->top_pos = (FRAME_MAC_DISPLAY_INFO (f)->height
- 2 * f->border_width - pt.v
- height_diff
- FRAME_PIXEL_HEIGHT (f)
+ f->top_pos);
/* The left_pos and top_pos
are now relative to the top and left screen edges,
so the flags should correspond. */
@ -5102,8 +5115,6 @@ x_set_offset (f, xoff, yoff, change_gravity)
register int xoff, yoff;
int change_gravity;
{
int modified_top, modified_left;
if (change_gravity > 0)
{
f->top_pos = yoff;
@ -5120,11 +5131,55 @@ x_set_offset (f, xoff, yoff, change_gravity)
BLOCK_INPUT;
x_wm_set_size_hint (f, (long) 0, 0);
modified_left = f->left_pos;
modified_top = f->top_pos;
#if TARGET_API_MAC_CARBON
MoveWindowStructure (FRAME_MAC_WINDOW (f), f->left_pos, f->top_pos);
/* If the title bar is completely outside the screen, adjust the
position. */
ConstrainWindowToScreen (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn,
kWindowConstrainMoveRegardlessOfFit
| kWindowConstrainAllowPartial, NULL, NULL);
x_real_positions (f, &f->left_pos, &f->top_pos);
#else
{
Rect inner, outer, screen_rect, dummy;
RgnHandle region = NewRgn ();
mac_get_window_bounds (f, &inner, &outer);
f->x_pixels_diff = inner.left - outer.left;
f->y_pixels_diff = inner.top - outer.top;
MoveWindow (FRAME_MAC_WINDOW (f), f->left_pos + f->x_pixels_diff,
f->top_pos + f->y_pixels_diff, false);
MoveWindow (FRAME_MAC_WINDOW (f), modified_left + 6,
modified_top + 42, false);
/* If the title bar is completely outside the screen, adjust the
position. The variable `outer' holds the title bar rectangle.
The variable `inner' holds slightly smaller one than `outer',
so that the calculation of overlapping may not become too
strict. */
GetWindowRegion (FRAME_MAC_WINDOW (f), kWindowTitleBarRgn, region);
outer = (*region)->rgnBBox;
DisposeRgn (region);
inner = outer;
InsetRect (&inner, 8, 8);
screen_rect = qd.screenBits.bounds;
screen_rect.top += GetMBarHeight ();
if (!SectRect (&inner, &screen_rect, &dummy))
{
if (inner.right <= screen_rect.left)
f->left_pos = screen_rect.left;
else if (inner.left >= screen_rect.right)
f->left_pos = screen_rect.right - (outer.right - outer.left);
if (inner.bottom <= screen_rect.top)
f->top_pos = screen_rect.top;
else if (inner.top >= screen_rect.bottom)
f->top_pos = screen_rect.bottom - (outer.bottom - outer.top);
MoveWindow (FRAME_MAC_WINDOW (f), f->left_pos + f->x_pixels_diff,
f->top_pos + f->y_pixels_diff, false);
}
}
#endif
UNBLOCK_INPUT;
}
@ -6900,6 +6955,7 @@ x_find_ccl_program (fontp)
/* true when cannot handle any Mac OS events */
static int handling_window_update = 0;
#if 0
/* the flag appl_is_suspended is used both for determining the sleep
time to be passed to WaitNextEvent and whether the cursor should be
drawn when updating the display. The cursor is turned off when
@ -6909,6 +6965,7 @@ static int handling_window_update = 0;
suspended. */
static Boolean app_is_suspended = false;
static long app_sleep_time = WNE_SLEEP_AT_RESUME;
#endif
#define EXTRA_STACK_ALLOC (256 * 1024)
@ -7235,11 +7292,13 @@ is_emacs_window (WindowPtr win)
static void
do_app_resume ()
{
/* Window-activate events will do the job. */
#if 0
WindowPtr wp;
struct frame *f;
wp = mac_front_window ();
if (is_emacs_window (wp))
wp = front_emacs_window ();
if (wp)
{
f = mac_window_to_frame (wp);
@ -7252,16 +7311,19 @@ do_app_resume ()
app_is_suspended = false;
app_sleep_time = WNE_SLEEP_AT_RESUME;
#endif
}
static void
do_app_suspend ()
{
/* Window-deactivate events will do the job. */
#if 0
WindowPtr wp;
struct frame *f;
wp = mac_front_window ();
if (is_emacs_window (wp))
wp = front_emacs_window ();
if (wp)
{
f = mac_window_to_frame (wp);
@ -7274,6 +7336,7 @@ do_app_suspend ()
app_is_suspended = true;
app_sleep_time = WNE_SLEEP_AT_SUSPEND;
#endif
}
@ -7282,10 +7345,10 @@ do_mouse_moved (mouse_pos, f)
Point mouse_pos;
FRAME_PTR *f;
{
WindowPtr wp = mac_front_window ();
WindowPtr wp = front_emacs_window ();
struct x_display_info *dpyinfo;
if (is_emacs_window (wp))
if (wp)
{
*f = mac_window_to_frame (wp);
dpyinfo = FRAME_MAC_DISPLAY_INFO (*f);
@ -7347,7 +7410,7 @@ do_menu_choice (SInt32 menu_choice)
default:
{
struct frame *f = mac_window_to_frame (mac_front_window ());
struct frame *f = mac_window_to_frame (front_emacs_window ());
MenuHandle menu = GetMenuHandle (menu_id);
if (menu)
{
@ -7400,41 +7463,43 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
GrafPtr save_port;
Rect zoom_rect, port_rect;
Point top_left;
int w_title_height, columns, rows, width, height, dummy, x, y;
int w_title_height, columns, rows;
struct frame *f = mac_window_to_frame (w);
#if TARGET_API_MAC_CARBON
{
Point standard_size;
standard_size.h = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
standard_size.v = FRAME_MAC_DISPLAY_INFO (f)->height;
if (IsWindowInStandardState (w, &standard_size, &zoom_rect))
zoom_in_or_out = inZoomIn;
else
{
/* Adjust the standard size according to character boundaries. */
columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, zoom_rect.right - zoom_rect.left);
rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, zoom_rect.bottom - zoom_rect.top);
standard_size.h = FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, columns);
standard_size.v = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
GetWindowBounds (w, kWindowContentRgn, &port_rect);
if (IsWindowInStandardState (w, &standard_size, &zoom_rect)
&& port_rect.left == zoom_rect.left
&& port_rect.top == zoom_rect.top)
zoom_in_or_out = inZoomIn;
else
zoom_in_or_out = inZoomOut;
}
ZoomWindowIdeal (w, zoom_in_or_out, &standard_size);
}
#else /* not TARGET_API_MAC_CARBON */
GetPort (&save_port);
SetPortWindowPort (w);
/* Clear window to avoid flicker. */
#if TARGET_API_MAC_CARBON
{
Rect r;
BitMap bm;
GetWindowPortBounds (w, &r);
EraseRect (&r);
if (zoom_in_or_out == inZoomOut)
{
/* calculate height of window's title bar (hard card it for now). */
w_title_height = 20 + GetMBarHeight ();
/* get maximum height of window into zoom_rect.bottom -
zoom_rect.top */
GetQDGlobalsScreenBits (&bm);
zoom_rect = bm.bounds;
zoom_rect.top += w_title_height;
InsetRect (&zoom_rect, 8, 4); /* not too tight */
zoom_rect.right = zoom_rect.left
+ FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
SetWindowStandardState (w, &zoom_rect);
}
}
#else /* not TARGET_API_MAC_CARBON */
EraseRect (&(w->portRect));
if (zoom_in_or_out == inZoomOut)
{
@ -7453,12 +7518,19 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
zoom_rect.right = zoom_rect.left
+ FRAME_TEXT_COLS_TO_PIXEL_WIDTH (f, DEFAULT_NUM_COLS);
/* Adjust the standard size according to character boundaries. */
rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, zoom_rect.bottom - zoom_rect.top);
zoom_rect.bottom =
zoom_rect.top + FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
(**((WStateDataHandle) ((WindowPeek) w)->dataHandle)).stdState
= zoom_rect;
}
#endif /* not TARGET_API_MAC_CARBON */
ZoomWindow (w, zoom_in_or_out, w == mac_front_window ());
ZoomWindow (w, zoom_in_or_out, w == front_emacs_window ());
SetPort (save_port);
#endif /* not TARGET_API_MAC_CARBON */
/* retrieve window size and update application values */
#if TARGET_API_MAC_CARBON
@ -7469,8 +7541,7 @@ do_zoom_window (WindowPtr w, int zoom_in_or_out)
rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES (f, port_rect.bottom - port_rect.top);
columns = FRAME_PIXEL_WIDTH_TO_TEXT_COLS (f, port_rect.right - port_rect.left);
x_set_window_size (f, 0, columns, rows);
SetPort (save_port);
x_real_positions (f, &f->left_pos, &f->top_pos);
}
/* Initialize Drag And Drop to allow files to be dropped onto emacs frames */
@ -8020,19 +8091,15 @@ XTread_socket (sd, expected, hold_quit)
if (NILP (Fboundp (Qmac_ready_for_drag_n_drop)))
event_mask -= highLevelEventMask;
while (WaitNextEvent (event_mask, &er,
(expected ? app_sleep_time : 0L), NULL))
#else
while (!ReceiveNextEvent (0, NULL,
(expected ? TicksToEventTime (app_sleep_time) : 0),
while (WaitNextEvent (event_mask, &er, 0L, NULL))
#else /* USE_CARBON_EVENTS */
while (!ReceiveNextEvent (0, NULL, kEventDurationNoWait,
kEventRemoveFromQueue, &eventRef))
#endif /* !USE_CARBON_EVENTS */
#endif /* USE_CARBON_EVENTS */
{
int do_help = 0;
struct frame *f;
expected = 0;
/* It is necessary to set this (additional) argument slot of an
event to nil because keyboard.c protects incompletely
processed event from being garbage collected by placing them
@ -8055,13 +8122,7 @@ XTread_socket (sd, expected, hold_quit)
NULL, &window_ptr);
f = mac_window_to_frame (window_ptr);
if (f && !f->async_iconified)
{
int x, y;
x_real_positions (f, &x, &y);
f->left_pos = x;
f->top_pos = y;
}
x_real_positions (f, &f->left_pos, &f->top_pos);
SendEventToEventTarget (eventRef, toolbox_dispatcher);
}
break;
@ -8070,7 +8131,7 @@ XTread_socket (sd, expected, hold_quit)
{
SInt32 delta;
Point point;
WindowPtr window_ptr = mac_front_window ();
WindowPtr window_ptr = front_emacs_window ();
if (!IsValidWindowPtr (window_ptr))
{
@ -8132,33 +8193,28 @@ XTread_socket (sd, expected, hold_quit)
}
else
{
window_ptr = FrontWindow ();
part_code = FindWindow (er.where, &window_ptr);
if (tip_window && window_ptr == tip_window)
{
HideWindow (tip_window);
window_ptr = FrontWindow ();
part_code = FindWindow (er.where, &window_ptr);
}
if (!is_emacs_window (window_ptr))
break;
part_code = FindWindow (er.where, &window_ptr);
}
if (er.what != mouseDown && part_code != inContent)
break;
switch (part_code)
{
case inMenuBar:
if (er.what == mouseDown)
{
f = mac_window_to_frame (mac_front_window ());
saved_menu_event_location = er.where;
inev.kind = MENU_BAR_ACTIVATE_EVENT;
XSETFRAME (inev.frame_or_window, f);
}
f = mac_window_to_frame (front_emacs_window ());
saved_menu_event_location = er.where;
inev.kind = MENU_BAR_ACTIVATE_EVENT;
XSETFRAME (inev.frame_or_window, f);
break;
case inContent:
if (window_ptr != mac_front_window ())
if (window_ptr != front_emacs_window ())
SelectWindow (window_ptr);
else
{
@ -8255,7 +8311,7 @@ XTread_socket (sd, expected, hold_quit)
}
else
{
if (dpyinfo->grabbed & (1 << inev.code) == 0)
if ((dpyinfo->grabbed & (1 << inev.code)) == 0)
/* If a button is released though it was not
previously pressed, that would be because
of multi-button emulation. */
@ -8278,27 +8334,16 @@ XTread_socket (sd, expected, hold_quit)
case inDrag:
#if TARGET_API_MAC_CARBON
if (er.what == mouseDown)
{
BitMap bm;
GetQDGlobalsScreenBits (&bm);
DragWindow (window_ptr, er.where, &bm.bounds);
}
DragWindow (window_ptr, er.where, NULL);
#else /* not TARGET_API_MAC_CARBON */
DragWindow (window_ptr, er.where, &qd.screenBits.bounds);
#endif /* not TARGET_API_MAC_CARBON */
/* Update the frame parameters. */
{
struct frame *f = mac_window_to_frame (window_ptr);
if (f && !f->async_iconified)
{
int x, y;
x_real_positions (f, &x, &y);
f->left_pos = x;
f->top_pos = y;
}
x_real_positions (f, &f->left_pos, &f->top_pos);
}
break;
@ -8313,11 +8358,8 @@ XTread_socket (sd, expected, hold_quit)
/* window resize handling added --ben */
case inGrow:
if (er.what == mouseDown)
{
do_grow_window(window_ptr, &er);
break;
}
do_grow_window (window_ptr, &er);
break;
/* window zoom handling added --ben */
case inZoomIn:
@ -8460,7 +8502,7 @@ XTread_socket (sd, expected, hold_quit)
#endif
#if TARGET_API_MAC_CARBON
if (!IsValidWindowPtr (mac_front_window ()))
if (!IsValidWindowPtr (front_emacs_window ()))
{
SysBeep (1);
break;
@ -8564,7 +8606,7 @@ XTread_socket (sd, expected, hold_quit)
inev.modifiers = mac_to_emacs_modifiers (er.modifiers);
#endif
XSETFRAME (inev.frame_or_window,
mac_window_to_frame (mac_front_window ()));
mac_window_to_frame (front_emacs_window ()));
inev.timestamp = er.when * (1000 / 60); /* ticks to milliseconds */
break;
@ -8581,16 +8623,16 @@ XTread_socket (sd, expected, hold_quit)
WindowPtr wp;
Lisp_Object frame;
wp = mac_front_window ();
wp = front_emacs_window ();
if (!wp)
{
struct frame *f = XFRAME (XCAR (Vframe_list));
CollapseWindow (FRAME_MAC_WINDOW (f), false);
wp = mac_front_window ();
wp = front_emacs_window ();
}
if (wp && is_emacs_window (wp))
if (wp)
f = mac_window_to_frame (wp);
inev.kind = DRAG_N_DROP_EVENT;
@ -9047,7 +9089,7 @@ mac_check_for_quit_char ()
e.arg = Qnil;
e.modifiers = NULL;
e.timestamp = EventTimeToTicks (GetEventTime (event)) * (1000/60);
XSETFRAME (e.frame_or_window, mac_window_to_frame (mac_front_window ()));
XSETFRAME (e.frame_or_window, mac_window_to_frame (front_emacs_window ()));
/* Remove event from queue to prevent looping. */
RemoveEventFromQueue (GetMainEventQueue (), event);
ReleaseEvent (event);

View File

@ -609,9 +609,6 @@ coordinates_in_window (w, x, y)
int grabbable_width = ux;
int lmargin_width, rmargin_width, text_left, text_right;
if (*x < x0 || *x >= x1)
return ON_NOTHING;
/* In what's below, we subtract 1 when computing right_x because we
want the rightmost pixel, which is given by left_pixel+width-1. */
if (w->pseudo_window_p)
@ -661,6 +658,9 @@ coordinates_in_window (w, x, y)
return ON_VERTICAL_BORDER;
}
if (*x < x0 || *x >= x1)
return ON_NOTHING;
/* Convert X and Y to window relative coordinates.
Mode line starts at left edge of window. */
*x -= x0;
@ -675,6 +675,9 @@ coordinates_in_window (w, x, y)
goto header_vertical_border_check;
}
if (*x < x0 || *x >= x1)
return ON_NOTHING;
/* Outside any interesting column? */
if (*x < left_x || *x > right_x)
return ON_SCROLL_BAR;
@ -6036,9 +6039,9 @@ display marginal areas and the text area. */)
struct window *w = decode_window (window);
if (!NILP (left))
CHECK_NUMBER (left);
CHECK_NATNUM (left);
if (!NILP (right))
CHECK_NUMBER (right);
CHECK_NATNUM (right);
if (!EQ (w->left_fringe_width, left)
|| !EQ (w->right_fringe_width, right)
@ -6098,7 +6101,7 @@ If TYPE is t, use the frame's scroll-bar type. */)
struct window *w = decode_window (window);
if (!NILP (width))
CHECK_NUMBER (width);
CHECK_NATNUM (width);
if (XINT (width) == 0)
vertical_type = Qnil;

View File

@ -215,6 +215,8 @@ extern int pending_menu_activation;
extern int interrupt_input;
extern int command_loop_level;
extern Lisp_Object do_mouse_tracking;
extern int minibuffer_auto_raise;
extern Lisp_Object Vminibuffer_list;
@ -20762,6 +20764,10 @@ define_frame_cursor1 (f, cursor, pointer)
Cursor cursor;
Lisp_Object pointer;
{
/* Do not change cursor shape while dragging mouse. */
if (!NILP (do_mouse_tracking))
return;
if (!NILP (pointer))
{
if (EQ (pointer, Qarrow))
@ -21625,6 +21631,9 @@ x_draw_vertical_border (w)
do it for frames with vertical scroll bars because either the
right scroll bar of a window, or the left scroll bar of its
neighbor will suffice as a border. */
if (FRAME_HAS_VERTICAL_SCROLL_BARS (XFRAME (w->frame)))
return;
if (!WINDOW_RIGHTMOST_P (w)
&& !WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
{

View File

@ -3380,12 +3380,14 @@ x_find_modifier_meanings (dpyinfo)
Alt keysyms are on. */
{
int row, col; /* The row and column in the modifier table. */
int found_alt_or_meta;
for (row = 3; row < 8; row++)
{
found_alt_or_meta = 0;
for (col = 0; col < mods->max_keypermod; col++)
{
KeyCode code
= mods->modifiermap[(row * mods->max_keypermod) + col];
KeyCode code = mods->modifiermap[(row * mods->max_keypermod) + col];
/* Zeroes are used for filler. Skip them. */
if (code == 0)
@ -3403,33 +3405,44 @@ x_find_modifier_meanings (dpyinfo)
{
case XK_Meta_L:
case XK_Meta_R:
found_alt_or_meta = 1;
dpyinfo->meta_mod_mask |= (1 << row);
break;
case XK_Alt_L:
case XK_Alt_R:
found_alt_or_meta = 1;
dpyinfo->alt_mod_mask |= (1 << row);
break;
case XK_Hyper_L:
case XK_Hyper_R:
dpyinfo->hyper_mod_mask |= (1 << row);
if (!found_alt_or_meta)
dpyinfo->hyper_mod_mask |= (1 << row);
code_col = syms_per_code;
col = mods->max_keypermod;
break;
case XK_Super_L:
case XK_Super_R:
dpyinfo->super_mod_mask |= (1 << row);
if (!found_alt_or_meta)
dpyinfo->super_mod_mask |= (1 << row);
code_col = syms_per_code;
col = mods->max_keypermod;
break;
case XK_Shift_Lock:
/* Ignore this if it's not on the lock modifier. */
if ((1 << row) == LockMask)
if (!found_alt_or_meta && ((1 << row) == LockMask))
dpyinfo->shift_lock_mask = LockMask;
code_col = syms_per_code;
col = mods->max_keypermod;
break;
}
}
}
}
}
}
/* If we couldn't find any meta keys, accept any alt keys as meta keys. */
@ -5050,9 +5063,15 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
/* Compute the left edge of the scroll bar. */
#ifdef USE_TOOLKIT_SCROLL_BARS
if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
sb_left = left + width - sb_width - (width - sb_width) / 2;
sb_left = (left +
(WINDOW_RIGHTMOST_P (w)
? width - sb_width - (width - sb_width) / 2
: 0));
else
sb_left = left + (width - sb_width) / 2;
sb_left = (left +
(WINDOW_LEFTMOST_P (w)
? (width - sb_width) / 2
: width - sb_width));
#else
if (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_RIGHT (w))
sb_left = left + width - sb_width;
@ -5105,19 +5124,20 @@ XTset_vertical_scroll_bar (w, portion, whole, position)
width);
#else /* not USE_GTK */
/* Since toolkit scroll bars are smaller than the space reserved
for them on the frame, we have to clear "under" them. */
if (width > 0 && height > 0)
x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
left, top, width, height, False);
/* Move/size the scroll bar widget. */
if (mask)
{
/* Since toolkit scroll bars are smaller than the space reserved
for them on the frame, we have to clear "under" them. */
if (width > 0 && height > 0)
x_clear_area (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f),
left, top, width, height, False);
XtConfigureWidget (SCROLL_BAR_X_WIDGET (FRAME_X_DISPLAY (f), bar),
sb_left + VERTICAL_SCROLL_BAR_WIDTH_TRIM,
top,
sb_width - VERTICAL_SCROLL_BAR_WIDTH_TRIM * 2,
max (height, 1), 0);
}
#endif /* not USE_GTK */
#else /* not USE_TOOLKIT_SCROLL_BARS */