1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2025-01-26 19:18:50 +00:00

Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-40

Merge from emacs--cvs-trunk--0

Patches applied:

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

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-536
   sync-tree with gnus--rel--5.10

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

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

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

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

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

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

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

 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-549
   Use symbol-matching for generic-mode keywords

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

 * miles@gnu.org--gnu-2004/gnus--devo--0--patch-2
   Add {arch}/=cvs-sync-make-log

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0
   Import from Gnus CVS branch V5-8

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-1
   {arch}/=tagging-method: Add CVS and autoconf grot to junk regexp

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-2
   Use explicit tags for autoconf input files

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-3
   Remove RCS keywords

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-4
   Fix copied explicit id-tags

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-5
   Add {arch}/=cvs-sync-make-log

 * miles@gnu.org--gnu-2004/gnus--rel--5.8--patch-6
   configure.in: Use ifelse instead of m4_if for arch-tag: comment

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--base-0
   tag of miles@gnu.org--gnu-2004/gnus--rel--5.8--base-0

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-1
   Gnus 5.10, from CVS branch v5-10

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-2
   Merge from gnus--rel--5.8

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-3
   Use explicit tags for autoconf input files

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-4
   sync-tree with gnus--rel--5.8

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

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-6
   Merge from gnus--rel--5.8

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-7
   Remove RCS keywords

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-8
   Merge from gnus--rel--5.8

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

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-10
   Add {arch}/=cvs-sync-make-log

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-11
   Merge from gnus--rel--5.8

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-12
   Update from CVS: make.bat: Fix line endings around arch-tag.

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

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

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-22
   Update from CVS: lisp/nndb.el (require): Remove tcp and duplicate cl.

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

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-24
   lisp/nnimap.el (nnimap-open-connection): Remove extraneous end-paren

 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-25
 - miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-26
   Update from CVS
This commit is contained in:
Miles Bader 2004-09-15 09:00:10 +00:00
commit a63aa6924c
56 changed files with 2449 additions and 1455 deletions

View File

@ -1,3 +1,9 @@
2004-09-11 Kim F. Storm <storm@cua.dk>
* FOR-RELEASE (New features): Remove Gnus 5.10 entry (Done!).
(Documentation): Add NEWS entry.
Add section lists for proof-reading Emacs and Lisp manuals.
2004-08-29 Kim F. Storm <storm@cua.dk>
* FOR-RELEASE (Documentation): Add man/ack.texi and AUTHORS.

View File

@ -1,32 +1,11 @@
Tasks needed before the next release.
* DOCUMENTATION
** Finish updating the Emacs Lisp manual.
** Finish checking the Emacs Lisp manual.
** Update the Emacs manual.
** Check the Emacs Manual.
** Add missing years in copyright notices of all files.
** Update man/info.texi.
** Update man/ack.texi.
** Update AUTHORS.
* NEW FEATURES
** Test the mbox branch of Rmail.
** Install the mbox branch of Rmail.
** Update Gnus.
** Face remapping.
@ -44,6 +23,178 @@ isearch faces.
** Make GTK scrollbars behave like others w.r.t. overscrolling.
* DOCUMENTATION
** Finish updating the Emacs Lisp manual.
*** New display properties (KFS to provide input).
** Update the Emacs manual.
*** Update man/info.texi.
*** Update man/ack.texi.
** Add missing years in copyright notices of all files.
** Update AUTHORS.
** Reorder NEWS entries.
** Check the Emacs manual.
Write you name/initials in the DONE column when you have
proof-read the corresponding manual section.
DONE SECTION
---------------------------------------------
man/abbrevs.texi
man/ack.texi
man/ada-mode.texi
man/anti.texi
man/autotype.texi
man/back.texi
man/basic.texi
man/buffers.texi
man/building.texi
man/calc.texi
man/calendar.texi
man/cc-mode.texi
man/cl.texi
man/cmdargs.texi
man/commands.texi
man/custom.texi
man/dired.texi
man/dired-x.texi
man/display.texi
man/doclicense.texi
man/ebrowse.texi
man/ediff.texi
man/emacs-mime.texi
man/emacs.texi
man/emacs-xtra.texi
man/entering.texi
man/eshell.texi
man/eudc.texi
man/faq.texi
man/files.texi
man/fixit.texi
man/flymake.texi
man/forms.texi
man/frames.texi
man/glossary.texi
man/gnus-faq.texi
man/gnus.texi
man/gnu.texi
man/help.texi
man/idlwave.texi
man/indent.texi
man/info.texi
man/killing.texi
man/kmacro.texi
man/macos.texi
man/maintaining.texi
man/major.texi
man/mark.texi
man/message.texi
man/mh-e.texi
man/mini.texi
man/misc.texi
man/msdog.texi
man/mule.texi
man/m-x.texi
man/pcl-cvs.texi
man/pgg.texi
man/picture.texi
man/programs.texi
man/reftex.texi
man/regs.texi
man/rmail.texi
man/screen.texi
man/sc.texi
man/search.texi
man/sending.texi
man/ses.texi
man/sieve.texi
man/smtpmail.texi
man/speedbar.texi
man/texinfo.tex
man/text.texi
man/tramp.texi
man/trampver.texi
man/trouble.texi
man/viper.texi
man/vip.texi
man/widget.texi
man/windows.texi
man/woman.texi
man/xresources.texi
** Check the Emacs Lisp manual.
Write you name/initials in the DONE column when you have
proof-read the corresponding manual section.
DONE SECTION
---------------------------------------------
lispref/abbrevs.texi
lispref/advice.texi
lispref/anti.texi
lispref/back.texi
lispref/backups.texi
lispref/buffers.texi
lispref/calendar.texi
lispref/commands.texi
lispref/compile.texi
lispref/control.texi
lispref/customize.texi
lispref/debugging.texi
lispref/display.texi
lispref/doclicense.texi
lispref/edebug.texi
lispref/elisp-covers.texi
lispref/elisp.texi
lispref/errors.texi
lispref/eval.texi
lispref/files.texi
lispref/frames.texi
lispref/front-cover-1.texi
lispref/functions.texi
lispref/gpl.texi
lispref/hash.texi
lispref/help.texi
lispref/hooks.texi
lispref/index.texi
lispref/internals.texi
lispref/intro.texi
lispref/keymaps.texi
lispref/lay-flat.texi
lispref/lists.texi
lispref/loading.texi
lispref/locals.texi
lispref/macros.texi
lispref/maps.texi
lispref/markers.texi
lispref/minibuf.texi
lispref/modes.texi
lispref/nonascii.texi
lispref/numbers.texi
lispref/objects.texi
lispref/os.texi
lispref/positions.texi
lispref/processes.texi
lispref/searching.texi
lispref/sequences.texi
lispref/streams.texi
lispref/strings.texi
lispref/symbols.texi
lispref/syntax.texi
lispref/text.texi
lispref/tips.texi
lispref/variables.texi
lispref/windows.texi
Local variables:
mode: outline

View File

@ -1,3 +1,7 @@
2004-09-09 Thien-Thi Nguyen <ttn@gnu.org>
* MORE.STUFF (EDB): Update entry.
2004-09-07 Dan Nicolaescu <dann@ics.uci.edu>
* e/eterm.ti: Add `op' entry to enable colors in term.

View File

@ -2,7 +2,7 @@
This file contains two sections:
1) An EBNF (Extended Backus Normal Form) description of the format of
1) An EBNF (Extended Backus-Naur Form) description of the format of
the tags file created by etags.c and interpreted by etags.el;
2) A discussion of tag names and implicit tag names.
@ -81,7 +81,7 @@ substring of the tag pattern. We define a set of rules to decide
whether it is possible to deduce the tag name from the pattern, and make
an unnamed tag in those cases. The name deduced from the pattern of an
unnamed tag is the implicit name of that tag.
When the user looks for a tag, and Emacs founds no explicit tag names
When the user looks for a tag, and Emacs finds no explicit tag names
that match it, Emacs then looks for an tag whose implicit tag name
matches the request. etags.c uses implicit tag names when possible, in
order to reduce the size of the tags file.

View File

@ -140,9 +140,7 @@ Several are for Debian GNU/Linux in particular.
* Dismal: spreadsheet:
<URL:http://acs.ist.psu.edu/dismal/dismal.html>
* EDB: database:
<URL:http://sdg.lcs.mit.edu/%7Emernst/software/edb-mrp.tar.gz>
Not maintained?
* EDB: database: <URL:http://www.glug.org/people/ttn/software/edb/>
* Ee: categorizing information manager:
<URL:http://www.jurta.org/emacs/ee/>

View File

@ -692,6 +692,8 @@ version 4.7 or newer, compiles to Info pages with embedded images.
'sql-sqlite'.
** BibTeX mode:
*** The new command bibtex-url browses a URL for the BibTeX entry at
point (bound to C-c C-l and mouse-2 on clickable fields).
*** The new command bibtex-entry-update (bound to C-c C-u) updates
an existing BibTeX entry.
*** New `bibtex-entry-format' option `required-fields', enabled by default.
@ -1247,9 +1249,9 @@ and to type `C-f' at the end of the search string in the minibuffer.
search string used as the string to replace.
+++
** New user option `isearch-resume-enabled'.
This option can be disabled, to avoid the normal behavior of isearch
which puts calls to `isearch-resume' in the command history.
** Isearch no longer adds `isearch-resume' commands to the command
history by default. To enable this feature, customize the new
user option `isearch-resume-in-command-history'.
+++
** New user option `history-delete-duplicates'.
@ -1569,29 +1571,31 @@ per line. Lines beginning with space or tab are ignored.
**** The `::' qualifier triggers C++ parsing in C file.
Previously, only the `template' and `class' keywords had this effect.
**** In Perl, packages are tags.
Subroutine tags are named from their package. You can jump to sub tags
as you did before, by the sub name, or additionally by looking for
package::sub.
**** New language PHP.
Tags are functions, classes and defines.
If the --members option is specified to etags, tags are vars also.
**** New language HTML.
Title and h1, h2, h3 are tagged. Also, tags are generated when name= is
used inside an anchor and whenever id= is used.
**** New default keywords for TeX.
The new keywords are def, newcommand, renewcommand, newenvironment and
renewenvironment.
**** In Makefiles, constants are tagged.
If you want the old behavior instead, thus avoiding to increase the
size of the tags file, use the --no-globals option.
**** In Lua, all functions are tagged.
**** In Perl, packages are tags.
Subroutine tags are named from their package. You can jump to sub tags
as you did before, by the sub name, or additionally by looking for
package::sub.
**** In Prolog, etags creates tags for rules in addition to predicates.
**** New language PHP.
Tags are functions, classes and defines.
If the --members option is specified to etags, tags are vars also.
**** New default keywords for TeX.
The new keywords are def, newcommand, renewcommand, newenvironment and
renewenvironment.
*** Honour #line directives.
When Etags parses an input file that contains C preprocessor's #line
directives, it creates tags using the file name and line number
@ -1602,7 +1606,7 @@ writes tags pointing to the source file.
*** New option --parse-stdin=FILE.
This option is mostly useful when calling etags from programs. It can
be used (only once) in place of a file name on the command line. Etags
reads from standard input and mark the produced tags as belonging to
reads from standard input and marks the produced tags as belonging to
the file FILE.
+++
@ -2075,6 +2079,10 @@ anyone has committed to the repository since you last executed
* New modes and packages in Emacs 21.4
** 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
to increment the SOA serial.
** The new package flymake.el does on-the-fly syntax checking of program
source files. See the Flymake's Info manual for more details.

View File

@ -50,7 +50,7 @@ format understood by
.BR vi ( 1 )\c
\&. Both forms of the program understand
the syntax of C, Objective C, C++, Java, Fortran, Ada, Cobol, Erlang, HTML,
LaTeX, Emacs Lisp/Common Lisp, makefiles, Pascal, Perl, PHP, Postscript,
LaTeX, Emacs Lisp/Common Lisp, Lua, makefile, Pascal, Perl, PHP, Postscript,
Python, Prolog, Scheme and
most assembler\-like syntaxes.
Both forms read the files specified on the command line, and write a tag
@ -58,7 +58,9 @@ table (defaults: \fBTAGS\fP for \fBetags\fP, \fBtags\fP for
\fBctags\fP) in the current working directory.
Files specified with relative file names will be recorded in the tag
table with file names relative to the directory where the tag table
resides. Files specified with absolute file names will be recorded
resides. If the tag table is in /dev, however, the file names are made
relative to the working directory. Files specified with absolute file
names will be recorded
with absolute file names. Files generated from a source file\-\-like
a C file generated from a source Cweb file\-\-will be recorded with
the name of the source file.

View File

