Revision: miles@gnu.org--gnu-2005/emacs--unicode--0--patch-67

Merge from emacs--cvs-trunk--0

Patches applied:

 * emacs--cvs-trunk--0  (patch 447-458)

   - Update from CVS
   - Update from CVS: lisp/subr.el (add-to-ordered-list): Doc fix.
   - Merge from gnus--rel--5.10

 * gnus--rel--5.10  (patch 83-85)

   - Merge from emacs--cvs-trunk--0
   - Update from CVS
This commit is contained in:
Miles Bader 2005-06-30 00:31:46 +00:00
commit eeb88b27e1
79 changed files with 6404 additions and 1266 deletions

View file

@ -14,6 +14,8 @@ has to be set to nil: when t, it can leak memory and cause other problems.
** Check for widow and orphan lines in manuals;
make sure all the pages really look ok in the manual as formatted.
** Update facemenu-unlisted-faces, adding whatever other
face name prefixes should be in it for good results.
* NEW FEATURES
@ -21,9 +23,6 @@ make sure all the pages really look ok in the manual as formatted.
gracefully if something isn't supported over Tramp.
To be done by Andre Spiegel <spiegel@gnu.org>.
** define-minor-mode should not put :require into defcustom.
See msg from rms to emacs-devel on 21 Dec.
** Update Speedbar.
** Update vhdl-mode.el based on changes in
@ -43,6 +42,36 @@ invalid pointer from string_free_list.
* BUGS
** Bug in ebrowse
Date: Fri, 27 May 2005 17:35:48 +0200
From: Markus Gritsch <gritsch@iue.tuwien.ac.at>
the C++ header file which led to the problematic BROWSE file reads
namespace test {
class Base
{
};
class B : public Base
{
};
}
class A : public test::Base
{
};
The *Tree* is then displayed as
*Globals*
test
test::Base
test::B
The class A seems to be missing.
** Ange-ftp should ignore irrelevant IPv6 errors:
Message-Id: <4121-Tue23Mar2004165249+0100-piet@cs.uu.nl>

View file

@ -1,3 +1,12 @@
2005-06-29 Carsten Dominik <dominik@science.uva.nl>
* NEWS: Added an entry for Org-mode, and a change entry for
reftex-mode.
2005-06-28 Richard M. Stallman <rms@gnu.org>
* PROBLEMS (Fedora Core 4 GNU/Linux: Segfault during dumping): New.
2005-06-11 Eli Zaretskii <eliz@gnu.org>
* DEBUG: Mention emacs-buffer.gdb.

View file

@ -1622,6 +1622,21 @@ versions of cua.el and cua-mode.el. To ensure proper operation, you
must remove older versions of cua.el or cua-mode.el as well as the
loading and customization of those packages from the .emacs file.
+++
** Org mode is now part of the Emacs distribution
Org mode is a mode for keeping notes, maintaining ToDo lists, and
doing project planning with a fast and effective plain-text system.
It also contains a plain-text table editor with spreadsheet-like
capabilities.
The Org mode table editor can be integrated into any major mode by
activating the minor Orgtbl-mode.
The documentation for org-mode is in a separate manual; within Emacs,
type "C-h i m org RET" to read that manual. A reference card is
available in `etc/orgcard.tex' and `etc/orgcard.ps'.
+++
** The new package dns-mode.el add syntax highlight of DNS master files.
The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
@ -2277,6 +2292,80 @@ majority.
the syntax of backslashes in F90 buffers.
---
** Reftex mode changes
+++
*** Changes to RefTeX's table of contents
The new command keys "<" and ">" in the TOC buffer promote/demote the
section at point or all sections in the current region, with full
support for multifile documents.
The new command `reftex-toc-recenter' (`C-c -') shows the current
section in the TOC buffer without selecting the TOC window.
Recentering can happen automatically in idle time when the option
`reftex-auto-recenter-toc' is turned on. The highlight in the TOC
buffer stays when the focus moves to a different window. A dedicated
frame can show the TOC with the current section always automatically
highlighted. The frame is created and deleted from the toc buffer
with the `d' key.
The toc window can be split off horizontally instead of vertically.
See new option `reftex-toc-split-windows-horizontally'.
Labels can be renamed globally from the table of contents using the
key `M-%'.
The new command `reftex-goto-label' jumps directly to a label
location.
+++
*** Changes related to citations and BibTeX database files
Commands that insert a citation now prompt for optional arguments when
called with a prefix argument. Related new options are
`reftex-cite-prompt-optional-args' and `reftex-cite-cleanup-optional-args'.
The new command `reftex-create-bibtex-file' creates a BibTeX database
with all entries referenced in the current document. The keys "e" and
"E" allow to produce a BibTeX database file from entries marked in a
citation selection buffer.
The command `reftex-citation' uses the word in the buffer before the
cursor as a default search string.
The support for chapterbib has been improved. Different chapters can
now use BibTeX or an explicit `thebibliography' environment.
The macros which specify the bibliography file (like \bibliography)
can be configured with the new option `reftex-bibliography-commands'.
Support for jurabib has been added.
+++
*** Global index matched may be verified with a user function
During global indexing, a user function can verify an index match.
See new option `reftex-index-verify-function'.
+++
*** Parsing documents with many labels can be sped up.
Operating in a document with thousands of labels can be sped up
considerably by allowing RefTeX to derive the type of a label directly
from the label prefix like `eq:' or `fig:'. The option
`reftex-trust-label-prefix' needs to be configured in order to enable
this feature. While the speed-up is significant, this may reduce the
quality of the context offered by RefTeX to describe a label.
+++
*** Miscellaneous changes
The macros which input a file in LaTeX (like \input, \include) can be
configured in the new option `reftex-include-file-commands'.
RefTeX supports global incremental search.
+++
** Prolog mode has a new variable `prolog-font-lock-keywords'
to support use of font-lock.
@ -4172,6 +4261,7 @@ return window edges in units of pixels, rather than columns and lines.
+++
*** The new macro `with-selected-window' temporarily switches the
selected window without impacting the order of `buffer-list'.
It saves and restores the current buffer, too.
+++
*** `select-window' takes an optional second argument NORECORD.
@ -4181,7 +4271,8 @@ This is like `switch-to-buffer'.
+++
*** `save-selected-window' now saves and restores the selected window
of every frame. This way, it restores everything that can be changed
by calling `select-window'.
by calling `select-window'. It also saves and restores the current
buffer.
+++
*** `set-window-buffer' has an optional argument KEEP-MARGINS.

View file

@ -965,6 +965,20 @@ xmodmap command to the xdm setup script for that display.
Use the shell command `xset bc' to make the old X Menu package work.
*** C-SPC fails to work on Fedora GNU/Linux.
Fedora Core 4 steals the C-SPC key by default for the `iiimx' program
which is the input method for some languages. It blocks Emacs users
from using the C-SPC key for `set-mark-command'.
One solutions is to remove the `<Ctrl>space' from the `Iiimx' file
which can be found in the `/usr/lib/X11/app-defaults' directory.
However, that requires root access.
Another is to specify `Emacs*useXIM: false' in your X resources.
Another is to build Emacs with the `--without-xim' configure option.
*** M-SPC seems to be ignored as input.
See if your X server is set up to use this as a command
@ -2367,7 +2381,9 @@ The fix is to install a newer version of ncurses, such as version 4.2.
With certain recent Linux kernels (like the one of Redhat Fedora Core
1 and 2), the new "Exec-shield" functionality is enabled by default, which
creates a different memory layout that breaks the emacs dumper.
creates a different memory layout that breaks the emacs dumper.
The work-around explained here is not enough on Fedora Core 4. Read the
next item.
Configure can overcome the problem of exec-shield if the architecture is
x86 and the program setarch is present. On other architectures no
@ -2394,6 +2410,20 @@ command when running temacs like this:
setarch i386 ./temacs --batch --load loadup [dump|bootstrap]
*** Fedora Core 4 GNU/Linux: Segfault during dumping.
In addition to exec-shield explained above "Linux: Segfault during
`make bootstrap' under certain recent versions of the Linux kernel"
item, Linux kernel shipped with Fedora Core 4 randomizes the virtual
address space of a process. As the result dumping is failed even if
you turn off the exec-shield. In such case use -R option of setarch
command:
setarch -R i386 ./temacs --batch --load loadup [dump|bootstrap]
or
setarch -R i386 make bootstrap
*** Fatal signal in the command temacs -l loadup inc dump.

View file

@ -48,8 +48,7 @@ Maintainer: Pieter Schoenmakers <tiggr@tiggr.net>
* TUTORIAL.pl:
Author: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl>
Maintainer: Beatę Wierzchołowską <beataw@orient.uw.edu.pl>
Janusz S. Bien <jsbien@mail.uw.edu.pl>
Maintainer: Radoslaw Moszczynski <rm@banita.pl>
* TUTORIAL.pt_BR:
Author: Marcelo Toledo <marcelo@gnu.org>

2749
etc/orgcard.ps Normal file

File diff suppressed because it is too large Load diff

737
etc/orgcard.tex Normal file
View file

