mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-06-14 12:31:25 +00:00
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:
commit
eeb88b27e1
79 changed files with 6404 additions and 1266 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
93
etc/NEWS
93
etc/NEWS
|
|
@ -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.
|
||||
|
|
|
|||
32
etc/PROBLEMS
32
etc/PROBLEMS
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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
2749
etc/orgcard.ps
Normal file
File diff suppressed because it is too large
Load diff
737
etc/orgcard.tex
Normal file
737
etc/orgcard.tex
Normal 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
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
261
lisp/ChangeLog
261
lisp/ChangeLog
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -59,6 +59,7 @@
|
|||
|
||||
;;; Face attributes.
|
||||
|
||||
;;;###autoload
|
||||
(defconst custom-face-attributes
|
||||
'((:family
|
||||
(string :tag "Font Family"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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 ()
|
||||
|
|
|
|||
|
|
@ -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))))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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))))))
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)))))))
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
285
lisp/recentf.el
285
lisp/recentf.el
|
|
@ -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
|
||||
|
|
|
|||
126
lisp/replace.el
126
lisp/replace.el
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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))
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
38
lisp/subr.el
38
lisp/subr.el
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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!
|
||||
|
|
|
|||
|
|
@ -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!
|
||||
|
|
|
|||
|
|
@ -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)))
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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)))))
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.*
|
||||
|
|
|
|||
529
man/org.texi
529
man/org.texi
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -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.
|
||||
|
||||
|
|
|
|||
|
|
@ -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 *));
|
||||
|
|
|
|||
143
src/eval.c
143
src/eval.c
|
|
@ -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,
|
||||
|
|
|
|||
57
src/fileio.c
57
src/fileio.c
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
17
src/lread.c
17
src/lread.c
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
75
src/xdisp.c
75
src/xdisp.c
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in a new issue