@ -1,3 +1,28 @@
2004-09-13 Francesco Potort,Al(B <pot@gnu.org>
* etags.c (main): When relative file names are given as argument,
make them relative to the current working dir, rather than
relative to the output tags file, if the latter is in /dev.
2004-09-13 Francesco Potort,Al(B <pot@gnu.org>
* etags.c [EXIT_SUCCESS, EXIT_FAILURE]: Define them when no
<stdlib.h> is available.
(enum sym_type): New st_C_attribute value for parsing
gcc's __attribute__. Deleted st_C_typespec value.
(gperf, in_word_set): Use gperf 3, options changed. Added the
__attribute__ keyword, removed all the st_C_typespec keywords,
changed attribute for Java to (C_JAVA & !C_PLPL).
(inattribute): New global bool, part of the C state machine.
(cblev): Identifier renamed to bracelev throughout.
(consider_token, C_entries): Numerous changes for making the
parser more robust and adding support for __attribute__.
2004-09-13 David A. Capello <dacap@users.sourceforge.net> (tiny change)
* etags.c: (Lua_suffixes, Lua_help, lang_names, Lua_functions):
Support the Lua scripting language <http://www.lua.org>.
2004-09-08 Francesco Potort,Al(B <pot@gnu.org>
* etags.c: [LONG_OPTIONS]: make it TRUE (ifdef) or FALSE (ifndef)

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,154 @@
2004-09-08 Stefan <monnier@iro.umontreal.ca>
2004-09-15 Miles Bader <miles@gnu.org>
* generic.el (generic-make-keywords-list): Use symbol rather than
word anchors in regexp.
2004-09-14 Sean O'Rourke <sorourke@cs.ucsd.edu>
* ibuf-ext.el (define-ibuffer-filter filename): If buffer has
no file name consider `dired-directory'.
2004-09-14 Kim F. Storm <storm@cua.dk>
* faces.el (cursor): Add face-no-inherit property. Doc fix.
2004-09-14 Simon Josefsson <jas@extundo.com>
* files.el (auto-mode-alist): Map .soa and .zone to dns-mode.
* textmodes/dns-mode.el: Add.
2004-09-13 Stefan Monnier <monnier@iro.umontreal.ca>
* novice.el (disabled-command-hook): Use shorthand for obsolescence.
(disabled-command-function): Make the ?\ char more obvious.
* vc-arch.el (vc-arch-root, vc-arch-registered):
* vc-mcvs.el (vc-mcvs-root, vc-mcvs-registered): Use vc-find-root.
2004-09-13 Hovav Shacham <hovav@sha1.stanford.edu>
* windmove.el (windmove-frame-edges): Report coordinates of
outside edges of frame, not inside edges.
(windmove-coordinates-of-position): Convert into wrapper to new
function `windmove-coordinates-of-window-position';
`compute-motion' always applies to selected window.
(windmove-coordinates-of-position): Update documentation to refer
to Emacs 21 Lisp Reference Manual.
(windmove-find-other-window): Fix off-by-one errors for max x,y.
2004-09-13 Kim F. Storm <storm@cua.dk>
* isearch.el (isearch-resume-in-command-history): Rename from
isearch-resume-enabled and change default to nil.
2004-09-12 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-hooks.el (vc-ignore-dir-regexp): New var.
(vc-registered): Use it.
(vc-find-root): New fun.
* emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
Don't tell to use \\{...} when it's already done.
* textmodes/bibtex.el (bibtex-generate-url-list): Change format.
Provide a sample complex default.
(bibtex-url, bibtex-font-lock-url): Adapt to new format.
(bibtex-entry): Use mapc.
2004-09-12 Kim F. Storm <storm@cua.dk>
* kmacro.el (kmacro-step-edit-prompt): Add "%s" format to message.
* emulation/cua-rect.el (cua--rectangle-operation): Let bind
inhibit-field-text-motion to t so rectangles work in comint buffers.
* simple.el (choose-completion-string): Set buffer before running
choose-completion-string-functions hook so it can be buffer-local.
2004-09-12 Daniel Pfeiffer <occitan@esperanto.org>
* progmodes/compile.el (compilation-start): Parse command to see
if it starts with a cd, and if so perform it for the *compilation*
buffer. Change the header to reflect this.
2004-09-11 Kim F. Storm <storm@cua.dk>
* ido.el (ido-enable-dot-prefix): Doc fix.
(ido-enable-dot-prefix): New defcustom.
(ido-set-matches1): Use it.
2004-09-10 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/bibtex.el (bibtex-mark-active)
(bibtex-run-with-idle-timer): Move the `if' inside the defun.
2004-09-10 Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
* textmodes/bibtex.el (bibtex-autokey-titleword-ignore): Regexp is
used in a case insensitive environment.
(bibtex-mode-map): Rearrange order of menus.
(bibtex-quoted-string-re): Obsolete.
(bibtex-complete-key-cleanup): Variable replaced by new function.
(bibtex-font-lock-keywords): Use backquotes.
(bibtex-font-lock-url-regexp): New internal variable.
(bibtex-name-in-field): New optional arg remove-opt-alt to remove
"OPT" and "ALT".
(bibtex-insert-current-kill, bibtex-make-field)
(bibtex-prepare-new-entry, bibtex-yank-pop, bibtex-String): Use unless.
(bibtex-parse-field-text): Simplify.
(bibtex-string=): New helper function.
(bibtex-member-of-regexp): Merge with bibtex-autokey-get-title.
(bibtex-map-entries): Use bibtex-string=.
(bibtex-search-entry): Use not.
(bibtex-enclosing-field): Fix docstring.
(bibtex-assoc-regexp): Obsolete.
(bibtex-format-entry): Use assoc-string and bibtex-string=.
(bibtex-autokey-get-names): Handle empty name field.
(bibtex-parse-strings): Use assoc-string and unless.
(bibtex-complete-string-cleanup): Expansion list is passed as an arg.
Use assoc-string.
(bibtex-pop): Simplify.
(bibtex-mode): Set font-lock-extra-managed-props.
(bibtex-entry-update): Use assoc-string.
(bibtex-parse-entry): Remove "OPT" and "ALT" from FIELD.
(bibtex-autofill-entry): Use bibtex-string=.
(bibtex-print-help-message): Simplify.
(bibtex-find-entry): New optional arg START.
(bibtex-validate): Use bibtex-string= and assoc-string.
Do not call obsolete function compilation-parse-errors.
(bibtex-remove-delimiters): Only remove delimiters if present.
(bibtex-copy-entry-as-kill): Add docstring.
(bibtex-clean-entry): Use bibtex-string=. Handle empty keys.
Detect duplicate keys if bibtex-maintain-sorted-entries is nil.
(bibtex-complete): Use bibtex-predefined-month-strings,
bibtex-string=, and new function bibtex-complete-key-cleanup.
(bibtex-generate-url-list): New variable.
(bibtex-url): New command bound to C-c C-l and mouse-2.
(bibtex-url-map): New local keymap for bibtex-url-mouse.
(bibtex-font-lock-url): New function.
2004-09-09 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/grep.el (grep-mode): Remove unnecessary autoload.
2004-09-09 Kim F. Storm <storm@cua.dk>
* kmacro.el (kmacro-bind-to-key): Associate dedicated macro
counter and format with binding.
(kmacro-name-last-macro): New defun. Like name-last-kbd-macro, but
the declared macro uses own macro counter and format. Give symbol
kmacro property.
(kmacro-keymap): Bind kmacro-name-last-macro to n.
(kmacro-start-macro, kmacro-end-macro, kmacro-call-macro)
(kmacro-end-and-call-macro): Doc fix.
2004-09-09 Lars Hansen <larsh@math.ku.dk>
* desktop.el (desktop-clear-preserve-buffers):
Remove make-obsolete-variable.
2004-09-08 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-arch.el (vc-arch-state): Fix parsing for `names' method.
@ -85,7 +235,7 @@
window system if overflow-newline-into-fringe is enabled.
(term-mode): Don't disable overflow-newline-into-fringe.
2004-09-07 Stefan <monnier@iro.umontreal.ca>
2004-09-07 Stefan Monnier <monnier@iro.umontreal.ca>
* term/xterm.el (function-key-map): Add bindings for C- and S- cursor
motion as seen on my Mac OS X xterms.
@ -342,8 +492,8 @@
2004-08-29 Kim F. Storm <storm@cua.dk>
* emulation/cua-base.el (cua-auto-expand-rectangles): Remove
automatic rectangle padding feature; replace by non-destructive
* emulation/cua-base.el (cua-auto-expand-rectangles):
Remove automatic rectangle padding feature; replace by non-destructive
virtual rectangle edges feature.
(cua-virtual-rectangle-edges): New defcustom.
(cua-auto-tabify-rectangles): New defcustom.
@ -826,8 +976,8 @@
key-translation-map.
(encoded-kbd-setup-keymap): Setup key-translation-map.
(saved-key-translation-map): New variable.
(encoded-kbd-mode): Save/restore key-translation-map. Adjusted
for the change of encoded-kbd-setup-keymap.
(encoded-kbd-mode): Save/restore key-translation-map.
Adjust for the change of encoded-kbd-setup-keymap.
2004-08-02 Kim F. Storm <storm@cua.dk>
@ -990,12 +1140,11 @@
Sync with Tramp 2.0.43.
* net/tramp.el (tramp-handle-verify-visited-file-modtime): Remove
outdated comment.
* net/tramp.el (tramp-handle-verify-visited-file-modtime):
Remove outdated comment.
(tramp-locked, tramp-locker): New variables for implementing a
global lock.
(tramp-sh-file-name-handler): Use them to implement the global
lock.
(tramp-sh-file-name-handler): Use them to implement the global lock.
2004-07-13 Michael Albinus <michael.albinus@gmx.de>
@ -1030,14 +1179,15 @@
* emacs-lisp/testcover.el: New category "potentially-1valued" for
functions that are not erroneous if either 1-valued or
multi-valued. Detect functions in this class.
(testcover-1value-functions, testcover-compose-functions,
testcover-progn-functions) Added some additional functions to lists.
(testcover-1value-functions, testcover-compose-functions)
(testcover-progn-functions) Added some additional functions to lists.
(testcover-mark): Bugfix when marking up the definition for an
empty function.
2004-07-17 Richard M. Stallman <rms@gnu.org>
* replace.el (occur-read-primary-args): Pass default to read-from-minibuffer.
* replace.el (occur-read-primary-args): Pass default to
read-from-minibuffer.
* mail/footnote.el (footnote-section-tag): Use defcustom.
@ -1146,8 +1296,8 @@
2004-07-09 John Paul Wallington <jpw@gnu.org>
* emacs-lisp/re-builder.el (reb-update-overlays): Distinguish
between one and several matches in message.
* emacs-lisp/re-builder.el (reb-update-overlays):
Distinguish between one and several matches in message.
2004-07-09 Richard M. Stallman <rms@gnu.org>
@ -1185,11 +1335,11 @@
Do not treat double clicks and triple clicks specially in the
scroll bar (preventing strange repositioning problems)
2004-07-06 Stefan <monnier@iro.umontreal.ca>
2004-07-06 Stefan Monnier <monnier@iro.umontreal.ca>
* replace.el (query-replace-regexp-eval): Fix last change.
2004-07-05 Stefan <monnier@iro.umontreal.ca>
2004-07-05 Stefan Monnier <monnier@iro.umontreal.ca>
* replace.el (query-replace-descr): New fun.
(query-replace-read-from, query-replace-read-args): Default to the

View File

@ -14327,7 +14327,7 @@
2002-06-01 Kim F. Storm <storm@cua.dk>
* simple.el: Reworked previous change.
(choose-completion-string1): Merged back into choose-completion-string.
(choose-completion-string1): Merge back into choose-completion-string.
(choose-completion-string): Run choose-completion-string-functions
after checking for proper minibuffer window. Added mini-p arg to
the hook functions. Insert choice if all hook functions return nil.
@ -14348,7 +14348,7 @@
2002-06-01 Kim F. Storm <storm@cua.dk>
* simple.el (choose-completion-string-functions): New special hook.
(choose-completion-string1): Renamed from choose-completion-string.
(choose-completion-string1): Rename from choose-completion-string.
(choose-completion-string): Run choose-completion-string-functions
until success, and only call choose-completion-string1 if it fails.

View File

@ -171,13 +171,13 @@ This is useful for truncating history lists, for example."
:type 'hook
:group 'desktop)
(defcustom desktop-globals-to-save '(
desktop-missing-file-warning
tags-file-name
tags-table-list
search-ring
regexp-search-ring
register-alist)
(defcustom desktop-globals-to-save
'(desktop-missing-file-warning
tags-file-name
tags-table-list
search-ring
regexp-search-ring
register-alist)
"List of global variables saved by `desktop-save'.
An element may be variable name (a symbol) or a cons cell of the form
\(VAR . MAX-SIZE), which means to truncate VAR's value to at most
@ -186,13 +186,13 @@ Feature: Saving `kill-ring' implies saving `kill-ring-yank-pointer'."
:type '(repeat (restricted-sexp :match-alternatives (symbolp consp)))
:group 'desktop)
(defcustom desktop-globals-to-clear '(
kill-ring
kill-ring-yank-pointer
search-ring
search-ring-yank-pointer
regexp-search-ring
regexp-search-ring-yank-pointer)
(defcustom desktop-globals-to-clear
'(kill-ring
kill-ring-yank-pointer
search-ring
search-ring-yank-pointer
regexp-search-ring
regexp-search-ring-yank-pointer)
"List of global variables to clear by `desktop-clear'.
An element may be variable name (a symbol) or a cons cell of the form
\(VAR . FORM). Symbols are set to nil and for cons cells VAR is set
@ -202,29 +202,27 @@ to the value obtained by evaluateing FORM."
(defcustom desktop-clear-preserve-buffers-regexp
"^\\(\\*scratch\\*\\|\\*Messages\\*\\|\\*tramp/.+\\*\\)$"
"Regexp identifying buffers that `desktop-clear' should not delete."
"Regexp identifying buffers that `desktop-clear' should not delete.
See also `desktop-clear-preserve-buffers'."
:type 'regexp
:group 'desktop)
;; Maintained for backward compatibility
(defcustom desktop-clear-preserve-buffers nil
"*List of buffer names that `desktop-clear' should not delete.
This variable is maintained for backward compatibility only."
See also `desktop-clear-preserve-buffers-regexp'."
:type '(repeat string)
:group 'desktop)
(make-obsolete-variable 'desktop-clear-preserve-buffers
'desktop-clear-preserve-buffers-regexp)
(defcustom desktop-locals-to-save '(
desktop-locals-to-save ; Itself! Think it over.
truncate-lines
case-fold-search
case-replace
fill-column
overwrite-mode
change-log-default-name
line-number-mode
buffer-file-coding-system)
(defcustom desktop-locals-to-save
'(desktop-locals-to-save ; Itself! Think it over.
truncate-lines
case-fold-search
case-replace
fill-column
overwrite-mode
change-log-default-name
line-number-mode
buffer-file-coding-system)
"List of local variables to save for each buffer.
The variables are saved only when they really are local."
:type '(repeat symbol)
@ -282,11 +280,11 @@ DESKTOP-BUFFER-MISC.")
(make-obsolete-variable 'desktop-buffer-misc-functions
'desktop-save-buffer)
(defcustom desktop-buffer-mode-handlers '(
(dired-mode . dired-restore-desktop-buffer)
(rmail-mode . rmail-restore-desktop-buffer)
(mh-folder-mode . mh-restore-desktop-buffer)
(Info-mode . Info-restore-desktop-buffer))
(defcustom desktop-buffer-mode-handlers
'((dired-mode . dired-restore-desktop-buffer)
(rmail-mode . rmail-restore-desktop-buffer)
(mh-folder-mode . mh-restore-desktop-buffer)
(Info-mode . Info-restore-desktop-buffer))
"Alist of major mode specific functions to restore a desktop buffer.
Functions are called by `desktop-read'. List elements must have the form
\(MAJOR-MODE . RESTORE-BUFFER-FUNCTION).
@ -580,8 +578,7 @@ See also `desktop-base-file-name'."
(let ((filename (expand-file-name desktop-base-file-name dirname))
(info
(mapcar
(function
(lambda (b)
#'(lambda (b)
(set-buffer b)
(list
(desktop-file-name (buffer-file-name) dirname)
@ -618,7 +615,7 @@ See also `desktop-base-file-name'."
(when (member (car locals) loclist)
(setq ll (cons (car locals) ll)))))
(setq locals (cdr locals)))
ll))))
ll)))
(buffer-list)))
(buf (get-buffer-create "*desktop*")))
(set-buffer buf)
@ -639,19 +636,15 @@ See also `desktop-base-file-name'."
" kill-ring))\n"))
(insert "\n;; Buffer section -- buffers listed in same order as in buffer list:\n")
(mapcar
(function
(lambda (l)
(if (apply 'desktop-save-buffer-p l)
(progn
(insert "(desktop-create-buffer " desktop-file-version)
(mapcar
(function
(lambda (e)
(insert "\n " (desktop-value-to-string e))))
l)
(insert ")\n\n")))))
info)
(mapcar #'(lambda (l)
(if (apply 'desktop-save-buffer-p l)
(progn
(insert "(desktop-create-buffer " desktop-file-version)
(mapcar #'(lambda (e)
(insert "\n " (desktop-value-to-string e)))
l)
(insert ")\n\n"))))
info)
(setq default-directory dirname)
(when (file-exists-p filename) (delete-file filename))
(let ((coding-system-for-write 'utf-8-emacs))
@ -816,18 +809,18 @@ directory DIRNAME."
(defvar desktop-first-buffer) ;; Dynamically bound in `desktop-read'
)
(defun desktop-create-buffer (
desktop-file-version
desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-major-mode
desktop-buffer-minor-modes
desktop-buffer-point
desktop-buffer-mark
desktop-buffer-read-only
desktop-buffer-misc
&optional
desktop-buffer-locals)
(defun desktop-create-buffer
(desktop-file-version
desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-major-mode
desktop-buffer-minor-modes
desktop-buffer-point
desktop-buffer-mark
desktop-buffer-read-only
desktop-buffer-misc
&optional
desktop-buffer-locals)
;; Just to silence the byte compiler. Bound locally in `desktop-read'.
(eval-when-compile
(defvar desktop-buffer-ok-count)
@ -835,21 +828,21 @@ directory DIRNAME."
;; To make desktop files with relative file names possible, we cannot
;; allow `default-directory' to change. Therefore we save current buffer.
(save-current-buffer
(let (
(buffer-list (buffer-list))
(result
(condition-case err
(funcall (or (cdr (assq desktop-buffer-major-mode desktop-buffer-mode-handlers))
'desktop-restore-file-buffer)
desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-misc)
(error
(message "Desktop: Can't load buffer %s: %s"
desktop-buffer-name (error-message-string err))
(when desktop-missing-file-warning (sit-for 1))
nil)))
)
(let ((buffer-list (buffer-list))
(result
(condition-case err
(funcall (or (cdr (assq desktop-buffer-major-mode
desktop-buffer-mode-handlers))
'desktop-restore-file-buffer)
desktop-buffer-file-name
desktop-buffer-name
desktop-buffer-misc)
(error
(message "Desktop: Can't load buffer %s: %s"
desktop-buffer-name
(error-message-string err))
(when desktop-missing-file-warning (sit-for 1))
nil))))
(if (bufferp result)
(setq desktop-buffer-ok-count (1+ desktop-buffer-ok-count))
(setq desktop-buffer-fail-count (1+ desktop-buffer-fail-count))
@ -867,17 +860,14 @@ directory DIRNAME."
(unless (equal (buffer-name) desktop-buffer-name)
(rename-buffer desktop-buffer-name))
;; minor modes
(cond (
;; backwards compatible
(equal '(t) desktop-buffer-minor-modes)
(auto-fill-mode 1))(
(equal '(nil) desktop-buffer-minor-modes)
(auto-fill-mode 0))(
t
(mapcar
#'(lambda (minor-mode)
(when (functionp minor-mode) (funcall minor-mode 1)))
desktop-buffer-minor-modes)))
(cond ((equal '(t) desktop-buffer-minor-modes) ; backwards compatible
(auto-fill-mode 1))
((equal '(nil) desktop-buffer-minor-modes) ; backwards compatible
(auto-fill-mode 0))
(t
(mapcar #'(lambda (minor-mode)
(when (functionp minor-mode) (funcall minor-mode 1)))
desktop-buffer-minor-modes)))
;; Even though point and mark are non-nil when written by `desktop-save'
;; they may be modified by handlers wanting to set point or mark themselves.
(when desktop-buffer-point

View File

@ -1561,8 +1561,9 @@ mouse-[0-3]\\)\\)\\>"))
;; to describe the most important commands in your major mode, and
;; then use `\\{...}' to display the rest of the mode's keymap.
(save-excursion
(if (re-search-forward "\\\\\\\\\\[\\w+" e t
(1+ checkdoc-max-keyref-before-warn))
(if (and (re-search-forward "\\\\\\\\\\[\\w+" e t
(1+ checkdoc-max-keyref-before-warn))
(not (re-search-forward "\\\\\\\\{\\w+}" e t)))
(checkdoc-create-error
"Too many occurrences of \\[function]. Use \\{keymap} instead"
s (marker-position e))))

View File

@ -559,7 +559,8 @@ If command is repeated at same position, delete the rectangle."
;; Rectangle is padded if PAD = t or numeric and (cua--rectangle-virtual-edges)
;; Perform auto-tabify after operation if TABIFY is non-nil.
;; Mark is kept if keep-clear is 'keep and cleared if keep-clear is 'clear.
(let* ((start (cua--rectangle-top))
(let* ((inhibit-field-text-motion t)
(start (cua--rectangle-top))
(end (cua--rectangle-bot))
(l (cua--rectangle-left))
(r (1+ (cua--rectangle-right)))

View File

@ -1925,11 +1925,13 @@ created."
(defface cursor '()
"Basic face for the cursor color under X."
"Basic face for the cursor color under X.
Note: Other faces cannot inherit from the cursor face."
:version "21.1"
:group 'cursor
:group 'basic-faces)
(put 'cursor 'face-no-inherit t)
(defface mouse '()
"Basic face for the mouse color under X."

View File

@ -1771,6 +1771,7 @@ in that case, this function acts as if `enable-local-variables' were t."
("\\.g\\'" . antlr-mode)
("\\.ses\\'" . ses-mode)
("\\.orig\\'" nil t) ; from patch
("\\.\\(soa\\|zone\\)\\'" . dns-mode)
("\\.in\\'" nil t)))
"Alist of filename patterns vs corresponding major mode functions.
Each element looks like (REGEXP . FUNCTION) or (REGEXP FUNCTION NON-NIL).

View File

@ -405,10 +405,10 @@ INI file. This hook is NOT installed by default."
The regexp is highlighted with FACE."
(unless (listp keywords-list)
(error "Keywords argument must be a list of strings"))
(list (concat prefix "\\<"
(list (concat prefix "\\_<"
;; Use an optimized regexp.
(regexp-opt keywords-list t)
"\\>" suffix)
"\\_>" suffix)
1
face))

View File

@ -1,3 +1,23 @@
2004-09-13 Reiner Steib <Reiner.Steib@gmx.de>
* gnus-sum.el (gnus-summary-copy-article): Fixed doc string.
2004-09-10 Miles Bader <miles@gnu.ai.mit.edu>
* nnimap.el (nnimap-open-connection): Remove extraneous end-paren.
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
* nnimap.el (nnimap-open-connection): allow 'imaps' as a synonym
for the 'imap' port in netrc files
* gnus-registry.el (gnus-registry-trim): watch out for negatives
in gnus-registry-trim
2004-09-10 Simon Josefsson <jas@extundo.com>
* nndb.el (require): Remove tcp and duplicate cl.
2004-09-08 Reiner Steib <Reiner.Steib@gmx.de>
* nntp.el (nntp): New customization group.
@ -388,12 +408,14 @@
* gnus-cus.el: Merged revisions 7.2 through 7.5 into branch to support
gnus-agent.el update and incorporate bug fixes.
See ChangeLog.2 for earlier changes.
Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.
;; Local Variables:
;; coding: iso-2022-7bit
;; End:
Copyright (C) 2002 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.
;;; arch-tag: 3f33a3e7-090d-492b-bedd-02a1417d32b4

View File

@ -18913,12 +18913,18 @@
* smime.el: New file.
* mml-smime.el: New file.
2000-10-27 19:42:12 ShengHuo ZHU <zsh@cs.rochester.edu>
* ChangeLog: Moved to ChangeLog.1.
See ChangeLog.1 for earlier changes.
Copyright (C) 2000, 2001, 2002, 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.
;; Local Variables:
;; coding: iso-2022-7bit
;; End:
Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
Copying and distribution of this file, with or without modification,
are permitted provided the copyright notice and this notice are preserved.
;; arch-tag: 13460c90-d3bc-4be2-9e15-c7c271d0c1eb
;; arch-tag: 956fd310-042f-4fca-8dca-a01dbe06acff

View File

@ -266,25 +266,27 @@ way."
(defun gnus-registry-trim (alist)
"Trim alist to size, using gnus-registry-max-entries."
(if (null gnus-registry-max-entries)
alist ; just return the alist
alist ; just return the alist
;; else, when given max-entries, trim the alist
(let ((timehash (make-hash-table
:size 4096
:test 'equal)))
(let* ((timehash (make-hash-table
:size 4096
:test 'equal))
(trim-length (- (length alist) gnus-registry-max-entries))
(trim-length (if (natnump trim-length) trim-length 0)))
(maphash
(lambda (key value)
(puthash key (gnus-registry-fetch-extra key 'mtime) timehash))
(puthash key (gnus-registry-fetch-extra key 'mtime) timehash))
gnus-registry-hashtb)
;; we use the return value of this setq, which is the trimmed alist
(setq alist
(nthcdr
(- (length alist) gnus-registry-max-entries)
(sort alist
(lambda (a b)
(time-less-p
(cdr (gethash (car a) timehash))
(cdr (gethash (car b) timehash))))))))))
(nthcdr
trim-length
(sort alist
(lambda (a b)
(time-less-p
(cdr (gethash (car a) timehash))
(cdr (gethash (car b) timehash))))))))))
(defun alist-to-hashtable (alist)
"Build a hashtable from the values in ALIST."

View File

@ -9056,8 +9056,8 @@ ACTION can be either `move' (the default), `crosspost' or `copy'."
(gnus-set-mode-line 'summary)))
(defun gnus-summary-copy-article (&optional n to-newsgroup select-method)
"Move the current article to a different newsgroup.
If TO-NEWSGROUP is string, do not prompt for a newsgroup to move to.
"Copy the current article to some other group.
If TO-NEWSGROUP is string, do not prompt for a newsgroup to copy to.
When called interactively, if TO-NEWSGROUP is nil, use the value of
the variable `gnus-move-split-methods' for finding a default target
newsgroup.

View File

@ -1,6 +1,6 @@
;;; nndb.el --- nndb access for Gnus
;; Copyright (C) 1997, 1998, 2000, 2003 Free Software Foundation, Inc.
;; Copyright (C) 1997, 1998, 2000, 2003, 2004 Free Software Foundation, Inc.
;; Author: Masanobu UMEDA <umerin@flab.flab.fujitsu.junet>
;; Kai Grossjohann <grossjohann@ls6.informatik.uni-dortmund.de>
@ -59,12 +59,6 @@
(require 'nntp)
(eval-when-compile (require 'cl))
(eval-and-compile
(unless (fboundp 'open-network-stream)
(require 'tcp)))
(eval-when-compile (require 'cl))
(eval-and-compile
(autoload 'news-setup "rnewspost")
(autoload 'news-reply-mode "rnewspost")

View File

@ -723,10 +723,15 @@ If EXAMINE is non-nil the group is selected read-only."
(int-to-string nnimap-server-port)
"imap"))
(alist (or (gnus-netrc-machine list server port "imap")
(gnus-netrc-machine list server port "imaps")
(gnus-netrc-machine list
(or nnimap-server-address
nnimap-address)
port "imap")))
port "imap")
(gnus-netrc-machine list
(or nnimap-server-address
nnimap-address)
port "imaps")))
(user (gnus-netrc-get alist "login"))
(passwd (gnus-netrc-get alist "password")))
(if (imap-authenticate user passwd nnimap-server-buffer)

View File

@ -1015,7 +1015,10 @@ currently used by buffers."
"Toggle current view to buffers with filename matching QUALIFIER."
(:description "filename"
:reader (read-from-minibuffer "Filter by filename (regexp): "))
(ibuffer-awhen (buffer-file-name buf)
(ibuffer-awhen (with-current-buffer buf
(or buffer-file-name
(and (boundp 'dired-directory)
dired-directory)))
(string-match qualifier it)))
;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el")

View File

@ -482,14 +482,20 @@ Value can be toggled within `ido' using `ido-toggle-regexp'."
:group 'ido)
(defcustom ido-enable-prefix nil
"*Nil means that `ido' will match if the inserted text is an
arbitrary substring (default). If non-nil `ido' will only match if the inserted
text is a prefix \(this behavior is like the standard unix- or
emacs-completion works).
"*Non-nil means only match if the entered text is a prefix of file name.
This behavior is like the standard emacs-completion.
Nil means to match if the entered text is an arbitrary substring.
Value can be toggled within `ido' using `ido-toggle-prefix'."
:type 'boolean
:group 'ido)
(defcustom ido-enable-dot-prefix nil
"*Non-nil means to match leading dot as prefix.
I.e. hidden files and buffers will match only if you type a dot
as first char even if `ido-enable-prefix' is nil."
:type 'boolean
:group 'ido)
(defcustom ido-confirm-unique-completion nil
"*Non-nil means that even a unique completion must be confirmed.
This means that \\[ido-complete] must always be followed by \\[ido-exit-minibuffer]
@ -2928,13 +2934,22 @@ for first matching file."
(concat "\\`" re "\\'")))
(prefix-re (and full-re (not ido-enable-prefix)
(concat "\\`" rexq)))
(non-prefix-dot (or (not ido-enable-dot-prefix)
(not ido-process-ignore-lists)
ido-enable-prefix
(= (length ido-text) 0)))
full-matches
prefix-matches
matches)
(mapcar
(lambda (item)
(let ((name (ido-name item)))
(if (string-match re name)
(if (and (or non-prefix-dot
(if (= (aref ido-text 0) ?.)
(= (aref name 0) ?.)
(/= (aref name 0) ?.)))
(string-match re name))
(cond
((and full-re (string-match full-re name))
(setq full-matches (cons item full-matches)))

View File

@ -146,8 +146,10 @@ Ordinarily the text becomes invisible again at the end of the search."
:type 'boolean
:group 'isearch)
(defcustom isearch-resume-enabled t
"*If non-nil, `isearch-resume' commands are added to the command history."
(defcustom isearch-resume-in-command-history nil
"*If non-nil, `isearch-resume' commands are added to the command history.
This allows you to resume earlier isearch sessions through the
command history."
:type 'boolean
:group 'isearch)
@ -647,7 +649,7 @@ is treated as a regexp. See \\[isearch-forward] for more info."
(setq disable-point-adjustment t))
(defun isearch-done (&optional nopush edit)
(if isearch-resume-enabled
(if isearch-resume-in-command-history
(let ((command `(isearch-resume ,isearch-string ,isearch-regexp
,isearch-word ,isearch-forward
,isearch-message

View File

@ -204,7 +204,7 @@ macro to be executed before appending to it."
;; naming and binding
(define-key map "b" 'kmacro-bind-to-key)
(define-key map "n" 'name-last-kbd-macro)
(define-key map "n" 'kmacro-name-last-macro)
map)
"Keymap for keyboard macro commands.")
(defalias 'kmacro-keymap kmacro-keymap)
@ -539,8 +539,8 @@ Displays the selected macro in the echo area."
The commands are recorded even as they are executed.
Use \\[kmacro-end-macro] to finish recording and make the macro available.
Use \\[kmacro-end-and-call-macro] to execute the macro.
Use \\[name-last-kbd-macro] to give it a permanent name.
Non-nil arg (prefix arg) means append to last macro defined;
Non-nil arg (prefix arg) means append to last macro defined.
With \\[universal-argument] prefix, append to last keyboard macro
defined. Depending on `kmacro-execute-before-append', this may begin
@ -551,7 +551,10 @@ defining the macro.
Use \\[kmacro-insert-counter] to insert (and increment) the macro counter.
The counter value can be set or modified via \\[kmacro-set-counter] and \\[kmacro-add-counter].
The format of the counter can be modified via \\[kmacro-set-format]."
The format of the counter can be modified via \\[kmacro-set-format].
Use \\[kmacro-name-last-macro] to give it a permanent name.
Use \\[kmacro-bind-to-key] to bind it to a key sequence."
(interactive "P")
(if (or defining-kbd-macro executing-kbd-macro)
(message "Already defining keyboard macro.")
@ -585,7 +588,7 @@ The format of the counter can be modified via \\[kmacro-set-format]."
"Finish defining a keyboard macro.
The definition was started by \\[kmacro-start-macro].
The macro is now available for use via \\[kmacro-call-macro],
or it can be given a name with \\[name-last-kbd-macro] and then invoked
or it can be given a name with \\[kmacro-name-last-macro] and then invoked
under that name.
With numeric arg, repeat macro now that many times,
@ -609,7 +612,7 @@ command. See `kmacro-call-repeat-key' and `kmacro-call-repeat-with-arg'
for details on how to adjust or disable this behaviour.
To make a macro permanent so you can call it even after defining
others, use \\[name-last-kbd-macro]."
others, use \\[kmacro-name-last-macro]."
(interactive "p")
(let ((repeat-key (and (null no-repeat)
(> (length (this-single-command-keys)) 1)
@ -707,7 +710,7 @@ With numeric prefix ARG, repeat macro that many times.
Zero argument means repeat until there is an error.
To give a macro a permanent name, so you can call it
even after defining other macros, use \\[name-last-kbd-macro]."
even after defining other macros, use \\[kmacro-name-last-macro]."
(interactive "P")
(if defining-kbd-macro
(kmacro-end-macro nil))
@ -771,10 +774,38 @@ may be shaded by a local key binding."
(yes-or-no-p (format "%s runs command %S. Bind anyway? "
(format-kbd-macro key-seq)
cmd))))
(define-key global-map key-seq last-kbd-macro)
(define-key global-map key-seq
`(lambda (&optional arg)
"Keyboard macro."
(interactive "p")
(kmacro-exec-ring-item ',(kmacro-ring-head) arg)))
(message "Keyboard macro bound to %s" (format-kbd-macro key-seq))))))
(defun kmacro-name-last-macro (symbol)
"Assign a name to the last keyboard macro defined.
Argument SYMBOL is the name to define.
The symbol's function definition becomes the keyboard macro string.
Such a \"function\" cannot be called from Lisp, but it is a valid editor command."
(interactive "SName for last kbd macro: ")
(or last-kbd-macro
(error "No keyboard macro defined"))
(and (fboundp symbol)
(not (get symbol 'kmacro))
(not (stringp (symbol-function symbol)))
(not (vectorp (symbol-function symbol)))
(error "Function %s is already defined and not a keyboard macro"
symbol))
(if (string-equal symbol "")
(error "No command name given"))
(fset symbol
`(lambda (&optional arg)
"Keyboard macro."
(interactive "p")
(kmacro-exec-ring-item ',(kmacro-ring-head) arg)))
(put symbol 'kmacro t))
(defun kmacro-view-macro (&optional arg)
"Display the last keyboard macro.
If repeated, it shows previous elements in the macro ring."
@ -897,7 +928,8 @@ following additional answers: `insert', `insert-1', `replace', `replace-1',
(curmsg (current-message)))
;; TODO: Scroll macro if max-mini-window-height is too small.
(message (concat
(message "%s"
(concat
(format "Macro: %s%s%s%s%s\n"
(format-kbd-macro kmacro-step-edit-new-macro 1)
(if (and kmacro-step-edit-new-macro (> (length kmacro-step-edit-new-macro) 0)) " " "")

View File

@ -44,7 +44,7 @@ If nil, the feature is disabled, i.e., all commands work normally.")
(defvaralias 'disabled-command-hook 'disabled-command-function)
(make-obsolete-variable
'disabled-command-hook
"use the variable `disabled-command-function' instead." "21.4")
'disabled-command-function "21.4")
;;;###autoload
(defun disabled-command-function (&rest ignore)
@ -93,7 +93,7 @@ SPC to try the command just this once, but leave it disabled.
(message "Type y, n, ! or SPC (the space bar): ")
(let ((cursor-in-echo-area t))
(while (not (memq (setq char (downcase (read-char)))
'(?! ? ?y ?n)))
'(?! ?y ?n ?\ )))
(ding)
(message "Please type y, n, ! or SPC (the space bar): "))))
(if (= char ?!)
@ -185,5 +185,5 @@ to future sessions."
(provide 'novice)
;;; arch-tag: f83c0f96-497e-4db6-a430-8703716c6dd9
;; arch-tag: f83c0f96-497e-4db6-a430-8703716c6dd9
;;; novice.el ends here

View File

@ -849,6 +849,7 @@ Otherwise, construct a buffer name from MODE-NAME."
(defun compilation-start (command &optional mode name-function highlight-regexp)
"Run compilation command COMMAND (low level interface).
If COMMAND starts with a cd command, that becomes the `default-directory'.
The rest of the arguments are optional; for them, nil means use the default.
MODE is the major mode to set in the compilation buffer. Mode
@ -861,26 +862,29 @@ global value of `compilation-highlight-regexp'.
Returns the compilation buffer created."
(or mode (setq mode 'compilation-mode))
(let ((name-of-mode
(if (eq mode t)
(prog1 "compilation" (require 'comint))
(replace-regexp-in-string "-mode$" "" (symbol-name mode))))
(process-environment
(append
compilation-environment
(if (if (boundp 'system-uses-terminfo) ; `if' for compiler warning
system-uses-terminfo)
(list "TERM=dumb" "TERMCAP="
(format "COLUMNS=%d" (window-width)))
(list "TERM=emacs"
(format "TERMCAP=emacs:co#%d:tc=unknown:"
(window-width))))
;; Set the EMACS variable, but
;; don't override users' setting of $EMACS.
(unless (getenv "EMACS") '("EMACS=t"))
(copy-sequence process-environment)))
(thisdir default-directory)
outwin outbuf)
(let* ((name-of-mode
(if (eq mode t)
(prog1 "compilation" (require 'comint))
(replace-regexp-in-string "-mode$" "" (symbol-name mode))))
(process-environment
(append
compilation-environment
(if (if (boundp 'system-uses-terminfo) ; `if' for compiler warning
system-uses-terminfo)
(list "TERM=dumb" "TERMCAP="
(format "COLUMNS=%d" (window-width)))
(list "TERM=emacs"
(format "TERMCAP=emacs:co#%d:tc=unknown:"
(window-width))))
;; Set the EMACS variable, but
;; don't override users' setting of $EMACS.
(unless (getenv "EMACS") '("EMACS=t"))
(copy-sequence process-environment)))
cd-path ; in case process-environment contains CDPATH
(thisdir (if (string-match "^\\s *cd\\s +\\(.+?\\)\\s *[;&\n]" command)
(substitute-in-file-name (match-string 1 command))
default-directory))
outwin outbuf)
(with-current-buffer
(setq outbuf
(get-buffer-create
@ -901,15 +905,16 @@ Returns the compilation buffer created."
(buffer-name)))))
;; Clear out the compilation buffer and make it writable.
;; Change its default-directory to the directory where the compilation
;; will happen, and insert a `cd' command to indicate this.
;; will happen, and insert a `default-directory' to indicate this.
(setq buffer-read-only nil)
(buffer-disable-undo (current-buffer))
(erase-buffer)
(buffer-enable-undo (current-buffer))
(setq default-directory thisdir)
(cd thisdir)
;; output a mode setter, for saving and later reloading this buffer
(insert "cd " thisdir " # -*-" name-of-mode
"-*-\nEntering directory `" thisdir "'\n" command "\n")
(insert "-*- mode: " name-of-mode
"; default-directory: " (prin1-to-string default-directory)
" -*-\n" command "\n")
(set-buffer-modified-p nil))
;; If we're already in the compilation buffer, go to the end
;; of the buffer, so point will track the compilation output.

View File

@ -500,17 +500,6 @@ temporarily highlight in visited source lines."
command-args)
'grep-mode nil highlight-regexp)))
;;; This doesn't work:
;;; ###autoload (autoload 'grep-mode "grep" nil t)
;;; The ostensibly correct result is nonetheless opaque to the accounting
;;; done in `generate-file-autoloads'; in loaddefs.el, the generated elisp is
;;; correct but the generated header comment for grep.el lacks `grep-mode'.
;;; This approach also doesn't help other users of `define-compilation-mode'
;;; who wish to autoload.
;;;
;;; Better to extend autoload.el to grok `define-compilation-mode'.
;;;###autoload
(define-compilation-mode grep-mode "Grep"
"Sets `grep-last-buffer' and `compilation-window-height'."
(setq grep-last-buffer (current-buffer))
@ -626,5 +615,5 @@ those sub directories of DIR."
(provide 'grep)
;;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d
;; arch-tag: 5a5b9169-a79d-4f38-9c38-f69615f39c4d
;;; grep.el ends here

View File

@ -4297,11 +4297,12 @@ to decide what to delete."
(not (equal buffer
(window-buffer (active-minibuffer-window))))))
(error "Minibuffer is not active for completion")
;; Set buffer so buffer-local choose-completion-string-functions works.
(set-buffer buffer)
(unless (run-hook-with-args-until-success
'choose-completion-string-functions
choice buffer mini-p base-size)
;; Insert the completion into the buffer where it was requested.
(set-buffer buffer)
(if base-size
(delete-region (+ base-size (if mini-p
(minibuffer-prompt-end)

File diff suppressed because it is too large Load Diff

198
lisp/textmodes/dns-mode.el Normal file
View File

@ -0,0 +1,198 @@
;;; dns-mode.el --- a mode for viewing/editing Domain Name System master files
;; Copyright (c) 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
;; Author: Simon Josefsson <simon@josefsson.org>
;; Keywords: DNS master zone file SOA
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
;; Boston, MA 02111-1307, USA.
;;; Commentary:
;; Use M-x dns-mode RET to invoke in master files.
;;
;; C-c C-s Increment SOA serial.
;; Understands YYYYMMDDNN, Unix time, and serial number formats,
;; and complains if it fail to find SOA serial.
;;
;; Put something similar to the following in your ~/.emacs to use this file:
;;
;; (load "~/path/to/dns-mode.el")
;; (setq auto-mode-alist (cons '("\\.soa\\'" . dns-mode) auto-mode-alist))
;;; References:
;; RFC 1034, "DOMAIN NAMES - CONCEPTS AND FACILITIES", P. Mockapetris.
;; RFC 1035, "DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION", P. Mockapetris.
;;; Release history:
;; 2004-09-11 Posted on gnu.emacs.sources.
;; 2004-09-13 Ported to XEmacs.
;; 2004-09-14 Installed in Emacs CVS.
;;; Code:
(defgroup dns-mode nil
"DNS master file mode configuration.")
(defconst dns-mode-classes '("IN" "CS" "CH" "HS")
"List of strings with known DNS classes.")
(defconst dns-mode-types '("A" "NS" "MD" "MF" "CNAME" "SOA" "MB" "MG" "MR"
"NULL" "WKS" "PTR" "HINFO" "MINFO" "MX" "TXT"
"RP" "AFSDB" "X25" "ISDN" "RT" "NSAP" "NSAP"
"SIG" "KEY" "PX" "GPOS" "AAAA" "LOC" "NXT"
"EID" "NIMLOC" "SRV" "ATMA" "NAPTR" "KX" "CERT"
"A6" "DNAME" "SINK" "OPT" "APL" "DS" "SSHFP"
"RRSIG" "NSEC" "DNSKEY" "UINFO" "UID" "GID"
"UNSPEC" "TKEY" "TSIG" "IXFR" "AXFR" "MAILB"
"MAILA")
"List of strings with known DNS types.")
;; Font lock.
(defvar dns-mode-control-entity-face 'font-lock-keyword-face
"Name of face used for control entities, e.g. $ORIGIN.")
(defvar dns-mode-bad-control-entity-face 'font-lock-warning-face
"Name of face used for non-standard control entities, e.g. $FOO.")
(defvar dns-mode-type-face 'font-lock-type-face
"Name of face used for DNS types, e.g., SOA.")
(defvar dns-mode-class-face 'font-lock-constant-face
"Name of face used for DNS classes, e.g., IN.")
(defcustom dns-mode-font-lock-keywords
`(("^$ORIGIN" 0 ,dns-mode-control-entity-face)
("^$INCLUDE" 0 ,dns-mode-control-entity-face)
("^$[a-z0-9A-Z]+" 0 ,dns-mode-bad-control-entity-face)
(,(regexp-opt dns-mode-classes) 0 ,dns-mode-class-face)
(,(regexp-opt dns-mode-types) 0 ,dns-mode-type-face))
"Font lock keywords used to highlight text in DNS master file mode."
:type 'sexp
:group 'dns-mode)
;; Syntax table.
(defvar dns-mode-syntax-table
(let ((table (make-syntax-table)))
(modify-syntax-entry ?\; "< " table)
(modify-syntax-entry ?\n "> " table)
table)
"Syntax table in use in DNS master file buffers.")
;; Keymap.
(defvar dns-mode-map
(let ((map (make-sparse-keymap)))
(define-key map "\C-c\C-s" 'dns-mode-soa-increment-serial)
map)
"Keymap for DNS master file mode.")
;; Menu.
(defvar dns-mode-menu nil
"Menubar used in DNS master file mode.")
(easy-menu-define dns-mode-menu dns-mode-map
"DNS Menu."
'("DNS"
["Increment SOA serial" dns-mode-soa-increment-serial t]))
;; Mode.
;;;###autoload
(define-derived-mode dns-mode text-mode "DNS"
"Major mode for viewing and editing DNS master files.
This mode is inherited from text mode. It add syntax
highlighting, and some commands for handling DNS master files.
Its keymap inherits from `text-mode' and it has the same
variables for customizing indentation. It has its own abbrev
table and its own syntax table.
Turning on DNS mode runs `dns-mode-hook'."
(set (make-local-variable 'comment-start) ";")
(set (make-local-variable 'comment-end) "")
(set (make-local-variable 'comment-start-skip) ";+ *")
(unless (featurep 'xemacs)
(set (make-local-variable 'font-lock-defaults)
'(dns-mode-font-lock-keywords nil nil ((?_ . "w")))))
(easy-menu-add dns-mode-menu dns-mode-map))
;; Tools.
;;;###autoload
(defun dns-mode-soa-increment-serial ()
"Locate SOA record and increment the serial field."
(interactive)
(save-excursion
(goto-char (point-min))
(unless (re-search-forward
(concat "^\\(\\(\\([^ \t]+[ \t]+\\)?[^ \t]+"
"[ \t]+\\)?[^ \t]+[ \t]+\\)?SOA") nil t)
(error "Cannot locate SOA record"))
(if (re-search-forward (concat "\\<\\("
;; year
"\\(198\\|199\\|20[0-9]\\)[0-9]"
;; month
"\\(0[0-9]\\|10\\|11\\|12\\)"
;; day
"\\([012][0-9]\\|30\\|31\\)"
;; counter
"\\([0-9]\\{1,3\\}\\)"
"\\)\\>")
nil t)
;; YYYYMMDDIII format, one to three I's.
(let* ((serial (match-string 1))
(counterstr (match-string 5))
(counter (string-to-number counterstr))
(now (format-time-string "%Y%m%d"))
(nowandoldserial (concat now counterstr)))
(if (string< serial nowandoldserial)
(let ((new (format "%s00" now)))
(replace-match new nil nil nil 1)
(message "Replaced old serial %s with %s" serial new))
(if (string= serial nowandoldserial)
(let ((new (format (format "%%s%%0%dd" (length counterstr))
now (1+ counter))))
(replace-match new nil nil nil 1)
(message "Replaced old serial %s with %s" serial new))
(error "Current SOA serial is in the future"))))
(if (re-search-forward "\\<\\([0-9]\\{9,10\\}\\)\\>" nil t)
;; Unix time
(let* ((serial (match-string 1))
(new (format-time-string "%s")))
(if (not (string< serial new))
(error "Current SOA serial is in the future")
(replace-match new nil nil nil 1)
(message "Replaced old serial %s with %s" serial new)))
(if (re-search-forward "\\<\\([0-9]+\\)\\>" nil t)
;; Just any serial number.
(let* ((serial (match-string 1))
(new (format "%d" (1+ (string-to-number serial)))))
(replace-match new nil nil nil 1)
(message "Replaced old serial %s with %s" serial new))
(error "Cannot locate serial number in SOA record"))))))
;;;###autoload(add-to-list 'auto-mode-alist '("\\.soa\\'" . dns-mode))
(provide 'dns-mode)
;; arch-tag: 6a179f0a-072f-49db-8b01-37b8f23998c0
;;; dns-mode.el ends here

View File

@ -73,18 +73,10 @@
(put 'Arch 'vc-functions nil)
;;;###autoload (defun vc-arch-registered (file)
;;;###autoload (let ((dir file))
;;;###autoload (while (and (stringp dir)
;;;###autoload (not (equal
;;;###autoload dir (setq dir (file-name-directory dir))))
;;;###autoload dir)
;;;###autoload (setq dir (if (file-directory-p
;;;###autoload (expand-file-name "{arch}" dir))
;;;###autoload t (directory-file-name dir))))
;;;###autoload (if (eq dir t)
;;;###autoload (progn
;;;###autoload (load "vc-arch")
;;;###autoload (vc-arch-registered file)))))
;;;###autoload (if (vc-find-root file "{arch}/=tagging-method")
;;;###autoload (progn
;;;###autoload (load "vc-arch")
;;;###autoload (vc-arch-registered file))))
(defun vc-arch-add-tagline ()
"Add an `arch-tag' to the end of the current file."
@ -186,18 +178,10 @@ Only the value `maybe' can be trusted :-(."
(defun vc-arch-root (file)
"Return the root directory of a Arch project, if any."
(or (vc-file-getprop file 'arch-root)
(vc-file-setprop
file 'arch-root
(let ((root nil))
(while (not (or root
(equal file (setq file (file-name-directory file)))
(null file)))
;; Check the =tagging-method, in case someone naively manually
;; creates a {arch} directory somewhere.
(if (file-exists-p (expand-file-name "{arch}/=tagging-method" file))
(setq root file)
(setq file (directory-file-name file))))
root))))
(vc-file-setprop
;; Check the =tagging-method, in case someone naively manually
;; creates a {arch} directory somewhere.
file 'arch-root (vc-find-root file "{arch}/=tagging-method"))))
(defun vc-arch-register (file &optional rev comment)
(if rev (error "Explicit initial revision not supported for Arch"))

View File

@ -1,6 +1,6 @@
;;; vc-hooks.el --- resident support for version-control
;; Copyright (C) 1992,93,94,95,96,98,99,2000,03,2004
;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2003, 2004
;; Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
@ -52,6 +52,12 @@ BACKEND, use `vc-handled-backends'.")
(defvar vc-header-alist ())
(make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header)
(defvar vc-ignore-dir-regexp "\\`\\([\\/][\\/]\\|/net/\\|/afs/\\)\\'"
"Regexp matching directory names that are not under VC's control.
The default regexp prevents fruitless and time-consuming attempts
to determine the VC status in directories in which filenames are
interpreted as hostnames.")
(defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS)
;; Arch and MCVS come last because they are per-tree rather than per-dir.
"*List of version control backends for which VC will be used.
@ -298,6 +304,20 @@ non-nil if FILE exists and its contents were successfully inserted."
(set-buffer-modified-p nil)
t))
(defun vc-find-root (file witness)
"Find the root of a checked out project.
The function walks up the directory tree from FILE looking for WITNESS.
If WITNESS if not found, return nil, otherwise return the root."
(let ((root nil))
(while (not (or root
(equal file (setq file (file-name-directory file)))
(null file)
(string-match vc-ignore-dir-regexp file)))
(if (file-exists-p (expand-file-name witness file))
(setq root file)
(setq file (directory-file-name file))))
root))
;; Access functions to file properties
;; (Properties should be _set_ using vc-file-setprop, but
;; _retrieved_ only through these functions, which decide
@ -315,11 +335,13 @@ on the result of a previous call, use `vc-backend' instead. If the
file was previously registered under a certain backend, then that
backend is tried first."
(let (handler)
(if (boundp 'file-name-handler-alist)
(setq handler (find-file-name-handler file 'vc-registered)))
(if handler
;; handler should set vc-backend and return t if registered
(funcall handler 'vc-registered file)
(cond
((string-match vc-ignore-dir-regexp (file-name-directory file)) nil)
((and (boundp 'file-name-handler-alist)
(setq handler (find-file-name-handler file 'vc-registered)))
;; handler should set vc-backend and return t if registered
(funcall handler 'vc-registered file))
(t
;; There is no file name handler.
;; Try vc-BACKEND-registered for each handled BACKEND.
(catch 'found
@ -334,7 +356,7 @@ backend is tried first."
(cons backend vc-handled-backends))))
;; File is not registered.
(vc-file-setprop file 'vc-backend 'none)
nil))))
nil)))))
(defun vc-backend (file)
"Return the version control type of FILE, nil if it is not registered."
@ -869,5 +891,5 @@ Used in `find-file-not-found-functions'."
(provide 'vc-hooks)
;;; arch-tag: 2e5a6fa7-1d30-48e2-8bd0-e3d335f04f32
;; arch-tag: 2e5a6fa7-1d30-48e2-8bd0-e3d335f04f32
;;; vc-hooks.el ends here

View File

@ -1,6 +1,7 @@
;;; vc-mcvs.el --- VC backend for the Meta-CVS version-control system
;; Copyright (C) 1995,98,99,2000,01,02,03,2004 Free Software Foundation, Inc.
;; Copyright (C) 1995, 1998, 1999, 2000, 2001, 2002, 2003, 2004
;; Free Software Foundation, Inc.
;; Author: FSF (see vc.el for full credits)
;; Maintainer: Stefan Monnier <monnier@gnu.org>
@ -114,32 +115,15 @@ This is only meaningful if you don't use the implicit checkout model
;;;
;;;###autoload (defun vc-mcvs-registered (file)
;;;###autoload (let ((dir file))
;;;###autoload (while (and (stringp dir)
;;;###autoload (not (equal
;;;###autoload dir (setq dir (file-name-directory dir))))
;;;###autoload dir)
;;;###autoload (setq dir (if (file-directory-p
;;;###autoload (expand-file-name "MCVS/CVS" dir))
;;;###autoload t (directory-file-name dir))))
;;;###autoload (if (eq dir t)
;;;###autoload (progn
;;;###autoload (load "vc-mcvs")
;;;###autoload (vc-mcvs-registered file)))))
;;;###autoload (if (vc-find-root file "MCVS/CVS")
;;;###autoload (progn
;;;###autoload (load "vc-mcvs")
;;;###autoload (vc-mcvs-registered file))))
(defun vc-mcvs-root (file)
"Return the root directory of a Meta-CVS project, if any."
(or (vc-file-getprop file 'mcvs-root)
(vc-file-setprop
file 'mcvs-root
(let ((root nil))
(while (not (or root
(equal file (setq file (file-name-directory file)))
(null file)))
(if (file-directory-p (expand-file-name "MCVS/CVS" file))
(setq root file)
(setq file (directory-file-name file))))
root))))
(vc-file-setprop file 'mcvs-root (vc-find-root file "MCVS/CVS"))))
(defun vc-mcvs-read (file)
(if (file-readable-p file)
@ -608,5 +592,5 @@ and that it passes `vc-mcvs-global-switches' to it before FLAGS."
(provide 'vc-mcvs)
;;; arch-tag: a39c7c1c-5247-429d-88df-dd7187d2e704
;; arch-tag: a39c7c1c-5247-429d-88df-dd7187d2e704
;;; vc-mcvs.el ends here

View File

@ -324,11 +324,11 @@ from `windmove-frame-edges' will be the list (0 0 180 75)."
(let* ((frame (if window
(window-frame window)
(selected-frame)))
(top-left (window-inside-edges (frame-first-window frame)))
(top-left (window-edges (frame-first-window frame)))
(x-min (nth 0 top-left))
(y-min (nth 1 top-left))
(x-max (+ x-min (frame-width frame) -1)) ; 1- for last row & col
(y-max (+ x-max (frame-height frame) -1)))
(x-max (1- (frame-width frame))) ; 1- for last row & col
(y-max (1- (frame-height frame))))
(list x-min y-min x-max y-max)))
;; it turns out that constraining is always a good thing, even when
@ -406,7 +406,7 @@ Returns the wrapped coordinate."
;; `windmove-coordinates-of-position' is stolen and modified from the
;; Emacs Lisp Reference Manual, section 27.2.5. It seems to work
;; Emacs 20 Lisp Reference Manual, section 27.2.5. It seems to work
;; okay, although I am bothered by the fact that tab-offset (the cdr
;; of the next-to- last argument) is set to 0. On the other hand, I
;; can't find a single usage of `compute-motion' anywhere that doesn't
@ -418,28 +418,43 @@ Returns the wrapped coordinate."
;; the number that `window-width' gives, or continuation lines aren't
;; counted correctly. I haven't seen anyone doing this before,
;; though.
(defun windmove-coordinates-of-position (pos &optional window)
"Return the coordinates of position POS in window WINDOW.
;;
;; Now updated for Emacs 21, based on the Emacs 21 Lisp Reference
;; Manual, section 30.2.5. It is no longer necessary to subtract
;; 1 for the usable width of the window.
;; TODO: also handle minibuffer case, w/ `minibuffer-prompt-width'.
(defun windmove-coordinates-of-position (pos)
"Return the coordinates of position POS in the current window.
Return the window-based coodinates in a cons pair: (HPOS . VPOS),
where HPOS and VPOS are the zero-based x and y components of the
screen location of POS. If WINDOW is nil, return the coordinates in
the currently selected window.
screen location of POS.
As an example, if point is in the top left corner of a window, then
the return value from `windmove-coordinates-of-position' is (0 . 0)
regardless of the where point is in the buffer and where the window
is placed in the frame."
(let* ((wind (if (null window) (selected-window) window))
(big-hairy-result (compute-motion
(window-start)
'(0 . 0)
pos
nil ; (window-width window-height)
nil ; window-width
(cons (window-hscroll)
0) ; why zero?
wind)))
(cons (nth 1 big-hairy-result) ; hpos, not vpos as documented
(nth 2 big-hairy-result)))) ; vpos, not hpos as documented
(let ((big-hairy-result (compute-motion
(window-start)
'(0 . 0)
pos
nil ; (window-width window-height)
nil ; window-width
(cons (window-hscroll)
0) ; why zero?
(selected-window))))
(cons (nth 1 big-hairy-result) ; hpos, not vpos as documented
(nth 2 big-hairy-result)))) ; vpos, not hpos as documented
(defun windmove-coordinates-of-window-position (pos &optional window)
"Return the coordinates of position POS in WINDOW.
Return the window-based coodinates in a cons pair: (HPOS . VPOS),
where HPOS and VPOS are the zero-based x and y components of the
screen location of POS. If WINDOW is nil, return the coordinates in
the currently selected window."
(if (null window)
(windmove-coordinates-of-position pos)
(save-selected-window
(select-window window)
(windmove-coordinates-of-position pos))))
;; This calculates the reference location in the current window: the
;; frame-based (x . y) of either point, the top-left, or the
@ -467,8 +482,9 @@ supplied, if ARG is greater or smaller than zero, respectively."
((= effective-arg 0)
(windmove-coord-add
top-left
(windmove-coordinates-of-position (window-point window)
window)))))))
(windmove-coordinates-of-window-position
(window-point window)
window)))))))
;; This uses the reference location in the current window (calculated
;; by `windmove-reference-loc' above) to find a reference location
@ -491,13 +507,13 @@ movement is relative to."
(- (nth 1 edges)
windmove-window-distance-delta))) ; (x, y0-d)
((eq dir 'right)
(cons (+ (nth 2 edges)
(cons (+ (1- (nth 2 edges)) ; -1 to get actual max x
windmove-window-distance-delta)
(cdr refpoint))) ; (x1+d, y)
((eq dir 'down)
(cdr refpoint))) ; (x1+d-1, y)
((eq dir 'down) ; -1 to get actual max y
(cons (car refpoint)
(+ (nth 3 edges)
windmove-window-distance-delta))) ; (x, y1+d)
(+ (1- (nth 3 edges))
windmove-window-distance-delta))) ; (x, y1+d-1)
(t (error "Invalid direction of movement: %s" dir)))))
(defun windmove-find-other-window (dir &optional arg window)

View File

@ -1,3 +1,46 @@
2004-09-13 Kim F. Storm <storm@cua.dk>
* mini.texi (Repetition): Rename isearch-resume-enabled to
isearch-resume-in-command-history and change default to disabled.
2004-09-10 Simon Josefsson <jas@extundo.com>
* gnus.texi (IMAP): Add example. Suggested and partially written
by Steinar Bang <sb@dod.no>.
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.texi (IMAP): add comments about imaps synonym to imap in
netrc syntax
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.texi (Spam ELisp Package Sequence of Events): some clarifications
(Spam ELisp Package Global Variables)
(Spam ELisp Package Global Variables): more clarifications
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.texi (Spam ELisp Package Filtering of Incoming Mail):
mention spam-split does not modify incoming mail
2004-09-10 Teodor Zlatanov <tzz@lifelogs.com>
* gnus.texi (Spam ELisp Package Sequence of Events): fix typo
2004-09-10 Eli Zaretskii <eliz@gnu.org>
* Makefile.in (../info/gnus, gnus.dvi): Depend on gnus-faq.texi
2004-09-09 Kim F. Storm <storm@cua.dk>
* kmacro.texi (Save Keyboard Macro): Replace `name-last-kbd-macro'
with new `kmacro-name-last-macro'.
2004-09-09 Reiner Steib <Reiner.Steib@gmx.de>
* makefile.w32-in (sieve, pgg): Use $(infodir).
2004-09-08 Juri Linkov <juri@jurta.org>
* mini.texi (Minibuffer History): Add `history-delete-duplicates'.

View File

@ -188,25 +188,29 @@ forms.dvi: forms.texi
$(ENVADD) $(TEXI2DVI) ${srcdir}/forms.texi
# gnus/message/emacs-mime/sieve/pgg are part of Gnus:
../info/gnus: gnus.texi
../info/gnus: gnus.texi gnus-faq.texi
cd $(srcdir); $(MAKEINFO) gnus.texi
gnus.dvi: gnus.texi
gnus.dvi: gnus.texi gnus-faq.texi
sed -e '/@iflatex/,/@end iflatex/d' ${srcdir}/gnus.texi > gnustmp.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*
../info/message: message.texi
cd $(srcdir); $(MAKEINFO) message.texi
message.dvi: message.texi
$(ENVADD) $(TEXI2DVI) ${srcdir}/message.texi
../info/sieve: sieve.texi
cd $(srcdir); $(MAKEINFO) sieve.texi
sieve.dvi: sieve.texi
$(ENVADD) $(TEXI2DVI) ${srcdir}/sieve.texi
../info/emacs-mime: emacs-mime.texi
cd $(srcdir); $(MAKEINFO) emacs-mime.texi
emacs-mime.dvi: emacs-mime.texi
$(ENVADD) $(TEXI2DVI) ${srcdir}/emacs-mime.texi
../info/pgg: pgg.texi
cd $(srcdir); $(MAKEINFO) pgg.texi
pgg.dvi: pgg.texi

View File

@ -14011,8 +14011,8 @@ is run. That's why @code{(widen)} needs to be called after
@code{save-excursion} and @code{save-restriction} in the example
above. Also note that with the nnimap backend, message bodies will
not be downloaded by default. You need to set
@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in
IMAP}).
@code{nnimap-split-download-body} to @code{t} to do that
(@pxref{Splitting in IMAP}).
@item (! @var{func} @var{split})
If the split is a list, and the first element is @code{!}, then
@ -16209,7 +16209,17 @@ RFC 2060 for more information on valid strings.
A file containing credentials used to log in on servers. The format is
(almost) the same as the @code{ftp} @file{~/.netrc} file. See the
variable @code{nntp-authinfo-file} for exact syntax; also see
@ref{NNTP}.
@ref{NNTP}. An example of an .authinfo line for an IMAP server, is:
@example
machine students.uio.no login larsi password geheimnis port imap
@end example
Note that it should be @code{port imap}, or @code{port 143}, if you
use a @code{nnimap-stream} of @code{tls} or @code{ssl}, even if the
actual port number used is port 993 for secured IMAP. For
convenience, Gnus will accept @code{port imaps} as a synonym of
@code{port imap}.
@item nnimap-need-unselect-to-notice-new-mail
@vindex nnimap-need-unselect-to-notice-new-mail
@ -22249,16 +22259,18 @@ server or when you sort through incoming mail. If you get 200 spam
messages per day from @samp{random-address@@vmadmin.com}, you block
@samp{vmadmin.com}. If you get 200 messages about @samp{VIAGRA}, you
discard all messages with @samp{VIAGRA} in the message. If you get
lots of spam from China, for example, you try to filter all mail from
Chinese IPs.
lots of spam from Bulgaria, for example, you try to filter all mail
from Bulgarian IPs.
This, unfortunately, is a great way to discard legitimate e-mail. For
instance, the very informative and useful RISKS digest has been
blocked by overzealous mail filters because it @strong{contained}
words that were common in spam messages. The risks of blocking a
whole country from contacting you should also be obvious, so don't do
it if you have the choice. Nevertheless, in isolated cases, with
great care, direct filtering of mail can be useful.
This, unfortunately, is a great way to discard legitimate e-mail. The
risks of blocking a whole country (Bulgaria, Norway, Nigeria, China,
etc.) or even a continent (Asia, Africa, Europe, etc.) from contacting
you should be obvious, so don't do it if you have the choice.
In another instance, the very informative and useful RISKS digest has
been blocked by overzealous mail filters because it @strong{contained}
words that were common in spam messages. Nevertheless, in isolated
cases, with great care, direct filtering of mail can be useful.
Another approach to filtering e-mail is the distributed spam
processing, for instance DCC implements such a system. In essence,
@ -22435,8 +22447,8 @@ call the external tools during splitting. Example fancy split method:
Note that with the nnimap backend, message bodies will not be
downloaded by default. You need to set
@code{nnimap-split-download-body} to t to do that (@pxref{Splitting in
IMAP}).
@code{nnimap-split-download-body} to @code{t} to do that
(@pxref{Splitting in IMAP}).
That is about it. As some spam is likely to get through anyway, you
might want to have a nifty function to call when you happen to read
@ -22672,8 +22684,8 @@ any are set, and the processed mail is moved to the
@code{ham-process-destination} or the @code{spam-process-destination}
depending on the article's classification. If the
@code{ham-process-destination} or the @code{spam-process-destination},
whichever is appropriate, are nil, the article is left in the current
group.
whichever is appropriate, are @code{nil}, the article is left in the
current group.
If a spam is found in any group (this can be changed to only non-spam
groups with @code{spam-move-spam-nonspam-groups-only}), it is
@ -22685,11 +22697,11 @@ You have to load the @code{gnus-registry.el} package and enable the
@code{spam-log-to-registry} variable if you want spam to be processed
no more than once. Thus, spam is detected and processed everywhere,
which is what most people want. If the
@code{spam-process-destination} is nil, the spam is marked as
@code{spam-process-destination} is @code{nil}, the spam is marked as
expired, which is usually the right thing to do.
If spam can not be moved - because of a read-only backend such as NNTP,
for example, it will be copied.
If spam can not be moved---because of a read-only backend such as
@acronym{NNTP}, for example, it will be copied.
If a ham mail is found in a ham group, as determined by the
@code{ham-marks} parameter, it is processed as ham by the active ham
@ -22703,11 +22715,11 @@ no more than once. Thus, ham is detected and processed only when
necessary, which is what most people want. More on this in
@xref{Spam ELisp Package Configuration Examples}.
If ham can not be moved - because of a read-only backend such as NNTP,
for example, it will be copied.
If ham can not be moved---because of a read-only backend such as
@acronym{NNTP}, for example, it will be copied.
If all this seems confusing, don't worry. Soon it will be as natural
as typing Lisp one-liners on a neural interface... err, sorry, that's
as typing Lisp one-liners on a neural interface@dots{} err, sorry, that's
50 years in the future yet. Just trust us, it's not so bad.
@node Spam ELisp Package Filtering of Incoming Mail
@ -22728,6 +22740,8 @@ Note that the fancy split may be called @code{nnmail-split-fancy} or
@code{nnimap-split-fancy}, depending on whether you use the nnmail or
nnimap back ends to retrieve your mail.
Also, @code{spam-split} will not modify incoming mail in any way.
The @code{spam-split} function will process incoming mail and send the
mail considered to be spam into the group name given by the variable
@code{spam-split-group}. By default that group name is @samp{spam},
@ -22741,7 +22755,7 @@ actually give you the group
work depending on your server's tolerance for strange group names.
You can also give @code{spam-split} a parameter,
e.g. @samp{'spam-use-regex-headers} or @samp{"maybe-spam"}. Why is
e.g. @code{spam-use-regex-headers} or @code{"maybe-spam"}. Why is
this useful?
Take these split rules (with @code{spam-use-regex-headers} and
@ -22751,7 +22765,7 @@ Take these split rules (with @code{spam-use-regex-headers} and
nnimap-split-fancy '(|
(any "ding" "ding")
(: spam-split)
;; default mailbox
;; @r{default mailbox}
"mail")
@end example
@ -22767,14 +22781,15 @@ You can let SpamAssassin headers supersede ding rules, but all other
regex-headers check) will be after the ding rule:
@example
nnimap-split-fancy '(|
;;; all spam detected by spam-use-regex-headers goes to "regex-spam"
(: spam-split "regex-spam" 'spam-use-regex-headers)
(any "ding" "ding")
;;; all other spam detected by spam-split goes to spam-split-group
(: spam-split)
;; default mailbox
"mail")
nnimap-split-fancy
'(|
;; @r{all spam detected by @code{spam-use-regex-headers} goes to @samp{regex-spam}}
(: spam-split "regex-spam" 'spam-use-regex-headers)
(any "ding" "ding")
;; @r{all other spam detected by spam-split goes to @code{spam-split-group}}
(: spam-split)
;; @r{default mailbox}
"mail")
@end example
This lets you invoke specific @code{spam-split} checks depending on
@ -22827,7 +22842,7 @@ processors take mail known to be spam and process it so similar spam
will be detected later.
The format of the spam or ham processor entry used to be a symbol,
but now it is a cons cell. See the individual spam processor entries
but now it is a @sc{cons} cell. See the individual spam processor entries
for more information.
@vindex gnus-spam-newsgroup-contents
@ -22905,18 +22920,16 @@ not done for @emph{unclassified} or @emph{ham} groups. Also, any
determined by either the @code{ham-process-destination} group
parameter or a match in the @code{gnus-ham-process-destinations}
variable, which is a list of regular expressions matched with group
names (it's easiest to customize this variable with
@code{customize-variable gnus-ham-process-destinations}). Each
newsgroup specification has the format (REGEXP PROCESSOR) in a
standard Lisp list, if you prefer to customize the variable manually.
The ultimate location is a group name or names. If the
@code{ham-process-destination} parameter is not set, ham articles are
left in place. If the
names (it's easiest to customize this variable with @kbd{M-x
customize-variable @key{RET} gnus-ham-process-destinations}). Each
group name list is a standard Lisp list, if you prefer to customize
the variable manually. If the @code{ham-process-destination}
parameter is not set, ham articles are left in place. If the
@code{spam-mark-ham-unread-before-move-from-spam-group} parameter is
set, the ham articles are marked as unread before being moved.
set, the ham articles are marked as unread before being moved.
If ham can not be moved - because of a read-only backend such as NNTP,
for example, it will be copied.
If ham can not be moved---because of a read-only backend such as
@acronym{NNTP}, for example, it will be copied.
Note that you can use multiples destinations per group or regular
expression! This enables you to send your ham to a regular mail
@ -22944,18 +22957,16 @@ When you leave a @emph{ham} or @emph{unclassified} group, all
the @code{spam-process-destination} group parameter or a match in the
@code{gnus-spam-process-destinations} variable, which is a list of
regular expressions matched with group names (it's easiest to
customize this variable with @code{customize-variable
gnus-spam-process-destinations}). Each newsgroup specification has
the repeated format (REGEXP GROUP) and they are all in a standard Lisp
list, if you prefer to customize the variable manually. The ultimate
location is a group name or names. If the
customize this variable with @kbd{M-x customize-variable @key{RET}
gnus-spam-process-destinations}). Each group name list is a standard
Lisp list, if you prefer to customize the variable manually. If the
@code{spam-process-destination} parameter is not set, the spam
articles are only expired. The group name is fully qualified, meaning
that if you see @samp{nntp:servername} before the group name in the
group buffer then you need it here as well.
group buffer then you need it here as well.
If spam can not be moved - because of a read-only backend such as NNTP,
for example, it will be copied.
If spam can not be moved---because of a read-only backend such as
@acronym{NNTP}, for example, it will be copied.
Note that you can use multiples destinations per group or regular
expression! This enables you to send your spam to multiple @emph{spam
@ -22971,15 +22982,15 @@ entries, this won't work as well as it does without a limit.
@vindex spam-mark-only-unseen-as-spam
Set this variable if you want only unseen articles in spam groups to
be marked as spam. By default, it is set. If you set it to nil,
unread articles will also be marked as spam.
be marked as spam. By default, it is set. If you set it to
@code{nil}, unread articles will also be marked as spam.
@vindex spam-mark-ham-unread-before-move-from-spam-group
Set this variable if you want ham to be unmarked before it is moved
out of the spam group. This is very useful when you use something
like the tick mark @samp{!} to mark ham - the article will be placed
in your ham-process-destination, unmarked as if it came fresh from
the mail server.
like the tick mark @samp{!} to mark ham---the article will be placed
in your @code{ham-process-destination}, unmarked as if it came fresh
from the mail server.
@vindex spam-autodetect-recheck-messages
When autodetecting spam, this variable tells @code{spam.el} whether
@ -22997,87 +23008,86 @@ spam. It is recommended that you leave it off.
From Ted Zlatanov <tzz@@lifelogs.com>.
@example
;; for gnus-registry-split-fancy-with-parent and spam autodetection
;; see gnus-registry.el for more information
;; @r{for @code{gnus-registry-split-fancy-with-parent} and spam autodetection}
;; @r{see @file{gnus-registry.el} for more information}
(gnus-registry-initialize)
(spam-initialize)
;; I like control-S for marking spam
;; @r{I like @kbd{C-s} for marking spam}
(define-key gnus-summary-mode-map "\C-s" 'gnus-summary-mark-as-spam)
(setq
spam-log-to-registry t ;; for spam autodetection
spam-log-to-registry t ; @r{for spam autodetection}
spam-use-BBDB t
spam-use-regex-headers t ; catch X-Spam-Flag (SpamAssassin)
;; all groups with "spam" in the name contain spam
gnus-spam-newsgroup-contents '(("spam" gnus-group-spam-classification-spam))
;; see documentation for these
spam-use-regex-headers t ; @r{catch X-Spam-Flag (SpamAssassin)}
;; @r{all groups with @samp{spam} in the name contain spam}
gnus-spam-newsgroup-contents
'(("spam" gnus-group-spam-classification-spam))
;; @r{see documentation for these}
spam-move-spam-nonspam-groups-only nil
spam-mark-only-unseen-as-spam t
spam-mark-ham-unread-before-move-from-spam-group t
nnimap-split-rule 'nnimap-split-fancy
;; understand what this does before you copy it to your own setup!
;; @r{understand what this does before you copy it to your own setup!}
nnimap-split-fancy '(|
;; trace references to parents and put in their group
;; @r{trace references to parents and put in their group}
(: gnus-registry-split-fancy-with-parent)
;; this will catch server-side SpamAssassin tags
;; @r{this will catch server-side SpamAssassin tags}
(: spam-split 'spam-use-regex-headers)
(any "ding" "ding")
;; note that spam by default will go to "spam"
;; @r{note that spam by default will go to @samp{spam}}
(: spam-split)
;; default mailbox
;; @r{default mailbox}
"mail"))
;; my parameters, set with `G p'
;; @r{my parameters, set with @kbd{G p}}
;; all nnml groups, and all nnimap groups except
;; "nnimap+mail.lifelogs.com:train" and
;; "nnimap+mail.lifelogs.com:spam": any spam goes to nnimap training,
;; because it must have been detected manually
;; @r{all nnml groups, and all nnimap groups except}
;; @r{@samp{nnimap+mail.lifelogs.com:train} and}
;; @r{@samp{nnimap+mail.lifelogs.com:spam}: any spam goes to nnimap training,}
;; @r{because it must have been detected manually}
((spam-process-destination . "nnimap+mail.lifelogs.com:train"))
;; all NNTP groups
;; autodetect spam with the blacklist and ham with the BBDB
;; @r{all @acronym{NNTP} groups}
;; @r{autodetect spam with the blacklist and ham with the BBDB}
((spam-autodetect-methods spam-use-blacklist spam-use-BBDB)
;; send all spam to the training group
;; @r{send all spam to the training group}
(spam-process-destination . "nnimap+mail.lifelogs.com:train"))
;; only some NNTP groups, where I want to autodetect spam
;; @r{only some @acronym{NNTP} groups, where I want to autodetect spam}
((spam-autodetect . t))
;; my nnimap "nnimap+mail.lifelogs.com:spam" group
;; @r{my nnimap @samp{nnimap+mail.lifelogs.com:spam} group}
;; this is a spam group
;; @r{this is a spam group}
((spam-contents gnus-group-spam-classification-spam)
;; any spam (which happens when I enter for all unseen messages,
;; because of the gnus-spam-newsgroup-contents setting above), goes to
;; "nnimap+mail.lifelogs.com:train" unless I mark it as ham
;; @r{any spam (which happens when I enter for all unseen messages,}
;; @r{because of the @code{gnus-spam-newsgroup-contents} setting above), goes to}
;; @r{@samp{nnimap+mail.lifelogs.com:train} unless I mark it as ham}
(spam-process-destination "nnimap+mail.lifelogs.com:train")
;; any ham goes to my "nnimap+mail.lifelogs.com:mail" folder, but
;; also to my "nnimap+mail.lifelogs.com:trainham" folder for training
;; @r{any ham goes to my @samp{nnimap+mail.lifelogs.com:mail} folder, but}
;; @r{also to my @samp{nnimap+mail.lifelogs.com:trainham} folder for training}
(ham-process-destination "nnimap+mail.lifelogs.com:mail"
"nnimap+mail.lifelogs.com:trainham")
;; in this group, only '!' marks are ham
;; @r{in this group, only @samp{!} marks are ham}
(ham-marks
(gnus-ticked-mark))
;; remembers senders in the blacklist on the way out - this is
;; definitely not needed, it just makes me feel better
;; @r{remembers senders in the blacklist on the way out---this is}
;; @r{definitely not needed, it just makes me feel better}
(spam-process (gnus-group-spam-exit-processor-blacklist)))
;; Later, on the IMAP server I use the "train" group for training
;; SpamAssassin to recognize spam, and the "trainham" group for
;; recognizing ham - but Gnus has nothing to do with it.
;; @r{Later, on the @acronym{IMAP} server I use the @samp{train} group for training}
;; @r{SpamAssassin to recognize spam, and the @samp{trainham} group fora}
;; @r{recognizing ham---but Gnus has nothing to do with it.}
@end example
@subsubheading Using @file{spam.el} on an IMAP server with a statistical filter on the server
From Reiner Steib <reiner.steib@@gmx.de>.
My provider has set up bogofilter (in combination with @acronym{DCC}) on
@ -23115,7 +23125,7 @@ Because of the @code{gnus-group-spam-classification-spam} entry, all
messages are marked as spam (with @code{$}). When I find a false
positive, I mark the message with some other ham mark (@code{ham-marks},
@ref{Spam ELisp Package Global Variables}). On group exit, those
messages are copied to both groups, @samp{INBOX} (were I want to have
messages are copied to both groups, @samp{INBOX} (where I want to have
the article) and @samp{training.ham} (for training bogofilter) and
deleted from the @samp{spam.detected} folder.
@ -23147,7 +23157,7 @@ groups as spam and reports the to Gmane at group exit:
(spam-process (gnus-group-spam-exit-processor-report-gmane)))
@end lisp
Additionally, I use `(setq spam-report-gmane-use-article-number nil)'
Additionally, I use @code{(setq spam-report-gmane-use-article-number nil)}
because I don't read the groups directly from news.gmane.org, but
through my local news server (leafnode). I.e. the article numbers are
not the same as on news.gmane.org, thus @code{spam-report.el} has to check
@ -23702,7 +23712,7 @@ the same way, we promise.
Add this symbol to a group's @code{spam-process} parameter by
customizing the group parameter or the
@code{gnus-spam-process-newsgroups} variable. When this symbol is added
to a grup's @code{spam-process} parameter, the ham-marked articles in
to a group's @code{spam-process} parameter, the ham-marked articles in
@emph{ham} groups will be sent to the SpamOracle as samples of ham
messages. Note that this ham processor has no effect in @emph{spam} or
@emph{unclassified} groups.
@ -23742,7 +23752,7 @@ incoming mail, provide the following:
@enumerate
@item
code
Code
@lisp
(defvar spam-use-blackbox nil
@ -23750,32 +23760,34 @@ code
@end lisp
Add
@example
(spam-use-blackbox . spam-check-blackbox)
@end example
@lisp
(spam-use-blackbox . spam-check-blackbox)
@end lisp
to @code{spam-list-of-checks}.
Add
@example
(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox)
(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox)
@end example
@lisp
(gnus-group-ham-exit-processor-blackbox ham spam-use-blackbox)
(gnus-group-spam-exit-processor-blackbox spam spam-use-blackbox)
@end lisp
to @code{spam-list-of-processors}.
Add
@example
(spam-use-blackbox spam-blackbox-register-routine
nil
spam-blackbox-unregister-routine
nil)
@end example
@lisp
(spam-use-blackbox spam-blackbox-register-routine
nil
spam-blackbox-unregister-routine
nil)
@end lisp
to @code{spam-registration-functions}. Write the register/unregister
routines using the bogofilter register/unregister routines as a
start, or other restister/unregister routines more appropriate to
Blackbox.
@item
functionality
Functionality
Write the @code{spam-check-blackbox} function. It should return
@samp{nil} or @code{spam-split-group}, observing the other
@ -23794,7 +23806,7 @@ For processing spam and ham messages, provide the following:
@enumerate
@item
code
Code
Note you don't have to provide a spam or a ham processor. Only
provide them if Blackbox supports spam or ham processing.
@ -23819,18 +23831,18 @@ Only applicable to non-spam (unclassified and ham) groups.")
Gnus parameters
Add
@example
(const :tag "Spam: Blackbox" (spam spam-use-blackbox))
(const :tag "Ham: Blackbox" (ham spam-use-blackbox))
@end example
@lisp
(const :tag "Spam: Blackbox" (spam spam-use-blackbox))
(const :tag "Ham: Blackbox" (ham spam-use-blackbox))
@end lisp
to the @code{spam-process} group parameter in @code{gnus.el}. Make
sure you do it twice, once for the parameter and once for the
variable customization.
Add
@example
(variable-item spam-use-blackbox)
@end example
@lisp
(variable-item spam-use-blackbox)
@end lisp
to the @code{spam-autodetect-methods} group parameter in
@code{gnus.el}.

View File

@ -62,7 +62,7 @@ When this point is reached during macro execution, ask for confirmation
(@code{kbd-macro-query}).
@item C-x C-k n
Give a command name (for the duration of the session) to the most
recently defined keyboard macro (@code{name-last-kbd-macro}).
recently defined keyboard macro (@code{kmacro-name-last-macro}).
@item C-x C-k b
Bind the most recently defined keyboard macro to a key sequence (for
the duration of the session) (@code{kmacro-bind-to-key}).
@ -361,10 +361,10 @@ register as a counter, incrementing it on each repetition of the macro.
@section Naming and Saving Keyboard Macros
@cindex saving keyboard macros
@findex name-last-kbd-macro
@findex kmacro-name-last-macro
@kindex C-x C-k n
If you wish to save a keyboard macro for later use, you can give it
a name using @kbd{C-x C-k n} (@code{name-last-kbd-macro}).
a name using @kbd{C-x C-k n} (@code{kmacro-name-last-macro}).
This reads a name as an argument using the minibuffer and defines that
name to execute the last keyboard macro, in its current form. (If you
later add to the definition of this macro, that does not alter the

View File

@ -342,6 +342,9 @@ In HTML input files, the tags are the @code{title} and the @code{h1},
@code{h2}, @code{h3} headers. Also, tags are @code{name=} in anchors
and all occurrences of @code{id=}.
@item
In Lua input files, all functions are tags.
@item
In makefiles, targets are tags; additionally, variables are tags
unless you specify @samp{--no-globals}.
@ -442,7 +445,8 @@ well as the files it directly contains.
directory where the tags file was initially written. This way, you can
move an entire directory tree containing both the tags file and the
source files, and the tags file will still refer correctly to the source
files.
files. If the tags file is in @file{/dev}, however, the file names are
made relative to the current working directory.
If you specify absolute file names as arguments to @code{etags}, then
the tags file will contain absolute file names. This way, the tags file

View File

@ -198,19 +198,23 @@ gnus.dvi: gnus.texi
$(ENVADD) $(TEXI2DVI) gnustmp.texi
cp gnustmp.dvi $*.dvi
rm gnustmp.*
#
$(infodir)/message: message.texi
$(MAKEINFO) message.texi
message.dvi: message.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/message.texi
#
$(infodir)/emacs-mime: emacs-mime.texi
$(MAKEINFO) emacs-mime.texi
emacs-mime.dvi: emacs-mime.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/emacs-mime.texi
../info/sieve: sieve.texi
#
$(infodir)/sieve: sieve.texi
$(MAKEINFO) sieve.texi
sieve.dvi: sieve.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/sieve.texi
../info/pgg: pgg.texi
#
$(infodir)/pgg: pgg.texi
$(MAKEINFO) pgg.texi
pgg.dvi: pgg.texi
$(ENVADD) $(TEXI2DVI) $(srcdir)/pgg.texi

View File

@ -564,12 +564,13 @@ of saved entire commands. After finding the desired previous command,
you can edit its expression as usual and then resubmit it by typing
@key{RET} as usual.
@vindex isearch-resume-enabled
@vindex isearch-resume-in-command-history
Incremental search does not, strictly speaking, use the minibuffer,
but it does something similar, so normally it is treated as a complex
command and it appears in the history list for @kbd{C-x @key{ESC}
@key{ESC}}. You can disable that by setting
@code{isearch-resume-enabled} to @code{nil}.
but it does something similar. Although it behaves like a complex command,
it normally does not appear in the history list for @kbd{C-x
@key{ESC} @key{ESC}}. You can make it appear in the history by
setting @code{isearch-resume-in-command-history} to a non-@code{nil}
value.
@vindex command-history
The list of previous minibuffer-using commands is stored as a Lisp

View File

@ -279,6 +279,13 @@ respectively.
;; Authenticate using this username and password against my server.
(setq smtpmail-auth-credentials
'(("@var{hostname}" "@var{port}" "@var{username}" "@var{password}")))
;; Note that if @var{port} is an integer, you must not quote it as a
;; string. Normally @var{port} should be the integer 25, and the example
;; become:
(setq smtpmail-auth-credentials
'(("@var{hostname}" 25 "@var{username}" "@var{password}")))
;; Use STARTTLS without authentication against the server.
(setq smtpmail-starttls-credentials
'(("@var{hostname}" "@var{port}" nil nil)))

View File

@ -1,3 +1,85 @@
2004-09-14 Stefan <monnier@iro.umontreal.ca>
* fileio.c (Finsert_file_contents): Fix case of replacement in a
narrowed buffer.
2004-09-14 Kim F. Storm <storm@cua.dk>
* puresize.h (PURESIZE_RATIO): Define based on BITS_PER_EMACS_INT.
* xfaces.c (Qface_no_inherit): New var.
(syms_of_xfaces): Intern and staticpro it.
(Finternal_make_lisp_face, Finternal_set_lisp_face_attribute)
(Finternal_copy_lisp_face, update_face_from_frame_parameter):
Don't increment face_change_count when face has non-nil
face-no-inherit property.
2004-09-13 Stefan Monnier <monnier@iro.umontreal.ca>
* bytecode.c (BYTE_CODE_QUIT): Add missing AFTER_POTENTIAL_GC.
(Fbyte_code): Remove dead code after `wrong_type_argument'.
* alloc.c (Fgarbage_collect): Mark keyboards, gtk data, and specpdl
before doing the mark_stack_check_gcpros since they are not on the stack.
2004-09-12 Kim F. Storm <storm@cua.dk>
* editfns.c (Fformat): Handle format strings with multiple text
properties. Reverse text property list from the format string,
so the positions are in increasing order.
2004-09-10 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* xselect.c (x_reply_selection_request): XSync and UNBLOCK before
x_uncatch_errors so that possible protocol errors are delivered.
2004-09-10 Eli Zaretskii <eliz@gnu.org>
* Makefile.in (msdos.o): Depend on buffer.h, commands.h, and
blockinput.h.
(dosfns.o): Depend on blockinput.h, window.h, dispextern.h,
charset.h, and coding.h
(w16select.o): Depend on buffer.h, charset.h, coding.h, and
composite.h.
(term.o): Depend on window.h and keymap.h.
(abbrev.o): Depend on syntax.h.
(callint.o): Depend on keymap.h.
(casefiddle.o): Depend on charset.h and keymap.h.
(category.o): Depend on keymap.h.
(coding.o): Depend on dispextern.h.
(cmds.o): Depend on keyboard.h and keymap.h.
(dispnew.o): Depend on indent.h and intervals.h.
(doc.o): Depend on keymap.h.
(editfns.o): Depend on frame.h.
(emacs.o): Depend on dispextern.h.
(fileio.o): Don't depend on ccl.h.
(filelock.o): Depend on charset.h and coding.h.
(frame.o): Depend on w32term.h and macterm.h.
(insdel.o): Depend on region-cache.h.
(keyboard.o): Depend on keymap.h, w32term.h, and macterm.h.
(minibuf.o): Depend on $(INTERVALS_SRC) and keymap.h.
(search.o): Depend on $(INTERVALS_SRC).
(syntax.o): Depend on keymap.h, regex.h, and $(INTERVALS_SRC).
(window.o): Depend on keymap.h, blockinput.h, $(INTERVALS_SRC),
xterm.h, w32term.h, and macterm.h.
(xdisp.o): Depend on keyboard.h, $(INTERVALS_SRC), xterm.h,
w32term.h, and macterm.h.
(xfaces.o): Depend on keyboard.h, $(INTERVALS_SRC),
region-cache.h, xterm.h, w32term.h, and macterm.h.
(bytecode.o): Depend on dispextern.h, frame.h, and xterm.h.
(data.o): Depend on frame.h.
(fns.o): Depend on keymap.h, xterm.h, and blockinput.h.
(print.o): Depend on termchar.h and $(INTERVALS_SRC).
(lread.o): Depend on $(INTERVALS_SRC), termhooks.h, and coding.h.
(intervals.o): Depend on keymap.h.
* msdos.c (msdos_set_cursor_shape, IT_display_cursor): Add
debugging print-out to termscript.
2004-09-09 Richard M. Stallman <rms@gnu.org>
* xdisp.c (decode_mode_spec): Use current buffer for most purposes.
2004-09-08 Richard M. Stallman <rms@gnu.org>
* window.c (Fset_window_buffer): Doc fix.
@ -12446,7 +12528,7 @@
2002-02-15 Andreas Schwab <schwab@suse.de>
* puresize.h (BASE_PURESIZE): Increase to 9/5.
* puresize.h (PURESIZE_RATIO): Increase to 9/5.
* alloc.c (NSTATICS): Increase to 1280.

View File

@ -1024,29 +1024,32 @@ alloca.o: alloca.c blockinput.h atimer.h
and so rarely changed in ways that do require any. */
abbrev.o: abbrev.c buffer.h window.h dispextern.h commands.h character.h \
$(config_h)
syntax.h $(config_h)
buffer.o: buffer.c buffer.h region-cache.h commands.h window.h \
dispextern.h $(INTERVAL_SRC) blockinput.h atimer.h systime.h character.h \
$(config_h)
callint.o: callint.c window.h commands.h buffer.h \
callint.o: callint.c window.h commands.h buffer.h keymap.h \
keyboard.h dispextern.h $(config_h)
callproc.o: callproc.c epaths.h buffer.h commands.h $(config_h) \
process.h systty.h syssignal.h character.h coding.h ccl.h msdos.h \
composite.h
composite.h w32.h
casefiddle.o: casefiddle.c syntax.h commands.h buffer.h character.h \
composite.h $(config_h)
composite.h \
charset.h keymap.h $(config_h)
casetab.o: casetab.c buffer.h $(config_h)
category.o: category.c category.h buffer.h charset.h character.h $(config_h)
category.o: category.c category.h buffer.h charset.h keymap.h \
character.h $(config_h)
ccl.o: ccl.c ccl.h charset.h character.h coding.h $(config_h)
character.o: character.c character.h buffer.h charset.h composite.h disptab.h \
$(config.h)
charset.o: charset.c charset.h character.h buffer.h coding.h composite.h \
disptab.h $(config_h)
chartab.o: charset.h character.h $(config.h)
coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h intervals.h composite.h window.h $(config_h)
coding.o: coding.c coding.h ccl.h buffer.h character.h charset.h intervals.h composite.h \
window.h dispextern.h $(config_h)
cm.o: cm.c cm.h termhooks.h $(config_h)
cmds.o: cmds.c syntax.h buffer.h character.h commands.h window.h $(config_h) \
msdos.h dispextern.h
msdos.h dispextern.h keyboard.h keymap.h
pre-crt0.o: pre-crt0.c
ecrt0.o: ecrt0.c $(config_h)
CRT0_COMPILE ${srcdir}/ecrt0.c
@ -1054,25 +1057,26 @@ dired.o: dired.c commands.h buffer.h $(config_h) character.h charset.h \
coding.h regex.h systime.h
dispnew.o: dispnew.c systty.h systime.h commands.h process.h frame.h \
window.h buffer.h dispextern.h termchar.h termopts.h termhooks.h cm.h \
disptab.h \
disptab.h indent.h intervals.h \
xterm.h blockinput.h atimer.h character.h msdos.h composite.h keyboard.h \
$(config_h)
doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h character.h
doc.o: doc.c $(config_h) epaths.h buffer.h keyboard.h keymap.h character.h
doprnt.o: doprnt.c character.h $(config_h)
dosfns.o: buffer.h termchar.h termhooks.h frame.h msdos.h dosfns.h $(config_h)
dosfns.o: buffer.h termchar.h termhooks.h frame.h blockinput.h window.h \
msdos.h dosfns.h dispextern.h charset.h coding.h $(config_h)
editfns.o: editfns.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
coding.h dispextern.h $(config_h)
coding.h dispextern.h frame.h $(config_h)
emacs.o: emacs.c commands.h systty.h syssignal.h blockinput.h process.h \
termhooks.h buffer.h atimer.h systime.h $(INTERVAL_SRC) $(config_h) \
window.h keyboard.h keymap.h
window.h dispextern.h keyboard.h keymap.h
fileio.o: fileio.c window.h buffer.h systime.h $(INTERVAL_SRC) character.h \
coding.h ccl.h msdos.h dispextern.h $(config_h)
coding.h msdos.h dispextern.h $(config_h)
filelock.o: filelock.c buffer.h character.h charset.h coding.h systime.h \
epaths.h $(config_h)
filemode.o: filemode.c $(config_h)
frame.o: frame.c xterm.h window.h frame.h termhooks.h commands.h keyboard.h \
blockinput.h atimer.h systime.h buffer.h character.h fontset.h \
msdos.h dosfns.h dispextern.h $(config_h)
msdos.h dosfns.h dispextern.h w32term.h macterm.h $(config_h)
fringe.o: fringe.c dispextern.h frame.h window.h buffer.h $(config_h)
fontset.o: dispextern.h fontset.h fontset.c ccl.h buffer.h character.h \
charset.h frame.h keyboard.h $(config_h)
@ -1083,11 +1087,11 @@ indent.o: indent.c frame.h window.h indent.h buffer.h $(config_h) termchar.h \
termopts.h disptab.h region-cache.h character.h category.h composite.h \
dispextern.h keyboard.h
insdel.o: insdel.c window.h buffer.h $(INTERVAL_SRC) blockinput.h character.h \
dispextern.h atimer.h systime.h $(config_h)
dispextern.h atimer.h systime.h region-cache.h $(config_h)
keyboard.o: keyboard.c termchar.h termhooks.h termopts.h buffer.h character.h \
commands.h frame.h window.h macros.h disptab.h keyboard.h syssignal.h \
systty.h systime.h dispextern.h syntax.h $(INTERVAL_SRC) blockinput.h \
atimer.h xterm.h puresize.h msdos.h $(config_h)
atimer.h xterm.h puresize.h msdos.h keymap.h w32term.h macterm.h $(config_h)
keymap.o: keymap.c buffer.h commands.h keyboard.h termhooks.h blockinput.h \
atimer.h systime.h puresize.h character.h intervals.h $(config_h)
lastfile.o: lastfile.c $(config_h)
@ -1100,11 +1104,11 @@ vm-limit.o: vm-limit.c mem-limits.h $(config_h)
marker.o: marker.c buffer.h character.h $(config_h)
md5.o: md5.c md5.h $(config_h)
minibuf.o: minibuf.c syntax.h dispextern.h frame.h window.h keyboard.h \
buffer.h commands.h character.h msdos.h $(config_h)
buffer.h commands.h character.h msdos.h $(INTERVAL_SRC) keymap.h $(config_h)
mktime.o: mktime.c $(config_h)
msdos.o: msdos.c msdos.h dosfns.h systime.h termhooks.h dispextern.h frame.h \
termopts.h termchar.h character.h coding.h ccl.h disptab.h window.h \
keyboard.h intervals.h $(config_h)
keyboard.h intervals.h buffer.h commands.h blockinput.h $(config_h)
process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
@ -1116,16 +1120,17 @@ scroll.o: scroll.c termchar.h dispextern.h frame.h msdos.h keyboard.h \
$(config_h)
search.o: search.c regex.h commands.h buffer.h region-cache.h syntax.h \
blockinput.h atimer.h systime.h category.h character.h composite.h \
$(INTERVAL_SRC) \
$(config_h)
strftime.o: strftime.c $(config_h)
syntax.o: syntax.c syntax.h buffer.h commands.h category.h character.h \
composite.h $(config_h)
composite.h keymap.h regex.h $(INTERVAL_SRC) $(config_h)
sysdep.o: sysdep.c syssignal.h systty.h systime.h syswait.h blockinput.h \
process.h dispextern.h termhooks.h termchar.h termopts.h \
frame.h atimer.h window.h msdos.h dosfns.h keyboard.h $(config_h)
term.o: term.c termchar.h termhooks.h termopts.h $(config_h) cm.h frame.h \
disptab.h dispextern.h keyboard.h character.h charset.h coding.h ccl.h \
msdos.h keymap.h
msdos.h window.h keymap.h
termcap.o: termcap.c $(config_h)
terminfo.o: terminfo.c $(config_h)
tparam.o: tparam.c $(config_h)
@ -1135,19 +1140,21 @@ undo.o: undo.c buffer.h commands.h $(config_h)
UNEXEC_ALIAS=UNEXEC
$(UNEXEC_ALIAS): UNEXEC_SRC $(config_h)
w16select.o: w16select.c dispextern.h frame.h blockinput.h atimer.h systime.h \
msdos.h $(config_h)
msdos.h buffer.h charset.h coding.h composite.h $(config_h)
widget.o: widget.c xterm.h frame.h dispextern.h widgetprv.h \
$(srcdir)/../lwlib/lwlib.h $(config_h)
window.o: window.c indent.h commands.h frame.h window.h buffer.h termchar.h \
termhooks.h disptab.h keyboard.h dispextern.h msdos.h composite.h \
keymap.h blockinput.h $(INTERVAL_SRC) xterm.h w32term.h macterm.h $(config_h)
xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h \
coding.h termchar.h frame.h window.h disptab.h termhooks.h character.h \
charset.h keyboard.h $(INTERVAL_SRC) region-cache.h xterm.h w32term.h \
macterm.h $(config_h) msdos.h composite.h fontset.h blockinput.h atimer.h \
systime.h keymap.h
xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
systime.h keyboard.h fontset.h w32term.h macterm.h $(INTERVAL_SRC) \
$(config_h)
xdisp.o: xdisp.c macros.h commands.h process.h indent.h buffer.h dispextern.h coding.h \
termchar.h frame.h window.h disptab.h termhooks.h character.h charset.h \
$(config_h) msdos.h composite.h fontset.h blockinput.h atimer.h systime.h \
keymap.h region-cache.h
xfaces.o: xfaces.c dispextern.h frame.h xterm.h buffer.h blockinput.h \
window.h character.h charset.h msdos.h dosfns.h composite.h atimer.h \
systime.h fontset.h $(config_h) $(INTERVAL_SRC)
xfns.o: xfns.c buffer.h frame.h window.h keyboard.h xterm.h dispextern.h \
$(srcdir)/../lwlib/lwlib.h blockinput.h atimer.h systime.h epaths.h \
character.h charset.h coding.h gtkutil.h $(config_h) termhooks.h
@ -1175,23 +1182,26 @@ atimer.o: atimer.c atimer.h systime.h $(config_h)
alloc.o: alloc.c process.h frame.h window.h buffer.h puresize.h syssignal.h keyboard.h \
blockinput.h atimer.h systime.h character.h dispextern.h $(config_h) \
$(INTERVAL_SRC)
bytecode.o: bytecode.c buffer.h syntax.h character.h window.h $(config_h)
data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h \
bytecode.o: bytecode.c buffer.h syntax.h character.h window.h dispextern.h \
frame.h xterm.h $(config_h)
data.o: data.c buffer.h puresize.h character.h syssignal.h keyboard.h frame.h \
$(config_h)
eval.o: eval.c commands.h keyboard.h blockinput.h atimer.h systime.h \
dispextern.h $(config_h)
floatfns.o: floatfns.c $(config_h)
fns.o: fns.c commands.h $(config_h) frame.h buffer.h character.h keyboard.h \
frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h
keymap.h frame.h window.h dispextern.h $(INTERVAL_SRC) coding.h md5.h \
blockinput.h xterm.h
print.o: print.c process.h frame.h window.h buffer.h keyboard.h character.h \
$(config_h) dispextern.h msdos.h composite.h
$(config_h) dispextern.h termchar.h $(INTERVAL_SRC) msdos.h composite.h
lread.o: lread.c commands.h keyboard.h buffer.h epaths.h character.h \
charset.h $(config_h) termhooks.h coding.h msdos.h
charset.h $(config_h) $(INTERVAL_SRC) termhooks.h coding.h msdos.h
/* Text properties support */
textprop.o: textprop.c buffer.h window.h dispextern.h $(INTERVAL_SRC) \
$(config_h)
intervals.o: intervals.c buffer.h $(INTERVAL_SRC) keyboard.h puresize.h $(config_h)
intervals.o: intervals.c buffer.h $(INTERVAL_SRC) keyboard.h puresize.h \
keymap.h $(config_h)
composite.o: composite.c buffer.h character.h $(INTERVAL_SRC) $(config_h)
/* System-specific programs to be made.

View File

@ -1,6 +1,6 @@
/* Storage allocation and gc for GNU Emacs Lisp interpreter.
Copyright (C) 1985,86,88,93,94,95,97,98,1999,2000,01,02,03,2004
Free Software Foundation, Inc.
Copyright (C) 1985, 1986, 1988, 1993, 1994, 1995, 1997, 1998, 1999,
2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -4411,6 +4411,20 @@ returns nil, because real GC can't be done. */)
for (i = 0; i < staticidx; i++)
mark_object (*staticvec[i]);
for (bind = specpdl; bind != specpdl_ptr; bind++)
{
mark_object (bind->symbol);
mark_object (bind->old_value);
}
mark_kboards ();
#ifdef USE_GTK
{
extern void xg_mark_data ();
xg_mark_data ();
}
#endif
#if (GC_MARK_STACK == GC_MAKE_GCPROS_NOOPS \
|| GC_MARK_STACK == GC_MARK_STACK_CHECK_GCPROS)
mark_stack ();
@ -4424,11 +4438,6 @@ returns nil, because real GC can't be done. */)
#endif
mark_byte_stack ();
for (bind = specpdl; bind != specpdl_ptr; bind++)
{
mark_object (bind->symbol);
mark_object (bind->old_value);
}
for (catch = catchlist; catch; catch = catch->next)
{
mark_object (catch->tag);
@ -4440,19 +4449,11 @@ returns nil, because real GC can't be done. */)
mark_object (handler->var);
}
mark_backtrace ();
mark_kboards ();
#if GC_MARK_STACK == GC_USE_GCPROS_CHECK_ZOMBIES
mark_stack ();
#endif
#ifdef USE_GTK
{
extern void xg_mark_data ();
xg_mark_data ();
}
#endif
/* Everything is now marked, except for the things that require special
finalization, i.e. the undo_list.
Look thru every buffer's undo list

View File

@ -1,5 +1,5 @@
/* Execution of byte code produced by bytecomp.el.
Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003
Copyright (C) 1985, 1986, 1987, 1988, 1993, 2000, 2001, 2002, 2003, 2004
Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -387,6 +387,7 @@ unmark_byte_stack ()
Vquit_flag = Qnil; \
BEFORE_POTENTIAL_GC (); \
Fsignal (Qquit, Qnil); \
AFTER_POTENTIAL_GC (); \
} \
} while (0)
@ -539,9 +540,7 @@ If the third argument is incorrect, Emacs may crash. */)
TOP = Qnil;
else
{
BEFORE_POTENTIAL_GC ();
Fcar (wrong_type_argument (Qlistp, v1));
AFTER_POTENTIAL_GC ();
wrong_type_argument (Qlistp, v1);
}
break;
}
@ -574,9 +573,7 @@ If the third argument is incorrect, Emacs may crash. */)
TOP = Qnil;
else
{
BEFORE_POTENTIAL_GC ();
Fcdr (wrong_type_argument (Qlistp, v1));
AFTER_POTENTIAL_GC ();
wrong_type_argument (Qlistp, v1);
}
break;
}
@ -907,11 +904,7 @@ If the third argument is incorrect, Emacs may crash. */)
else if (!NILP (v1))
{
immediate_quit = 0;
BEFORE_POTENTIAL_GC ();
v1 = wrong_type_argument (Qlistp, v1);
AFTER_POTENTIAL_GC ();
immediate_quit = 1;
op++;
wrong_type_argument (Qlistp, v1);
}
}
immediate_quit = 0;
@ -920,11 +913,7 @@ If the third argument is incorrect, Emacs may crash. */)
else if (NILP (v1))
TOP = Qnil;
else
{
BEFORE_POTENTIAL_GC ();
Fcar (wrong_type_argument (Qlistp, v1));
AFTER_POTENTIAL_GC ();
}
wrong_type_argument (Qlistp, v1);
break;
}
@ -1561,11 +1550,7 @@ If the third argument is incorrect, Emacs may crash. */)
else if (!NILP (v1))
{
immediate_quit = 0;
BEFORE_POTENTIAL_GC ();
v1 = wrong_type_argument (Qlistp, v1);
AFTER_POTENTIAL_GC ();
immediate_quit = 1;
op++;
wrong_type_argument (Qlistp, v1);
}
}
immediate_quit = 0;
@ -1574,11 +1559,7 @@ If the third argument is incorrect, Emacs may crash. */)
else if (NILP (v1))
TOP = Qnil;
else
{
BEFORE_POTENTIAL_GC ();
Fcar (wrong_type_argument (Qlistp, v1));
AFTER_POTENTIAL_GC ();
}
wrong_type_argument (Qlistp, v1);
}
else
{

View File

@ -3824,11 +3824,13 @@ usage: (format STRING &rest OBJECTS) */)
/* Adjust the bounds of each text property
to the proper start and end in the output string. */
/* We take advantage of the fact that the positions in PROPS
are in increasing order, so that we can do (effectively)
one scan through the position space of the format string.
BYTEPOS is the byte position in the format string,
/* Put the positions in PROPS in increasing order, so that
we can do (effectively) one scan through the position
space of the format string. */
props = Fnreverse (props);
/* BYTEPOS is the byte position in the format string,
POSITION is the untranslated char position in it,
TRANSLATED is the translated char position in BUF,
and ARGN is the number of the next arg we will come to. */

View File

@ -1,6 +1,6 @@
/* File IO for GNU Emacs.
Copyright (C) 1985,86,87,88,93,94,95,96,97,98,99,2000,01,03,2004
Free Software Foundation, Inc.
Copyright (C) 1985, 1986, 1987, 1988, 1993, 1994, 1995, 1996, 1997, 1998,
1999, 2000, 2001, 2003, 2004 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@ -4304,7 +4304,7 @@ actually used. */)
/* Replace the chars that we need to replace,
and update INSERTED to equal the number of bytes
we are taking from the decoded string. */
inserted -= (Z_BYTE - same_at_end) + (same_at_start - BEG_BYTE);
inserted -= (ZV_BYTE - same_at_end) + (same_at_start - BEGV_BYTE);
if (same_at_end != same_at_start)
{

View File

@ -752,6 +752,9 @@ msdos_set_cursor_shape (struct frame *f, int start_line, int width)
if (f && f != SELECTED_FRAME())
return;
if (termscript)
fprintf (termscript, "\nCURSOR SHAPE=(%d,%d)", start_line, width);
/* The character cell size in scan lines is stored at 40:85 in the
BIOS data area. */
max_line = _farpeekw (_dos_ds, 0x485) - 1;
@ -851,10 +854,12 @@ IT_set_cursor_type (struct frame *f, Lisp_Object cursor_type)
}
}
else
/* Treat anything unknown as "box cursor". This includes nil, so
that a frame which doesn't specify a cursor type gets a box,
which is the default in Emacs. */
msdos_set_cursor_shape (f, 0, BOX_CURSOR_WIDTH);
{
/* Treat anything unknown as "box cursor". This includes nil, so
that a frame which doesn't specify a cursor type gets a box,
which is the default in Emacs. */
msdos_set_cursor_shape (f, 0, BOX_CURSOR_WIDTH);
}
}
static void
@ -1826,6 +1831,8 @@ static int cursor_cleared;
static void
IT_display_cursor (int on)
{
if (termscript)
fprintf (termscript, "\nCURSOR %s", on ? "ON" : "OFF");
if (on && cursor_cleared)
{
ScreenSetCursor (current_pos_Y, current_pos_X);

View File

@ -47,7 +47,7 @@ Boston, MA 02111-1307, USA. */
/* Increase BASE_PURESIZE by a ratio depending on the machine's word size. */
#ifndef PURESIZE_RATIO
#if VALBITS + GCTYPEBITS + 1 > 32
#if BITS_PER_EMACS_INT > 32
#define PURESIZE_RATIO 9/5 /* Don't surround with `()'. */
#else
#define PURESIZE_RATIO 1

View File

@ -16228,7 +16228,10 @@ decode_mode_spec_coding (coding_system, buf, eol_flag)
generated by character C. PRECISION >= 0 means don't return a
string longer than that value. FIELD_WIDTH > 0 means pad the
string returned with spaces to that value. Return 1 in *MULTIBYTE
if the result is multibyte text. */
if the result is multibyte text.
Note we operate on the current buffer for most purposes,
the exception being w->base_line_pos. */
static char lots_of_dashes[] = "--------------------------------------------------------------------------------------------------------------------------------------------";
@ -16242,7 +16245,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
Lisp_Object obj;
struct frame *f = XFRAME (WINDOW_FRAME (w));
char *decode_mode_spec_buf = f->decode_mode_spec_buffer;
struct buffer *b = XBUFFER (w->buffer);
struct buffer *b = current_buffer;
obj = Qnil;
*multibyte = 0;
@ -16544,7 +16547,7 @@ decode_mode_spec (w, c, field_width, precision, multibyte)
case 's':
/* status of process */
obj = Fget_buffer_process (w->buffer);
obj = Fget_buffer_process (Fcurrent_buffer ());
if (NILP (obj))
return "no process";
#ifdef subprocesses

View File

@ -389,6 +389,10 @@ Lisp_Object Qforeground_color, Qbackground_color;
Lisp_Object Qface;
extern Lisp_Object Qmouse_face;
/* Property for basic faces which other faces cannot inherit. */
Lisp_Object Qface_no_inherit;
/* Error symbol for wrong_type_argument in load_pixmap. */
Lisp_Object Qbitmap_spec_p;
@ -3944,8 +3948,11 @@ Value is a vector of face attributes. */)
depend on the face, make sure they are all removed. This is done
by incrementing face_change_count. The next call to
init_iterator will then free realized faces. */
++face_change_count;
++windows_or_buffers_changed;
if (NILP (Fget (face, Qface_no_inherit)))
{
++face_change_count;
++windows_or_buffers_changed;
}
xassert (LFACEP (lface));
check_lface (lface);
@ -4020,8 +4027,11 @@ The value is TO. */)
depend on the face, make sure they are all removed. This is done
by incrementing face_change_count. The next call to
init_iterator will then free realized faces. */
++face_change_count;
++windows_or_buffers_changed;
if (NILP (Fget (to, Qface_no_inherit)))
{
++face_change_count;
++windows_or_buffers_changed;
}
return to;
}
@ -4385,6 +4395,7 @@ FRAME 0 means change the face on all frames, and change the default
by incrementing face_change_count. The next call to
init_iterator will then free realized faces. */
if (!EQ (frame, Qt)
&& NILP (Fget (face, Qface_no_inherit))
&& (EQ (attr, QCfont)
|| EQ (attr, QCfontset)
|| NILP (Fequal (old_value, value))))
@ -4538,6 +4549,7 @@ update_face_from_frame_parameter (f, param, new_value)
struct frame *f;
Lisp_Object param, new_value;
{
Lisp_Object face = Qnil;
Lisp_Object lface;
/* If there are no faces yet, give up. This is the case when called
@ -4546,17 +4558,10 @@ update_face_from_frame_parameter (f, param, new_value)
if (NILP (f->face_alist))
return;
/* Changing a named face means that all realized faces depending on
that face are invalid. Since we cannot tell which realized faces
depend on the face, make sure they are all removed. This is done
by incrementing face_change_count. The next call to
init_iterator will then free realized faces. */
++face_change_count;
++windows_or_buffers_changed;
if (EQ (param, Qforeground_color))
{
lface = lface_from_face_name (f, Qdefault, 1);
face = Qdefault;
lface = lface_from_face_name (f, face, 1);
LFACE_FOREGROUND (lface) = (STRINGP (new_value)
? new_value : Qunspecified);
realize_basic_faces (f);
@ -4571,29 +4576,45 @@ update_face_from_frame_parameter (f, param, new_value)
XSETFRAME (frame, f);
call1 (Qframe_update_face_colors, frame);
lface = lface_from_face_name (f, Qdefault, 1);
face = Qdefault;
lface = lface_from_face_name (f, face, 1);
LFACE_BACKGROUND (lface) = (STRINGP (new_value)
? new_value : Qunspecified);
realize_basic_faces (f);
}
if (EQ (param, Qborder_color))
else if (EQ (param, Qborder_color))
{
lface = lface_from_face_name (f, Qborder, 1);
face = Qborder;
lface = lface_from_face_name (f, face, 1);
LFACE_BACKGROUND (lface) = (STRINGP (new_value)
? new_value : Qunspecified);
}
else if (EQ (param, Qcursor_color))
{
lface = lface_from_face_name (f, Qcursor, 1);
face = Qcursor;
lface = lface_from_face_name (f, face, 1);
LFACE_BACKGROUND (lface) = (STRINGP (new_value)
? new_value : Qunspecified);
}
else if (EQ (param, Qmouse_color))
{
lface = lface_from_face_name (f, Qmouse, 1);
face = Qmouse;
lface = lface_from_face_name (f, face, 1);
LFACE_BACKGROUND (lface) = (STRINGP (new_value)
? new_value : Qunspecified);
}
/* Changing a named face means that all realized faces depending on
that face are invalid. Since we cannot tell which realized faces
depend on the face, make sure they are all removed. This is done
by incrementing face_change_count. The next call to
init_iterator will then free realized faces. */
if (!NILP (face)
&& NILP (Fget (face, Qface_no_inherit)))
{
++face_change_count;
++windows_or_buffers_changed;
}
}
@ -7951,6 +7972,8 @@ syms_of_xfaces ()
{
Qface = intern ("face");
staticpro (&Qface);
Qface_no_inherit = intern ("face-no-inherit");
staticpro (&Qface_no_inherit);
Qbitmap_spec_p = intern ("bitmap-spec-p");
staticpro (&Qbitmap_spec_p);
Qframe_update_face_colors = intern ("frame-update-face-colors");

View File

@ -744,7 +744,15 @@ x_reply_selection_request (event, format, data, size, type)
refering to the deleted window, and we'll get a BadWindow error
in XTread_socket when processing the events. I don't have
an idea how to fix that. gerd, 2001-01-98. */
XFlush (display);
/* 2004-09-10: XSync and UNBLOCK so that possible protocol errors are
delivered before uncatch errors. */
XSync (display, False);
UNBLOCK_INPUT;
/* GTK queues events in addition to the queue in Xlib. So we
UNBLOCK to enter the event loop and get possible errors delivered,
and then BLOCK again because x_uncatch_errors requires it. */
BLOCK_INPUT;
x_uncatch_errors (display, count);
UNBLOCK_INPUT;
}