@ -0,0 +1,737 @@
% Reference Card for Org Mode 3.12
%
%**start of header
\newcount\columnsperpage
% This file can be printed with 1, 2, or 3 columns per page (see below).
% At the moment this card works quite nicely in 3 column format and
% currently takes most of 2 pages. It is thus suited to producing one
% double-side page when printed.
% There are a couple of tweaks in the format of this card which make it work
% slightly better on A4 paper. The changes due, I think, to Stephen Eglen,
% are commented below. Revert the changes if you want letter sized paper.
% Try running something like
% tex org-mode-ref.tex; dvips -t landscape org-mode-ref.dvi
% to print the card
\columnsperpage=3
% Copyright (c) 2005 Free Software Foundation
% GNU Emacs is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2, or (at your option)
% any later version.
% GNU Emacs is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
% You should have received a copy of the GNU General Public License
% along with GNU Emacs; see the file COPYING. If not, write to
% the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
% Boston, MA 02111-1307, USA.
% This file is intended to be processed by plain TeX (TeX82).
%
% The final reference card has six columns, three on each side.
% This file can be used to produce it in any of three ways:
% 1 column per page
% produces six separate pages, each of which needs to be reduced to 80%.
% This gives the best resolution.
% 2 columns per page
% produces three already-reduced pages.
% You will still need to cut and paste.
% 3 columns per page
% produces two pages which must be printed sideways to make a
% ready-to-use 8.5 x 11 inch reference card.
% For this you need a dvi device driver that can print sideways.
% Which mode to use is controlled by setting \columnsperpage above.
%
% Author:
% Stephen Gildea
% Internet: gildea@stop.mail-abuse.org
%
% Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik
% for their many good ideas.
\def\orgversionnumber{3.12}
\def\year{2005}
\def\shortcopyrightnotice{\vskip 1ex plus 2 fill
\centerline{\small \copyright\ 2004, 2005\ Free Software Foundation, Inc.
Permissions on back. v\orgversionnumber}}
\def\copyrightnotice{
\vskip 1ex plus 100 fill\begingroup\small
\centerline{Copyright \copyright\ \year\ Free Software Foundation, Inc.}
\centerline{v\orgversionnumber{} for Org-Mode \orgversionnumber{}, \year}
\centerline{Author: Philip Rooke}
\centerline{based on refcard design and format by Stephen Gildea}
Permission is granted to make and distribute copies of
this card provided the copyright notice and this permission notice
are preserved on all copies.
\endgroup}
% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}
\newdimen\intercolumnskip %horizontal space between columns
\newbox\columna %boxes to hold columns already built
\newbox\columnb
\def\ncolumns{\the\columnsperpage}
\message{[\ncolumns\space
column\if 1\ncolumns\else s\fi\space per page]}
\def\scaledmag#1{ scaled \magstep #1}
% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\if 1\ncolumns %one-column format uses normal size
\hsize 4in
\vsize 10in
\voffset -.7in
\font\titlefont=\fontname\tenbf \scaledmag3
\font\headingfont=\fontname\tenbf \scaledmag2
\font\smallfont=\fontname\sevenrm
\font\smallsy=\fontname\sevensy
\footline{\hss\folio}
\def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else %2 or 3 columns uses prereduced size
\hsize 3.2in
% FIXME - Try to make things more A4 friendly
% \vsize 7.95in
\vsize 7.65in
% \hoffset -.75in
\hoffset -.25in
\voffset -.745in
\font\titlefont=cmbx10 \scaledmag2
\font\headingfont=cmbx10 \scaledmag1
\font\smallfont=cmr6
\font\smallsy=cmsy6
\font\eightrm=cmr8
\font\eightbf=cmbx8
\font\eightit=cmti8
\font\eighttt=cmtt8
\font\eightmi=cmmi8
\font\eightsy=cmsy8
\textfont0=\eightrm
\textfont1=\eightmi
\textfont2=\eightsy
\def\rm{\eightrm}
\def\bf{\eightbf}
\def\it{\eightit}
\def\tt{\eighttt}
% FIXME - Try to make things more A4 friendly
% \normalbaselineskip=.8\normalbaselineskip
\normalbaselineskip=.7\normalbaselineskip
\normallineskip=.8\normallineskip
\normallineskiplimit=.8\normallineskiplimit
\normalbaselines\rm %make definitions take effect
\if 2\ncolumns
\let\maxcolumn=b
\footline{\hss\rm\folio\hss}
\def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
\else \if 3\ncolumns
\let\maxcolumn=c
\nopagenumbers
\else
\errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
\errmessage{Illegal number of columns per page}
\fi\fi
\intercolumnskip=.46in
\def\abc{a}
\output={% %see The TeXbook page 257
% This next line is useful when designing the layout.
%\immediate\write16{Column \folio\abc\space starts with \firstmark}
\if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
\else\if a\abc
\global\setbox\columna\columnbox \global\def\abc{b}
%% in case we never use \columnb (two-column mode)
\global\setbox\columnb\hbox to -\intercolumnskip{}
\else
\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
\def\multicolumnformat{\shipout\vbox{\makeheadline
\hbox{\box\columna\hskip\intercolumnskip
\box\columnb\hskip\intercolumnskip\columnbox}
\makefootline}\advancepageno}
\def\columnbox{\leftline{\pagebody}}
\def\bye{\par\vfill\supereject
\if a\abc \else\null\vfill\eject\fi
\if a\abc \else\null\vfill\eject\fi
\end}
\fi
% we won't be using math mode much, so redefine some of the characters
% we might want to talk about
%\catcode`\^=12
\catcode`\_=12
% we also need the tilde, for file names.
\catcode`\~=12
\chardef\\=`\\
\chardef\{=`\{
\chardef\}=`\}
\hyphenation{mini-buf-fer}
\parindent 0pt
\parskip 1ex plus .5ex minus .5ex
\def\small{\smallfont\textfont2=\smallsy\baselineskip=.8\baselineskip}
% newcolumn - force a new column. Use sparingly, probably only for
% the first column of a page, which should have a title anyway.
\outer\def\newcolumn{\vfill\eject}
% title - page title. Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex}
% section - new major section. Argument is section name.
\outer\def\section#1{\par\filbreak
\vskip 3ex plus 2ex minus 2ex {\headingfont #1}\mark{#1}%
\vskip 2ex plus 1ex minus 1.5ex}
\newdimen\keyindent
% beginindentedkeys...endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys
% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted. Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}
% \<...> - surrounds a variable name in a code example
\def\<#1>{{\it #1\/}}
% kbd - argument is characters typed literally. Like the Texinfo command.
\def\kbd#1{{\tt#1}\null} %\null so not an abbrev even if period follows
% beginexample...endexample - surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
\obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}
% key - definition of a key.
% \key{description of key}{key-name}
% prints the description left-justified, and the key-name in a \kbd
% form near the right margin.
\def\key#1#2{\leavevmode\hbox to \hsize{\vtop
{\hsize=.75\hsize\rightskip=1em
\hskip\keyindent\relax#1}\kbd{#2}\hfil}}
\newbox\metaxbox
\setbox\metaxbox\hbox{\kbd{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox
% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name. (The "M-x " sticks out to the left.)
\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
{\hskip\keyindent\relax#1\hfil}%
\hskip -\metaxwidth minus 1fil
\kbd{#2}\hfil}}
% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\kbd{#2}\hfil\quad
&\kbd{#3}\hfil\quad\cr}
%**end of header
\title{Org-Mode Reference Card (1/2)}
\centerline{(for version \orgversionnumber)}
\section{Getting Started}
%
Put the following in your \kbd{~/.emacs}$^1$
\vskip -1mm
\beginexample%
(autoload 'org-mode "org" "Org mode" t)
(autoload 'org-diary "org" "Org mode diary entries")
(autoload 'org-agenda "org" "Agenda from Org files" t)
(autoload 'org-store-link "org" "Store org link" t)
(autoload 'orgtbl-mode "org" "Orgtbl minor mode" t)
(autoload 'turn-on-orgtbl "org" "Orgtbl minor mode")
(add-to-list 'auto-mode-alist '("\\\\.org\$" . org-mode))
(define-key global-map "\\C-cl" 'org-store-link)$^2$
(define-key global-map "\\C-ca" 'org-agenda)$^2$
\endexample
%
\metax{For the many customization options try}{M-x org-customize}
\metax{To read the on-line documentation try}{M-x org-info}
\section{Visibility Cycling}
\key{rotate current subtree between states}{TAB}
\key{rotate entire buffer between states}{S-TAB}
\key{show the whole file}{C-c C-a}
%\key{show branches}{C-c C-k}
\section{Motion}
\key{next heading}{C-c C-n}
\key{previous heading}{C-c C-p}
\key{next heading, same level}{C-c C-f}
\key{previous heading, same level}{C-c C-b}
\key{backward to higher level heading}{C-c C-u}
\key{jump to another place in document}{C-c C-j}
\section{Structure Editing}
\key{insert new heading at same level as current}{M-RET}
\key{insert new TODO entry}{M-S-RET}
\key{promote current heading up one level}{M-LEFT}
\key{demote current heading down one level}{M-RIGHT}
\key{promote current subtree up one level}{M-S-LEFT}
\key{demote current subtree down one level}{M-S-RIGHT}
\key{move subtree up}{M-S-UP}
\key{move subtree down}{M-S-DOWN}
\key{kill subtree}{C-c C-h C-w}
\key{copy subtree}{C-c C-h M-w}
\key{yank subtree}{C-c C-h C-y}
\key{archive subtree}{C-c \$}
To set archive location for current file, add a line like$^3$:
\vskip -1mm
\beginexample%
\#+ARCHIVE: archfile::* Archived Tasks
\endexample
\section{Filtering and Sparse Trees}
\key{show sparse tree for all matches of a regexp}{C-c /}
\key{view TODO's in sparse tree}{C-c C-v}
\key{create sparse tree with all deadlines due}{C-c C-w}
\key{time sorted view of current org file}{C-c C-r}
\key{agenda for the week}{C-c a$1$}
\key{agenda for date at cursor}{C-c C-o}
\section{TODO Items}
\key{rotate the state of the current item}{C-c C-t}
\key{view TODO items in a sparse tree}{C-c C-v}
\key{set the priority of the current item}{C-c , [ABC]}
\key{remove priority cookie from current item}{C-c , SPC}
\key{raise priority of current item}{S-UP$^4$}
\key{lower priority of current item}{S-DOWN$^4$}
\vskip 1mm
per-file TODO workflow states: add line(s) like$^3$:
\vskip -1mm
\beginexample%
\#+SEQ_TODO: TODO PROCRASTINATE BLUFF DONE
\endexample
\vskip -1mm
per-file TODO keywords: add line(s) like$^3$:
\vskip -1mm
\beginexample%
\#+TYP_TODO: Phil home work DONE
\endexample
\section{Timestamps}
\key{prompt for date and insert timestamp}{C-c .}
\key{like \kbd{C-c} . but insert date and time format}{C-u C-c .}
\key{insert DEADLINE timestamp}{C-c C-d}
\key{insert SCHEDULED timestamp}{C-c C-s}
\key{create sparse tree with all deadlines due}{C-c C-w}
\key{the time between 2 dates in a time range}{C-c C-y}
\key{change timestamp at cursor by $-1$ day}{S-LEFT$^4$}
\key{change timestamp at cursor by $+1$ day}{S-RIGHT$^4$}
\key{change year/month/day at cursor by $-1$}{S-DOWN$^4$}
\key{change year/month/day at cursor by $+1$}{S-UP$^4$}
\key{access the calendar for the current date}{C-c >}
\key{insert timestamp matching date in calendar}{C-c <}
\key{access agenda for current date}{C-c C-o}
\key{While prompted for a date:}{}
\key{... select date in calendar}{mouse-1/RET}
\key{... scroll calendar back/forward one month}{< / >}
\key{... forward/backward one day}{S-LEFT/RIGHT}
\key{... forward/backward one week}{S-UP/DOWN}
\key{... forward/backward one month}{M-S-LEFT/RIGT}
\section{Links}
\key{globally store link to the current location}{C-c l$^2$}
\key{insert a link (TAB completes stored links)}{C-c C-l}
\key{insert file link with file name completion}{C-u C-c C-l}
\key{open link at point}{C-c C-o}
\key{open file links in emacs}{C-u C-c C-o}
\key{open link at point}{mouse-2}
\key{open file links in emacs}{mouse-3}
{\bf Link types}
\key{\kbd{<http://www.astro.uva.nl/~dominik>}}{\rm on the web}
\key{\kbd{<mailto:adent@galaxy.net>}}{\rm EMail address}
\key{\kbd{<news:comp.emacs>}}{\rm Usenet group}
\key{\kbd{<file:/home/dominik/img/mars.jpg>}}{\rm file, absolute}
\key{\kbd{<file:papers/last.pdf>}}{\rm file, relative}
\key{\kbd{<file:~/code/main.c:255>}}{\rm file with line nr.}
\key{\kbd{<bbdb:Richard Stallman>}}{\rm BBDB person}
\key{\kbd{<shell:ls *.org>}}{\rm shell command}
\key{\kbd{<gnus:group>}}{\rm GNUS group}
\key{\kbd{<gnus:group\#id>}}{\rm GNUS message}
\key{\kbd{<vm:folder>}}{\rm VM folder}
\key{\kbd{<vm:folder\#id>}}{\rm VM message}
\key{\kbd{<vm://myself@some.where.org/folder\#id>}}{\rm VM remote}
Wanderlust \kbd{<wl:...>} and RMAIL \kbd{<rmail:...>} like VM
%\key{\kbd{<wl:folder>}}{\rm Wanderlust f.}
%\key{\kbd{<wl:folder\#id>}}{\rm Wanderlust m.}
%\key{\kbd{<rmail:folder>}}{\rm RMAIL folder}
%\key{\kbd{<rmail:folder\#id>}}{\rm RMAIL msg}
\section{Tables}
%Org-mode has its own built-in intuitive table editor with unique
%capabilities.
{\bf Creating a table}
\metax{insert a new Org-mode table}{M-x org-table-create}
\metax{... or just start typing, e.g.}{|Name|Phone|Age RET |- TAB}
\key{convert region to table}{C-c C-c}
\key{... separator at least 3 spaces}{C-3 C-c C-c}
%\key{... prompt for separator regexp}{C-u C-c C-c}
{\bf Commands available inside tables}
The following commands work when the cursor is {\it inside a table}.
Outside of tables, the same keys may have other functionality.
{\bf Re-aligning and field motion}
\key{re-align the table without moving the cursor}{C-c C-c}
\key{re-align the table, move to next field}{TAB}
\key{move to previous field}{S-TAB}
\key{re-align the table, move to next row}{RET}
{\bf Row and column editing}
\key{move the current column left}{M-LEFT}
\key{move the current column right}{M-RIGHT}
\key{kill the current column}{M-S-LEFT}
\key{insert new column to left of cursor position}{M-S-RIGHT}
\key{move the current row up}{M-UP}
\key{move the current row down}{M-DOWN}
\key{kill the current row or horizontal line}{M-S-UP}
\key{insert new row above the current row}{M-S-DOWN}
\key{insert horizontal line below the current row}{C-c -}
\key{insert horizontal line above the current row}{C-u C-c -}
{\bf Regions}
\key{cut rectangular region}{C-c C-h C-w}
\key{copy rectangular region}{C-c C-h M-w}
\key{paste rectangular region}{C-c C-h C-y}
\key{fill paragraph across selected cells}{C-c C-q}
{\bf Calculations}
Except for the summation commands, these need the Emacs calc package
installed.
\key{replace current field with result of formula}{C-c =}
\key{... same calculation for rest of column}{C-u C-c =}
\key{re-apply all stored equations to current line}{C-c *}
\key{re-apply all stored equations to entire table}{C-u C-c *}
\kbd{TAB}, \kbd{RET} and \kbd{C-c C-c} trigger automatic recalculation
in lines starting with: {\tt | \# |}.
\key{rotate recalculation mark through \# * ! \$}{C-\#}
\key{display column number cursor is in}{C-c ?}
\key{sum numbers in current column/rectangle}{C-c +}
\key{copy down with increment}{S-RET$^4$}
A formula can also be typed directly into into a field. It will be
executed by \kbd{TAB}, \kbd{RET} and \kbd{C-c C-c}:
\key{Example: Add Col1 and Col2}{=\$1+\$2}
\key{... with printf format specification}{=\$1+\$2;\%.2f}
\key{... with constants from constants.el}{=\$1/\$c/\$cm}
\key{Apply current (for this column) formula}{=}
\key{Sum all numbers above/left of cursor}{=sum / =sumh}
\key{Sum just the 3 fields closest to cursor}{=sum3/=sumh3}
{\bf Miscellaneous}
\key{toggle visibility of vertical lines}{C-c |}
\metax{export as tab-separated file}{M-x org-table-export}
\metax{import tab-separated file}{M-x org-table-import}
{\bf Tables created with the \kbd{table.el} package}
\key{insert a new \kbd{table.el} table}{C-c ~}
\key{recognize existing table.el table}{C-c C-c}
\key{convert table (Org-mode $\leftrightarrow$ table.el)}{C-c ~}
\newcolumn
\title{Org-Mode Reference Card (2/2)}
\centerline{(for version \orgversionnumber)}
\section{Timeline and Agenda}
\key{show timeline of current org file}{C-c C-r}
\key{... include past dates}{C-u C-c C-r}
\key{add current file to your agenda}{C-c [}
\key{remove current file from your agenda}{C-c ]}
\key{compile agenda for the current week}{C-c a$^2$}
\key{agenda for date at cursor}{C-c C-o}
\vskip 1mm
To set category for current file, add line$^3$:
\vskip -1mm
\beginexample%
\#+CATEGORY: MyCateg
\endexample
{\bf Commands available in an agenda buffer}
The agenda buffer is electric: single key presses execute commands.
{\bf View org file}
\key{show original location of item}{SPC}
\key{... also available with}{mouse-3}
\key{show and recenter window}{l}
\key{goto original location in other window}{TAB}
\key{... also available with}{mouse-2}
\key{goto original location, delete other windows}{RET}
\key{toggle follow-mode}{f}
{\bf Change display}
\key{delete other windows}{o}
\key{switch to weekly view}{w}
\key{switch to daily view}{d}
\key{toggle inclusion of diary entries}{D}
\key{toggle time grid for daily schedule}{g}
\key{refresh agenda buffer with any changes}{r}
\key{display the following \kbd{org-agenda-ndays}}{RIGHT}
\key{display the previous \kbd{org-agenda-ndays}}{LEFT}
\key{goto today}{.}
{\bf Remote editing}
\key{digit argument}{0-9}
\key{change state of current TODO item}{t}
\key{set priority of current item}{p}
\key{raise priority of current item}{S-UP$^4$}
\key{lower priority of current item}{S-DOWN$^4$}
\key{display weighted priority of current item}{P}
\key{change timestamp to one day earlier}{S-LEFT$^4$}
\key{change timestamp to one day later}{S-RIGHT$^4$}
\key{change timestamp to today}{>}
\key{insert new entry into diary}{i}
{\bf Calendar commands}
\key{find agenda cursor date in calendar}{c}
\key{compute agenda for calendar cursor date}{c}
\key{show phases of the moon}{M}
\key{show sunrise/sunset times}{S}
\key{show holidays}{H}
\key{convert date to other calendars}{C}
{\bf Quit and Exit}
\key{quit agenda, remove agenda buffer}{q}
\key{exit agenda, remove all agenda buffers}{x}
\section{Exporting}
Exporting creates files with extensions {\it .txt\/} and {\it .html\/}
in the current directory.
\key{export as ASCII file}{C-c C-x a}
\key{export visible text only (e.g. for printing)}{C-c C-x v}
\key{export as HTML file}{C-c C-x h}
\key{export as HTML and open in browser}{C-c C-x C-h}
\key{prefix arg sets nb. of headline levels, e.g.}{C-3 C-c C-x h}
\key{insert template of export options}{C-c C-x t}
\key{toggle fixed width for line or region}{C-c :}
{\bf HTML formatting}
\key{make words {\bf bold}}{*bold*}
\key{make words {\it italic}}{/italic/}
\key{make words \underbar{underlined}}{_underlined_}
\key{sub- and superscripts}{x\^{}3, J_dust}
\key{\TeX{}-like macros}{\\alpha, \\to}
\key{typeset lines in fixed width font}{start with :}
\key{tables are exported as HTML tables}{start with |}
\key{links become HTML links}{http:... etc}
\key{include html tags}{@<b>...@</b>}
{\bf Export options}
Include additional information for export by putting these anywhere in the
org file. Use {\tt M-TAB} completion to make sure to get the right
keywords. {\tt M-TAB} again just after keyword is complete inserts examples.
\key{the title to be shown}{\#+TITLE:}
\key{the author}{\#+AUTHOR:}
\key{authors email address}{\#+EMAIL:}
\key{language code for html}{\#+LANGUAGE:}
\key{free text description of file}{\#+TEXT:}
\key{... which can carry over multiple lines}{\#+TEXT:}
\key{settings for the export process - see below}{\#+OPTIONS:}
{\bf Settings for the OPTIONS line}
\key{set number of headline levels for export}{H:2}
\key{turn on/off section numbers}{num:t}
\key{turn on/off table of contents}{toc:t}
\key{turn on/off linebreak preservation}{\\n:nil}
\key{turn on/off quoted html tags}{@:t}
\key{turn on/off fixed width sections}{::t}
\key{turn on/off tables}{|:t}
\key{turn on/off \TeX\ syntax for sub/super-scripts}{\^{}:t}
\key{turn on/off emphasised text}{*:nil}
\key{turn on/off \TeX\ macros}{TeX:t}
{\bf Comments: Text not being exported}
Text before the first headline is not considered part of the document
and is therefore never exported.
Lines starting with \kbd{\#} are comments and are not exported.
Subtrees whose header starts with COMMENT are never exported.
\key{toggle COMMENT keyword on entry}{C-c ;}
\section{Completion}
In-buffer completion completes TODO keywords at headline start, TeX
macros after ``{\tt \\}'', option keywords after ``{\tt \#-}'',
keyword formulas after ``{\tt =}'', and dictionary words elsewhere.
\key{Complete word at point}{M-TAB}
\newcolumn
\section{Calendar and Diary Integration}
To include entries from the Emacs diary in your Org-mode agenda:
\beginexample%
(setq org-agenda-include-diary t)
\endexample
To include your Org-mode agenda in your normal diary, make sure you're
using the fancy diary display
%
%\beginexample%
%(add-hook 'diary-display-hook 'fancy-diary-display)
%\endexample
%
and in your \kbd{~/diary} file add
\beginexample%
\&\%\%(org-diary)
\endexample
to include all the files listed in \kbd{org-agenda-files}. For more
selective file inclusion use a line for each file:
\beginexample%
\&\%\%(org-diary) ~/path/to/some/org-file.org
\endexample
\section{Remember-mode Integration}
See the manual for how to make remember.el use Org-mode links and
files. The note-finishing command \kbd{C-c C-c} will first prompt for
an org file. In the file, find a location with:
\key{rotate subtree visibility}{TAB}
\key{next heading}{DOWN}
\key{previous heading}{UP}
Insert the note with one of the following:
\key{as sublevel of heading at cursor}{RET}
\key{right here (cursor not on heading)}{RET}
\key{before current heading}{LEFT}
\key{after current heading}{RIGHT}
\key{shortcut to end of buffer (cursor at buf-start)}{RET}
\key{Abort}{q}
\section{CUA and pc-select compatibility}
Configure the variable {\tt org-CUA-compatibility} to make Org-mode
avoid the \kbd{S-<cursor>} bindings used by these modes. When set,
Org-mode will change the following keybindings (also in the agenda
buffer, but not during date selection). See note mark four$^4$
throughout the reference card.
%\vskip-mm
\beginexample
S-UP $\to$ M-p S-DOWN $\to$ M-n
S-LEFT $\to$ M-- S-RIGHT $\to$ M-+
S-RET $\to$ C-S-RET
\endexample
\section{Notes}
$^1$ The six autoload forms are only needed if Org-mode is not part of
Emacs, or an XEmacs package.
$^2$ This is only a suggestion for a binding of this command. Choose
you own key as shown under INSTALLATION.
$^3$ After changing a \kbd{\#+KEYWORD} line, press \kbd{C-c C-c} with
the cursor still in a line to make Org-mode notice the change.
$^4$ Keybinding affected by {\tt org-CUA-compatibility}.
\copyrightnotice
\bye
% Local variables:
% compile-command: "tex ord-mode-ref"
% TeX-master: t
% End:
% arch-tag: 139f6750-5cfc-49ca-92b5-237fe5795290

View file

@ -1,3 +1,8 @@
2005-06-28 Kenichi Handa <handa@m17n.org>
* leim-ext.el: Add rules for inserting full-width space for
quail/Punct and quail/Punct-b5.
2005-06-04 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (distclean): Fix a typo (colon was after

View file

@ -34,6 +34,12 @@
(eval-after-load "quail/PY-b5"
'(quail-defrule "ling2" ?$(0!r(B nil t))
;; Enable inputting full-width space (U+3000).
(eval-after-load "quail/Punct"
'(quail-defrule " " ?$A!!(B nil t))
(eval-after-load "quail/Punct-b5"
'(quail-defrule " " ?$(0!!(B nil t))
(autoload 'ucs-input-activate "quail/uni-input"
"Activate UCS input method.
With arg, activate UCS input method if and only if arg is positive.

View file

@ -1,13 +1,248 @@
2005-06-29 Juri Linkov <juri@jurta.org>
* faces.el (default-frame-background-mode): New internal variable.
(frame-set-background-mode): Use it.
* startup.el (normal-top-level): Set default-frame-background-mode
instead of frame-background-mode. Before setting it, test for its
nil value. Remove tests for frame-background-mode and frame
parameter `reverse'. Add test for "unspecified-fg".
* term/xterm.el (xterm-rxvt-set-background-mode):
* term/rxvt.el (rxvt-set-background-mode):
Set default-frame-background-mode instead of frame-background-mode.
2005-06-29 Juanma Barranquero <lekktu@gmail.com>
* imenu.el (imenu--completion-buffer):
* mouse.el (mouse-buffer-menu-alist):
* msb.el (msb-invisible-buffer-p):
* calendar/diary-lib.el (diary-header-line-format):
* emacs-lisp/pp.el (pp-buffer):
* progmodes/cperl-mode.el (cperl-do-auto-fill):
* textmodes/picture.el (picture-replace-match):
Change space constants followed by a sexp to "?\s ".
* play/decipher.el (decipher-loop-with-breaks):
* textmodes/texinfo.el (texinfo-insert-@item): Change space
constants "protected" from end of line by a comment to "?\s".
2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
* font-lock.el (save-buffer-state): Use `declare'.
* progmodes/cperl-mode.el (cperl-find-pods-heres): Don't gratuitously
reset the syntax-table to cperl-mode-syntax-table.
(cperl-mode): Make _ into word-syntax during font-locking so "print" in
"foo_print_bar" is not matched as a reserved keyword.
2005-06-29 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el (orgtbl-setup): New function, for delayed
setup for the orgtbl commands.
(org-calc-default-modes): New option.
(orgtbl-make-binding): Use `defun' to get better help display.
(org-diary): Call `org-compile-prefix-format'.
(org-table-formula-substitute-names): New function.
(org-agenda-day-view, org-agenda-week-view): New commands.
(org-agenda-toggle-week-view): Command removed.
(org-tbl-menu): Split off from org-org-menu.
(org-mode): Move removal of outline-mode menus to here.
(org-table-formula-debug): New option.
(org-table-insert-row): Keep first field if just "#" or "*".
(org-mode): Paragraph regexps fixed.
(org-table-recalculate-regexp): New constant.
(org-table-justify-field-maybe): Avoid replace if not necessary.
(org-copy-special, org-cut-special): Use `call-interactively'.
(org-table-copy-region): Take region from `interactive' call.
(org-trim): Return string even if no match.
(org-formula): New face.
(org-set-font-lock-defaults): No longer highlight "FIXME".
But highlight formula-related fields in table.
(org-table-p): Use regexp, not fontification.
(org-table-align): Handle white space at end of line.
(org-table-formula-evaluate-inline): New option.
(org-mode): Auto-wrapping in comment lines turned off.
(org-table-copy-down): Evaluate only in copied field, not in
destination.
(org-table-current-formula): Variable removed.
(org-table-store-formulas, org-table-get-stored-formulas)
(org-table-modify-formulas, org-table-replace-in-formulas)
(org-table-maybe-eval-formula): New functions.
(org-table-get-formula): Modify to use stored formulas.
(org-table-insert-column, org-table-delete-column)
(org-table-move-column): Call `org-table-modify-formulas'.
(org-complete): Add completion for keyword formulas.
(orgtbl-mode): Pull orgtbl-mode-map to start of
minor-mode-map-alist.
2005-06-29 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/python.el (python-check): Require `compile' before
modifying its variables.
* newcomment.el (comment-indent-default): Don't get fooled by an early
end of buffer.
2005-06-28 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* ps-print.el (ps-print-version): Fix version number.
2005-06-28 Luc Teirlinck <teirllm@auburn.edu>
* textmodes/ispell.el (ispell-word): Remove stray parenthesis.
2005-06-28 Richard M. Stallman <rms@gnu.org>
* textmodes/flyspell.el (flyspell-use-local-map): Variable deleted.
(flyspell-local-mouse-map): Declaration deleted.
(flyspell-mouse-map): Bind only mouse-2.
(flyspell-mode-map): Don't test flyspell-use-local-map.
(flyspell-overlay-keymap-property-name): Var deleted.
(flyspell-mode-on): Don't make local bindings for
flyspell-mouse-map and flyspell-mode-map.
(make-flyspell-overlay): Unconditionally put on `keymap' text prop.
* textmodes/ispell.el (ispell-word): Do not ignore short words.
* progmodes/compile.el (compilation-next-error-function):
Don't switch buffers; operate on the current buffer.
* facemenu.el (facemenu-add-face): Warn when font-lock is active.
* comint.el (comint-password-prompt-regexp): Accept ", try again".
* bindings.el (global-map): Bind insertchar and its variants.
2005-06-27 Richard M. Stallman <rms@gnu.org>
* textmodes/artist.el (artist-text-overwrite)
(artist-figlet-get-extra-args, artist-text-see-thru): Use read-string.
2005-06-27 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* ps-print.el: It was not working the page selection for printing.
Reported by Sebastian Tennant <sebyte@smolny.plus.com>.
(ps-print-version): New version 6.6.7.
(ps-end-sheet): New fun.
(ps-header-sheet, ps-end-job): Call it.
2005-06-27 Luc Teirlinck <teirllm@auburn.edu>
* subr.el (add-to-list, add-to-ordered-list): Doc fixes.
2005-06-27 Lute Kamstra <lute@gnu.org>
* facemenu.el (facemenu-unlisted-faces): Add foreground and
background color faces.
(facemenu-get-face): Delete function.
(facemenu-set-face-from-menu): Don't call facemenu-get-face.
(facemenu-add-new-color): Make second argument mandatory.
Create the approprate face and return it. Simplify.
(facemenu-set-foreground, facemenu-set-background): Don't check if
color is defined. Use return value of facemenu-add-new-color.
2005-06-26 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gud.el (gud-filter): Add missing argument to
with-selected-window.
2005-06-26 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/easy-mmode.el (define-minor-mode): Don't automatically add
a :require to the defcustom.
* emacs-lisp/autoload.el (make-autoload): Add the :setter for
defcustoms corresponding to minor modes.
2005-06-26 David Ponce <david@dponce.com>
* recentf.el: Require tree-widget instead of wid-edit.
(recentf-filename-handler): Fix widget :type.
(recentf-cancel-dialog, recentf-open-more-files)
(recentf-open-files-action): Doc fix.
(recentf-dialog-goto-first): New function.
(recentf-dialog-mode-map): Set parent keymap first.
(recentf-dialog-mode): Define with define-derived-mode.
Don't display continuation lines in dialogs.
(recentf-edit-list): Rename from recentf-edit-selected-items.
(recentf-edit-list-select): Rename from recentf-edit-list-action.
Simplify.
(recentf-edit-list-validate): New function.
(recentf-edit-list): Update accordingly.
(recentf-open-files-item-shift): Remove.
(recentf-open-files-item): Convert menu elements into tree and
link widgets. Don't create the widgets.
(recentf-open-files): Update accordingly.
(recentf-save-list): Untabify.
2005-06-25 Luc Teirlinck <teirllm@auburn.edu>
* replace.el (keep-lines-read-args): Add INTERACTIVE arg.
(keep-lines): Add INTERACTIVE arg. Never delete lines only
partially contained in the active region. Do not take active
region into account when called from Lisp, unless INTERACTIVE arg
is non-nil. Use `forward-line' instead of `beginning-of-line' to
avoid trouble with fields. Make marker point nowhere when no
longer used. Always return nil. Doc fix.
(flush-lines): Add INTERACTIVE arg. Do not take active region
into account when called from Lisp, unless INTERACTIVE arg is
non-nil. Use `forward-line' instead of `beginning-of-line' to
avoid trouble with fields. Make marker point nowhere when no
longer used. Always return nil. Doc fix.
(how-many): Add INTERACTIVE arg. Make RSTART and REND args
interchangeable. Do not take active region into account when
called from Lisp, unless INTERACTIVE arg is non-nil. Do not print
message in echo area when called from Lisp, unless INTERACTIVE arg
is non-nil. Avoid saying "1 occurrences". Do not use markers.
Return the number of matches. Doc fix.
(occur): Doc fix.
(perform-replace): Make comment follow double space convention for
the sake of `outline-minor-mode'.
* faces.el (facep): Doc fix.
2005-06-25 Richard M. Stallman <rms@gnu.org>
* facemenu.el (facemenu-enable-faces-p): New function.
(facemenu-background-menu, facemenu-foreground-menu)
(facemenu-face-menu): Add menu-enable property.
* jka-compr.el (jka-compr-insert-file-contents):
Special handling if cannot find the uncompression program.
* cus-face.el (custom-face-attributes): Add autoload.
* emacs-lisp/lisp-mode.el (lisp-mode-variables):
Bind comment-indent-function locally.
* window.el (save-selected-window): Use save-current-buffer.
* subr.el (with-selected-window): Use save-current-buffer.
* progmodes/gud.el (gud-filter): Simplify using with-selected-window
and with-current-buffer.
2005-06-24 Richard M. Stallman <rms@gnu.org>
* simple.el (line-move-1): Fix previous change.
2005-06-24 Juanma Barranquero <lekktu@gmail.com>
* replace.el (occur-1): Set `buffer-read-only' and the
buffer-modified flag before running `occur-hook' to protect
against unintentional buffer switches that can lead to data loss.
2005-06-24 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gud.el (gud-tooltip-print-command): Indent properly.
(gud-gdb-marker-filter): Use font-lock-warning-face for any
initial error.
* progmodes/gdb-ui.el (gdb-send): Remove warning face from errors
after fresh input.
(gdb-var-create-handler): Put name of expression in quotes.
2005-06-23 Luc Teirlinck <teirllm@auburn.edu>
* emacs-lisp/ring.el (ring-elements): Make it return a list of the
@ -19,7 +254,7 @@
(line-move-1): When there are overlays around, use vertical-motion.
* faces.el (escape-glyph): Use brown against light background.
(nobreak-space): Renamed from no-break-space.
(nobreak-space): Rename from no-break-space.
Fix previous change.
* dired-aux.el (dired-do-copy): Fix arg prompt.
@ -73,7 +308,7 @@
* bindings.el (propertized-buffer-identification): Use renamed
`Buffer-menu-buffer' face.
* faces.el (vertical-border): Renamed from `vertical-divider'.
* faces.el (vertical-border): Rename from `vertical-divider'.
(escape-glyph): Change dark-background color back to `cyan'.
2005-06-21 Juri Linkov <juri@jurta.org>
@ -159,8 +394,7 @@
2005-06-18 Peter Kleiweg <p.c.j.kleiweg@rug.nl>
* progmodes/ps-mode.el: Update version and maintainer's email
address.
* progmodes/ps-mode.el: Update version and maintainer's email address.
2005-06-18 Steve Youngs <steve@xemacs.org>
@ -248,8 +482,8 @@
New backward-compatibility aliases for renamed faces.
(eshell-ls-decorated-name): Use renamed eshell-ls faces.
* progmodes/cc-fonts.el (c-nonbreakable-space-face): Remove
"-face" suffix from face name.
* progmodes/cc-fonts.el (c-nonbreakable-space-face):
Remove "-face" suffix from face name.
(c-cpp-matchers): Use the variable `c-nonbreakable-space-face'
instead of literal face.
@ -377,8 +611,8 @@
ido-incomplete-regexp.
(ido-incomplete-regexp): New face.
(ido-completions): Use it.
(ido-complete, ido-exit-minibuffer, ido-completions): Handle
incomplete regexps.
(ido-complete, ido-exit-minibuffer, ido-completions):
Handle incomplete regexps.
(ido-completions): Add check for complete match when entering a regexp.
2005-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
@ -407,6 +641,11 @@
* progmodes/cperl-mode.el (cperl-init-faces): Use literal cperl
faces instead of (non-existent) variables.
2005-06-14 Stefan Monnier <monnier@iro.umontreal.ca>
* iswitchb.el (iswitchb-to-end): Replace mapcar with dolist.
(iswitchb-get-matched-buffers): Likewise. Simplify.
2005-06-14 Miles Bader <miles@gnu.org>
* progmodes/ld-script.el (ld-script-location-counter):
@ -532,7 +771,7 @@
* progmodes/gdb-ui.el (menu): Re-order menu items.
(gdb-tooltip-print): Respect tooltip-use-echo-area.
* progmodes/gud.el (tooltip-use-echo-area): Remove alias.
Define in tooltip.el.
(gud-tooltip-process-output): Respect tooltip-use-echo-area.

View file

@ -775,6 +775,11 @@ language you are using."
(define-key global-map [insert] 'overwrite-mode)
(define-key global-map [C-insert] 'kill-ring-save)
(define-key global-map [S-insert] 'yank)
;; `insertchar' is what term.c produces. Should we change term.c
;; to produce `insert' instead?
(define-key global-map [insertchar] 'overwrite-mode)
(define-key global-map [C-insertchar] 'kill-ring-save)
(define-key global-map [S-insertchar] 'yank)
(define-key global-map [undo] 'undo)
(define-key global-map [redo] 'repeat-complex-command)
(define-key global-map [again] 'repeat-complex-command) ; Sun keyboard
@ -785,7 +790,6 @@ language you are using."
;; (define-key global-map [clearline] 'function-key-error)
(define-key global-map [insertline] 'open-line)
(define-key global-map [deleteline] 'kill-line)
;; (define-key global-map [insertchar] 'function-key-error)
(define-key global-map [deletechar] 'delete-char)
;; (define-key global-map [backtab] 'function-key-error)
;; (define-key global-map [f1] 'function-key-error)

View file

@ -290,7 +290,7 @@ The format of the header is specified by `diary-header-line-format'."
"Selective display active - press \"s\" in calendar \
before edit/copy"
"Diary"))
?\ (frame-width)))
?\s (frame-width)))
"*Format of the header line displayed by `simple-diary-display'.
Only used if `diary-header-line-flag' is non-nil."
:group 'diary

View file

@ -338,8 +338,8 @@ This variable is buffer-local."
"\\(\\([Oo]ld \\|[Nn]ew \\|'s \\|login \\|\
Kerberos \\|CVS \\|UNIX \\| SMB \\|^\\)\
\[Pp]assword\\( (again)\\)?\\|\
pass phrase\\|\\(Enter\\|Repeat\\) passphrase\\)\
\\( for [^:]+\\)?:\\s *\\'"
pass phrase\\|\\(Enter\\|Repeat\\|Bad\\) passphrase\\)\
\\(?:, try again\\)?\\(?: for [^:]+\\)?:\\s *\\'"
"*Regexp matching prompts for passwords in the inferior process.
This is used by `comint-watch-for-password-prompt'."
:type 'regexp

View file

@ -59,6 +59,7 @@
;;; Face attributes.
;;;###autoload
(defconst custom-face-attributes
'((:family
(string :tag "Font Family"

View file

@ -1,7 +1,7 @@
;; autoload.el --- maintain autoloads in loaddefs.el
;; Copyright (C) 1991,92,93,94,95,96,97, 2001,02,03,04
;; Free Software Foundation, Inc.
;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2001, 2002, 2003,
;; 2004, 2005 Free Software Foundation, Inc.
;; Author: Roland McGrath <roland@gnu.org>
;; Keywords: maint
@ -123,7 +123,17 @@ or macro definition or a defcustom)."
)
`(progn
(defvar ,varname ,init ,doc)
(custom-autoload ',varname ,file))))
(custom-autoload ',varname ,file)
;; The use of :require in a defcustom can be annoying, especially
;; when defcustoms are moved from one file to another between
;; releases because the :require arg gets placed in the user's
;; .emacs. In order for autoloaded minor modes not to need the
;; use of :require, we arrange to store their :setter.
,(let ((setter (condition-case nil
(cadr (memq :set form))
(error nil))))
(if (equal setter ''custom-set-minor-mode)
`(put ',varname 'custom-set 'custom-set-minor-mode))))))
;; nil here indicates that this is not a special autoload form.
(t nil))))
@ -566,5 +576,5 @@ Calls `update-directory-autoloads' on the command line arguments."
(provide 'autoload)
;;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
;; arch-tag: 00244766-98f4-4767-bf42-8a22103441c6
;;; autoload.el ends here

View file

@ -201,10 +201,7 @@ See the command `%s' for a description of this minor-mode."))
:type 'boolean
,@(cond
((not (and curfile require)) nil)
((not (eq require t)) `(:require ,require))
(t `(:require
',(intern (file-name-nondirectory
(file-name-sans-extension curfile))))))
((not (eq require t)) `(:require ,require)))
,@(nreverse extra-keywords))))
;; The actual function.

View file

@ -202,6 +202,8 @@
(setq comment-column 40)
;; Don't get confused by `;' in doc strings when paragraph-filling.
(set (make-local-variable 'comment-use-global-state) t)
(make-local-variable 'comment-indent-function)
(setq comment-indent-function 'lisp-comment-indent)
(make-local-variable 'imenu-generic-expression)
(setq imenu-generic-expression lisp-imenu-generic-expression)
(make-local-variable 'multibyte-syntax-as-symbol)
@ -714,7 +716,7 @@ which see."
(setq debug-on-error new-value))
value)))))
;; Used for comment-indent-function in Lisp modes.
(defun lisp-comment-indent ()
(if (looking-at "\\s<\\s<\\s<")
(current-column)

View file

@ -67,7 +67,7 @@ to make output that `read' can handle, whenever this is possible."
(save-excursion
(backward-char 1)
(skip-chars-backward "'`#^")
(when (and (not (bobp)) (memq (char-before) '(?\ ?\t ?\n)))
(when (and (not (bobp)) (memq (char-before) '(?\s ?\t ?\n)))
(delete-region
(point)
(progn (skip-chars-backward " \t\n") (point)))

View file

@ -1,6 +1,6 @@
;;; facemenu.el --- create a face menu for interactively adding fonts to text
;; Copyright (c) 1994, 1995, 1996, 2001, 2002 Free Software Foundation, Inc.
;; Copyright (c) 1994, 1995, 1996, 2001, 2002, 2005 Free Software Foundation, Inc.
;; Author: Boris Goldowsky <boris@gnu.org>
;; Keywords: faces
@ -135,7 +135,8 @@ just before \"Other\" at the end."
`(modeline region secondary-selection highlight scratch-face
,(purecopy "^font-lock-") ,(purecopy "^gnus-") ,(purecopy "^message-")
,(purecopy "^ediff-") ,(purecopy "^term-") ,(purecopy "^vc-")
,(purecopy "^widget-") ,(purecopy "^custom-") ,(purecopy "^vm-"))
,(purecopy "^widget-") ,(purecopy "^custom-") ,(purecopy "^vm-")
,(purecopy "^fg:") ,(purecopy "^bg:"))
"*List of faces not to include in the Face menu.
Each element may be either a symbol, which is the name of a face, or a string,
which is a regular expression to be matched against face names. Matching
@ -162,6 +163,7 @@ when they are created."
"Menu keymap for faces.")
;;;###autoload
(defalias 'facemenu-face-menu facemenu-face-menu)
(put 'facemenu-face-menu 'menu-enable '(facemenu-enable-faces-p))
;;;###autoload
(defvar facemenu-foreground-menu
@ -171,6 +173,7 @@ when they are created."
"Menu keymap for foreground colors.")
;;;###autoload
(defalias 'facemenu-foreground-menu facemenu-foreground-menu)
(put 'facemenu-foreground-menu 'menu-enable '(facemenu-enable-faces-p))
;;;###autoload
(defvar facemenu-background-menu
@ -180,6 +183,11 @@ when they are created."
"Menu keymap for background colors.")
;;;###autoload
(defalias 'facemenu-background-menu facemenu-background-menu)
(put 'facemenu-background-menu 'menu-enable '(facemenu-enable-faces-p))
;;; Condition for enabling menu items that set faces.
(defun facemenu-enable-faces-p ()
(not (and font-lock-mode font-lock-defaults)))
;;;###autoload
(defvar facemenu-special-menu
@ -358,10 +366,8 @@ typing a character to insert cancels the specification."
(region-beginning))
(if (and mark-active (not current-prefix-arg))
(region-end))))
(unless (color-defined-p color)
(message "Color `%s' undefined" color))
(facemenu-add-new-color color 'facemenu-foreground-menu)
(facemenu-add-face (list (list :foreground color)) start end))
(facemenu-add-face (facemenu-add-new-color color 'facemenu-foreground-menu)
start end))
;;;###autoload
(defun facemenu-set-background (color &optional start end)
@ -382,10 +388,8 @@ typing a character to insert cancels the specification."
(region-beginning))
(if (and mark-active (not current-prefix-arg))
(region-end))))
(unless (color-defined-p color)
(message "Color `%s' undefined" color))
(facemenu-add-new-color color 'facemenu-background-menu)
(facemenu-add-face (list (list :background color)) start end))
(facemenu-add-face (facemenu-add-new-color color 'facemenu-background-menu)
start end))
;;;###autoload
(defun facemenu-set-face-from-menu (face start end)
@ -406,7 +410,6 @@ typing a character to insert cancels the specification."
(if (and mark-active (not current-prefix-arg))
(region-end))))
(barf-if-buffer-read-only)
(facemenu-get-face face)
(if start
(facemenu-add-face face start end)
(facemenu-add-face face)))
@ -608,7 +611,9 @@ effect. See `facemenu-remove-face-function'."
self-insert-face
(list self-insert-face)))
face)
self-insert-face-command this-command)))))
self-insert-face-command this-command))))
(unless (facemenu-enable-faces-p)
(message "Font-lock mode will override any faces you set in this buffer")))
(defun facemenu-active-faces (face-list &optional frame)
"Return from FACE-LIST those faces that would be used for display.
@ -641,14 +646,6 @@ use the selected frame. If t, then the global, non-frame faces are used."
(setq face-list (cdr face-list)))
(nreverse active-list)))
(defun facemenu-get-face (symbol)
"Make sure FACE exists.
If not, create it and add it to the appropriate menu. Return the SYMBOL."
(let ((name (symbol-name symbol)))
(cond ((facep symbol))
(t (make-face symbol))))
symbol)
(defun facemenu-add-new-face (face)
"Add FACE (a face) to the Face menu.
@ -708,47 +705,44 @@ This is called whenever you create a new face."
(define-key menu key (cons name function))))))
nil) ; Return nil for facemenu-iterate
(defun facemenu-add-new-color (color &optional menu)
(defun facemenu-add-new-color (color menu)
"Add COLOR (a color name string) to the appropriate Face menu.
MENU should be `facemenu-foreground-menu' or
`facemenu-background-menu'.
MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'.
Create the appropriate face and return it.
This is called whenever you use a new color."
(let* (name
symbol
docstring
function menu-val key
(color-p (memq menu '(facemenu-foreground-menu
facemenu-background-menu))))
(unless (stringp color)
(error "%s is not a color" color))
(setq name color
symbol (intern name))
(let (symbol docstring)
(unless (color-defined-p color)
(error "Color `%s' undefined" color))
(cond ((eq menu 'facemenu-foreground-menu)
(setq docstring
(format "Select foreground color %s for subsequent insertion."
name)))
color)
symbol (intern (concat "fg:" color)))
(set-face-foreground (make-face symbol) color))
((eq menu 'facemenu-background-menu)
(setq docstring
(format "Select background color %s for subsequent insertion."
name))))
color)
symbol (intern (concat "bg:" color)))
(set-face-background (make-face symbol) color))
(t (error "MENU should be `facemenu-foreground-menu' or `facemenu-background-menu'")))
(cond ((facemenu-iterate ; check if equivalent face is already in the menu
(lambda (m) (and (listp m)
(symbolp (car m))
(stringp (cadr m))
(string-equal (cadr m) color)))
(cdr (symbol-function menu))))
(t ; No keyboard equivalent. Figure out where to put it:
(setq key (vector symbol)
function 'facemenu-set-face-from-menu
menu-val (symbol-function menu))
(if (and facemenu-new-faces-at-end
(> (length menu-val) 3))
(define-key-after menu-val key (cons name function)
(car (nth (- (length menu-val) 3) menu-val)))
(define-key menu key (cons name function))))))
nil) ; Return nil for facemenu-iterate
(t ; No keyboard equivalent. Figure out where to put it:
(let ((key (vector symbol))
(function 'facemenu-set-face-from-menu)
(menu-val (symbol-function menu)))
(if (and facemenu-new-faces-at-end
(> (length menu-val) 3))
(define-key-after menu-val key (cons color function)
(car (nth (- (length menu-val) 3) menu-val)))
(define-key menu key (cons color function))))))
symbol))
(defun facemenu-complete-face-list (&optional oldlist)
"Return list of all faces that look different.

View file

@ -204,7 +204,10 @@ If NAME is already a face, it is simply returned."
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun facep (face)
"Return non-nil if FACE is a face name."
"Return non-nil if FACE is a face name or internal face object.
Return nil otherwise. A face name can be a string or a symbol.
An internal face object is a vector of the kind used internally
to record face data."
(internal-lisp-face-p face))
@ -1573,6 +1576,13 @@ this won't have the expected effect."
(choice-item light)
(choice-item :tag "default" nil)))
(defvar default-frame-background-mode nil
"Internal variable for the default brightness of the background.
Emacs sets it automatically depending on the terminal type.
The value `nil' means `dark'. If Emacs runs in non-windowed
mode from `xterm' or a similar terminal emulator, the value is
`light'. On rxvt terminals, the value depends on the environment
variable COLORFGBG.")
(defun frame-set-background-mode (frame)
"Set up display-dependent faces on FRAME.
@ -1588,13 +1598,13 @@ according to the `background-mode' and `display-type' frame parameters."
(intern (downcase bg-resource)))
((and (null window-system) (null bg-color))
;; No way to determine this automatically (?).
'dark)
(or default-frame-background-mode 'dark))
;; Unspecified frame background color can only happen
;; on tty's.
((member bg-color '(unspecified "unspecified-bg"))
'dark)
(or default-frame-background-mode 'dark))
((equal bg-color "unspecified-fg") ; inverted colors
'light)
(if (eq default-frame-background-mode 'light) 'dark 'light))
((>= (apply '+ (x-color-values bg-color frame))
;; Just looking at the screen, colors whose
;; values add up to .6 of the white total

View file

@ -620,6 +620,7 @@ Major/minor modes can set this variable if they know which option applies.")
;; We use this to preserve or protect things when modifying text properties.
(defmacro save-buffer-state (varlist &rest body)
"Bind variables according to VARLIST and eval BODY restoring buffer state."
(declare (indent 1) (debug let))
(let ((modified (make-symbol "modified")))
`(let* ,(append varlist
`((,modified (buffer-modified-p))
@ -634,8 +635,6 @@ Major/minor modes can set this variable if they know which option applies.")
,@body)
(unless ,modified
(restore-buffer-modified-p nil)))))
(put 'save-buffer-state 'lisp-indent-function 1)
(def-edebug-spec save-buffer-state let)
;;
;; Shut up the byte compiler.
(defvar font-lock-face-attributes)) ; Obsolete but respected if set.

View file

@ -1,3 +1,18 @@
2005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus-nocem.el (gnus-nocem-verifyer): Default to pgg-verify.
(gnus-nocem-check-article): Fetch the Type header.
(gnus-nocem-message-wanted-p): Fix the way to examine types.
(gnus-nocem-verify-issuer): Use functionp instead of fboundp.
(gnus-nocem-enter-article): Make sure gnus-nocem-hashtb is initialized.
* pgg.el (pgg-verify): Return the verification result.
2005-06-24 Juanma Barranquero <lekktu@gmail.com>
* gnus-art.el (gnus-article-mode): Set `nobreak-char-display', not
`show-nonbreak-escape'.
2005-06-23 Lute Kamstra <lute@gnu.org>
* gnus-art.el (gnus-article-mode): Use kill-all-local-variables.

View file

@ -3755,7 +3755,7 @@ commands:
(make-local-variable 'gnus-article-charset)
(make-local-variable 'gnus-article-ignored-charsets)
;; Prevent recent Emacsen from displaying non-break space as "\ ".
(set (make-local-variable 'show-nonbreak-escape) nil)
(set (make-local-variable 'nobreak-char-display) nil)
(gnus-set-default-directory)
(buffer-disable-undo)
(setq buffer-read-only t)

View file

@ -1,6 +1,6 @@
;;; gnus-nocem.el --- NoCeM pseudo-cancellation treatment
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004
;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2002, 2004, 2005
;; Free Software Foundation, Inc.
@ -74,12 +74,13 @@ issuer registry."
:group 'gnus-nocem
:type 'integer)
(defcustom gnus-nocem-verifyer 'mc-verify
(defcustom gnus-nocem-verifyer 'pgg-verify
"*Function called to verify that the NoCeM message is valid.
One likely value is `mc-verify'. If the function in this variable
One likely value is `pgg-verify'. If the function in this variable
isn't bound, the message will be used unconditionally."
:group 'gnus-nocem
:type '(radio (function-item mc-verify)
:type '(radio (function-item pgg-verify)
(function-item mc-verify)
(function :tag "other")))
(defcustom gnus-nocem-liberal-fetch nil
@ -246,7 +247,7 @@ valid issuer, which is much faster if you are selective about the issuers."
;; We get the name of the issuer.
(narrow-to-region b e)
(setq issuer (mail-fetch-field "issuer")
type (mail-fetch-field "issuer"))
type (mail-fetch-field "type"))
(widen)
(if (not (gnus-nocem-message-wanted-p issuer type))
(message "invalid NoCeM issuer: %s" issuer)
@ -267,18 +268,20 @@ valid issuer, which is much faster if you are selective about the issuers."
(while (setq condition (pop conditions))
(cond
((stringp condition)
(setq wanted (string-match condition type)))
(when (string-match condition type)
(setq wanted t)))
((and (consp condition)
(eq (car condition) 'not)
(stringp (cadr condition)))
(setq wanted (not (string-match (cadr condition) type))))
(when (string-match (cadr condition) type)
(setq wanted nil)))
(t
(error "Invalid NoCeM condition: %S" condition))))
wanted))))
(defun gnus-nocem-verify-issuer (person)
"Verify using PGP that the canceler is who she says she is."
(if (fboundp gnus-nocem-verifyer)
(if (functionp gnus-nocem-verifyer)
(ignore-errors
(funcall gnus-nocem-verifyer))
;; If we don't have Mailcrypt, then we use the message anyway.
@ -315,7 +318,10 @@ valid issuer, which is much faster if you are selective about the issuers."
(while (eq (char-after) ?\t)
(forward-line -1))
(setq id (buffer-substring (point) (1- (search-forward "\t"))))
(unless (gnus-gethash id gnus-nocem-hashtb)
(unless (if gnus-nocem-hashtb
(gnus-gethash id gnus-nocem-hashtb)
(setq gnus-nocem-hashtb (gnus-make-hashtable))
nil)
;; only store if not already present
(gnus-sethash id t gnus-nocem-hashtb)
(push id ncm))

View file

@ -380,7 +380,8 @@ within the region."
(with-output-to-temp-buffer pgg-echo-buffer
(set-buffer standard-output)
(insert-buffer-substring (if status pgg-output-buffer
pgg-errors-buffer)))))))
pgg-errors-buffer)))))
status))
;;;###autoload
(defun pgg-insert-key ()

View file

@ -877,7 +877,7 @@ Return one of the entries in index-alist or nil."
(if (not imenu-space-replacement) index-alist
(mapcar
(lambda (item)
(cons (subst-char-in-string ?\ (aref imenu-space-replacement 0)
(cons (subst-char-in-string ?\s (aref imenu-space-replacement 0)
(car item))
(cdr item)))
index-alist))))

View file

@ -474,6 +474,9 @@ There should be no more than seven characters after the final `/'."
(delete-region (point) (point-max)))
(goto-char start))
(error
;; If the file we wanted to uncompress does not exist,
;; handle that according to VISIT as `insert-file-contents'
;; would, maybe signaling the same error it normally would.
(if (and (eq (car error-code) 'file-error)
(eq (nth 3 error-code) local-file))
(if visit
@ -481,6 +484,13 @@ There should be no more than seven characters after the final `/'."
(signal 'file-error
(cons "Opening input file"
(nthcdr 2 error-code))))
;; If the uncompression program can't be found,
;; signal that as a non-file error
;; so that find-file-noselect-1 won't handle it.
(if (and (eq (car error-code) 'file-error)
(equal (cadr error-code) "Searching for program"))
(error "Uncompression program `%s' not found"
(nth 3 error-code)))
(signal (car error-code) (cdr error-code))))))
(and

View file

@ -1857,7 +1857,7 @@ and selects that window."
(string< (buffer-name elt1) (buffer-name elt2))))))
(setq tail buffers)
(while tail
(or (eq ?\ (aref (buffer-name (car tail)) 0))
(or (eq ?\s (aref (buffer-name (car tail)) 0))
(setq maxlen
(max maxlen
(length (buffer-name (car tail))))))

View file

@ -489,7 +489,7 @@ See the function `mouse-select-buffer' and the variable
"Return t if optional BUFFER is an \"invisible\" buffer.
If the argument is left out or nil, then the current buffer is considered."
(and (> (length (buffer-name buffer)) 0)
(eq ?\ (aref (buffer-name buffer) 0))))
(eq ?\s (aref (buffer-name buffer) 0))))
(defun msb--strip-dir (dir)
"Strip one hierarchy level from the end of DIR."

View file

@ -502,7 +502,7 @@ Point is assumed to be just at the end of a comment."
(or (match-end 1) (/= (current-column) (current-indentation))))
0
(when (or (/= (current-column) (current-indentation))
(and (> comment-add 0) (looking-at "\\s<\\S<")))
(and (> comment-add 0) (looking-at "\\s<\\(\\S<\\|\\'\\)")))
comment-column)))
;;;###autoload

View file

@ -772,7 +772,7 @@ See `decipher-loop-no-breaks' if you do not care about word divisions."
(forward-char))
(or (equal decipher-char ?\ )
(progn
(setq decipher-char ?\ ;
(setq decipher-char ?\s
decipher--loop-prev-char ?\ )
(funcall func)))))))

View file

@ -493,25 +493,60 @@ starting the compilation process.")
;; backward-compatibility alias
(put 'compilation-info-face 'face-alias 'compilation-info)
(defface compilation-error-file-name
'((default :inherit font-lock-warning-face)
(((supports :underline t)) :underline t))
"Face for displaying file names in compilation errors."
:group 'font-lock-highlighting-faces
:version "22.1")
(defface compilation-warning-file-name
'((default :inherit font-lock-warning-face)
(((supports :underline t)) :underline t))
"Face for displaying file names in compilation errors."
:group 'font-lock-highlighting-faces
:version "22.1")
(defface compilation-info-file-name
'((default :inherit compilation-info)
(((supports :underline t)) :underline t))
"Face for displaying file names in compilation errors."
:group 'font-lock-highlighting-faces
:version "22.1")
(defface compilation-line-number
'((default :inherit font-lock-variable-name-face)
(((supports :underline t)) :underline t))
"Face for displaying file names in compilation errors."
:group 'font-lock-highlighting-faces
:version "22.1")
(defface compilation-column-number
'((default :inherit font-lock-type-face)
(((supports :underline t)) :underline t))
"Face for displaying file names in compilation errors."
:group 'font-lock-highlighting-faces
:version "22.1")
(defvar compilation-message-face nil
"Face name to use for whole messages.
Faces `compilation-error-face', `compilation-warning-face',
`compilation-info-face', `compilation-line-face' and
`compilation-column-face' get prepended to this, when applicable.")
(defvar compilation-error-face 'font-lock-warning-face
(defvar compilation-error-face 'compilation-error-file-name
"Face name to use for file name in error messages.")
(defvar compilation-warning-face 'compilation-warning
(defvar compilation-warning-face 'compilation-warning-file-name
"Face name to use for file name in warning messages.")
(defvar compilation-info-face 'compilation-info
(defvar compilation-info-face 'compilation-info-file-name
"Face name to use for file name in informational messages.")
(defvar compilation-line-face 'font-lock-variable-name-face
(defvar compilation-line-face 'compilation-line-number
"Face name to use for line number in message.")
(defvar compilation-column-face 'font-lock-type-face
(defvar compilation-column-face 'compilation-column-number
"Face name to use for column number in message.")
;; same faces as dired uses
@ -1342,8 +1377,9 @@ Turning the mode on runs the normal hook `compilation-minor-mode-hook'."
(force-mode-line-update)
(if (and opoint (< opoint omax))
(goto-char opoint))
(if compilation-finish-function
(funcall compilation-finish-function (current-buffer) msg))
(with-no-warnings
(if compilation-finish-function
(funcall compilation-finish-function (current-buffer) msg)))
(let ((functions compilation-finish-functions))
(while functions
(funcall (car functions) (current-buffer) msg)
@ -1501,8 +1537,9 @@ Use this command in a compilation log buffer. Sets the mark at point there."
;;;###autoload
(defun compilation-next-error-function (n &optional reset)
"Advance to the next error message and visit the file where the error was.
This is the value of `next-error-function' in Compilation buffers."
(interactive "p")
(set-buffer (compilation-find-buffer))
(when reset
(setq compilation-current-error nil))
(let* ((columns compilation-error-screen-columns) ; buffer's local value

View file

@ -1516,7 +1516,8 @@ or as help on variables `cperl-tips', `cperl-problems',
(t
'((cperl-load-font-lock-keywords
cperl-load-font-lock-keywords-1
cperl-load-font-lock-keywords-2)))))
cperl-load-font-lock-keywords-2)
nil nil ((?_ . "w"))))))
(make-local-variable 'cperl-syntax-state)
(if cperl-use-syntax-table-text-property
(progn
@ -3840,7 +3841,11 @@ the sections using `cperl-pod-head-face', `cperl-pod-face',
(and (buffer-modified-p)
(not modified)
(set-buffer-modified-p nil))
(set-syntax-table cperl-mode-syntax-table))
;; I do not understand what this is doing here. It breaks font-locking
;; because it resets the syntax-table from font-lock-syntax-table to
;; cperl-mode-syntax-table.
;; (set-syntax-table cperl-mode-syntax-table)
)
(car err-l)))
(defun cperl-backward-to-noncomment (lim)
@ -4350,7 +4355,7 @@ indentation and initial hashes. Behaves usually outside of comment."
fill-column)
(let ((c (save-excursion (beginning-of-line)
(cperl-to-comment-or-eol) (point)))
(s (memq (following-char) '(?\ ?\t))) marker)
(s (memq (following-char) '(?\s ?\t))) marker)
(if (>= c (point))
;; Don't break line inside code: only inside comment.
nil
@ -4361,11 +4366,11 @@ indentation and initial hashes. Behaves usually outside of comment."
(if (bolp) (progn (re-search-forward "#+[ \t]*")
(goto-char (match-end 0))))
;; Following space could have gone:
(if (or (not s) (memq (following-char) '(?\ ?\t))) nil
(if (or (not s) (memq (following-char) '(?\s ?\t))) nil
(insert " ")
(backward-char 1))
;; Previous space could have gone:
(or (memq (preceding-char) '(?\ ?\t)) (insert " "))))))
(or (memq (preceding-char) '(?\s ?\t)) (insert " "))))))
(defun cperl-imenu-addback (lst &optional isback name)
;; We suppose that the lst is a DAG, unless the first element only

View file

@ -2534,16 +2534,13 @@ It is saved for when this flag is not set.")
;; This must be outside of the save-excursion
;; in case the source file is our current buffer.
(if process-window
(save-selected-window
(select-window process-window)
(gud-display-frame))
(progn
(with-selected-window process-window
(gud-display-frame)))
;; We have to be in the proper buffer, (process-buffer proc),
;; but not in a save-excursion, because that would restore point.
(let ((old-buf (current-buffer)))
(set-buffer (process-buffer proc))
(unwind-protect
(gud-display-frame)
(set-buffer old-buf)))))
(with-current-buffer (process-buffer proc)
(gud-display-frame))))
;; If we deferred text that arrived during this processing,
;; handle it now.

View file

@ -949,6 +949,7 @@ See `python-check-command' for the default."
(if name
(file-name-nondirectory name))))))))
(setq python-saved-check-command command)
(require 'compile) ;To define compilation-* variables.
(save-some-buffers (not compilation-ask-about-save) nil)
(let ((compilation-error-regexp-alist
(cons '("(\\([^,]+\\), line \\([0-9]+\\))" 1 2)

View file

@ -10,12 +10,12 @@
;; Maintainer: Kenichi Handa <handa@etl.go.jp> (multi-byte characters)
;; Vinicius Jose Latorre <viniciusjl@ig.com.br>
;; Keywords: wp, print, PostScript
;; Time-stamp: <2005/03/19 00:40:12 vinicius>
;; Version: 6.6.6
;; Time-stamp: <2005/06/27 00:57:22 vinicius>
;; Version: 6.6.7
;; X-URL: http://www.cpqd.com.br/~vinicius/emacs/
(defconst ps-print-version "6.6.6"
"ps-print.el, v 6.6.6 <2005/03/19 vinicius>
(defconst ps-print-version "6.6.7"
"ps-print.el, v 6.6.7 <2005/06/27 vinicius>
Vinicius's last change version -- this file may have been edited as part of
Emacs without changes to the version number. When reporting bugs, please also
@ -5936,10 +5936,14 @@ XSTART YSTART are the relative position for the first page in a sheet.")
(ps-begin-page))
(defun ps-end-sheet ()
(and ps-print-page-p (> ps-page-sheet 0)
(ps-output "EndSheet\n")))
(defun ps-header-sheet ()
;; Print only when a new sheet begins.
(and ps-print-page-p (> ps-page-sheet 0)
(ps-output "EndSheet\n"))
(ps-end-sheet)
(setq ps-page-sheet (1+ ps-page-sheet))
(when (ps-print-sheet-p)
(setq ps-page-order (1+ ps-page-order))
@ -6624,8 +6628,7 @@ If FACE is not a valid face name, it is used default face."
(defun ps-end-job (needs-begin-file)
(let ((previous-print ps-print-page-p)
(ps-print-page-p t))
(let ((ps-print-page-p t))
(ps-flush-output)
(save-excursion
(let ((pages-per-sheet (mod ps-page-printed ps-n-up-printing))
@ -6652,8 +6655,7 @@ If FACE is not a valid face name, it is used default face."
(number-to-string ps-lines-printed) " BeginPage\n")
(ps-end-page)))
;; Set end of PostScript file
(and previous-print
(ps-output "EndSheet\n"))
(ps-end-sheet)
(ps-output "\n%%Trailer\n%%Pages: "
(number-to-string
(if (and needs-begin-file

View file

@ -28,18 +28,18 @@
;;; Commentary:
;; This package maintains a menu for visiting files that were operated
;; on recently. When enabled a new "Open Recent" submenu is displayed
;; in the "Files" menu. The recent files list is automatically saved
;; across Emacs sessions. You can customize the number of recent
;; files displayed, the location of the menu and others options (see
;; the source code for details).
;; on recently. When enabled a new "Open Recent" sub menu is
;; displayed in the "Files" menu. The recent files list is
;; automatically saved across Emacs sessions. You can customize the
;; number of recent files displayed, the location of the menu and
;; others options (see the source code for details).
;;; History:
;;
;;; Code:
(require 'easymenu)
(require 'wid-edit)
(require 'tree-widget)
(require 'timer)
;;; Internal data
@ -259,7 +259,8 @@ If `file-name-history' is not empty, do nothing."
It is passed a filename to give a chance to transform it.
If it returns nil, the filename is left unchanged."
:group 'recentf
:type 'function)
:type '(choice (const :tag "None" nil)
function))
;;; Utilities
;;
@ -904,30 +905,54 @@ unchanged."
;;
(defun recentf-cancel-dialog (&rest ignore)
"Cancel the current dialog.
Used internally by recentf dialogs.
IGNORE arguments."
(interactive)
(kill-buffer (current-buffer))
(message "Dialog canceled"))
(defun recentf-dialog-goto-first (widget-type)
"Move the cursor to the first WIDGET-TYPE in current dialog.
Go to the beginning of buffer if not found."
(goto-char (point-min))
(condition-case nil
(let (done)
(widget-move 1)
(while (not done)
(if (eq widget-type (widget-type (widget-at (point))))
(setq done t)
(widget-move 1))))
(goto-char (point-min))))
(defvar recentf-dialog-mode-map
(let ((km (make-sparse-keymap)))
(set-keymap-parent km widget-keymap)
(define-key km "q" 'recentf-cancel-dialog)
(define-key km [down-mouse-1] 'widget-button-click)
(set-keymap-parent km widget-keymap)
km)
"Keymap used in recentf dialogs.")
(defun recentf-dialog-mode ()
(define-derived-mode recentf-dialog-mode nil "recentf-dialog"
"Major mode of recentf dialogs.
\\{recentf-dialog-mode-map}"
(interactive)
(kill-all-local-variables)
(setq major-mode 'recentf-dialog-mode)
(setq mode-name "recentf-dialog")
(use-local-map recentf-dialog-mode-map)
(run-mode-hooks 'recentf-dialog-mode-hook))
:syntax-table nil
:abbrev-table nil
(setq truncate-lines t))
(defmacro recentf-dialog (name &rest forms)
"Show a dialog buffer with NAME, setup with FORMS."
(declare (indent 1) (debug t))
`(with-current-buffer (get-buffer-create ,name)
;; Cleanup buffer
(let ((inhibit-read-only t)
(ol (overlay-lists)))
(mapc 'delete-overlay (car ol))
(mapc 'delete-overlay (cdr ol))
(erase-buffer))
(recentf-dialog-mode)
,@forms
(widget-setup)
(switch-to-buffer (current-buffer))))
;;; Hooks
;;
@ -976,163 +1001,127 @@ That is, remove a non kept file from the recent list."
;;; Commands
;;
(defvar recentf-edit-selected-items nil
"List of files to be deleted from the recent list.
Used internally by `recentf-edit-list'.")
(defun recentf-edit-list-action (widget &rest ignore)
"Checkbox WIDGET action that toogles a file selection.
Used internally by `recentf-edit-list'.
;;; Edit list dialog
;;
(defvar recentf-edit-list nil)
(defun recentf-edit-list-select (widget &rest ignore)
"Toggle a file selection based on the checkbox WIDGET state.
IGNORE other arguments."
(let ((value (widget-get widget ':tag)))
;; if value is already in the selected items
(if (memq value recentf-edit-selected-items)
;; then remove it
(progn
(setq recentf-edit-selected-items
(delq value recentf-edit-selected-items))
(message "%s removed from selection" value))
;; else add it
(push value recentf-edit-selected-items)
(message "%s added to selection" value))))
(let ((value (widget-get widget :tag))
(check (widget-value widget)))
(if check
(add-to-list 'recentf-edit-list value)
(setq recentf-edit-list (delq value recentf-edit-list)))
(message "%s %sselected" value (if check "" "un"))))
(defun recentf-edit-list-validate (&rest ignore)
"Process the recent list when the edit list dialog is committed.
IGNORE arguments."
(if recentf-edit-list
(let ((i 0))
(dolist (e recentf-edit-list)
(setq recentf-list (delq e recentf-list)
i (1+ i)))
(kill-buffer (current-buffer))
(message "%S file(s) removed from the list" i)
(recentf-clear-data))
(message "No file selected")))
(defun recentf-edit-list ()
"Show a dialog buffer to edit the recent list.
That is to select files to be deleted from the recent list."
"Show a dialog to delete selected files from the recent list."
(interactive)
(with-current-buffer
(get-buffer-create (format "*%s - Edit list*" recentf-menu-title))
(switch-to-buffer (current-buffer))
;; Cleanup buffer
(let ((inhibit-read-only t)
(ol (overlay-lists)))
(erase-buffer)
;; Delete all the overlays.
(mapc 'delete-overlay (car ol))
(mapc 'delete-overlay (cdr ol)))
(recentf-dialog-mode)
(setq recentf-edit-selected-items nil)
;; Insert the dialog header
(recentf-dialog (format "*%s - Edit list*" recentf-menu-title)
(set (make-local-variable 'recentf-edit-list) nil)
(widget-insert
"\
Select the files to be deleted from the recent list.\n\n\
Click on Ok to update the list. \
Click on Cancel or type \"q\" to quit.\n")
"Click on OK to delete selected files from the recent list.
Click on Cancel or type `q' to cancel.\n")
;; Insert the list of files as checkboxes
(dolist (item recentf-list)
(widget-create
'checkbox
:value nil ; unselected checkbox
:format "\n %[%v%] %t"
:tag item
:notify 'recentf-edit-list-action))
(widget-create 'checkbox
:value nil ; unselected checkbox
:format "\n %[%v%] %t"
:tag item
:notify 'recentf-edit-list-select))
(widget-insert "\n\n")
;; Insert the Ok button
(widget-create
'push-button
:notify (lambda (&rest ignore)
(if recentf-edit-selected-items
(let ((i 0))
(kill-buffer (current-buffer))
(dolist (e recentf-edit-selected-items)
(setq recentf-list (delq e recentf-list)
i (1+ i)))
(message "%S file(s) removed from the list" i)
(recentf-clear-data))
(message "No file selected")))
"Ok")
:notify 'recentf-edit-list-validate
:help-echo "Delete selected files from the recent list"
"Ok")
(widget-insert " ")
;; Insert the Cancel button
(widget-create
'push-button
:notify 'recentf-cancel-dialog
"Cancel")
(widget-setup)
(goto-char (point-min))))
(recentf-dialog-goto-first 'checkbox)))
;;; Open file dialog
;;
(defun recentf-open-files-action (widget &rest ignore)
"Button WIDGET action that open a file.
Used internally by `recentf-open-files'.
"Open the file stored in WIDGET's value when notified.
IGNORE other arguments."
(kill-buffer (current-buffer))
(funcall recentf-menu-action (widget-value widget)))
(defvar recentf-open-files-item-shift ""
"Amount of space to shift right sub-menu items.
Used internally by `recentf-open-files'.")
(defun recentf-open-files-item (menu-element)
"Insert an item widget for MENU-ELEMENT in the current dialog buffer.
Used internally by `recentf-open-files'."
(let ((item (car menu-element))
(file (cdr menu-element)))
(if (consp file) ; This is a sub-menu
(let* ((shift recentf-open-files-item-shift)
(recentf-open-files-item-shift (concat shift " ")))
(widget-create
'item
:tag item
:sample-face 'bold
:format (concat shift "%{%t%}:\n"))
(mapc 'recentf-open-files-item file)
(widget-insert "\n"))
(widget-create
'push-button
:button-face 'default
:tag item
:help-echo (concat "Open " file)
:format (concat recentf-open-files-item-shift "%[%t%]")
:notify 'recentf-open-files-action
file)
(widget-insert "\n"))))
"Return a widget to display MENU-ELEMENT in a dialog buffer."
(if (consp (cdr menu-element))
;; Represent a sub-menu with a tree widget
`(tree-widget
:open t
:match ignore
:node (item :tag ,(car menu-element)
:sample-face bold
:format "%{%t%}:\n")
,@(mapcar 'recentf-open-files-item
(cdr menu-element)))
;; Represent a single file with a link widget
`(link :tag ,(car menu-element)
:button-prefix ""
:button-suffix ""
:button-face default
:format "%[%t%]\n"
:help-echo ,(concat "Open " (cdr menu-element))
:action recentf-open-files-action
,(cdr menu-element))))
(defun recentf-open-files (&optional files buffer-name)
"Show a dialog buffer to open a recent file.
If optional argument FILES is non-nil, it specifies the list of
recently-opened files to choose from. It is the whole recent list
otherwise.
If optional argument BUFFER-NAME is non-nil, it specifies which buffer
name to use for the interaction. It is \"*`recentf-menu-title'*\" by
default."
"Show a dialog to open a recent file.
If optional argument FILES is non-nil, it is a list of recently-opened
files to choose from. It defaults to the whole recent list.
If optional argument BUFFER-NAME is non-nil, it is a buffer name to
use for the dialog. It defaults to \"*`recentf-menu-title'*\"."
(interactive)
(unless files
(setq files recentf-list))
(unless buffer-name
(setq buffer-name (format "*%s*" recentf-menu-title)))
(with-current-buffer (get-buffer-create buffer-name)
(switch-to-buffer (current-buffer))
;; Cleanup buffer
(let ((inhibit-read-only t)
(ol (overlay-lists)))
(erase-buffer)
;; Delete all the overlays.
(mapc 'delete-overlay (car ol))
(mapc 'delete-overlay (cdr ol)))
(recentf-dialog-mode)
;; Insert the dialog header
(widget-insert "Click on a file to open it. ")
(widget-insert "Click on Cancel or type \"q\" to quit.\n\n" )
;; Insert the list of files as buttons
(let ((recentf-open-files-item-shift ""))
(mapc 'recentf-open-files-item
(recentf-apply-menu-filter
recentf-menu-filter
(mapcar 'recentf-make-default-menu-element files))))
(widget-insert "\n")
;; Insert the Cancel button
(recentf-dialog (or buffer-name (format "*%s*" recentf-menu-title))
(widget-insert "Click on a file to open it.
Click on Cancel or type `q' to cancel.\n" )
;; Use a L&F that looks like the recentf menu.
(tree-widget-set-theme "folder")
(apply 'widget-create
`(group
:indent 2
:format "\n%v\n"
,@(mapcar 'recentf-open-files-item
(recentf-apply-menu-filter
recentf-menu-filter
(mapcar 'recentf-make-default-menu-element
(or files recentf-list))))))
(widget-create
'push-button
:notify 'recentf-cancel-dialog
"Cancel")
(widget-setup)
(goto-char (point-min))))
(recentf-dialog-goto-first 'link)))
(defun recentf-open-more-files ()
"Show a dialog buffer to open a recent file that is not in the menu."
"Show a dialog to open a recent file that is not in the menu."
(interactive)
(recentf-open-files (nthcdr recentf-max-menu-items recentf-list)
(format "*%s - More*" recentf-menu-title)))
;;; Save/load/cleanup the recent list
;;
(defconst recentf-save-file-header
";;; Automatically generated by `recentf' on %s.\n"
"Header to be written into the `recentf-save-file'.")
@ -1149,16 +1138,16 @@ Write data into the file specified by `recentf-save-file'."
(interactive)
(condition-case error
(with-temp-buffer
(erase-buffer)
(set-buffer-file-coding-system recentf-save-file-coding-system)
(insert (format recentf-save-file-header (current-time-string)))
(recentf-dump-variable 'recentf-list recentf-max-saved-items)
(recentf-dump-variable 'recentf-filter-changer-state)
(insert "\n \n;;; Local Variables:\n"
(format ";;; coding: %s\n" recentf-save-file-coding-system)
";;; End:\n")
(write-file (expand-file-name recentf-save-file))
nil)
(erase-buffer)
(set-buffer-file-coding-system recentf-save-file-coding-system)
(insert (format recentf-save-file-header (current-time-string)))
(recentf-dump-variable 'recentf-list recentf-max-saved-items)
(recentf-dump-variable 'recentf-filter-changer-state)
(insert "\n \n;;; Local Variables:\n"
(format ";;; coding: %s\n" recentf-save-file-coding-system)
";;; End:\n")
(write-file (expand-file-name recentf-save-file))
nil)
(error
(warn "recentf mode: %s" (error-message-string error)))))
@ -1218,5 +1207,5 @@ that were operated on recently."
(run-hooks 'recentf-load-hook)
;;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
;; arch-tag: 78f1eec9-0d16-4d19-a4eb-2e4529edb62a
;;; recentf.el ends here

View file

@ -516,21 +516,32 @@ which will run faster and will not set the mark or print anything."
Prompt for a regexp with PROMPT.
Value is a list, (REGEXP)."
(list (read-from-minibuffer prompt nil nil nil
'regexp-history nil t)))
'regexp-history nil t)
nil nil t))
(defun keep-lines (regexp &optional rstart rend)
(defun keep-lines (regexp &optional rstart rend interactive)
"Delete all lines except those containing matches for REGEXP.
A match split across lines preserves all the lines it lies in.
Applies to all lines after point.
When called from Lisp (and usually interactively as well, see below)
applies to all lines starting after point.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
Second and third arg RSTART and REND specify the region to operate on.
This command operates on (the accessible part of) all lines whose
accessible part is entirely contained in the region determined by RSTART
and REND. (A newline ending a line counts as part of that line.)
Interactively, in Transient Mark mode when the mark is active, operate
on the contents of the region. Otherwise, operate from point to the
end of the buffer."
on all lines whose accessible part is entirely contained in the region.
Otherwise, the command applies to all lines starting after point.
When calling this function from Lisp, you can pretend that it was
called interactively by passing a non-nil INTERACTIVE argument.
This function starts looking for the next match from the end of
the previous match. Hence, it ignores matches that overlap
a previously found match."
(interactive
(progn
@ -539,10 +550,20 @@ end of the buffer."
(if rstart
(progn
(goto-char (min rstart rend))
(setq rend (copy-marker (max rstart rend))))
(if (and transient-mark-mode mark-active)
(setq rend
(progn
(save-excursion
(goto-char (max rstart rend))
(unless (or (bolp) (eobp))
(forward-line 0))
(point-marker)))))
(if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
rend (copy-marker (region-end)))
rend (progn
(goto-char (region-end))
(unless (or (bolp) (eobp))
(forward-line 0))
(point-marker)))
(setq rstart (point)
rend (point-max-marker)))
(goto-char rstart))
@ -556,7 +577,7 @@ end of the buffer."
(if (not (re-search-forward regexp rend 'move))
(delete-region start rend)
(let ((end (save-excursion (goto-char (match-beginning 0))
(beginning-of-line)
(forward-line 0)
(point))))
;; Now end is first char preserved by the new match.
(if (< start end)
@ -566,22 +587,34 @@ end of the buffer."
;; If the match was empty, avoid matching again at same place.
(and (< (point) rend)
(= (match-beginning 0) (match-end 0))
(forward-char 1))))))
(forward-char 1)))))
(set-marker rend nil)
nil)
(defun flush-lines (regexp &optional rstart rend)
"Delete lines containing matches for REGEXP.
If a match is split across lines, all the lines it lies in are deleted.
Applies to lines after point.
(defun flush-lines (regexp &optional rstart rend interactive)
"Delete lines containing matches for REGEXP.
When called from Lisp (and usually when called interactively as
well, see below), applies to the part of the buffer after point.
The line point is in is deleted if and only if it contains a
match for regexp starting after point.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
Second and third arg RSTART and REND specify the region to operate on.
Lines partially contained in this region are deleted if and only if
they contain a match entirely contained in it.
Interactively, in Transient Mark mode when the mark is active, operate
on the contents of the region. Otherwise, operate from point to the
end of the buffer."
end of (the accessible portion of) the buffer. When calling this function
from Lisp, you can pretend that it was called interactively by passing
a non-nil INTERACTIVE argument.
If a match is split across lines, all the lines it lies in are deleted.
They are deleted _before_ looking for the next match. Hence, a match
starting on the same line at which another match ended is ignored."
(interactive
(progn
@ -591,7 +624,7 @@ end of the buffer."
(progn
(goto-char (min rstart rend))
(setq rend (copy-marker (max rstart rend))))
(if (and transient-mark-mode mark-active)
(if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
rend (copy-marker (region-end)))
(setq rstart (point)
@ -603,13 +636,18 @@ end of the buffer."
(while (and (< (point) rend)
(re-search-forward regexp rend t))
(delete-region (save-excursion (goto-char (match-beginning 0))
(beginning-of-line)
(forward-line 0)
(point))
(progn (forward-line 1) (point)))))))
(progn (forward-line 1) (point))))))
(set-marker rend nil)
nil)
(defun how-many (regexp &optional rstart rend)
"Print number of matches for REGEXP following point.
(defun how-many (regexp &optional rstart rend interactive)
"Print and return number of matches for REGEXP following point.
When called from Lisp and INTERACTIVE is omitted or nil, just return
the number, do not print it; if INTERACTIVE is t, the function behaves
in all respects has if it had been called interactively.
If REGEXP contains upper case characters (excluding those preceded by `\\'),
the matching is case-sensitive.
@ -618,18 +656,24 @@ Second and third arg RSTART and REND specify the region to operate on.
Interactively, in Transient Mark mode when the mark is active, operate
on the contents of the region. Otherwise, operate from point to the
end of the buffer."
end of (the accessible portion of) the buffer.
This function starts looking for the next match from the end of
the previous match. Hence, it ignores matches that overlap
a previously found match."
(interactive
(keep-lines-read-args "How many matches for (regexp): "))
(save-excursion
(if rstart
(goto-char (min rstart rend))
(if (and transient-mark-mode mark-active)
(progn
(goto-char (min rstart rend))
(setq rend (max rstart rend)))
(if (and interactive transient-mark-mode mark-active)
(setq rstart (region-beginning)
rend (copy-marker (region-end)))
rend (region-end))
(setq rstart (point)
rend (point-max-marker)))
rend (point-max)))
(goto-char rstart))
(let ((count 0)
opoint
@ -641,7 +685,10 @@ end of the buffer."
(if (= opoint (point))
(forward-char 1)
(setq count (1+ count))))
(message "%d occurrences" count))))
(when interactive (message "%d occurrence%s"
count
(if (= count 1) "" "s")))
count)))
(defvar occur-mode-map
@ -892,8 +939,7 @@ buffer for each buffer where you invoke `occur'."
(defun occur (regexp &optional nlines)
"Show all lines in the current buffer containing a match for REGEXP.
If a match spreads across multiple lines, all those lines are shown.
This function can not handle matches that span more than one line.
Each line is displayed with NLINES lines before and after, or -NLINES
before if NLINES is negative.
@ -1001,9 +1047,9 @@ See also `multi-occur'."
(display-buffer occur-buf)
(setq next-error-last-buffer occur-buf))
(kill-buffer occur-buf)))
(run-hooks 'occur-hook))
(setq buffer-read-only t)
(set-buffer-modified-p nil))))
(setq buffer-read-only t)
(set-buffer-modified-p nil)
(run-hooks 'occur-hook)))))
(defun occur-engine-add-prefix (lines)
(mapcar
@ -1603,15 +1649,15 @@ make, or the user didn't cancel the call."
;; Change markers to numbers in the match data
;; since lots of markers slow down editing.
(push (list (point) replaced
;;; If the replacement has already happened, all we need is the
;;; current match start and end. We could get this with a trivial
;;; match like
;;; (save-excursion (goto-char (match-beginning 0))
;;; (search-forward (match-string 0))
;;; (match-data t))
;;; if we really wanted to avoid manually constructing match data.
;;; Adding current-buffer is necessary so that match-data calls can
;;; return markers which are appropriate for editing.
;;; If the replacement has already happened, all we need is the
;;; current match start and end. We could get this with a trivial
;;; match like
;;; (save-excursion (goto-char (match-beginning 0))
;;; (search-forward (match-string 0))
;;; (match-data t))
;;; if we really wanted to avoid manually constructing match data.
;;; Adding current-buffer is necessary so that match-data calls can
;;; return markers which are appropriate for editing.
(if replaced
(list
(match-beginning 0)

View file

@ -3442,18 +3442,14 @@ Outline mode sets this."
(when (and (not done)
(not (integerp selective-display))
(not (line-move-invisible-p (point))))
;; We avoid vertical-motion when possible
;; because that has to fontify.
(forward-line 1)
;; If there are overlays in and around
;; the text we moved over, we need to be
;; sophisticated.
(unless (overlays-in (max (1- pos-before) (point-min))
(min (1+ (point)) (point-max)))
;; We avoid vertical-motion when possible
;; because that has to fontify.
(forward-line 1)
(setq line-done t)))
;; Otherwise move a more sophisticated way.
;; (What's the logic behind this code?)
(and (not done) (not line-done)
;; Otherwise move a more sophisticated way.
(zerop (vertical-motion 1))
(if (not noerror)
(signal 'end-of-buffer nil)
@ -3473,9 +3469,9 @@ Outline mode sets this."
(when (and (not done)
(not (integerp selective-display))
(not (line-move-invisible-p (1- (point)))))
(forward-line -1)
(unless (overlays-in (max (1- (point)) (point-min))
(min (1+ pos-before) (point-max)))
(forward-line -1)
(setq line-done t)))
(and (not done) (not line-done)
(zerop (vertical-motion -1))

View file

@ -444,24 +444,23 @@ or `CVS', and any subdirectory that contains a file named `.nosearch'."
;; frame-notice-user-settings didn't (such as on a tty).
;; frame-set-background-mode is idempotent, so it won't
;; cause any harm if it's already been done.
(let ((frame-background-mode frame-background-mode)
(frame (selected-frame))
(let ((frame (selected-frame))
term)
(when (and (null window-system)
;; Don't override a possibly customized value.
(null frame-background-mode)
;; Don't override user specifications.
(null (frame-parameter frame 'reverse))
;; Don't override default set by files in lisp/term.
(null default-frame-background-mode)
(let ((bg (frame-parameter frame 'background-color)))
(or (null bg)
(member bg '(unspecified "unspecified-bg")))))
(member bg '(unspecified "unspecified-bg"
"unspecified-fg")))))
(setq term (getenv "TERM"))
;; Some files in lisp/term do a better job with the
;; background mode, but we leave this here anyway, in
;; case they remove those files.
(if (string-match "^\\(xterm\\|rxvt\\|dtterm\\|eterm\\)"
term)
(setq frame-background-mode 'light)))
(setq default-frame-background-mode 'light)))
(frame-set-background-mode (selected-frame)))))
;; Now we know the user's default font, so add it to the menu.

View file

@ -937,7 +937,7 @@ the hook's buffer-local value rather than its default value."
(set hook hook-value))))))
(defun add-to-list (list-var element &optional append)
"Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
"Add ELEMENT to the value of LIST-VAR if it isn't there yet.
The test for presence of ELEMENT is done with `equal'.
If ELEMENT is added, it is added at the beginning of the list,
unless the optional argument APPEND is non-nil, in which case
@ -959,15 +959,18 @@ other hooks, such as major mode hooks, can do the job."
(defun add-to-ordered-list (list-var element &optional order)
"Add to the value of LIST-VAR the element ELEMENT if it isn't there yet.
"Add ELEMENT to the value of LIST-VAR if it isn't there yet.
The test for presence of ELEMENT is done with `eq'.
The resulting list is reordered so that the elements are in the
order given by each element's numeric list order. Elements
without a numeric list order are placed at the end of the list.
If the third optional argument ORDER is non-nil, set the
element's list order to the given value.
If the third optional argument ORDER is a number (integer or
float), set the element's list order to the given value. If
ORDER is nil or omitted, do not change the numeric order of
ELEMENT. If ORDER has any other value, remove the numeric order
of ELEMENT if it has one.
The list order for each element is stored in LIST-VAR's
`list-order' property.
@ -1717,8 +1720,12 @@ See also `with-temp-buffer'."
(defmacro with-selected-window (window &rest body)
"Execute the forms in BODY with WINDOW as the selected window.
The value returned is the value of the last form in BODY.
This does not alter the buffer list ordering.
This function saves and restores the selected window, as well as
This macro saves and restores the current buffer, since otherwise
its normal operation could potentially make a different
buffer current. It does not alter the buffer list ordering.
This macro saves and restores the selected window, as well as
the selected window in each frame. If the previously selected
window of some frame is no longer live at the end of BODY, that
frame's selected window is left alone. If the selected window is
@ -1734,15 +1741,16 @@ See also `with-temp-buffer'."
(save-selected-window-alist
(mapcar (lambda (frame) (list frame (frame-selected-window frame)))
(frame-list))))
(unwind-protect
(progn (select-window ,window 'norecord)
,@body)
(dolist (elt save-selected-window-alist)
(and (frame-live-p (car elt))
(window-live-p (cadr elt))
(set-frame-selected-window (car elt) (cadr elt))))
(if (window-live-p save-selected-window-window)
(select-window save-selected-window-window 'norecord)))))
(save-current-buffer
(unwind-protect
(progn (select-window ,window 'norecord)
,@body)
(dolist (elt save-selected-window-alist)
(and (frame-live-p (car elt))
(window-live-p (cadr elt))
(set-frame-selected-window (car elt) (cadr elt))))
(if (window-live-p save-selected-window-window)
(select-window save-selected-window-window 'norecord))))))
(defmacro with-temp-file (file &rest body)
"Create a new buffer, evaluate BODY there, and write the buffer to FILE.

View file

@ -150,7 +150,7 @@ for the currently selected frame."
"Set background mode as appropriate for the default rxvt colors."
(let ((fgbg (getenv "COLORFGBG"))
bg rgb)
(setq frame-background-mode 'light) ; default
(setq default-frame-background-mode 'light)
(when (and fgbg
(string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
(setq bg (string-to-number (substring fgbg (match-beginning 1))))
@ -163,7 +163,7 @@ for the currently selected frame."
;; The following line assumes that white is the 15th
;; color in rxvt-standard-colors.
(* (apply '+ (car (cddr (nth 15 rxvt-standard-colors)))) 0.6))
(setq frame-background-mode 'dark)))
(setq default-frame-background-mode 'dark)))
(frame-set-background-mode (selected-frame))))
;; Do it!

View file

@ -366,7 +366,7 @@ versions of xterm."
"Set background mode as appropriate for the default rxvt colors."
(let ((fgbg (getenv "COLORFGBG"))
bg rgb)
(setq frame-background-mode 'light) ; default
(setq default-frame-background-mode 'light)
(when (and fgbg
(string-match ".*;\\([0-9][0-9]?\\)\\'" fgbg))
(setq bg (string-to-number (substring fgbg (match-beginning 1))))
@ -379,7 +379,7 @@ versions of xterm."
;; The following line assumes that white is the 15th
;; color in xterm-standard-colors.
(* (apply '+ (car (cddr (nth 15 xterm-standard-colors)))) 0.6))
(setq frame-background-mode 'dark)))
(setq default-frame-background-mode 'dark)))
(frame-set-background-mode (selected-frame))))
;; Do it!

View file

@ -2875,7 +2875,7 @@ Returns a list of strings."
(defun artist-figlet-get-extra-args ()
"Read any extra arguments for figlet."
(let ((extra-args (read-input "Extra args to figlet: ")))
(let ((extra-args (read-string "Extra args to figlet: ")))
(if (string= extra-args "")
nil
extra-args)))
@ -2916,7 +2916,7 @@ This is done by calling the function specified by `artist-text-renderer',
which must return a list of strings, to be inserted in the buffer.
Text already in the buffer ``shines thru'' blanks in the rendered text."
(let* ((input-text (read-input "Type text to render: "))
(let* ((input-text (read-string "Type text to render: "))
(rendered-text (artist-funcall artist-text-renderer input-text)))
(artist-text-insert-see-thru x y rendered-text)))
@ -2927,7 +2927,7 @@ This is done by calling the function specified by `artist-text-renderer',
which must return a list of strings, to be inserted in the buffer.
Blanks in the rendered text overwrites any text in the buffer."
(let* ((input-text (read-input "Type text to render: "))
(let* ((input-text (read-string "Type text to render: "))
(rendered-text (artist-funcall artist-text-renderer input-text)))
(artist-text-insert-overwrite x y rendered-text)))

View file

@ -66,10 +66,6 @@
'emacs))
"The type of Emacs we are currently running.")
(defvar flyspell-use-local-map
(or (eq flyspell-emacs 'xemacs)
(not (string< emacs-version "20"))))
;*---------------------------------------------------------------------*/
;* User configuration ... */
;*---------------------------------------------------------------------*/
@ -403,34 +399,22 @@ property of the major mode name.")
;*---------------------------------------------------------------------*/
;* The minor mode declaration. */
;*---------------------------------------------------------------------*/
(eval-when-compile (defvar flyspell-local-mouse-map))
(defvar flyspell-mouse-map
(let ((map (make-sparse-keymap)))
(if flyspell-use-meta-tab
(define-key map "\M-\t" #'flyspell-auto-correct-word))
(define-key map (if (featurep 'xemacs) [button2] [down-mouse-2])
#'flyspell-correct-word)
(define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key map [(control \,)] 'flyspell-goto-next-error)
(define-key map [(control \.)] 'flyspell-auto-correct-word)
map))
map)
"Keymap for Flyspell to put on erroneous words.")
(defvar flyspell-mode-map
(let ((map (make-sparse-keymap)))
;; mouse, keyboard bindings and misc definition
(if flyspell-use-meta-tab
(define-key map "\M-\t" 'flyspell-auto-correct-word))
(cond
;; I don't understand this test, so I left it as is. --Stef
((or (featurep 'xemacs) flyspell-use-local-map)
(define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key map [(control ?\,)] 'flyspell-goto-next-error)
(define-key map [(control ?\.)] 'flyspell-auto-correct-word)))
map))
;; the name of the overlay property that defines the keymap
(defvar flyspell-overlay-keymap-property-name 'keymap)
(define-key map flyspell-auto-correct-binding 'flyspell-auto-correct-previous-word)
(define-key map [(control ?\,)] 'flyspell-goto-next-error)
(define-key map [(control ?\.)] 'flyspell-auto-correct-word)
map)
"Minor mode keymap for Flyspell mode--for the whole buffer.")
;; dash character machinery
(defvar flyspell-consider-dash-as-word-delimiter-flag nil
@ -569,22 +553,6 @@ in your .emacs file.
(let ((mode-predicate (get major-mode 'flyspell-mode-predicate)))
(if mode-predicate
(setq flyspell-generic-check-word-p mode-predicate)))
;; work around the fact that the `local-map' text-property replaces the
;; buffer's local map rather than shadowing it.
(set (make-local-variable 'flyspell-mouse-map)
(let ((map (copy-keymap flyspell-mouse-map)))
(set-keymap-parent map (current-local-map))
(if (and (eq flyspell-emacs 'emacs)
(not (string< emacs-version "20")))
(define-key map '[tool-bar] nil))
map))
(set (make-local-variable 'flyspell-mode-map)
(let ((map (copy-keymap flyspell-mode-map)))
(set-keymap-parent map (current-local-map))
(if (and (eq flyspell-emacs 'emacs)
(not (string< emacs-version "20")))
(define-key map '[tool-bar] nil))
map))
;; the welcome message
(if (and flyspell-issue-message-flag
flyspell-issue-welcome-flag
@ -1570,10 +1538,7 @@ for the overlay."
(overlay-put flyspell-overlay 'flyspell-overlay t)
(overlay-put flyspell-overlay 'evaporate t)
(overlay-put flyspell-overlay 'help-echo "mouse-2: correct word at point")
(if flyspell-use-local-map
(overlay-put flyspell-overlay
flyspell-overlay-keymap-property-name
flyspell-mouse-map))
(overlay-put flyspell-overlay 'keymap flyspell-mouse-map)
(when (eq face 'flyspell-incorrect)
(and (stringp flyspell-before-incorrect-word-string)
(overlay-put flyspell-overlay 'before-string

View file

@ -1438,80 +1438,79 @@ quit spell session exited."
end (car (cdr (cdr word)))
word (car word))
;; now check spelling of word if it has 3 or more characters.
(cond
((> (length word) 2)
(or quietly
(message "Checking spelling of %s..."
(funcall ispell-format-word word)))
(ispell-send-string "%\n") ; put in verbose mode
(ispell-send-string (concat "^" word "\n"))
;; wait until ispell has processed word
(while (progn
(ispell-accept-output)
(not (string= "" (car ispell-filter)))))
;;(ispell-send-string "!\n") ;back to terse mode.
(setq ispell-filter (cdr ispell-filter)) ; remove extra \n
(if (and ispell-filter (listp ispell-filter))
(if (> (length ispell-filter) 1)
(error "Ispell and its process have different character maps")
(setq poss (ispell-parse-output (car ispell-filter)))))
(cond ((eq poss t)
(or quietly
(message "%s is correct"
(funcall ispell-format-word word)))
(and (fboundp 'extent-at)
(extent-at start)
(delete-extent (extent-at start))))
((stringp poss)
(or quietly
(message "%s is correct because of root %s"
(funcall ispell-format-word word)
(funcall ispell-format-word poss)))
(and (fboundp 'extent-at)
(extent-at start)
(delete-extent (extent-at start))))
((null poss) (message "Error in ispell process"))
(ispell-check-only ; called from ispell minor mode.
(if (fboundp 'make-extent)
(let ((ext (make-extent start end)))
(set-extent-property ext 'face ispell-highlight-face)
(set-extent-property ext 'priority 2000))
(beep)
(message "%s is incorrect"(funcall ispell-format-word word))))
(t ; prompt for correct word.
(save-window-excursion
(setq replace (ispell-command-loop
(car (cdr (cdr poss)))
(car (cdr (cdr (cdr poss))))
(car poss) start end)))
(cond ((equal 0 replace)
(ispell-add-per-file-word-list (car poss)))
(replace
(setq new-word (if (atom replace) replace (car replace))
cursor-location (+ (- (length word) (- end start))
cursor-location))
(if (not (equal new-word (car poss)))
(progn
(delete-region start end)
(setq start (point))
(ispell-insert-word new-word)
(setq end (point))))
(if (not (atom replace)) ;recheck spelling of replacement
(progn
(if (car (cdr replace)) ; query replace requested
(save-window-excursion
(query-replace word new-word t)))
(goto-char start)
;; single word could be split into multiple words
(setq ispell-quit (not (ispell-region start end)))
))))
;; keep if rechecking word and we keep choices win.
(if (get-buffer ispell-choices-buffer)
(kill-buffer ispell-choices-buffer))))
(ispell-pdict-save ispell-silently-savep)
;; NB: Cancels ispell-quit incorrectly if called from ispell-region
(if ispell-quit (setq ispell-quit nil replace 'quit))))
;; At this point it used to ignore 2-letter words.
;; But that is silly; if the user asks for it, we should do it. - rms.
(or quietly
(message "Checking spelling of %s..."
(funcall ispell-format-word word)))
(ispell-send-string "%\n") ; put in verbose mode
(ispell-send-string (concat "^" word "\n"))
;; wait until ispell has processed word
(while (progn
(ispell-accept-output)
(not (string= "" (car ispell-filter)))))
;;(ispell-send-string "!\n") ;back to terse mode.
(setq ispell-filter (cdr ispell-filter)) ; remove extra \n
(if (and ispell-filter (listp ispell-filter))
(if (> (length ispell-filter) 1)
(error "Ispell and its process have different character maps")
(setq poss (ispell-parse-output (car ispell-filter)))))
(cond ((eq poss t)
(or quietly
(message "%s is correct"
(funcall ispell-format-word word)))
(and (fboundp 'extent-at)
(extent-at start)
(delete-extent (extent-at start))))
((stringp poss)
(or quietly
(message "%s is correct because of root %s"
(funcall ispell-format-word word)
(funcall ispell-format-word poss)))
(and (fboundp 'extent-at)
(extent-at start)
(delete-extent (extent-at start))))
((null poss) (message "Error in ispell process"))
(ispell-check-only ; called from ispell minor mode.
(if (fboundp 'make-extent)
(let ((ext (make-extent start end)))
(set-extent-property ext 'face ispell-highlight-face)
(set-extent-property ext 'priority 2000))
(beep)
(message "%s is incorrect"(funcall ispell-format-word word))))
(t ; prompt for correct word.
(save-window-excursion
(setq replace (ispell-command-loop
(car (cdr (cdr poss)))
(car (cdr (cdr (cdr poss))))
(car poss) start end)))
(cond ((equal 0 replace)
(ispell-add-per-file-word-list (car poss)))
(replace
(setq new-word (if (atom replace) replace (car replace))
cursor-location (+ (- (length word) (- end start))
cursor-location))
(if (not (equal new-word (car poss)))
(progn
(delete-region start end)
(setq start (point))
(ispell-insert-word new-word)
(setq end (point))))
(if (not (atom replace)) ;recheck spelling of replacement
(progn
(if (car (cdr replace)) ; query replace requested
(save-window-excursion
(query-replace word new-word t)))
(goto-char start)
;; single word could be split into multiple words
(setq ispell-quit (not (ispell-region start end)))
))))
;; keep if rechecking word and we keep choices win.
(if (get-buffer ispell-choices-buffer)
(kill-buffer ispell-choices-buffer))))
(ispell-pdict-save ispell-silently-savep)
;; NB: Cancels ispell-quit incorrectly if called from ispell-region
(if ispell-quit (setq ispell-quit nil replace 'quit))
(goto-char cursor-location) ; return to original location
replace)))

File diff suppressed because it is too large Load diff

View file

@ -359,7 +359,7 @@ With positive argument insert that many lines."
(point))))
(replace-match newtext fixedcase literal)
(if (< change 0)
(insert-char ?\ (- change)))))
(insert-char ?\s (- change)))))
;; Picture Tabs

View file

@ -816,7 +816,7 @@ Otherwise, follow with a newline."
(texinfo-last-unended-begin)
(match-string 1)))
"table")
? ;space
?\s
?\n)))
(defun texinfo-insert-@kbd (&optional arg)

View file

@ -1,3 +1,25 @@
2005-06-28 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
* url-http.el (url-http-create-request): Call url-recreate-url
in proxy case.
2005-06-27 Klaus Straubinger <KSNetz@Arcor.DE> (tiny change)
* url-http.el (url-http-create-request): When computing real-fname,
call url-filename in both cases.
2005-06-27 Richard M. Stallman <rms@gnu.org>
* url-cookie.el (url-cookie-store): Rename arg PATH to LOCALPART.
(url-cookie-retrieve): Likewise.
(url-cookie-generate-header-lines): Likewise.
(url-cookie-handle-set-cookie): Likewise.
(url-cookie-create): Expect :localpart instead of :path.
(url-cookie-localpart): Renamed from url-cookie-path.
(url-cookie-set-localpart): Renamed from url-cookie-set-path.
(url-cookie-file): Doc fix.
(url-cookie-p): Add doc string.
2005-06-23 Richard M. Stallman <rms@gnu.org>
* url-cookie.el (url-cookie-generate-header-lines): Fix autoload cookie.

View file

@ -34,35 +34,48 @@
;; 'open standard' defining this crap.
;;
;; A cookie is stored internally as a vector of 7 slots
;; [ 'cookie name value expires path domain secure ]
;; [ cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE ]
(defsubst url-cookie-name (cookie) (aref cookie 1))
(defsubst url-cookie-value (cookie) (aref cookie 2))
(defsubst url-cookie-expires (cookie) (aref cookie 3))
(defsubst url-cookie-path (cookie) (aref cookie 4))
(defsubst url-cookie-localpart (cookie) (aref cookie 4))
(defsubst url-cookie-domain (cookie) (aref cookie 5))
(defsubst url-cookie-secure (cookie) (aref cookie 6))
(defsubst url-cookie-set-name (cookie val) (aset cookie 1 val))
(defsubst url-cookie-set-value (cookie val) (aset cookie 2 val))
(defsubst url-cookie-set-expires (cookie val) (aset cookie 3 val))
(defsubst url-cookie-set-path (cookie val) (aset cookie 4 val))
(defsubst url-cookie-set-localpart (cookie val) (aset cookie 4 val))
(defsubst url-cookie-set-domain (cookie val) (aset cookie 5 val))
(defsubst url-cookie-set-secure (cookie val) (aset cookie 6 val))
(defsubst url-cookie-retrieve-arg (key args) (nth 1 (memq key args)))
(defsubst url-cookie-create (&rest args)
"Create a cookie vector object from keyword-value pairs ARGS.
The keywords allowed are
:name NAME
:value VALUE
:expires TIME
:localpart LOCALPAR
:domain DOMAIN
:secure ???
Could someone fill in more information?"
(let ((retval (make-vector 7 nil)))
(aset retval 0 'cookie)
(url-cookie-set-name retval (url-cookie-retrieve-arg :name args))
(url-cookie-set-value retval (url-cookie-retrieve-arg :value args))
(url-cookie-set-expires retval (url-cookie-retrieve-arg :expires args))
(url-cookie-set-path retval (url-cookie-retrieve-arg :path args))
(url-cookie-set-localpart retval (url-cookie-retrieve-arg :localpart args))
(url-cookie-set-domain retval (url-cookie-retrieve-arg :domain args))
(url-cookie-set-secure retval (url-cookie-retrieve-arg :secure args))
retval))
(defun url-cookie-p (obj)
"Return non-nil if OBJ is a cookie vector object.
These objects represent cookies in the URL package.
A cookie vector object is a vector of 7 slots:
[cookie NAME VALUE EXPIRES LOCALPART DOMAIN SECURE]."
(and (vectorp obj) (= (length obj) 7) (eq (aref obj 0) 'cookie)))
(defgroup url-cookie nil
@ -73,7 +86,8 @@
(defvar url-cookie-storage nil "Where cookies are stored.")
(defvar url-cookie-secure-storage nil "Where secure cookies are stored.")
(defcustom url-cookie-file nil "*Where cookies are stored on disk."
(defcustom url-cookie-file nil
"*File where cookies are stored on disk."
:type '(choice (const :tag "Default" :value nil) file)
:group 'url-file
:group 'url-cookie)
@ -154,7 +168,7 @@ telling Microsoft that."
(write-file fname)
(kill-buffer (current-buffer))))))
(defun url-cookie-store (name value &optional expires domain path secure)
(defun url-cookie-store (name value &optional expires domain localpart secure)
"Store a netscape-style cookie."
(let* ((storage (if secure url-cookie-secure-storage url-cookie-storage))
(tmp storage)
@ -173,7 +187,7 @@ telling Microsoft that."
(while storage
(setq cur (car storage)
storage (cdr storage))
(if (and (equal path (url-cookie-path cur))
(if (and (equal localpart (url-cookie-localpart cur))
(equal name (url-cookie-name cur)))
(progn
(url-cookie-set-expires cur expires)
@ -186,7 +200,7 @@ telling Microsoft that."
:value value
:expires expires
:domain domain
:path path
:localpart localpart
:secure secure)
(cdr found-domain)))))
;; Need to add a new top-level domain
@ -194,7 +208,7 @@ telling Microsoft that."
:value value
:expires expires
:domain domain
:path path
:localpart localpart
:secure secure))
(cond
(storage
@ -235,8 +249,8 @@ telling Microsoft that."
(> (- cur-norm exp-norm) 1))))))
;;;###autoload
(defun url-cookie-retrieve (host path &optional secure)
"Retrieve all the netscape-style cookies for a specified HOST and PATH."
(defun url-cookie-retrieve (host localpart &optional secure)
"Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."
(let ((storage (if secure
(append url-cookie-secure-storage url-cookie-storage)
url-cookie-storage))
@ -244,7 +258,7 @@ telling Microsoft that."
(cookies nil)
(cur nil)
(retval nil)
(path-regexp nil))
(localpart-regexp nil))
(while storage
(setq cur (car storage)
storage (cdr storage)
@ -255,26 +269,26 @@ telling Microsoft that."
(while cookies
(setq cur (car cookies)
cookies (cdr cookies)
path-regexp (concat "^" (regexp-quote
(url-cookie-path cur))))
(if (and (string-match path-regexp path)
localpart-regexp (concat "^" (regexp-quote
(url-cookie-localpart cur))))
(if (and (string-match localpart-regexp localpart)
(not (url-cookie-expired-p cur)))
(setq retval (cons cur retval))))))
retval))
;;;###autoload
(defun url-cookie-generate-header-lines (host path secure)
(let* ((cookies (url-cookie-retrieve host path secure))
(retval nil)
(cur nil)
(chunk nil))
(defun url-cookie-generate-header-lines (host localpart secure)
(let* ((cookies (url-cookie-retrieve host localpart secure))
(retval nil)
(cur nil)
(chunk nil))
;; Have to sort this for sending most specific cookies first
(setq cookies (and cookies
(sort cookies
(function
(lambda (x y)
(> (length (url-cookie-path x))
(length (url-cookie-path y))))))))
(> (length (url-cookie-localpart x))
(length (url-cookie-localpart y))))))))
(while cookies
(setq cur (car cookies)
cookies (cdr cookies)
@ -340,9 +354,9 @@ telling Microsoft that."
(trusted url-cookie-trusted-urls)
(untrusted url-cookie-untrusted-urls)
(expires (cdr-safe (assoc-string "expires" args t)))
(path (or (cdr-safe (assoc-string "path" args t))
(file-name-directory
(url-filename url-current-object))))
(localpart (or (cdr-safe (assoc-string "path" args t))
(file-name-directory
(url-filename url-current-object))))
(rest nil))
(while args
(if (not (member (downcase (car (car args)))
@ -422,7 +436,7 @@ telling Microsoft that."
(while rest
(setq cur (pop rest))
(url-cookie-store (car cur) (cdr cur)
expires domain path secure))))
expires domain localpart secure))))
(t
(message "%s tried to set a cookie for domain %s - rejected."
(url-host url-current-object) domain)))))

View file

@ -156,8 +156,7 @@ request.
(let ((url-basic-auth-storage
'url-http-proxy-basic-auth-storage))
(url-get-authentication url nil 'any nil))))
(real-fname (if proxy-obj (url-recreate-url proxy-obj)
(url-filename url)))
(real-fname (url-filename (or proxy-obj url)))
(host (url-host (or proxy-obj url)))
(auth (if (cdr-safe (assoc "Authorization" url-request-extra-headers))
nil
@ -200,7 +199,9 @@ request.
(setq request
(concat
;; The request
(or url-request-method "GET") " " real-fname " HTTP/" url-http-version "\r\n"
(or url-request-method "GET") " "
(if proxy-obj (url-recreate-url proxy-obj) real-fname)
" HTTP/" url-http-version "\r\n"
;; Version of MIME we speak
"MIME-Version: 1.0\r\n"
;; (maybe) Try to keep the connection open

View file

@ -967,28 +967,28 @@ Recommended as a parent keymap for modes using widgets.")
(recenter))
)
(let ((up t) command)
;; Mouse click not on a widget button. Find the global
;; command to run, and check whether it is bound to an
;; up event.
(mouse-set-point event)
(if (memq (event-basic-type event) '(mouse-1 down-mouse-1))
(cond ((setq command ;down event
(lookup-key widget-global-map [down-mouse-1]))
(setq up nil))
((setq command ;up event
(lookup-key widget-global-map [mouse-1]))))
(let ((up t) command)
;; Mouse click not on a widget button. Find the global
;; command to run, and check whether it is bound to an
;; up event.
(mouse-set-point event)
(if (memq (event-basic-type event) '(mouse-1 down-mouse-1))
(cond ((setq command ;down event
(lookup-key widget-global-map [down-mouse-2]))
(lookup-key widget-global-map [down-mouse-1]))
(setq up nil))
((setq command ;up event
(lookup-key widget-global-map [mouse-2])))))
(when up
;; Don't execute up events twice.
(while (not (widget-button-release-event-p event))
(setq event (read-event))))
(when command
(call-interactively command)))))
(lookup-key widget-global-map [mouse-1]))))
(cond ((setq command ;down event
(lookup-key widget-global-map [down-mouse-2]))
(setq up nil))
((setq command ;up event
(lookup-key widget-global-map [mouse-2])))))
(when up
;; Don't execute up events twice.
(while (not (widget-button-release-event-p event))
(setq event (read-event))))
(when command
(call-interactively command)))))
(message "You clicked somewhere weird.")))
(defun widget-button-press (pos &optional event)

View file

@ -40,11 +40,18 @@ unless you explicitly change the size, or Emacs has no other choice.")
(defmacro save-selected-window (&rest body)
"Execute BODY, then select the window that was selected before BODY.
Also restore the selected window of each frame as it was at the start
of this construct.
However, if a window has become dead, don't get an error,
just refrain from reselecting it.
Return the value of the last form in BODY."
The value returned is the value of the last form in BODY.
This macro saves and restores the current buffer, since otherwise
its normal operation could potentially make a different
buffer current. It does not alter the buffer list ordering.
This macro saves and restores the selected window, as well as
the selected window in each frame. If the previously selected
window of some frame is no longer live at the end of BODY, that
frame's selected window is left alone. If the selected window is
no longer live, then whatever window is selected at the end of
BODY remains selected."
`(let ((save-selected-window-window (selected-window))
;; It is necessary to save all of these, because calling
;; select-window changes frame-selected-window for whatever
@ -52,14 +59,15 @@ Return the value of the last form in BODY."
(save-selected-window-alist
(mapcar (lambda (frame) (list frame (frame-selected-window frame)))
(frame-list))))
(unwind-protect
(progn ,@body)
(dolist (elt save-selected-window-alist)
(and (frame-live-p (car elt))
(window-live-p (cadr elt))
(set-frame-selected-window (car elt) (cadr elt))))
(if (window-live-p save-selected-window-window)
(select-window save-selected-window-window)))))
(save-current-buffer
(unwind-protect
(progn ,@body)
(dolist (elt save-selected-window-alist)
(and (frame-live-p (car elt))
(window-live-p (cadr elt))
(set-frame-selected-window (car elt) (cadr elt))))
(if (window-live-p save-selected-window-window)
(select-window save-selected-window-window))))))
(defun window-body-height (&optional window)
"Return number of lines in window WINDOW for actual buffer text.

View file

@ -1,3 +1,43 @@
2005-06-29 Juanma Barranquero <lekktu@gmail.com>
* variables.texi (Defining Variables): `user-variable-p' returns t
for aliases of user options, nil for alias loops.
2005-06-28 Richard M. Stallman <rms@gnu.org>
* keymaps.texi (Creating Keymaps): Put make-sparse-keymap before
make-keymap.
2005-06-27 Luc Teirlinck <teirllm@auburn.edu>
* variables.texi (Setting Variables): Correct and clarify
description of `add-to-ordered-list'.
2005-06-26 Richard M. Stallman <rms@gnu.org>
* display.texi (Faces): Minor cleanup.
2005-06-25 Luc Teirlinck <teirllm@auburn.edu>
* display.texi (Faces): `facep' returns t for strings that are
face names.
2005-06-25 Richard M. Stallman <rms@gnu.org>
* objects.texi (Equality Predicates): Clarify meaning of equal.
* windows.texi (Selecting Windows): save-selected-window
and with-selected-window save and restore the current buffer.
2005-06-24 Richard M. Stallman <rms@gnu.org>
* numbers.texi (Float Basics): Explain how to test for NaN,
and printing the sign of NaNs.
2005-06-24 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (MAKEINFO): Use --force.
2005-06-23 Richard M. Stallman <rms@gnu.org>
* display.texi (Face Functions): Correct Texinfo usage.

View file

@ -1628,12 +1628,12 @@ particular parts of the text or the frame.
@cindex face id
Each face has its own @dfn{face number}, which distinguishes faces at
low levels within Emacs. However, for most purposes, you refer to
faces in Lisp programs by their names.
faces in Lisp programs by the symbols that name them.
@defun facep object
This function returns @code{t} if @var{object} is a face name symbol (or
if it is a vector of the kind used internally to record face data). It
returns @code{nil} otherwise.
This function returns @code{t} if @var{object} is a face name string
or symbol (or if it is a vector of the kind used internally to record
face data). It returns @code{nil} otherwise.
@end defun
Each face name is meaningful for all frames, and by default it has the
@ -1795,7 +1795,7 @@ end of a line.
The way to define a new face is with @code{defface}. This creates a
kind of customization item (@pxref{Customization}) which the user can
customize using the Customization buffer (@pxref{Easy Customization,,,
emacs, The GNU Emacs Manual}).
emacs, The GNU Emacs Manual}).
@defmac defface face spec doc [keyword value]...
This declares @var{face} as a customizable face that defaults

View file

@ -257,18 +257,16 @@ satisfies @code{keymapp}.
Here we describe the functions for creating keymaps.
@c ??? This should come after make-sparse-keymap
@defun make-keymap &optional prompt
This function creates and returns a new full keymap. That keymap
contains a char-table (@pxref{Char-Tables}) with slots for all
characters without modifiers. The new keymap initially binds all
these characters to @code{nil}, and does not bind any other kind of
event.
@defun make-sparse-keymap &optional prompt
This function creates and returns a new sparse keymap with no entries.
(A sparse keymap is the kind of keymap you usually want.) The new
keymap does not contain a char-table, unlike @code{make-keymap}, and
does not bind any events.
@example
@group
(make-keymap)
@result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
(make-sparse-keymap)
@result{} (keymap)
@end group
@end example
@ -277,18 +275,23 @@ the keymap. The prompt string should be provided for menu keymaps
(@pxref{Defining Menus}).
@end defun
@defun make-sparse-keymap &optional prompt
This function creates and returns a new sparse keymap with no entries.
The new keymap does not contain a char-table, unlike @code{make-keymap},
and does not bind any events. The argument @var{prompt} specifies a
prompt string, as in @code{make-keymap}.
@defun make-keymap &optional prompt
This function creates and returns a new full keymap. That keymap
contains a char-table (@pxref{Char-Tables}) with slots for all
characters without modifiers. The new keymap initially binds all
these characters to @code{nil}, and does not bind any other kind of
event. The argument @var{prompt} specifies a
prompt string, as in @code{make-sparse-keymap}.
@example
@group
(make-sparse-keymap)
@result{} (keymap)
(make-keymap)
@result{} (keymap #^[t nil nil nil @dots{} nil nil keymap])
@end group
@end example
A full keymap is more efficient than a sparse keymap when it holds
lots of bindings; for just a few, the sparse keymap is better.
@end defun
@defun copy-keymap keymap

View file

@ -29,7 +29,7 @@ infodir = $(srcdir)/../info
# TEX=platex
TEX=tex
INSTALL_INFO = install-info
MAKEINFO = makeinfo
MAKEINFO = makeinfo --force
# The environment variable and its value to add $(srcdir) to the path
# searched for TeX input files.

View file

@ -183,21 +183,26 @@ there is no correct answer. For example, @code{(/ 0.0 0.0)} returns a
NaN. For practical purposes, there's no significant difference between
different NaN values in Emacs Lisp, and there's no rule for precisely
which NaN value should be used in a particular case, so Emacs Lisp
doesn't try to distinguish them. Here are the read syntaxes for
these special floating point values:
doesn't try to distinguish them (but it does report the sign, if you
print it). Here are the read syntaxes for these special floating
point values:
@table @asis
@item positive infinity
@samp{1.0e+INF}
@item negative infinity
@samp{-1.0e+INF}
@item Not-a-number
@samp{0.0e+NaN}.
@item Not-a-number
@samp{0.0e+NaN} or @samp{-0.0e+NaN}.
@end table
In addition, the value @code{-0.0} is distinguishable from ordinary
zero in @acronym{IEEE} floating point (although @code{equal} and
@code{=} consider them equal values).
To test whether a floating point value is a NaN, compare it with
itself using @code{=}. That returns @code{nil} for a NaN, and
@code{t} for any other floating point value.
The value @code{-0.0} is distinguishable from ordinary zero in
@acronym{IEEE} floating point, but Emacs Lisp @code{equal} and
@code{=} consider them equal values.
You can use @code{logb} to extract the binary exponent of a floating
point number (or estimate the logarithm of an integer):

View file

@ -1820,8 +1820,7 @@ describing the data type.
@defun eq object1 object2
This function returns @code{t} if @var{object1} and @var{object2} are
the same object, @code{nil} otherwise. The ``same object'' means that a
change in one will be reflected by the same change in the other.
the same object, @code{nil} otherwise.
@code{eq} returns @code{t} if @var{object1} and @var{object2} are
integers with the same value. Also, since symbol names are normally
@ -1829,7 +1828,8 @@ unique, if the arguments are symbols with the same name, they are
@code{eq}. For other types (e.g., lists, vectors, strings), two
arguments with the same contents or elements are not necessarily
@code{eq} to each other: they are @code{eq} only if they are the same
object.
object, meaning that a change in the contents of one will be reflected
by the same change in the contents of the other.
@example
@group

View file

@ -569,7 +569,7 @@ though being declared using @code{defcustom}@footnote{They may also be
declared equivalently in @file{cus-start.el}.} or by the first character
of their @code{variable-documentation} property. If the property exists
and is a string, and its first character is @samp{*}, then the variable
is a user option.
is a user option. Aliases of user options are also user options.
@end defun
@kindex variable-interactive
@ -909,18 +909,25 @@ This function sets the variable @var{symbol} by inserting
position specified by @var{order}. If @var{element} is already a
member of the list, its position in the list is adjusted according
to @var{order}. Membership is tested using @code{eq}.
The valued returned is the resulting list, whether updated or not.
This function returns the resulting list, whether updated or not.
The @var{order} is a number, and the elements on list are sorted in
increasing numerical order. Elements without a numeric list order are
placed at the end of @var{symbol}.
The @var{order} is typically a number (integer or float), and the
elements of the list are sorted in non-decreasing numerical order.
@var{order} may also be omitted or @code{nil}. Then the numeric order
of @var{element} stays unchanged if it already has one; otherwise,
@var{element} has no numeric order. Elements without a numeric list
order are placed at the end of the list, in no particular order.
Any other value for @var{order} removes the numeric order of @var{element}
if it already has one; otherwise, it is equivalent to @code{nil}.
The argument @var{symbol} is not implicitly quoted;
@code{add-to-ordered-list} is an ordinary function, like @code{set}
and unlike @code{setq}. Quote the argument yourself if that is what
you want.
The ordering information is stored in an alist on @var{symbol}'s
The ordering information is stored in a hash table on @var{symbol}'s
@code{list-order} property.
@end defun
@ -945,11 +952,11 @@ Here's a scenario showing how to use @code{add-to-ordered-list}:
(add-to-ordered-list 'foo 'd) ;; @r{Append @code{d}.}
@result{} (a c b d)
(add-to-ordered-list 'foo 'b 2) ;; @r{Move @code{b}.}
@result{} (a b c d)
(add-to-ordered-list 'foo 'e) ;; @r{Add @code{e}}.
@result{} (a c b e d)
foo ;; @r{@code{foo} was changed.}
@result{} (a b c d)
@result{} (a c b e d)
@end example
@node Variable Scoping

View file

@ -463,8 +463,8 @@ The return value is @var{window}.
@defmac save-selected-window forms@dots{}
This macro records the selected frame, as well as the selected window
of each frame, executes @var{forms} in sequence, then restores the
earlier selected frame and windows It returns the value of the last
form in @var{forms}.
earlier selected frame and windows. It also saves and restores the
current buffer. It returns the value of the last form in @var{forms}.
This macro does not save or restore anything about the sizes,
arrangement or contents of windows; therefore, if the @var{forms}
@ -478,9 +478,9 @@ the end of @var{forms} remains selected.
@defmac with-selected-window window forms@dots{}
This macro selects @var{window} (without changing the buffer list),
executes @var{forms} in sequence, then restores the previously
selected window (unless that window is no longer alive). It is similar
to @code{save-selected-window} except that it explicitly selects
@var{window}, without altering the buffer list sequence.
selected window and current buffer. It is just like
@code{save-selected-window}, except that it explicitly selects
@var{window}, also without altering the buffer list sequence.
@end defmac
@cindex finding windows

View file

@ -1,3 +1,23 @@
2005-06-29 Katsumi Yamaoka <yamaoka@jpl.org>
* gnus.texi (NoCeM): gnus-nocem-verifyer defaults to pgg-verify.
2005-06-29 Carsten Dominik <dominik@science.uva.nl>
* org.texi: Version 3.12
2005-06-24 Richard M. Stallman <rms@gnu.org>
* display.texi (Text Display): Change index entries.
2005-06-24 Eli Zaretskii <eliz@gnu.org>
* makefile.w32-in (MAKEINFO): Use --force.
(INFO_TARGETS, DVI_TARGETS): Make identical to the lists in
Makefile.in.
(gnus.dvi): Use "..." to quote Sed args, so that it works with
more shells.
2005-06-23 Richard M. Stallman <rms@gnu.org>
* anti.texi (Antinews): Renamed show-nonbreak-escape to

View file

@ -946,8 +946,9 @@ them), otherwise as escape sequences. @xref{Single-Byte Character
Support}.
@vindex nobreak-char-display
@cindex nobreak space, display
@cindex nobreak hyphen, display
@cindex no-break space, display
@cindex no-break hyphen, display
@cindex soft hyphen, display
Some character sets define ``no-break'' versions of the space and
hyphen characters, which are used where a line should not be broken.
Emacs normally displays these characters with special faces

View file

@ -21750,27 +21750,18 @@ The specs are applied left-to-right.
@item gnus-nocem-verifyer
@vindex gnus-nocem-verifyer
@findex mc-verify
@findex pgg-verify
This should be a function for verifying that the NoCeM issuer is who she
says she is. The default is @code{mc-verify}, which is a Mailcrypt
function. If this is too slow and you don't care for verification
(which may be dangerous), you can set this variable to @code{nil}.
says she is. The default is @code{pgg-verify}, which returns
non-@code{nil} if the verification is successful, otherwise (including
the case the NoCeM message was not signed) returns @code{nil}. If this
is too slow and you don't care for verification (which may be dangerous),
you can set this variable to @code{nil}.
If you want signed NoCeM messages to be verified and unsigned messages
not to be verified (but used anyway), you could do something like:
@lisp
(setq gnus-nocem-verifyer 'my-gnus-mc-verify)
(defun my-gnus-mc-verify ()
(not (eq 'forged
(ignore-errors
(if (mc-verify)
t
'forged)))))
@end lisp
This might be dangerous, though.
Formerly the default was @code{mc-verify}, which is a Mailcrypt
function. While you can still use it, you can change it into
@code{pgg-verify} running with GnuPG if you are willing to add the
@acronym{PGP} public keys to GnuPG's keyring.
@item gnus-nocem-directory
@vindex gnus-nocem-directory

View file

@ -29,33 +29,28 @@ srcdir=.
infodir = $(srcdir)/../info
# The makeinfo program is part of the Texinfo distribution.
MAKEINFO = makeinfo
MAKEINFO = makeinfo --force
MULTI_INSTALL_INFO = $(srcdir)\..\nt\multi-install-info.bat
INFO_TARGETS = $(infodir)/emacs $(infodir)/ccmode \
$(infodir)/cl $(infodir)/dired-x \
$(infodir)/ediff $(infodir)/forms \
$(infodir)/gnus $(infodir)/info \
$(infodir)/message $(infodir)/mh-e \
$(infodir)/reftex $(infodir)/sc \
$(infodir)/vip $(infodir)/viper \
$(infodir)/widget $(infodir)/efaq \
$(infodir)/ada-mode $(infodir)/autotype \
$(infodir)/calc $(infodir)/idlwave \
$(infodir)/eudc $(infodir)/ebrowse \
$(infodir)/pcl-cvs $(infodir)/woman \
$(infodir)/emacs-mime $(infodir)/eshell \
$(infodir)/speedbar $(infodir)/tramp \
$(infodir)/ses $(infodir)/smtpmail \
$(infodir)/flymake $(infodir)/emacs-xtra \
$(infodir)/org $(infodir)/url \
$(infodir)/pgg $(infodir)/sieve
INFO_TARGETS = $(infodir)/emacs $(infodir)/emacs-xtra $(infodir)/ccmode \
$(infodir)/cl $(infodir)/dired-x $(infodir)/ediff \
$(infodir)/forms $(infodir)/gnus $(infodir)/message \
$(infodir)/sieve $(infodir)/pgg $(infodir)/emacs-mime \
$(infodir)/info $(infodir)/mh-e $(infodir)/reftex \
$(infodir)/sc $(infodir)/vip $(infodir)/viper \
$(infodir)/widget $(infodir)/efaq $(infodir)/ada-mode \
$(infodir)/autotype $(infodir)/calc $(infodir)/idlwave \
$(infodir)/eudc $(infodir)/ebrowse $(infodir)/pcl-cvs \
$(infodir)/woman $(infodir)/eshell $(infodir)/org \
$(infodir)/url $(infodir)/speedbar $(infodir)/tramp \
$(infodir)/ses $(infodir)/smtpmail $(infodir)/flymake
DVI_TARGETS = emacs.dvi calc.dvi cc-mode.dvi cl.dvi dired-x.dvi \
ediff.dvi forms.dvi gnus.dvi message.dvi mh-e.dvi \
ediff.dvi forms.dvi gnus.dvi message.dvi emacs-mime.dvi \
gnus.dvi message.dvi sieve.dvi pgg.dvi mh-e.dvi \
reftex.dvi sc.dvi vip.dvi viper.dvi widget.dvi faq.dvi \
ada-mode.dvi autotype.dvi idlwave.dvi eudc.dvi ebrowse.dvi \
org.dvi pcl-cvs.dvi woman.dvi emacs-mime.dvi eshell.dvi \
pcl-cvs.dvi woman.dvi eshell.dvi org.dvi url.dvi \
speedbar.dvi tramp.dvi ses.dvi smtpmail.dvi flymake.dvi \
emacs-xtra.dvi pgg.dvi sieve.dvi url.dvi
emacs-xtra.dvi
INFOSOURCES = info.texi
# The following rule does not work with all versions of `make'.
@ -197,7 +192,7 @@ forms.dvi: forms.texi
$(infodir)/gnus: gnus.texi
$(MAKEINFO) gnus.texi
gnus.dvi: gnus.texi
sed -e '/@iflatex/,/@end iflatex/d' $(srcdir)/gnus.texi > gnustmp.texi
sed -e "/@iflatex/,/@end iflatex/d" $(srcdir)/gnus.texi > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*

View file

@ -4,7 +4,7 @@
@setfilename ../info/org
@settitle Org Mode Manual
@set VERSION 3.11
@set VERSION 3.12
@set DATE June 2005
@dircategory Emacs
@ -109,8 +109,16 @@ Document Structure
Tables
* Built-in table editor:: Simple tables
* table.el:: Complex tables
* Table calculations:: Compute a field from other fields
* orgtbl-mode:: The table editor as minor mode
* table.el:: Complex tables
Calculations in tables
* Formula syntax:: How to write a formula
* Applying a formula:: How to get a formula executed
* Recalculation:: Re-applying all formulas in a table
* Summing:: Summing columns and rows
Hyperlinks
@ -203,6 +211,7 @@ different levels and in different ways, for example
@example
@r{@bullet{} as an outline extension with visibility cycling and structure editing}
@r{@bullet{} as an ASCII system and table editor to take structured notes}
@r{@bullet{} as an ASCII table editor with some spreadsheet-like capabilities}
@r{@bullet{} as a simple hypertext system, with HTML export}
@r{@bullet{} as a TODO list editor}
@r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
@ -384,7 +393,7 @@ Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
Show all.
@end table
When Emacs firsts visits a Org-mode file, the global state is set to
When Emacs first visits an Org-mode file, the global state is set to
OVERVIEW, i.e. only the top level headlines are visible. This can be
configured through the variable @code{org-startup-folded}, or on a
per-file basis by adding one of the following lines anywhere in the
@ -435,9 +444,9 @@ visible.
@cindex promotion, of subtrees
@cindex demotion, of subtrees
@cindex subtree, cut and paste
@cindex pasting, subtrees
@cindex cutting, subtrees
@cindex copying, subtrees
@cindex pasting, of subtrees
@cindex cutting, of subtrees
@cindex copying, of subtrees
@table @kbd
@kindex M-@key{RET}
@ -493,11 +502,11 @@ functionality.
@section Archiving
@cindex archiving
When an project represented by a (sub)tree is finished, you may want
to move the tree to an Archive place, either in the same file under a
When a project represented by a (sub)tree is finished, you may want
to move the tree to an archive place, either in the same file under a
special top-level heading, or even to a different file.
@table @kbd
@kindex @kbd{C-c $}
@kindex C-c $
@item @kbd{C-c $}
Archive the subtree starting at the cursor position to the location
given by @code{org-archive-location}.
@ -524,7 +533,7 @@ An important feature of Org-mode is the ability to construct
sparse tree means that the entire document is folded as much as
possible, but the selected information is made visible along with the
headline structure above it@footnote{See also the variable
@code{org-show-following-heading}}. Just try it out and you will see
@code{org-show-following-heading}.}. Just try it out and you will see
immediately how it works.
Org-mode contains several commands creating such trees. The most
@ -549,7 +558,7 @@ C-v} creates a sparse TODO tree (@pxref{TODO basics}).
@cindex visible text, printing
To print a sparse tree, you can use the Emacs command
@code{ps-print-buffer-with-faces} which does not print invisible parts
of the document @footnote{this does not work under XEmacs, because
of the document @footnote{This does not work under XEmacs, because
XEmacs uses selective display for outlining, not text properties}.
Or you can use the command @kbd{C-c C-x v} to copy the visible part of
the document to another file (extension @file{.txt}) which then can be
@ -559,18 +568,18 @@ printed in any desired way.
@chapter Tables
@cindex tables
For taking notes, tables are an essential tool because they allow
immediate and clear structuring of data. Org-mode has a very fast and
intuitive table editor built-in. More complex tables can be created
with the Emacs table.el package.
Org-mode has a very fast and intuitive table editor built-in.
Spreadsheet-like calculations are supported in connection with the
Emacs @file{calc} package.
@menu
* Built-in table editor:: Simple tables
* table.el:: Complex tables
* Table calculations:: Compute a field from other fields
* orgtbl-mode:: The table editor as minor mode
* table.el:: Complex tables
@end menu
@node Built-in table editor, table.el, Tables, Tables
@node Built-in table editor, Table calculations, Tables, Tables
@section The built-in table editor
@cindex table editor, builtin
@ -587,13 +596,13 @@ like this:
@end example
A table is re-aligned automatically each time you press @key{TAB} or
@key{RET} inside the table. @key{TAB} also moves to the next field
(@key{RET} to the next row) and creates new table rows at the end of the
table or before horizontal lines. The indentation of the table is set
by the first line. Any line starting with @samp{|-} is considered as a
horizontal separator line and will be expanded on the next re-align to
span the whole table width. So, to create the above table, you would
only type
@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
the next field (@key{RET} to the next row) and creates new table rows
at the end of the table or before horizontal lines. The indentation
of the table is set by the first line. Any line starting with
@samp{|-} is considered as a horizontal separator line and will be
expanded on the next re-align to span the whole table width. So, to
create the above table, you would only type
@example
|Name|Phone|Age
@ -605,10 +614,9 @@ fields.
@table @kbd
@tsubheading{Creation and conversion}
@kindex C-c C-c
@item C-c C-c
Recognize @file{table.el} table. Works when the cursor is in a
table.el table
@item M-x org-table-create
Creates an empty Org-mode table. However, it is much easier to just
start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
@kindex C-c C-c
@item C-c C-c
@ -619,10 +627,6 @@ separated. If not, lines are split at whitespace into fields. You
can use a prefix argument to indicate how many consecutive spaces are
at least required to indicate a field separator (default: just one).
@item M-x org-table-create
Creates an empty Org-mode table. However, it is much easier to just
start typing, like @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}
@tsubheading{Re-aligning and field motion}
@kindex C-c C-c
@item C-c C-c
@ -635,7 +639,7 @@ necessary.
@kindex S-@key{TAB}
@item S-@key{TAB}
Move to previous field.
Re-align, move to previous field.
@kindex @key{RET}
@item @key{RET}
@ -674,19 +678,19 @@ Insert a new row above (with arg: below) the current row.
@kindex C-c -
@item C-c -
Insert a horizontal line below current row. With prefix arg, line is
created above the current line.
Insert a horizontal line below current row. With prefix arg, the line
is created above the current line.
@tsubheading{Regions}
@kindex C-c C-h M-w
@item C-c C-h M-w
Copy an rectangular region from a table to a special clipboard. Point
Copy a rectangular region from a table to a special clipboard. Point
and mark determine edge fields of the rectangle. The process ignores
horizontal separator lines.
@kindex C-c C-h C-w
@item C-c C-h C-w
Copy an rectangular region from a table to a special clipboard, and
blank all fields in the rectangle.
Copy a rectangular region from a table to a special clipboard, and
blank all fields in the rectangle. So this is the ``cut'' operation.
@kindex C-c C-h C-y
@item C-c C-h C-y
Paste a rectangular region into a table.
@ -707,6 +711,29 @@ current field gets blank, and the content is appended to the field
above.
@tsubheading{Calculations}
@cindex formula, in tables
@cindex calculations, in tables
@kindex C-c =
@item C-c =
Replace current field with the result of a formula. When called with a
@kbd{C-u} prefix, apply the equation in the current field and down
through the current column to a horizonal separator line or the end of
the table. For details, see @ref{Table calculations}.
@kindex C-c *
@item C-c *
Recalculate the current row by applying the stored formulas from left
to right. When called with a @kbd{C-u} prefix, recalculate the
entire table, starting with the first non-header line (i.e. below the
first horizontal separator line). For details, see @ref{Table calculations}.
@kindex C-#
@item C-#
Rotate the recalculation mark in first column through the states
@samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
these marks see @ref{Table calculations}. When there is an active
region, change all marks in the region.
@kindex C-c ?
@item C-c ?
Which table column is the cursor in? Displays number >0 in echo
@ -718,7 +745,7 @@ area.
@kindex C-c +
@item C-c +
Sum the numbers in the current column, or in the rectangle defined by
the active region. The result is displayed in the echo area and can
the active region. The result is shown in the echo area and can
be inserted with @kbd{C-y}.
@kindex S-@key{RET}
@ -730,23 +757,12 @@ along with it. Depending on the variable
incremented during copy. This key is also used by CUA-mode
(@pxref{Interaction}).
@cindex formula, in tables
@cindex calculations, in tables
@kindex C-c =
@item C-c =
Replace current field with the result of a formula. Requires the
Emacs calc package. The formula can access the current field with
@samp{$}, and the other fields in the current row
with @samp{$1}, @samp{$2},... For details see the documentation of the
command @command{org-table-eval-formula}.
@tsubheading{Miscellaneous}
@kindex C-c |
@item C-c |
Toggle the visibility of vertical lines in tables. The lines are
still there, only made invisible with a text property. Any @samp{|}
added by hand will become invisible on the next align.
Typographically it is good style to have no vertical lines in tables.
@item M-x org-table-import
Import a file as a table. The table should be TAB- or whitespace
@ -771,34 +787,199 @@ it off with
@noindent The only table command which then still works is
@kbd{C-c C-c} to do a manual re-align.
@node table.el, orgtbl-mode, Built-in table editor, Tables
@section The @file{table.el} package
@kindex C-c C-c
@cindex table editor, table.el
@cindex @file{table.el}
@node Table calculations, orgtbl-mode, Built-in table editor, Tables
@section Calculations in tables
@cindex calculations, in tables
More complex ASCII tables (with automatic line wrapping, column- and
row-spanning, and alignment) can be created using the Emacs table
package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
will call @command{table-recognize-table} and move the cursor into the
table. Inside a table, the keymap of Org-mode is inactive. In order
to execute org-related commands, leave the table.
While the Org-mode table editor misses many features of a full
spreadsheet, it nevertheless has very useful capabilities to compute
fields. In horizontal direction, it can use complex expressions to
compute a field from other fields @emph{in the same row}, using named
columns, constants and parameters. The Emacs @file{calc} package is
required for this feature to work. In vertical direction, only
summing is supported.
@table @kbd
@kindex C-c #
@item C-c #
Insert a table.el table. If there is already a table at point, this
command converts it between the table.el format and the Org-mode
format. See the documentation string of the command
@code{org-convert-table} for the restrictions under which this is
possible.
@end table
@menu
* Formula syntax:: How to write a formula
* Applying a formula:: How to get a formula executed
* Recalculation:: Re-applying all formulas in a table
* Summing:: Summing columns and rows
@end menu
@node orgtbl-mode, , table.el, Tables
@node Formula syntax, Applying a formula, Table calculations, Table calculations
@subsection Formula syntax
A formula for horizontal computations can be any algebraic expression
understood by the Emacs @file{calc} package. Before evaluation,
variable substitution takes place: @samp{$} is replaced by the field
the cursor is currently in, and $1..$n reference the fields in the
current row. @samp{$name} is interpreted as the name of a column,
parameter or constant. Constants are defined globally through the
variable @code{org-table-formula-constants}. If you have the
@file{constants.el} package, it will also be used to resolve
constants, including natural constants like @samp{$k} for Plancks
constant, units like @samp{$km} for kilometers. Column names and
parameters can be specified in special table lines. These are
described below, see @ref{Recalculation}.
A formula can contain an optional mode string after a semicolon. This
string consists of flags to influence calc's modes@footnote{By
default, Org-mode uses the standard calc modes (precision 12, angular
units degrees, fraction and symbolic modes off). However, the display
format which has been changed to @code{(float 5)} to keep tables
compact. The default settings can be configured using the variable
@code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
@samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
or fix display format, respectively, and @samp{D}, @samp{R}, @samp{F},
and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
respectively. In addition, you may provide a @code{printf} specifier
to reformat the final result. A few examples:
@example
$1+$2 @r{Sum of first and second field}
$1+$2;%.2f @r{Same, format result to two decimals}
exp($2)+exp($1) @r{Math functions can be used}
$;%.1f @r{Reformat current cell to 1 decimal}
($3-32)*5/9 @r{degrees F -> C conversion}
$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
tan($1);Dp3s1 @r{compute in degrees, precision 3, display SCI 1}
vmean($2..$7) @r{compute column range mean, using vector function}
taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
@end example
@node Applying a formula, Recalculation, Formula syntax, Table calculations
@subsection Applying a formula
To apply a formula to a field, type it directly into the field,
preceded by an equal sign, like @samp{=$1+$2}. When you press
@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
field, the formula will be evaluated and replaced with the result. If
the field contains only @samp{=}, the formula most recently applied
anywhere in the @emph{same column} will be used.
For each column, Org-mode will remember the most recently used
formula. The information is stored in a special line directly below
the table. When adding/deleting/moving columns with the appropriate
commands, the stored equations will be modified accordingly. When a
column used in a calculation is removed, references to this column
become invalid and will cause an error upon applying the equation.
Instead of typing an equation into the field, you may also use the
command @kbd{C-c =}. It prompts for a formula (with default taken
from the @samp{#+TBLFM:} line) and applies it to the current field.
If you use a prefix argument (i.e. @kbd{C-u C-c =}), the formula will
be applied to the current field and down to the next separator line
or the end of the table. A numerical prefix will apply it to that
many fields in the current column.
When the evaluation of a formula leads to an error, the field content
becomes the string @samp{#ERROR}. If you would like see what is going
on during variable substitution and calculation in order to find a
bug, turn on formula debugging in the menu and repeat the calculation
by pressing, for example by pressing @kbd{C-c = @key{RET}} in a field.
Detailed information will be displayed.
@node Recalculation, Summing, Applying a formula, Table calculations
@subsection Recalculation
To recompute all the fields in a line, use the command @kbd{C-c *}.
It re-applies all stored equations to the current row, from left to
right. With a @kbd{C-u} prefix, this will be done to every line in
the table, so use this command it you want to make sure the entire
table is up-to-date. A more automatic way of recalculating the
current line requires marking the line: If the first column of a row
contains only @samp{#}, the row will be re-computed with every
@key{TAB}, @key{RET}, and @kbd{C-c C-c} in this row. Here is an
example of a table that collects exam results of students, with some
rows activated for semi-automatic computations.
@example
@group
|---+---------+--------+--------+--------+-------+------|
| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
|---+---------+--------+--------+--------+-------+------|
| ! | | P1 | P2 | P3 | Tot | |
| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
|---+---------+--------+--------+--------+-------+------|
| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
| # | Sara | 7 | 14 | 19 | 40 | 8.0 |
| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
|---+---------+--------+--------+--------+-------+------|
| $ | max=50 | | | | | |
|---+---------+--------+--------+--------+-------+------|
#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f
@end group
@end example
@noindent
The example also demonstrates a number of convenience features:
@enumerate
@item
If the first field of a row contains only @samp{!}, this row defines
@emph{names} for the different columns so that you can write
@samp{$Tot} instead of @samp{$6} --- useful in larger tables,
when counting columns becomes error prone.
@item
If the first field of a row contains only @samp{$}, fields in this row
can define @emph{parameters} for formulas. For example, if a field in
a @samp{$} row contains @samp{max=50}, then formulas in this table can
refer to the value 50 using @samp{$max}. Parameters work exactly like
constants, only that they can be defined on a per-table basis.
Changing a parameter and then recalculating the table can be useful
and fun.
@item
A column range @samp{$P1..$P3} is expanded to a vector, so that calc's
vector functions (in this case @samp{vsum}, but there are many more)
can be applied to ranges. For a range, columns may be referenced by
name or number, in either sequence.
@end enumerate
@noindent If a table contains any line with @samp{#} as the
first field, @kbd{C-u C-c *} will only change the marked lines and
leave all unmarked lines alone. You can also mark a line with
@samp{*}. These lines will also be recalculated with @kbd{C-u C-c *},
but not upon @key{TAB} and @key{RET}. Use this for lines which are
slow to calculate.
Just to wet your appetite on what can be done with the fantastic
@file{calc} package, here is a table that computes the Taylor series
for a couple of functions (homework: try that with Excel :-)
@example
@group
|---+-------------+---+-----+--------------------------------------|
| | Func | n | x | Result |
|---+-------------+---+-----+--------------------------------------|
| # | exp(x) | 1 | x | 1 + x |
| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
|---+-------------+---+-----+--------------------------------------|
#+TBLFM: $5=taylor($2,$4,$3);n3
@end group
@end example
@node Summing, , Recalculation, Table calculations
@subsection Summing
Finally, when typing a formula into a field, a number of special
keywords execute predefined sums over the current row or column and
enter the result into the current field. These calculations are
one-off, the formula is not stored, and you will neet to re-enter it
in order to compute again.
@example
= @r{Execute the stored formula valid in this column.}
=sum @r{Sum all fields above the current (alias @code{=sumv}).}
=sumh @r{Sum all fields to the left of the current field.}
=sum3 @r{Same as @samp{=sum}, but use just 3 fields above current.}
@end example
@node orgtbl-mode, table.el, Table calculations, Tables
@section The Orgtbl minor mode
@cindex orgtbl-mode
@cindex Minor mode for tables
@cindex minor mode for tables
If you like the intuitive way the Org-mode table editor works, you
might want to use it also in other modes like text-mode or mail-mode.
@ -809,6 +990,35 @@ example in mail mode, use
(add-hook 'mail-mode-hook 'turn-on-orgtbl)
@end lisp
@node table.el, , orgtbl-mode, Tables
@section The @file{table.el} package
@kindex C-c C-c
@cindex table editor, @file{table.el}
@cindex @file{table.el}
Complex ASCII tables with automatic line wrapping, column- and
row-spanning, and alignment can be created using the Emacs table
package by Takaaki Ota (@uref{http://sourceforge.net/projects/table}).
When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
will call @command{table-recognize-table} and move the cursor into the
table. Inside a table, the keymap of Org-mode is inactive. In order
to execute Org-mode-related commands, leave the table.
@table @kbd
@kindex C-c C-c
@item C-c C-c
Recognize @file{table.el} table. Works when the cursor is in a
table.el table.
@kindex C-c ~
@item C-c ~
Insert a table.el table. If there is already a table at point, this
command converts it between the table.el format and the Org-mode
format. See the documentation string of the command
@code{org-convert-table} for the restrictions under which this is
possible.
@end table
@node Hyperlinks, TODO items, Tables, Top
@chapter Hyperlinks
@cindex hyperlinks
@ -826,6 +1036,8 @@ articles, emails and much more.
@cindex links
@cindex GNUS links
@cindex BBDB links
@cindex URL links
@cindex file links
@cindex VM links
@cindex RMAIL links
@cindex WANDERLUST links
@ -877,6 +1089,8 @@ The key binding @kbd{C-c l} is only a suggestion - see
@ref{Installation and Activation}.
@kindex C-c C-l
@cindex completion, of links
@cindex completion, of file names
@item C-c C-l
Insert a link. This prompts for a link to be inserted into the
buffer. You can just type a link, using one of the link type prefixes
@ -969,8 +1183,8 @@ Before inserting the text into a tree, the function ensures that the
text has a headline, i.e. a first line that starts with a @samp{*}.
If not, a headline is constructed from the current date and some
additional data. If the variable @code{org-adapt-indentation} is
non-@code{nil}, the entire text is also indented so that it starts in
the same column as the headline (after the asterisks).
non-nil, the entire text is also indented so that it starts in the
same column as the headline (after the asterisks).
@node TODO items, Timestamps, Hyperlinks, Top
@chapter TODO items
@ -1057,6 +1271,7 @@ of working on an item, for example
org-todo-interpretation 'sequence)
@end lisp
@cindex completion, of TODO keywords
With this setup, the command @kbd{C-c C-t} will cycle an entry from
TODO to FEEDBACK, then to VERIFY, and finally too DONE. You may also
use a prefix argument to quickly select a specific state. For example
@ -1084,9 +1299,9 @@ would be set up like this:
In this case, different keywords do not indicate a sequence, but
rather different types. So it is normally not useful to change from
one type to another. Therefore, in this case the the behavior of the
one type to another. Therefore, in this case the behavior of the
command @kbd{C-c C-t} is changed slightly@footnote{This is also true
for the @kbd{t} command in the timeline and agenda buffers}. When
for the @kbd{t} command in the timeline and agenda buffers.}. When
used several times in succession, it will still cycle through all
names. But when when you return to the item after some time and
execute @kbd{C-c C-t} again, it will switch from each name directly to
@ -1111,7 +1326,7 @@ anywhere in the file:
#+TYP_TODO: Fred Sara Lucy Mike DONE
@end example
@cindex Completing option keywords
@cindex Completion, of option keywords
@kindex M-@key{TAB}
@noindent To make sure you are using the correct keyword, type
@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
@ -1171,7 +1386,7 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
@itemx S-@key{down}
Increase/decrease priority of current item. Note that these keys are
also used to modify time stamps (@pxref{Creating timestamps}).
Furthermore, these keys is also used by CUA-mode
Furthermore, these keys are also used by CUA-mode
(@pxref{Interaction}).
@end table
@ -1221,27 +1436,27 @@ example:
@end example
@item DEADLINE
@cindex deadline
@cindex DEADLINE keyword
If a time stamp is preceded by the word @samp{DEADLINE:}, the task
(most likely a TODO item) is supposed to be finished on that date, and
it will be listed then. In addition, the compilation for the
@emph{current day} will carry a warning about the approaching or
missed deadline, starting @code{org-deadline-warning-days} before the
due date, and continuing until the entry is marked DONE. An example:
it will be listed then. In addition, the compilation for @emph{today}
will carry a warning about the approaching or missed deadline,
starting @code{org-deadline-warning-days} before the due date, and
continuing until the entry is marked DONE. An example:
@example
*** TODO write article about the Earth for the Guide
The editor in charge is bbdb:Ford Prefect
The editor in charge is <bbdb:Ford Prefect>
DEADLINE: <2004-02-29 Sun>
@end example
@item SCHEDULED
@cindex scheduled
@cindex DEADLINE keyword
If a time stamp is preceded by the word @samp{SCHEDULED:}, it means
you are planning to start working on that task on the given date. The
headline will be listed under the given date. In addition, a reminder
that the scheduled date has passed will be present in the compilation
for the @emph{current day}, until the entry is marked DONE. I.e., the
for the @emph{today}, until the entry is marked DONE. I.e., the
task will automatically be forwarded.
@end table
@ -1310,7 +1525,7 @@ CUA-mode (@pxref{Interaction}).
Change the item under the cursor in a timestamp. The cursor can be on
a year, month, day, hour or minute. Note that if the cursor is not at
a time stamp, these same keys modify the priority of an item.
(@pxref{Priorities}). These key bindings conflict with CUA-mode
(@pxref{Priorities}). The key bindings also conflict with CUA-mode
(@pxref{Interaction}).
@ -1325,9 +1540,9 @@ into the following column).
@cindex date, reading in minibuffer
@cindex time, reading in minibuffer
@cindex calendar, for selecting date
When org prompts for a date/time, the function reading your input will
replace anything you choose not to specify with the current date and
time. For details, see the documentation string of
When Org-mode prompts for a date/time, the function reading your input
will replace anything you choose not to specify with the current date
and time. For details, see the documentation string of
@command{org-read-date}. Also, a calender will pop up to allow
selecting a date. The calendar can be fully controlled from the
minibuffer, and a date can be selected with the following commands:
@ -1487,12 +1702,12 @@ Emacs.
The display in the agenda buffer looks best if the category is not
longer than 10 characters.
@subsection Time Specifications
@subsection Time-of-Day Specifications
Org-mode checks each agenda item for a time specification. The time
can be part of the time stamp that triggered inclusion into the agenda,
for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time ranges can
be specified with two time stamps, like
Org-mode checks each agenda item for a timeof-day specification. The
time can be part of the time stamp that triggered inclusion into the
agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
ranges can be specified with two time stamps, like
@c
@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
@ -1608,10 +1823,14 @@ Delete other windows.
@kindex w
@item w
Toggle between weekly and daily view.
Switch to weekly view (7 days displayed together)
@kindex d
@item d
Switch to daily view (just one day displayed)
@kindex D
@item D
Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
@kindex g
@ -1663,7 +1882,7 @@ Display weighted priority of current item.
@kindex +
@kindex S-@key{up}
@item +
@item S-@key{up}
@itemx S-@key{up}
Increase the priority of the current item. The priority is changed in
the original buffer, but the agenda is not resorted. Use the @kbd{r}
key for this.
@ -1671,7 +1890,7 @@ key for this.
@kindex -
@kindex S-@key{down}
@item -
@item S-@key{down}
@itemx S-@key{down}
Decrease the priority of the current item.
@kindex S-@key{right}
@ -1782,12 +2001,12 @@ agenda, you only need to customize the variable
entries including holidays, anniversaries etc will be included in the
agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
@key{RET} can be used from the agenda buffer to jump to the diary
file, in order to edit existing diary entries. Also the @kbd{i}
command to insert new entries for the current date works in the agenda
buffer, as well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to
display Sunrise/Sunset times, show lunar phases and to convert to
other calendars, respectively. @kbd{c} can be used to switch back and
forth between calendar and agenda.
file, in order to edit existing diary entries. The @kbd{i} command to
insert new entries for the current date works in the agenda buffer, as
well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
Sunrise/Sunset times, show lunar phases and to convert to other
calendars, respectively. @kbd{c} can be used to switch back and forth
between calendar and agenda.
@node Agenda to diary, , Diary to agenda, Calendar/Diary integration
@subsection Including the agenda into the diary
@ -1827,9 +2046,8 @@ also the documentation of the @command{org-diary} function.
@node Exporting, Miscellaneous, Timeline and Agenda, Top
@chapter Exporting
@cindex exporting
@cindex ASCII file
@cindex HTML
@cindex ASCII export
@cindex HTML export
@cindex headline levels, for exporting
For printing and sharing of notes, an Org-mode document can be
@ -1896,6 +2114,7 @@ You can make words @b{*bold*}, @i{/italic/}, and _underlined_
@item
Simple @TeX{}-like math constructs are interpreted:
@cindex completion, of @TeX{} symbols
@itemize @minus
@item
@samp{10^22} and @samp{J_n} are super- and subscripts. You can quote
@ -1931,6 +2150,7 @@ they can all be turned off with corresponding variables.
@section Export options
@cindex options, for export
@cindex completion, of option keywords
The exporter recognizes special lines in the buffer which provide
additional information. These lines may be put anywhere in the file.
The whole set of lines can be inserted into the buffer with @kbd{C-c
@ -1953,7 +2173,7 @@ you can
@cindex headline levels
@cindex section-numbers
@cindex table of contents
@cindex linebreak-preservation
@cindex linebreak preservation
@cindex quoted html tags
@cindex fixed-width sections
@cindex tables
@ -2003,10 +2223,11 @@ Toggle the COMMENT keyword at the beginning of an entry.
@node Completion, Customization, Miscellaneous, Miscellaneous
@section Completion
@cindex complete @TeX{} symbols
@cindex complete TODO keywords
@cindex complete dictionary words
@cindex complete option keywords
@cindex completion, of @TeX{} symbols
@cindex completion, of TODO keywords
@cindex completion, of dictionary words
@cindex completion, of option keywords
@cindex completion, of keyword formulas
Org-mode supports in-buffer completion. This type of completion does
not make use of the minibuffer. You simply type a few letters into
@ -2027,6 +2248,8 @@ After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
option keyword is already complete, pressing @kbd{M-@key{TAB}} again
will insert example settings for this keyword.
@item
After @samp{=}, complete keyword formulas for tables.
@item
Elsewhere, complete dictionary words using ispell.
@end itemize
@end table
@ -2047,7 +2270,7 @@ Group} from the @code{Org->Customization} menu.
@section Frequently asked questions
@enumerate
@item @b{Org-mode seems to be useful default mode for the various
@item @b{Org-mode seems to be auseful default mode for the various
@file{README} files I have scattered through my directories. How do I
turn it on for all @file{README} files?}
@example
@ -2065,8 +2288,8 @@ possible because of the different outline implementation.
@item @b{Is there an easy way to insert links to web locations?}@*
@cindex URL, paste into buffer
Sure, just paste them into the buffer. A plain-text URL-like string
is directly interpreted as a link.
Sure, just type or paste them into the buffer. A plain-text URL-like
string is directly interpreted as a link.
@item @b{When I export my TODO list, every TODO item becomes a
separate section. How do I enforce these items to be exported as an
@ -2107,6 +2330,13 @@ To insert an empty table template, just type @samp{|-} and use
@code{org-table-default-size}. However, just starting to type the
first line is usually much easier.
@item @b{One of my table columns has started to fill up with
@samp{#ERROR}. What is going on?}@*
Org-mode tried to compute the column from other fields using a
formula stored in the @samp{#+TBLFMT:} line just below the table, and
the evaluation of the formula fails. Fix the fields used in the
formula, or fix the formula, or remove it!
@item @b{When I am in the last column of a table and just above a
horizontal line in the table, pressing TAB creates a new table line
@i{before} the horizontal line. How can I quickly move to the line
@ -2125,34 +2355,42 @@ indentation of the first line and realign with @key{TAB}.
@node Interaction, Bugs, FAQ, Miscellaneous
@section Interaction with other packages
@cindex packages, interaction with other
@cindex @file{planner.el}
@cindex @file{remember.el}
@cindex @file{table.el}
@file{Org.el} can cooperate with the following packages:
Org-mode can cooperate with the following packages:
@table @asis
@cindex @file{remember.el}
@item @file{remember.el} by John Wiegley
Org mode cooperates with remember, see @ref{Remember}.
@cindex @file{plannner.el}
@item @file{planner.el} by John Wiegley
Planner is another tool to plan work and keep track of tasks. Planner
uses a multi-file approach with project pages and day pages. Is based
on Emacs-Wiki. It can be useful to display the agenda entries
resulting from org files in day-pages of the planner. This can be
done through the diary of the calendar: Integrate org files into the
diary as described above, and then turn on the diary support of
planner.
@cindex @file{table.el}
@item @file{table.el} by Takaaki Ota
Org mode cooperates with table.el, see @ref{table.el}.
@cindex @file{calc.el}
@item @file{calc.el} by Dave Gillespie
Org-mode uses the calc package for implementing spreadsheet
functionality in its tables (@pxref{Table calculations}). Org-modes
checks for the availability of calc by looking for the function
@code{calc-eval} which should be autoloaded in your setup if calc has
been installed properly. As of Emacs 22, calc is part of the Emacs
distribution. Another possibility for interaction between the two
packages is using calc for embedded calculations. @xref{Embedded Mode,
, Embedded Mode, calc, The calc maanual}.
@cindex @file{constants.el}
@item @file{constants.el} by Carsten Dominik
In a table formula (@pxref{Table calculations}), it is possible to use
names for natural constants or units. Instead of defining you own
constants in the variable @code{org-table-formula-constants}, install
the @file{constants} package which defines a large number of constants
and units, and lets you use unit prefixes like @samp{M} for
@samp{Mega} etc. You will need version 2.0 of this package, available
at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
the function @code{constants-get}, which has to be autoloaded in your
setup. See the installation instructions in the file
@file{constants.el}.
@cindex @file{remember.el}
@cindex @file{CUA.el}
@item @file{CUA.el} by Kim. F. Storm
Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
used by CUA-mode (as well as pc-select-mode and s-region-mode) to
select and extend the region. If you want to use one of these
packages along with Org-mode, configure the variable
@code{org-CUA-compatible}. When set, Org-mode will move the folowing
@code{org-CUA-compatible}. When set, Org-mode will move the following
keybindings in org-mode files, and in the agenda buffer (but not
during date selection).
@example
@ -2163,7 +2401,17 @@ S-RET -> C-S-RET
Yes, these are unfortunately more difficult to remember. If you want
to have other replacement keys, look at the variable
@code{org-disputed-keys}.
@item @file{remember.el} by John Wiegley
Org mode cooperates with remember, see @ref{Remember}.
@cindex @file{planner.el}
@item @file{planner.el} by John Wiegley
Planner is another tool to plan work and keep track of tasks. Planner
uses a multi-file approach with project pages and day pages. Is based
on Emacs-Wiki. If Planner is your primary tool, it can be useful to
display the agenda entries resulting from org files in day-pages of
the planner. This can be done through the diary of the calendar:
Integrate org files into the diary as described above, and then turn
on the diary support of planner.
@end table
@node Bugs, Acknowledgments, Interaction, Miscellaneous
@ -2177,7 +2425,7 @@ have found too hard to fix.
@item
If you call @code{fill-paragraph} (bound to @kbd{M-q}) in a table, the
filling is correctly disabled. However, if some text directly
(without an empty line in between) preceeds or follws a table, calling
(without an empty line in between) preceeds or follows a table, calling
@code{fill-paragraph} in that text will also fill the table like
normal text. Also, @code{fill-region} does bypass the
@code{fill-paragraph} code and will fill tables like normal text.
@ -2186,6 +2434,10 @@ When the application called by @kbd{C-c C-o} to open a file link fails
(for example because the application does not exits or refuses to open
the file), it does so silently. No error message is displayed.
@item
Recalculating a table line applies the formulas from left to right.
If a formula calculated fields further doen the row, multiple
recalculation may be needed to get all fields consistent.
@item
Under XEmacs, if Org-mode entries are included into the diary, it is
not possible to jump back from the diary to the org file. Apparently,
the text properties are lost when the fancy-diary-display is used.
@ -2214,8 +2466,8 @@ suggestions and patches.
@itemize @bullet
@item
Matthias Rempe (Oelde) provided ideas and suggestions, a patch
introducing Windows NT/2000 support, and quality control.
Matthias Rempe (Oelde) provided ideas, a patch introducing Windows
NT/2000 support, and quality control.
@item
Kevin Rogers contributed code to access VM files on remote hosts.
@item
@ -2229,7 +2481,8 @@ his ideas have found their way into the agenda.
Philip Rooke created the Org-mode reference card. He also helped with
beta testing and contributed a number of very useful ideas.
@item
Christian Schlauer proposed angular brackets around links, and some
Christian Schlauer proposed angular brackets around links, among other
things.
other useful stuff.
@item
David Wainberg suggested to implement an archiving mechanism.

View file

@ -1,11 +1,80 @@
2005-06-29 Juanma Barranquero <lekktu@gmail.com>
* eval.c (user_variable_p_eh): New function.
(Fuser_variable_p): Use it. Clarify docstring.
Return t for aliases of user options, nil for alias loops.
2005-06-27 Richard M. Stallman <rms@gnu.org>
* eval.c (Fdefvar): Improve error message.
2005-06-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* macterm.c [USE_CARBON_EVENTS] (mac_convert_event_ref): Fix last
change.
2005-06-27 Juanma Barranquero <lekktu@gmail.com>
* eval.c (Fdefvar): Don't try to set constant symbols.
2005-06-25 Richard M. Stallman <rms@gnu.org>
* macfns.c (Fx_show_tip): Pass new arg to try_window.
* w32fns.c (Fx_show_tip): Pass new arg to try_window.
* xfns.c (Fx_show_tip): Pass new arg to try_window.
* xdisp.c (try_window): New arg CHECK_MARGINS. Calls changed.
(redisplay_window): Handle try_window reporting point in scroll margin.
* dispextern.h (try_window): Declare new arg.
* fileio.c (Fcopy_file): New arg PRESERVE_UID_GID.
Use fchmod to copy the file modes.
(Frename_file): Don't copy UID and GID here;
instead, specify t for PRESERVE_UID_GID when calling Fcopy_file.
* eval.c (call_debugger): Take full care of extending stack limits
to make space for the debugger, and restore the change afterward.
Bind debug-on-error to nil.
(restore_stack_limits): New subroutine.
(Fsignal): Extend specpdl bound along with eval depth bound,
for calling edebug. Don't do either one, for calling debugger.
(find_handler_clause): Don't bind debug-on-error here.
Don't unbind anything either.
Temporarily advance max_specpdl_size for calling
internal_with_output_to_temp_buffer.
(grow_specpdl): Don't alter max_specpdl_size before signaling
an error.
(syms_of_eval) <max-specpdl-size>: Doc fix.
* lread.c (read1): 0.0e+NaN should make a "positive" NaN.
2005-06-24 Eli Zaretskii <eliz@gnu.org>
* fileio.c (Frename_file): Undo last change: no need to ifdef away
chown on DOS_NT platforms.
* w32.c (sys_chown): New function.
* s/ms-w32.h (chown): New; define to sys_chown.
2005-06-24 Juanma Barranquero <lekktu@gmail.com>
* xdisp.c (syms_of_xdisp) <nobreak-char-display>: Doc fix.
(syms_of_xdisp) <void-text-area-pointer>: Doc fix.
* fileio.c (Frename_file)[!DOS_NT]: Don't call chown on MSDOS/Windows.
2005-06-23 Richard M. Stallman <rms@gnu.org>
* xdisp.c (get_next_display_element): Finish reversing the tests of
Vnobreak_char_display.
* xdisp.c (Vnobreak_char_display): Renamed from Vshow_nonbreak_escape.
* xdisp.c (Vnobreak_char_display): Rename from Vshow_nonbreak_escape.
All uses changed.
(Qnobreak_space): Renamed from Qno_break_space. All uses changed.
(Qnobreak_space): Rename from Qno_break_space. All uses changed.
(syms_of_xdisp): Define nobreak-char-display and nobreak-space.
* fileio.c (Frename_file): Preserve owner and group, if possible,
@ -301,8 +370,7 @@
2005-06-06 Eli Zaretskii <eliz@gnu.org>
* w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR):
Remove macros.
* w32heap.h (OFFSET_TO_RVA, RVA_TO_OFFSET, RVA_TO_PTR): Remove macros.
* unexw32.c (RVA_TO_PTR): Move here from w32heap.h.

View file

@ -2589,7 +2589,7 @@ int line_bottom_y P_ ((struct it *));
int display_prop_intangible_p P_ ((Lisp_Object));
void resize_echo_area_exactly P_ ((void));
int resize_mini_window P_ ((struct window *, int));
int try_window P_ ((Lisp_Object, struct text_pos));
int try_window P_ ((Lisp_Object, struct text_pos, int));
void window_box P_ ((struct window *, int, int *, int *, int *, int *));
int window_box_height P_ ((struct window *));
int window_text_bottom_y P_ ((struct window *));

View file

@ -227,6 +227,18 @@ init_eval ()
when_entered_debugger = -1;
}
/* unwind-protect function used by call_debugger. */
static Lisp_Object
restore_stack_limits (data)
Lisp_Object data;
{
max_specpdl_size = XINT (XCAR (data));
max_lisp_eval_depth = XINT (XCDR (data));
}
/* Call the Lisp debugger, giving it argument ARG. */
Lisp_Object
call_debugger (arg)
Lisp_Object arg;
@ -234,12 +246,22 @@ call_debugger (arg)
int debug_while_redisplaying;
int count = SPECPDL_INDEX ();
Lisp_Object val;
int old_max = max_specpdl_size;
if (lisp_eval_depth + 20 > max_lisp_eval_depth)
max_lisp_eval_depth = lisp_eval_depth + 20;
/* Temporarily bump up the stack limits,
so the debugger won't run out of stack. */
if (specpdl_size + 40 > max_specpdl_size)
max_specpdl_size = specpdl_size + 40;
max_specpdl_size += 1;
record_unwind_protect (restore_stack_limits,
Fcons (make_number (old_max),
make_number (max_lisp_eval_depth)));
max_specpdl_size = old_max;
if (lisp_eval_depth + 40 > max_lisp_eval_depth)
max_lisp_eval_depth = lisp_eval_depth + 40;
if (SPECPDL_INDEX () + 100 > max_specpdl_size)
max_specpdl_size = SPECPDL_INDEX () + 100;
#ifdef HAVE_X_WINDOWS
if (display_hourglass_p)
@ -256,6 +278,7 @@ call_debugger (arg)
specbind (intern ("debugger-may-continue"),
debug_while_redisplaying ? Qnil : Qt);
specbind (Qinhibit_redisplay, Qnil);
specbind (Qdebug_on_error, Qnil);
#if 0 /* Binding this prevents execution of Lisp code during
redisplay, which necessarily leads to display problems. */
@ -783,6 +806,10 @@ usage: (defvar SYMBOL &optional INITVALUE DOCSTRING) */)
register Lisp_Object sym, tem, tail;
sym = Fcar (args);
if (SYMBOL_CONSTANT_P (sym))
error ("Constant symbol `%s' specified in defvar",
SDATA (SYMBOL_NAME (sym)));
tail = Fcdr (args);
if (!NILP (Fcdr (Fcdr (tail))))
error ("Too many arguments");
@ -862,12 +889,24 @@ usage: (defconst SYMBOL INITVALUE [DOCSTRING]) */)
return sym;
}
/* Error handler used in Fuser_variable_p. */
static Lisp_Object
user_variable_p_eh (ignore)
Lisp_Object ignore;
{
return Qnil;
}
DEFUN ("user-variable-p", Fuser_variable_p, Suser_variable_p, 1, 1, 0,
doc: /* Returns t if VARIABLE is intended to be set and modified by users.
doc: /* Return t if VARIABLE is intended to be set and modified by users.
\(The alternative is a variable used internally in a Lisp program.)
Determined by whether the first character of the documentation
for the variable is `*' or if the variable is customizable (has a non-nil
value of `standard-value' or of `custom-autoload' on its property list). */)
A variable is a user variable if
\(1) the first character of its documentation is `*', or
\(2) it is customizable (its property list contains a non-nil value
of `standard-value' or `custom-autoload'), or
\(3) it is an alias for another user variable.
Return nil if VARIABLE is an alias and there is a loop in the
chain of symbols. */)
(variable)
Lisp_Object variable;
{
@ -876,23 +915,37 @@ value of `standard-value' or of `custom-autoload' on its property list). */)
if (!SYMBOLP (variable))
return Qnil;
documentation = Fget (variable, Qvariable_documentation);
if (INTEGERP (documentation) && XINT (documentation) < 0)
return Qt;
if (STRINGP (documentation)
&& ((unsigned char) SREF (documentation, 0) == '*'))
return Qt;
/* If it is (STRING . INTEGER), a negative integer means a user variable. */
if (CONSP (documentation)
&& STRINGP (XCAR (documentation))
&& INTEGERP (XCDR (documentation))
&& XINT (XCDR (documentation)) < 0)
return Qt;
/* Customizable? See `custom-variable-p'. */
if ((!NILP (Fget (variable, intern ("standard-value"))))
|| (!NILP (Fget (variable, intern ("custom-autoload")))))
return Qt;
return Qnil;
/* If indirect and there's an alias loop, don't check anything else. */
if (XSYMBOL (variable)->indirect_variable
&& NILP (internal_condition_case_1 (indirect_variable, variable,
Qt, user_variable_p_eh)))
return Qnil;
while (1)
{
documentation = Fget (variable, Qvariable_documentation);
if (INTEGERP (documentation) && XINT (documentation) < 0)
return Qt;
if (STRINGP (documentation)
&& ((unsigned char) SREF (documentation, 0) == '*'))
return Qt;
/* If it is (STRING . INTEGER), a negative integer means a user variable. */
if (CONSP (documentation)
&& STRINGP (XCAR (documentation))
&& INTEGERP (XCDR (documentation))
&& XINT (XCDR (documentation)) < 0)
return Qt;
/* Customizable? See `custom-variable-p'. */
if ((!NILP (Fget (variable, intern ("standard-value"))))
|| (!NILP (Fget (variable, intern ("custom-autoload")))))
return Qt;
if (!XSYMBOL (variable)->indirect_variable)
return Qnil;
/* An indirect variable? Let's follow the chain. */
variable = XSYMBOL (variable)->value;
}
}
DEFUN ("let*", FletX, SletX, 1, UNEVALLED, 0,
@ -1533,7 +1586,16 @@ See also the function `condition-case'. */)
/* This hook is used by edebug. */
if (! NILP (Vsignal_hook_function)
&& ! NILP (error_symbol))
call2 (Vsignal_hook_function, error_symbol, data);
{
/* Edebug takes care of restoring these variables when it exits. */
if (lisp_eval_depth + 20 > max_lisp_eval_depth)
max_lisp_eval_depth = lisp_eval_depth + 20;
if (SPECPDL_INDEX () + 40 > max_specpdl_size)
max_specpdl_size = SPECPDL_INDEX () + 40;
call2 (Vsignal_hook_function, error_symbol, data);
}
conditions = Fget (real_error_symbol, Qerror_conditions);
@ -1555,12 +1617,6 @@ See also the function `condition-case'. */)
{
register Lisp_Object clause;
if (lisp_eval_depth + 20 > max_lisp_eval_depth)
max_lisp_eval_depth = lisp_eval_depth + 20;
if (specpdl_size + 40 > max_specpdl_size)
max_specpdl_size = specpdl_size + 40;
clause = find_handler_clause (handlerlist->handler, conditions,
error_symbol, data, &debugger_value);
@ -1673,7 +1729,11 @@ skip_debugger (conditions, data)
= SIG is nil, and DATA is (SYMBOL . REST-OF-DATA).
This is for memory-full errors only.
Store value returned from debugger into *DEBUGGER_VALUE_PTR. */
Store value returned from debugger into *DEBUGGER_VALUE_PTR.
We need to increase max_specpdl_size temporarily around
anything we do that can push on the specpdl, so as not to get
a second error here in case we're handling specpdl overflow. */
static Lisp_Object
find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
@ -1691,7 +1751,6 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
|| !NILP (Vdebug_on_signal)) /* This says call debugger even if
there is a handler. */
{
int count = SPECPDL_INDEX ();
int debugger_called = 0;
Lisp_Object sig_symbol, combined_data;
/* This is set to 1 if we are handling a memory-full error,
@ -1713,6 +1772,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
if (wants_debugger (Vstack_trace_on_error, conditions))
{
max_specpdl_size++;
#ifdef PROTOTYPES
internal_with_output_to_temp_buffer ("*Backtrace*",
(Lisp_Object (*) (Lisp_Object)) Fbacktrace,
@ -1721,6 +1781,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
internal_with_output_to_temp_buffer ("*Backtrace*",
Fbacktrace, Qnil);
#endif
max_specpdl_size--;
}
if (! no_debugger
&& (EQ (sig_symbol, Qquit)
@ -1729,7 +1790,6 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
&& ! skip_debugger (conditions, combined_data)
&& when_entered_debugger < num_nonmacro_input_events)
{
specbind (Qdebug_on_error, Qnil);
*debugger_value_ptr
= call_debugger (Fcons (Qerror,
Fcons (combined_data, Qnil)));
@ -1739,7 +1799,7 @@ find_handler_clause (handlers, conditions, sig, data, debugger_value_ptr)
if (EQ (handlers, Qerror))
{
if (debugger_called)
return unbind_to (count, Qlambda);
return Qlambda;
return Qt;
}
}
@ -3019,13 +3079,8 @@ grow_specpdl ()
if (max_specpdl_size < 400)
max_specpdl_size = 400;
if (specpdl_size >= max_specpdl_size)
{
if (!NILP (Vdebug_on_error))
/* Leave room for some specpdl in the debugger. */
max_specpdl_size = specpdl_size + 100;
Fsignal (Qerror,
Fcons (build_string ("Variable binding depth exceeds max-specpdl-size"), Qnil));
}
Fsignal (Qerror,
Fcons (build_string ("Variable binding depth exceeds max-specpdl-size"), Qnil));
}
specpdl_size *= 2;
if (specpdl_size > max_specpdl_size)
@ -3333,7 +3388,7 @@ syms_of_eval ()
{
DEFVAR_INT ("max-specpdl-size", &max_specpdl_size,
doc: /* *Limit on number of Lisp variable bindings & unwind-protects.
If Lisp code tries to make more than this many at once,
If Lisp code tries to increase the total number past this amount,
an error is signaled.
You can safely use a value considerably larger than the default value,
if that proves inconveniently small. However, if you increase it too far,

View file

@ -2411,7 +2411,7 @@ barf_or_query_if_file_exists (absname, querystring, interactive, statptr, quick)
return;
}
DEFUN ("copy-file", Fcopy_file, Scopy_file, 2, 5,
DEFUN ("copy-file", Fcopy_file, Scopy_file, 2, 6,
"fCopy file: \nGCopy %s to file: \np\nP",
doc: /* Copy FILE to NEWNAME. Both args must be strings.
If NEWNAME names a directory, copy FILE there.
@ -2431,9 +2431,13 @@ for an existing file with the same name. If MUSTBENEW is `excl',
that means to get an error if the file already exists; never overwrite.
If MUSTBENEW is neither nil nor `excl', that means ask for
confirmation before overwriting, but do go ahead and overwrite the file
if the user confirms. */)
(file, newname, ok_if_already_exists, keep_time, mustbenew)
if the user confirms.
If PRESERVE-UID-GID is non-nil, we try to transfer the
uid and gid of FILE to NEWNAME. */)
(file, newname, ok_if_already_exists, keep_time, mustbenew, preserve_uid_gid)
Lisp_Object file, newname, ok_if_already_exists, keep_time, mustbenew;
Lisp_Object preserve_uid_gid;
{
int ifd, ofd, n;
char buf[16 * 1024];
@ -2575,6 +2579,26 @@ if the user confirms. */)
report_file_error ("I/O error", Fcons (newname, Qnil));
immediate_quit = 0;
/* Preserve the owner and group, if requested. */
if (input_file_statable_p && ! NILP (preserve_uid_gid))
fchown (ofd, st.st_uid, st.st_gid);
if (input_file_statable_p)
{
#ifndef MSDOS
fchmod (ofd, st.st_mode & 07777);
#else /* MSDOS */
#if defined (__DJGPP__) && __DJGPP__ > 1
/* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
and if it can't, it tells so. Otherwise, under MSDOS we usually
get only the READ bit, which will make the copied file read-only,
so it's better not to chmod at all. */
if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
chmod (SDATA (encoded_newname), st.st_mode & 07777);
#endif /* DJGPP version 2 or newer */
#endif /* MSDOS */
}
/* Closing the output clobbers the file times on some systems. */
if (emacs_close (ofd) < 0)
report_file_error ("I/O error", Fcons (newname, Qnil));
@ -2592,18 +2616,6 @@ if the user confirms. */)
Fcons (build_string ("Cannot set file date"),
Fcons (newname, Qnil)));
}
#ifndef MSDOS
chmod (SDATA (encoded_newname), st.st_mode & 07777);
#else /* MSDOS */
#if defined (__DJGPP__) && __DJGPP__ > 1
/* In DJGPP v2.0 and later, fstat usually returns true file mode bits,
and if it can't, it tells so. Otherwise, under MSDOS we usually
get only the READ bit, which will make the copied file read-only,
so it's better not to chmod at all. */
if ((_djstat_flags & _STFAIL_WRITEBIT) == 0)
chmod (SDATA (encoded_newname), st.st_mode & 07777);
#endif /* DJGPP version 2 or newer */
#endif /* MSDOS */
}
emacs_close (ifd);
@ -2780,7 +2792,6 @@ This is what happens in interactive use with M-x. */)
{
if (errno == EXDEV)
{
struct stat data;
#ifdef S_IFLNK
symlink_target = Ffile_symlink_p (file);
if (! NILP (symlink_target))
@ -2788,15 +2799,11 @@ This is what happens in interactive use with M-x. */)
NILP (ok_if_already_exists) ? Qnil : Qt);
else
#endif
Fcopy_file (file, newname,
/* We have already prompted if it was an integer,
so don't have copy-file prompt again. */
NILP (ok_if_already_exists) ? Qnil : Qt,
Qt, Qnil);
/* Preserve owner and group, if possible (if we are root). */
if (stat (SDATA (encoded_file), &data) >= 0)
chown (SDATA (encoded_file), data.st_uid, data.st_gid);
Fcopy_file (file, newname,
/* We have already prompted if it was an integer,
so don't have copy-file prompt again. */
NILP (ok_if_already_exists) ? Qnil : Qt,
Qt, Qnil, Qt);
Fdelete_file (file);
}

View file

@ -2715,6 +2715,23 @@ read1 (readcharfun, pch, first_in_list)
break;
case 'N':
value = zero / zero;
/* If that made a "negative" NaN, negate it. */
{
int i;
union { double d; char c[sizeof (double)]; } u_data, u_minus_zero;
u_data.d = value;
u_minus_zero.d = - 0.0;
for (i = 0; i < sizeof (double); i++)
if (u_data.c[i] & u_minus_zero.c[i])
{
value = - value;
break;
}
}
/* Now VALUE is a positive NaN. */
break;
default:
value = atof (read_buffer + negative);

View file

@ -4088,7 +4088,7 @@ Text larger than the specified size is clipped. */)
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
try_window (FRAME_ROOT_WINDOW (f), pos);
try_window (FRAME_ROOT_WINDOW (f), pos, 0);
/* Compute width and height of the tooltip. */
width = height = 0;

View file

@ -7666,6 +7666,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
default:
break;
}
break;
case kEventClassKeyboard:
switch (GetEventKind (eventRef))
@ -7688,6 +7689,7 @@ static Boolean mac_convert_event_ref (EventRef eventRef, EventRecord *eventRec)
default:
break;
}
break;
default:
break;

View file

@ -311,6 +311,7 @@ Boston, MA 02111-1307, USA. */
#define chdir sys_chdir
#undef chmod
#define chmod sys_chmod
#define chown sys_chown
#undef close
#define close sys_close
#undef creat

View file

@ -1897,6 +1897,14 @@ sys_chmod (const char * path, int mode)
return _chmod (map_w32_filename (path, NULL), mode);
}
int
sys_chown (const char *path, uid_t owner, gid_t group)
{
if (sys_chmod (path, _S_IREAD) == -1) /* check if file exists */
return -1;
return 0;
}
int
sys_creat (const char * path, int mode)
{

View file

@ -7648,7 +7648,7 @@ Text larger than the specified size is clipped. */)
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
try_window (FRAME_ROOT_WINDOW (f), pos);
try_window (FRAME_ROOT_WINDOW (f), pos, 0);
/* Compute width and height of the tooltip. */
width = height = 0;

View file

@ -7697,7 +7697,7 @@ display_echo_area_1 (a1, a2, a3, a4)
clear_glyph_matrix (w->desired_matrix);
XSETWINDOW (window, w);
SET_TEXT_POS (start, BEG, BEG_BYTE);
try_window (window, start);
try_window (window, start, 0);
return window_height_changed_p;
}
@ -11665,7 +11665,7 @@ try_scrolling (window, just_this_one_p, scroll_conservatively,
/* Display the window. Give up if new fonts are loaded, or if point
doesn't appear. */
if (!try_window (window, startp))
if (!try_window (window, startp, 0))
rc = SCROLLING_NEED_LARGER_MATRICES;
else if (w->cursor.vpos < 0)
{
@ -12268,6 +12268,7 @@ redisplay_window (window, just_this_one_p)
{
/* We set this later on if we have to adjust point. */
int new_vpos = -1;
int val;
w->force_start = Qnil;
w->vscroll = 0;
@ -12301,12 +12302,16 @@ redisplay_window (window, just_this_one_p)
/* Redisplay, then check if cursor has been set during the
redisplay. Give up if new fonts were loaded. */
if (!try_window (window, startp))
val = try_window (window, startp, 1);
if (!val)
{
w->force_start = Qt;
clear_glyph_matrix (w->desired_matrix);
goto need_larger_matrices;
}
/* Point was outside the scroll margins. */
if (val < 0)
new_vpos = window_box_height (w) / 2;
if (w->cursor.vpos < 0 && !w->frozen_window_start_p)
{
@ -12349,7 +12354,7 @@ redisplay_window (window, just_this_one_p)
&& !NILP (current_buffer->mark_active))
{
clear_glyph_matrix (w->desired_matrix);
if (!try_window (window, startp))
if (!try_window (window, startp, 0))
goto need_larger_matrices;
}
}
@ -12439,7 +12444,11 @@ redisplay_window (window, just_this_one_p)
= try_window_reusing_current_matrix (w)))
{
IF_DEBUG (debug_method_add (w, "1"));
try_window (window, startp);
if (try_window (window, startp, 1) < 0)
/* -1 means we need to scroll.
0 means we need new matrices, but fonts_changed_p
is set in that case, so we will detect it below. */
goto try_to_scroll;
}
if (fonts_changed_p)
@ -12569,7 +12578,7 @@ redisplay_window (window, just_this_one_p)
|| MINI_WINDOW_P (w)
|| !(used_current_matrix_p
= try_window_reusing_current_matrix (w)))
try_window (window, startp);
try_window (window, startp, 0);
/* If new fonts have been loaded (due to fontsets), give up. We
have to start a new redisplay since we need to re-adjust glyph
@ -12589,13 +12598,13 @@ redisplay_window (window, just_this_one_p)
{
clear_glyph_matrix (w->desired_matrix);
move_it_by_lines (&it, 1, 0);
try_window (window, it.current.pos);
try_window (window, it.current.pos, 0);
}
else if (PT < IT_CHARPOS (it))
{
clear_glyph_matrix (w->desired_matrix);
move_it_by_lines (&it, -1, 0);
try_window (window, it.current.pos);
try_window (window, it.current.pos, 0);
}
else
{
@ -12778,14 +12787,18 @@ redisplay_window (window, just_this_one_p)
/* Build the complete desired matrix of WINDOW with a window start
buffer position POS. Value is non-zero if successful. It is zero
if fonts were loaded during redisplay which makes re-adjusting
glyph matrices necessary. */
buffer position POS.
Value is 1 if successful. It is zero if fonts were loaded during
redisplay which makes re-adjusting glyph matrices necessary, and -1
if point would appear in the scroll margins.
(We check that only if CHECK_MARGINS is nonzero. */
int
try_window (window, pos)
try_window (window, pos, check_margins)
Lisp_Object window;
struct text_pos pos;
int check_margins;
{
struct window *w = XWINDOW (window);
struct it it;
@ -12810,6 +12823,30 @@ try_window (window, pos)
return 0;
}
/* Don't let the cursor end in the scroll margins. */
if (check_margins)
{
int this_scroll_margin, cursor_height;
this_scroll_margin = max (0, scroll_margin);
this_scroll_margin = min (this_scroll_margin, WINDOW_TOTAL_LINES (w) / 4);
this_scroll_margin *= FRAME_LINE_HEIGHT (it.f);
cursor_height = MATRIX_ROW (w->desired_matrix, w->cursor.vpos)->height;
if ((w->cursor.y < this_scroll_margin
&& CHARPOS (pos) > BEGV)
/* Old redisplay didn't take scroll margin into account at the bottom,
but then global-hl-line-mode doesn't scroll. KFS 2004-06-14 */
|| (w->cursor.y + (make_cursor_line_fully_visible_p
? cursor_height + this_scroll_margin
: 1)) > it.last_visible_y)
{
w->cursor.vpos = -1;
clear_glyph_matrix (w->desired_matrix);
return -1;
}
}
/* If bottom moved off end of frame, change mode line percentage. */
if (XFASTINT (w->window_end_pos) <= 0
&& Z != IT_CHARPOS (it))
@ -21801,7 +21838,7 @@ note_mouse_highlight (f, x, y)
/* If we were displaying active text in another window, clear that.
Also clear if we move out of text area in same window. */
if (! EQ (window, dpyinfo->mouse_face_window)
|| (part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE
|| (part != ON_TEXT && part != ON_MODE_LINE && part != ON_HEADER_LINE
&& !NILP (dpyinfo->mouse_face_window)))
clear_mouse_face (dpyinfo);
@ -23026,17 +23063,17 @@ The face used for trailing whitespace is `trailing-whitespace'. */);
DEFVAR_LISP ("nobreak-char-display", &Vnobreak_char_display,
doc: /* *Control highlighting of nobreak space and soft hyphen.
t means highlight the character itself (for nobreak space,
use face `nobreak-space'.
nil means no highlighting.
other values mean display the escape glyph followed by an ordinary
A value of t means highlight the character itself (for nobreak space,
use face `nobreak-space').
A value of nil means no highlighting.
Other values mean display the escape glyph followed by an ordinary
space or ordinary hyphen. */);
Vnobreak_char_display = Qt;
DEFVAR_LISP ("void-text-area-pointer", &Vvoid_text_area_pointer,
doc: /* *The pointer shape to show in void text areas.
Nil means to show the text pointer. Other options are `arrow', `text',
`hand', `vdrag', `hdrag', `modeline', and `hourglass'. */);
A value of nil means to show the text pointer. Other options are `arrow',
`text', `hand', `vdrag', `hdrag', `modeline', and `hourglass'. */);
Vvoid_text_area_pointer = Qarrow;
DEFVAR_LISP ("inhibit-redisplay", &Vinhibit_redisplay,

View file

@ -5070,7 +5070,7 @@ Text larger than the specified size is clipped. */)
clear_glyph_matrix (w->desired_matrix);
clear_glyph_matrix (w->current_matrix);
SET_TEXT_POS (pos, BEGV, BEGV_BYTE);
try_window (FRAME_ROOT_WINDOW (f), pos);
try_window (FRAME_ROOT_WINDOW (f), pos, 0);
/* Compute width and height of the tooltip. */
width = height = 0;