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:
commit
a63aa6924c
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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.
|
||||
|
@ -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/>
|
||||
|
42
etc/NEWS
42
etc/NEWS
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
@ -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)
|
||||
|
1201
lib-src/etags.c
1201
lib-src/etags.c
File diff suppressed because it is too large
Load Diff
184
lisp/ChangeLog
184
lisp/ChangeLog
@ -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
|
||||
|
@ -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.
|
||||
|
||||
|
166
lisp/desktop.el
166
lisp/desktop.el
@ -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
|
||||
|
@ -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))))
|
||||
|
@ -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)))
|
||||
|
@ -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."
|
||||
|
@ -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).
|
||||
|
@ -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))
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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."
|
||||
|
@ -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.
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
|
@ -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")
|
||||
|
25
lisp/ido.el
25
lisp/ido.el
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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)) " " "")
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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
198
lisp/textmodes/dns-mode.el
Normal 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
|
@ -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"))
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
|
@ -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'.
|
||||
|
@ -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
|
||||
|
250
man/gnus.texi
250
man/gnus.texi
@ -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}.
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)))
|
||||
|
@ -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.
|
||||
|
||||
|
@ -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.
|
||||
|
31
src/alloc.c
31
src/alloc.c
@ -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
|
||||
|
@ -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
|
||||
{
|
||||
|
@ -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. */
|
||||
|
@ -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)
|
||||
{
|
||||
|
15
src/msdos.c
15
src/msdos.c
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
59
src/xfaces.c
59
src/xfaces.c
@ -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");
|
||||
|
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user