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:
commit
c5f80d9d13
10
ChangeLog
10
ChangeLog
@ -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
|
||||
|
@ -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
|
||||
|
79
configure.in
79
configure.in
@ -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,'`
|
||||
|
@ -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
|
||||
|
11
etc/DEBUG
11
etc/DEBUG
@ -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
|
||||
|
||||
|
19
etc/NEWS
19
etc/NEWS
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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)))
|
||||
|
@ -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]
|
||||
|
@ -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
1299
lisp/calendar/icalendar.el
Normal file
File diff suppressed because it is too large
Load Diff
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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))))
|
||||
|
||||
|
@ -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
|
||||
|
@ -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))
|
||||
|
29
lisp/info.el
29
lisp/info.el
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
24
lisp/xml.el
24
lisp/xml.el
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
211
man/text.texi
211
man/text.texi
@ -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
|
||||
|
@ -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
|
||||
|
@ -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]*@/./
|
||||
|
@ -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.
|
||||
|
||||
|
20
src/.gdbinit
20
src/.gdbinit
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
|
||||
|
12
src/fringe.c
12
src/fringe.c
@ -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;
|
||||
}
|
||||
|
33
src/macfns.c
33
src/macfns.c
@ -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;
|
||||
}
|
||||
|
||||
|
||||
|
@ -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)
|
||||
|
316
src/macterm.c
316
src/macterm.c
@ -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);
|
||||
|
15
src/window.c
15
src/window.c
@ -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;
|
||||
|
@ -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))
|
||||
{
|
||||
|
46
src/xterm.c
46
src/xterm.c
@ -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 */
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user