1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2025-12-23 14:10:28 -08:00
Patches applied:

 * emacs@sv.gnu.org/emacs--devo--0--patch-371
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-372
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-373
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-374
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-375
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-376
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-377
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-378
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-379
   Merge from erc--emacs--21

 * emacs@sv.gnu.org/emacs--devo--0--patch-380
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-381
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-382
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-383
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-384
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-385
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-386
   Update from erc--emacs--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-387
   Fix ERC bug introduced in last patch

 * emacs@sv.gnu.org/emacs--devo--0--patch-388
   Update from erc--emacs--22

 * emacs@sv.gnu.org/emacs--devo--0--patch-389
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-390
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-391
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-392
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-393
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-394
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-395
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-396
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-397
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-398
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-399
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-400
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-401
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-402
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-403
   Rcirc update from Ryan Yeske

 * emacs@sv.gnu.org/emacs--devo--0--patch-404
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-405
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-406
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-407
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-408
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-409
   Update from CVS

 * emacs@sv.gnu.org/emacs--devo--0--patch-410
   Merge from gnus--rel--5.10

 * emacs@sv.gnu.org/emacs--devo--0--patch-411
   Miscellaneous tq-related fixes.

 * emacs@sv.gnu.org/emacs--devo--0--patch-412
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-121
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-122
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-123
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-124
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-125
   Update from CVS

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-126
   Merge from emacs--devo--0

 * emacs@sv.gnu.org/gnus--rel--5.10--patch-127
   Update from CVS


git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-581
This commit is contained in:
Karoly Lorentey 2006-10-14 16:56:21 +00:00
commit 3f87f67ee2
175 changed files with 8121 additions and 11166 deletions

View file

@ -1,3 +1,12 @@
2006-08-16 Andreas Schwab <schwab@suse.de>
* configure.in (PKG_CHECK_MODULES): Use AS_MESSAGE_LOG_FD instead
of hardcoding it.
2006-08-16 Richard Stallman <rms@gnu.org>
* INSTALL.CVS: Clean up wording.
2006-07-14 Eli Zaretskii <eliz@gnu.org>
* configure.in (PKG_CHECK_MODULES): Redirect the output of

View file

@ -12,8 +12,9 @@ The bootstrap process makes sure all necessary files are rebuilt
before it builds the final Emacs binary.
Normally, it is not necessary to use "make bootstrap" after every CVS
update. Unless there are problems, we suggest the following
procedure:
update. Unless there are problems, we suggest using the following
alternative procedure after you have done "make bootstrap" at least
once:
$ ./configure
$ make

View file

@ -1,3 +1,7 @@
2006-08-13 Chong Yidong <cyd@stupidchicken.com>
* FOR-RELEASE: Elisp manual checking completed.
2006-07-17 Reiner Steib <Reiner.Steib@gmx.de>
* FOR-RELEASE: Update refcard section.

View file

@ -29,7 +29,9 @@ Reminders sent out on 2006-06-08.
** Send an email to the various distributions, including the GNOME
and KDE projects, to use the new Emacs icons in etc/images/icons.
* BUGS
* WINDOWS SUPPORT BUGS.
These don't need to be fixed to start pretest, but we call the
attention of Windows users to fixing them.
** Markus Gritsch's report about Emacs looping on Windoze with the following
.emacs file, and then reduce Emacs frame width to "something quite narrow":
@ -39,74 +41,24 @@ and KDE projects, to use the new Emacs icons in etc/images/icons.
'(hscroll-step 1)
)
** David Kastrup's report on strange scrolling of large images.
** Drew Adams 12 Aug bug rpt: overlay display artifact: trace left behind
Windows only bug.
** Jorgen Schaefer <forcer@forcix.cx>'s June 18 bug report about
fields and invisible overlays needs attention from a field expert.
* BUGS
** Milan Zamazal's Aug 23 bug report about crashes with certain fonts.
** C-g fails to interrupt accept-process-output in Gnus.
** Implement buffer-chars-modified-tick.
** henman@it.to-be.co.jp 09 Aug 2006: ispell.el problem.
** Make key-binding use the maps specified by positions given in the events.
* DOCUMENTATION
** Check the Emacs Lisp manual.
Each manual section should be checked for factual correctness
regarding recent changes by at least two people. After each file
name, on the same line or the following line, come the names of the
people who have checked it.
SECTION READERS
----------------------------------
lispref/abbrevs.texi "Luc Teirlinck" Chong Yidong
lispref/advice.texi Joakim Verona Chong Yidong
lispref/anti.texi Chong Yidong Kim F. Storm
lispref/backups.texi "Luc Teirlinck" Chong Yidong
lispref/buffers.texi "Luc Teirlinck" Chong Yidong
lispref/calendar.texi Joakim Verona Chong Yidong
lispref/commands.texi "Luc Teirlinck" Chong Yidong
lispref/compile.texi "Luc Teirlinck" Chong Yidong
lispref/control.texi "Luc Teirlinck" Chong Yidong
lispref/customize.texi Chong Yidong "Luc Teirlinck"
lispref/debugging.texi Joakim Verona Lute Kamstra
lispref/display.texi Chong Yidong Jason Rumney
lispref/edebug.texi Chong Yidong "Luc Teirlinck"
lispref/elisp.texi "Luc Teirlinck" Lute Kamstra
lispref/errors.texi "Luc Teirlinck" Chong Yidong
lispref/eval.texi "Luc Teirlinck" Chong Yidong
lispref/files.texi "Luc Teirlinck" Chong Yidong
lispref/frames.texi "Luc Teirlinck" Chong Yidong
lispref/functions.texi "Luc Teirlinck" Chong Yidong
lispref/hash.texi "Luc Teirlinck" Chong Yidong
lispref/help.texi "Luc Teirlinck" Chong Yidong
lispref/hooks.texi Lute Kamstra Chong Yidong
lispref/internals.texi "Luc Teirlinck" Chong Yidong
lispref/intro.texi "Luc Teirlinck" Josh Varner
lispref/keymaps.texi "Luc Teirlinck" Chong Yidong
lispref/lists.texi "Luc Teirlinck" Chong Yidong
lispref/loading.texi "Luc Teirlinck" Chong Yidong
lispref/locals.texi Chong Yidong Nick Roberts
lispref/macros.texi "Luc Teirlinck" Chong Yidong
lispref/maps.texi Chong Yidong Kim F. Storm
lispref/markers.texi "Luc Teirlinck" Chong Yidong
lispref/minibuf.texi "Luc Teirlinck" Chong Yidong
lispref/modes.texi Chong Yidong
lispref/nonascii.texi "Luc Teirlinck" Chong Yidong
lispref/numbers.texi "Luc Teirlinck" Chong Yidong
lispref/objects.texi "Luc Teirlinck" Chong Yidong
lispref/os.texi "Luc Teirlinck" Chong Yidong
lispref/positions.texi "Luc Teirlinck" Chong Yidong
lispref/processes.texi Chong Yidong ttn
lispref/searching.texi "Luc Teirlinck" Chong Yidong
lispref/sequences.texi "Luc Teirlinck" Chong Yidong
lispref/streams.texi "Luc Teirlinck" Chong Yidong
lispref/strings.texi "Luc Teirlinck" Chong Yidong
lispref/symbols.texi "Luc Teirlinck" Chong Yidong
lispref/syntax.texi "Luc Teirlinck" Chong Yidong
lispref/text.texi Chong Yidong
lispref/tips.texi "Luc Teirlinck" Chong Yidong
lispref/variables.texi "Luc Teirlinck" Chong Yidong
lispref/windows.texi "Luc Teirlinck" Chong Yidong
** Check the Emacs Tutorial.
The first line of every tutorial must begin with text ending in a period

View file

@ -1500,7 +1500,7 @@ AC_DEFUN([PKG_CHECK_MODULES], [
if $PKG_CONFIG --atleast-pkgconfig-version $PKG_CONFIG_MIN_VERSION; then
AC_MSG_CHECKING(for $2)
if $PKG_CONFIG --exists "$2" 2>&5; then
if $PKG_CONFIG --exists "$2" 2>&AS_MESSAGE_LOG_FD; then
AC_MSG_RESULT(yes)
succeeded=yes

View file

@ -1,3 +1,79 @@
2006-08-25 Richard Stallman <rms@gnu.org>
* TUTORIAL: Give priority to graphical terminals over text terminals
regarding C-z.
2006-08-21 Sun Yijiang <sunyijiang@gmail.com>
* TUTORIAL.cn: Sync with the latest TUTORIAL.
2006-08-20 Dave Love <fx@gnu.org>
* emacs.py: Update to Dave Love's latest version.
(__all__): Fix args -> eargs. Add new `modpath' fun.
(eargs): Add `imports' arg.
(all_names): New fun.
(complete): Rewrite without using rlcompleter.
Remove `namespace' arg, add `imports' arg.
(ehelp): Replace g and l args with `imports'.
(eimport): Use __main__ rather than `emacs' namespace.
(modpath): New fun.
2006-08-20 Slawomir Nowaczyk <slawomir.nowaczyk.847@student.lu.se> (tiny change)
* emacs.py (eexecfile): Use the __main__ rather than `emacs' namespace.
2006-08-18 Primoz PETERLIN <primoz.peterlin@mf.uni-lj.si>
* TUTORIAL.sl: Synchronize with TUTORIAL.
2006-08-18 Mats Lidell <matsl@contactor.se>
* TUTORIAL.sv: Synchronize with TUTORIAL.
2006-08-18 Alfredo Finelli <alfredofnl@tiscali.it>
* TUTORIAL.it: Synchronize with TUTORIAL.
2006-08-15 Carsten Dominik <dominik@science.uva.nl>
* orgcard.tex: Version number change.
2006-08-12 Werner Lemberg <wl@gnu.org>
* TUTORIAL.de: Synchronize with TUTORIAL.
2006-08-10 Romain Francoise <romain@orebokech.com>
* NEWS: Mention that zone-mode.el is now obsolete.
2006-08-09 Richard Stallman <rms@gnu.org>
* TUTORIAL: Don't say which side scroll bar is on.
2006-08-06 Nick Roberts <nickrob@snap.net.nz>
* DEBUG (Note): Add note about following a longjmp call.
Add local variables list for outline mode.
2006-08-03 Michael Olson <mwolson@gnu.org>
* ERC-NEWS: Update for ERC 5.1.4.
2006-08-01 Kenichi Handa <handa@m17n.org>
* NEWS (find-operation-coding-system): Describe the more detail of
the change.
2006-07-28 Reiner Steib <Reiner.Steib@gmx.de>
* GNUS-NEWS: Regenerate from Oort Gnus node in texi/gnus.texi using
texi/gnus-news.el of the trunk.
2006-07-29 Reiner Steib <Reiner.Steib@gmx.de>
* NEWS: Fix typo.
2006-07-17 Reiner Steib <Reiner.Steib@gmx.de>
* ru-refcard.ps: Regenerate.
@ -168,7 +244,7 @@
2006-05-29 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* NEWS: Mention F10 for Gtk+/Leddtif/Lucid menus.
* NEWS: Mention F10 for Gtk+/Lesstif/Lucid menus.
2006-05-26 Eli Zaretskii <eliz@gnu.org>

View file

@ -272,6 +272,13 @@ related data structures in a terse and user-friendly format:
The above commands also exist in a version with an `x' suffix which
takes an object of the relevant type as argument.
** Following longjmp call.
Recent versions of glibc (2.4+?) encrypt stored values for setjmp/longjmp which
prevents GDB from being able to follow a longjmp call using `next'. To
disable this protection you need to set the environment variable
LD_POINTER_GUARD to 0.
** Using GDB in Emacs
Debugging with GDB in Emacs offers some advantages over the command line (See
@ -739,4 +746,10 @@ look at the disassembly to determine which registers are being used,
and look at those registers directly, to see the actual current values
of these variables.
Local variables:
mode: outline
paragraph-separate: "[ ]*$"
end:
;;; arch-tag: fbf32980-e35d-481f-8e4c-a2eca2586e6b

View file

@ -1,6 +1,27 @@
ERC NEWS -*- outline -*-
* Changes in ERC 5.2 (unreleased)
* Changes in ERC 5.1.4
** Make find-function and find-variable work in Emacs 22 for
names that are constructed by `define-erc-module'.
** Fix bug introduced in ERC 5.1.3 that caused messages to go the
wrong buffer.
** Changes and additions to modules
*** Highlighting (erc-match.el)
**** Don't activate view-mode.
*** Logging (erc-log.el)
**** When this module is activated, make sure logging is enabled on
already-opened buffers. Ditto for disabling logging when the module
is deactivated.
**** Fix some errors that occur when exiting Emacs without first
quitting open IRC servers.
* Changes in ERC 5.1.3

View file

@ -1,152 +1,201 @@
GNUS NEWS -- history of user-visible changes.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006 Free Software Foundation, Inc.
See the end for copying conditions.
Please send Gnus bug reports to bugs@gnus.org.
For older news, see Gnus info node "New Features".
* Changes in Oort Gnus
** `F' (`gnus-article-followup-with-original') and `R'
(`gnus-article-reply-with-original') only yank the text in the region if the
region is active.
** `gnus-group-read-ephemeral-group' can be called interactively, using `G M'.
** In draft groups, `e' is now bound to `gnus-draft-edit-message'.
Use `B w' for `gnus-summary-edit-article' instead.
** The revised Gnus FAQ is included in the manual.
See the info node "Frequently Asked Questions".
* Installation changes
** Upgrading from previous (stable) version if you have used Oort.
If you have tried Oort (the unstable Gnus branch leading to this
release) but went back to a stable version, be careful when upgrading
to this version. In particular, you will probably want to remove all
.marks (nnml) and .mrk (nnfolder) files, so that flags are read from
your ~/.newsrc.eld instead of from the .marks/.mrk file where this
release) but went back to a stable version, be careful when upgrading to
this version. In particular, you will probably want to remove all
`.marks' (nnml) and `.mrk' (nnfolder) files, so that flags are read from
your `.newsrc.eld' instead of from the `.marks'/`.mrk' file where this
release store flags. See a later entry for more information about
marks. Note that downgrading isn't safe in general.
marks. Note that downgrading isn't save in general.
** Lisp files are now installed in `.../site-lisp/gnus/' by default. It
defaulted to `.../site-lisp/' formerly. In addition to this, the new
installer issues a warning if other Gnus installations which will shadow
the latest one are detected. You can then remove those shadows manually
or remove them using `make remove-installed-shadows'.
** New `make.bat' for compiling and installing Gnus under MS Windows
Use `make.bat' if you want to install Gnus under MS Windows, the first
argument to the batch-program should be the directory where `xemacs.exe'
respectively `emacs.exe' is located, iff you want to install Gnus after
compiling it, give `make.bat' `/copy' as the second parameter.
`make.bat' has been rewritten from scratch, it now features automatic
recognition of XEmacs and GNU Emacs, generates `gnus-load.el', checks if
errors occur while compilation and generation of info files and reports
them at the end of the build process. It now uses `makeinfo' if it is
available and falls back to `infohack.el' otherwise. `make.bat' should
now install all files which are necessary to run Gnus and be generally a
complete replacement for the `configure; make; make install' cycle used
under Unix systems.
The new `make.bat' makes `make-x.bat' and `xemacs.mak' superfluous, so
they have been removed.
** `~/News/overview/' not used.
As a result of the following change, the `~/News/overview/' directory is
not used any more. You can safely delete the entire hierarchy.
** `(require 'gnus-load)'
If you use a stand-alone Gnus distribution, you'd better add `(require
'gnus-load)' into your `~/.emacs' after adding the Gnus lisp directory
into load-path.
File `gnus-load.el' contains autoload commands, functions and variables,
some of which may not be included in distributions of Emacsen.
* New packages and libraries within Gnus
** The revised Gnus FAQ is included in the manual, *Note Frequently Asked
Questions::.
** TLS wrapper shipped with Gnus
TLS/SSL is now supported in IMAP and NNTP via `tls.el' and GNUTLS. The
old TLS/SSL support via (external third party) `ssl.el' and OpenSSL
still works.
** Improved anti-spam features.
Gnus is now able to take out spam from your mail and news streams using
a wide variety of programs and filter rules. Among the supported
methods are RBL blocklists, bogofilter and white/blacklists. Hooks for
easy use of external packages such as SpamAssassin and Hashcash are also
new. *Note Thwarting Email Spam::.
** Gnus supports server-side mail filtering using Sieve.
Sieve rules can be added as Group Parameters for groups, and the
complete Sieve script is generated using `D g' from the Group buffer,
and then uploaded to the server using `C-c C-l' in the generated Sieve
buffer. *Note Sieve Commands::, and the new Sieve manual *Note Top:
(sieve)Top.
* Changes in group mode
** `gnus-group-read-ephemeral-group' can be called interactively, using `G
M'.
** Retrieval of charters and control messages
There are new commands for fetching newsgroup charters (`H c') and
control messages (`H C').
** The new variable `gnus-parameters' can be used to set group parameters.
Earlier this was done only via `G p' (or `G c'), which stored the
parameters in `~/.newsrc.eld', but via this variable you can enjoy the
powers of customize, and simplified backups since you set the variable
in `~/.gnus.el' instead of `~/.newsrc.eld'. The variable maps regular
expressions matching group names to group parameters, a'la:
(setq gnus-parameters
'(("mail\\..*"
(gnus-show-threads nil)
(gnus-use-scoring nil))
("^nnimap:\\(foo.bar\\)$"
(to-group . "\\1"))))
** Unread count correct in nnimap groups.
The estimated number of unread articles in the group buffer should now
be correct for nnimap groups. This is achieved by calling
`nnimap-fixup-unread-after-getting-new-news' from the
`gnus-setup-news-hook' (called on startup) and
`gnus-after-getting-new-news-hook'. (called after getting new mail). If
you have modified those variables from the default, you may want to add
`nnimap-fixup-unread-after-getting-new-news' again. If you were happy
with the estimate and want to save some (minimal) time when getting new
mail, remove the function.
** Group names are treated as UTF-8 by default.
This is supposedly what USEFOR wanted to migrate to. See
`gnus-group-name-charset-group-alist' and
`gnus-group-name-charset-method-alist' for customization.
** `gnus-group-charset-alist' and `gnus-group-ignored-charsets-alist'.
The regexps in these variables are compared with full group names
instead of real group names in 5.8. Users who customize these variables
should change those regexps accordingly. For example:
("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
* Changes in summary and article mode
** `F' (`gnus-article-followup-with-original') and `R'
(`gnus-article-reply-with-original') only yank the text in the region if
the region is active.
** In draft groups, `e' is now bound to `gnus-draft-edit-message'. Use `B
w' for `gnus-summary-edit-article' instead.
** Article Buttons
More buttons for URLs, mail addresses, Message-IDs, Info links, man pages and
Emacs or Gnus related references, see the info node "Article Buttons". The
variables `gnus-button-*-level' can be used to control the appearance of all
article buttons, see the info node "Article Button Levels".
** Dired integration
`gnus-dired-minor-mode' installs key bindings in dired buffers to send a file
as an attachment (`C-c C-m C-a'), open a file using the approriate mailcap
entry (`C-c C-m C-l'), and print a file using the mailcap entry (`C-c C-m
C-p'). See the info node "Other modes".
** Gnus can display RSS newsfeeds as a newsgroup. To get started do `B
nnrss RET RET' in the Group buffer.
More buttons for URLs, mail addresses, Message-IDs, Info links, man
pages and Emacs or Gnus related references. *Note Article Buttons::.
The variables `gnus-button-*-level' can be used to control the
appearance of all article buttons. *Note Article Button Levels::.
** Single-part yenc encoded attachments can be decoded.
** Picons
The picons code has been reimplemented to work in Emacs 21 -- some of
the previous options have been removed or renamed.
The picons code has been reimplemented to work in GNU Emacs--some of the
previous options have been removed or renamed.
Picons are small "personal icons" representing users, domain and
newsgroups, which can be displayed in the Article buffer. To enable
picons, install the picons database from
newsgroups, which can be displayed in the Article buffer. *Note
Picons::.
http://www.cs.indiana.edu/picons/ftp/index.html
and point `gnus-picon-databases' to that location.
** If the new option `gnus-treat-body-boundary' is `head', a boundary
** If the new option `gnus-treat-body-boundary' is non-`nil', a boundary
line is drawn at the end of the headers.
** Retrieval of charters and control messages
There are new commands for fetching newsgroup charters (`H c') and
control messages (`H C').
** Delayed articles
You can delay the sending of a message with `C-c C-j' in the Message
buffer. The messages are delivered at specified time. This is useful
for sending yourself reminders. Setup with (gnus-delay-initialize).
** If `auto-compression-mode' is enabled, attachments are automatically
decompressed when activated.
** If the new option `nnml-use-compressed-files' is non-nil,
the nnml back end allows compressed message files.
** Signed article headers (X-PGP-Sig) can be verified with `W p'.
** The Summary Buffer uses an arrow in the fringe to indicate the
current article in Emacs 21 running on a graphical display. Customize
`gnus-summary-display-arrow' to disable it.
** The Summary Buffer uses an arrow in the fringe to indicate the current
article. Use `(setq gnus-summary-display-arrow nil)' to disable it.
** Warn about email replies to news
Do you often find yourself replying to news by email by mistake? Then
the new option `gnus-confirm-mail-reply-to-news' is just the thing for
you.
** If the new option `gnus-summary-display-while-building' is non-nil,
** If the new option `gnus-summary-display-while-building' is non-`nil',
the summary buffer is shown and updated as it's being built.
** The new `recent' mark "." indicates newly arrived messages (as
opposed to old but unread messages).
** The new option `gnus-gcc-mark-as-read' automatically marks
Gcc articles as read.
** The nndoc back end now supports mailman digests and exim bounces.
** The new `recent' mark `.' indicates newly arrived messages (as opposed
to old but unread messages).
** Gnus supports RFC 2369 mailing list headers, and adds a number of
related commands in mailing list groups.
related commands in mailing list groups. *Note Mailing List::.
** The Date header can be displayed in a format that can be read aloud
in English, see `gnus-treat-date-english'.
** The envelope sender address can be customized when using Sendmail, see
`message-sendmail-envelope-from'.
** The Date header can be displayed in a format that can be read aloud in
English. *Note Article Date::.
** diffs are automatically highlighted in groups matching
`mm-uu-diff-groups-regexp'
** TLS wrapper shipped with Gnus
TLS/SSL is now supported in IMAP and NNTP via tls.el and GNUTLS. The
old TLS/SSL support via (external third party) ssl.el and OpenSSL
still works.
** New make.bat for compiling and installing Gnus under MS Windows
Use make.bat if you want to install Gnus under MS Windows, the first
argument to the batch-program should be the directory where xemacs.exe
respectively emacs.exe is located, iff you want to install Gnus after
compiling it, give make.bat /copy as the second parameter.
`make.bat' has been rewritten from scratch, it now features automatic
recognition of XEmacs and GNU Emacs, generates gnus-load.el, checks if
errors occur while compilation and generation of info files and reports
them at the end of the build process. It now uses makeinfo if it is
available and falls back to infohack.el otherwise. `make.bat' should now
install all files which are necessary to run Gnus and be generally a
complete replacement for the "configure; make; make install" cycle used
under Unix systems.
The new make.bat makes make-x.bat superfluous, so it has been removed.
** Support for non-ASCII domain names
Message supports non-ASCII domain names in From:, To: and Cc: and will
encode them when you try to send a message. The variable
`message-use-idna' controls this. Gnus will also decode non-ASCII
domain names in From:, To: and Cc: when you view a message. The
variable `gnus-use-idna' controls this.
** Better handling of Microsoft citation styles
Gnus now tries to recognize the mangled header block that some Microsoft
@ -155,228 +204,184 @@ though it is not quoted in any way. The variable
`gnus-cite-unsightly-citation-regexp' matches the start of these
citations.
** gnus-article-skip-boring
The new command `W Y f' (`gnus-article-outlook-deuglify-article') allows
deuglifying broken Outlook (Express) articles.
If you set `gnus-article-skip-boring' to t, then Gnus will not scroll
down to show you a page that contains only boring text, which by
default means cited text and signature. You can customize what is
skippable using `gnus-article-boring-faces'.
** `gnus-article-skip-boring'
This feature is especially useful if you read many articles that
consist of a little new content at the top with a long, untrimmed
message cited below.
If you set `gnus-article-skip-boring' to `t', then Gnus will not scroll
down to show you a page that contains only boring text, which by default
means cited text and signature. You can customize what is skippable
using `gnus-article-boring-faces'.
** The format spec %C for positioning point has changed to %*.
This feature is especially useful if you read many articles that consist
of a little new content at the top with a long, untrimmed message cited
below.
** The new variable `gnus-parameters' can be used to set group parameters.
** Smileys (`:-)', `;-)' etc) are now displayed graphically in Emacs too.
Earlier this was done only via `G p' (or `G c'), which stored the
parameters in ~/.newsrc.eld, but via this variable you can enjoy the
powers of customize, and simplified backups since you set the variable
in ~/.emacs instead of ~/.newsrc.eld. The variable maps regular
expressions matching group names to group parameters, a'la:
Put `(setq gnus-treat-display-smileys nil)' in `~/.gnus.el' to disable
it.
(setq gnus-parameters
'(("mail\\..*"
(gnus-show-threads nil)
(gnus-use-scoring nil))
("^nnimap:\\(foo.bar\\)$"
(to-group . "\\1"))))
** Face headers handling. *Note Face::.
** Smileys (":-)", ";-)" etc) are now iconized for Emacs too.
** In the summary buffer, the new command `/ N' inserts new messages and `/
o' inserts old messages.
Customize `gnus-treat-display-smileys' to disable it.
** Gnus decodes morse encoded messages if you press `W m'.
** Gnus no longer generates the Sender: header automatically.
** `gnus-summary-line-format'
Earlier it was generated iff the user configurable email address was
different from the Gnus guessed default user address. As the guessing
algorithm is rarely correct these days, and (more controversially) the
only use of the Sender: header was to check if you are entitled to
cancel/supersede news (which is now solved by Cancel Locks instead,
see another entry), generation of the header has been disabled by
default. See the variables `message-required-headers',
`message-required-news-headers', and `message-required-mail-headers'.
** Features from third party message-utils.el added to message.el.
Message now asks if you wish to remove "(was: <old subject>)" from
subject lines (see `message-subject-trailing-was-query'). C-c M-m and
C-c M-f inserts markers indicating included text. C-c C-f a adds a
X-No-Archive: header. C-c C-f x inserts appropriate headers and a
note in the body for cross-postings and followups (see the variables
`message-cross-post-*').
** References and X-Draft-Headers are no longer generated when you
start composing messages and `message-generate-headers-first' is nil.
** Improved anti-spam features.
Gnus is now able to take out spam from your mail and news streams
using a wide variety of programs and filter rules. Among the supported
methods are RBL blocklists, bogofilter and white/blacklists. Hooks
for easy use of external packages such as SpamAssassin and Hashcash
are also new.
** Easy inclusion of X-Faces headers.
** In the summary buffer, the new command / N inserts new messages and
/ o inserts old messages.
** Gnus decodes morse encoded messages if you press W m.
** Unread count correct in nnimap groups.
The estimated number of unread articles in the group buffer should now
be correct for nnimap groups. This is achieved by calling
`nnimap-fixup-unread-after-getting-new-news' from the
`gnus-setup-news-hook' (called on startup) and
`gnus-after-getting-new-news-hook' (called after getting new mail).
If you have modified those variables from the default, you may want to
add n-f-u-a-g-n-n again. If you were happy with the estimate and want
to save some (minimal) time when getting new mail, remove the
function.
** Group Carbon Copy (GCC) quoting
To support groups that contains SPC and other weird characters, groups
are quoted before they are placed in the Gcc: header. This means
variables such as `gnus-message-archive-group' should no longer
contain quote characters to make groups containing SPC work. Also, if
you are using the string "nnml:foo, nnml:bar" (indicating Gcc into two
groups) you must change it to return the list ("nnml:foo" "nnml:bar"),
otherwise the Gcc: line will be quoted incorrectly. Note that
returning the string "nnml:foo, nnml:bar" was incorrect earlier, it
just didn't generate any problems since it was inserted directly.
** ~/News/overview/ not used.
As a result of the following change, the ~/News/overview/ directory is
not used any more. You can safely delete the entire hierarchy.
** gnus-agent
The Gnus Agent has seen a major update. It is now enabled by default,
and all nntp and nnimap servers from `gnus-select-method' and
`gnus-secondary-select-method' are agentized by default. Earlier only
the server in `gnus-select-method' was agentized by the default, and the
agent was disabled by default. When the agent is enabled, headers are
now also retrieved from the Agent cache instead of the backends when
possible. Earlier this only happened in the unplugged state. You can
enroll or remove servers with `J a' and `J r' in the server buffer.
Gnus will not download articles into the Agent cache, unless you
instruct it to do so, though, by using `J u' or `J s' from the Group
buffer. You revert to the old behaviour of having the Agent disabled
by customizing `gnus-agent'. Note that putting `(gnus-agentize)' in
~/.gnus is not needed any more.
** gnus-summary-line-format
The default value changed to "%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n".
The default value changed to `%U%R%z%I%(%[%4L: %-23,23f%]%) %s\n'.
Moreover `gnus-extra-headers', `nnmail-extra-headers' and
`gnus-ignored-from-addresses' changed their default so that the users
name will be replaced by the recipient's name or the group name
posting to for NNTP groups.
name will be replaced by the recipient's name or the group name posting
to for NNTP groups.
** deuglify.el (gnus-article-outlook-deuglify-article)
A new file from Raymond Scholz <rscholz@zonix.de> for deuglifying
broken Outlook (Express) articles.
** (require 'gnus-load)
If you use a stand-alone Gnus distribution, you'd better add
"(require 'gnus-load)" to your ~/.emacs after adding the Gnus
lisp directory into load-path.
File gnus-load.el contains autoload commands, functions and variables,
some of which may not be included in distributions of Emacsen.
** gnus-slave-unplugged
A new command which starts gnus offline in slave mode.
** message-insinuate-rmail
Adding (message-insinuate-rmail) in .emacs and customizing
`mail-user-agent' to `gnus-user-agent' convinces Rmail to compose,
reply and forward messages in Message mode, where you can enjoy the
power of MML.
** message-minibuffer-local-map
The line below enables BBDB in resending a message:
(define-key message-minibuffer-local-map [?\t] 'bbdb-complete-name)
** Externalizing and deleting of attachments.
If `gnus-gcc-externalize-attachments' (or
`message-fcc-externalize-attachments') is non-nil, attach local files
as external parts.
** Deleting of attachments.
The command `gnus-mime-save-part-and-strip' (bound to `C-o' on MIME
buttons) saves a part and replaces the part with an external one.
`gnus-mime-delete-part' (bound to `d' on MIME buttons) removes a part.
It works only on back ends that support editing.
** gnus-default-charset
** `gnus-default-charset'
The default value now guesses on the basis of your environment instead
of using Latin-1. Also the ".*" item in gnus-group-charset-alist is
removed.
** gnus-posting-styles
Add a new format of match like
((header "to" "larsi.*org")
(Organization "Somewhere, Inc."))
The old format like the lines below is obsolete, but still accepted.
(header "to" "larsi.*org"
(Organization "Somewhere, Inc."))
** message-ignored-news-headers and message-ignored-mail-headers
X-Draft-From and X-Gnus-Agent-Meta-Information have been added into
these two variables. If you customized those, perhaps you need add
those two headers too.
** Gnus reads the NOV and articles in the Agent if plugged.
If one reads an article while plugged, and the article already exists
in the Agent, it won't get downloaded once more. Customize
`gnus-agent-cache' to revert to the old behavior.
** Gnus supports the "format=flowed" (RFC 2646) parameter.
On composing messages, it is enabled by `use-hard-newlines'. Decoding
format=flowed was present but not documented in earlier versions.
** The option `mm-fill-flowed' can be used to disable treatment of
format=flowed messages. Also, flowed text is disabled when sending
inline PGP signed messages. (New in Gnus 5.10.8)
** The tool bar icons are now (de)activated correctly in the group
buffer, see the variable `gnus-group-update-tool-bar'. It's default
value depends on your Emacs version. (New in Gnus 5.10.8)
** Gnus supports the generation of RFC 2298 Disposition Notification requests.
This is invoked with the C-c M-n key binding from message mode.
** Gnus supports Maildir groups.
Gnus includes a new backend nnmaildir.el.
The default value is determined from the `current-language-environment'
variable, instead of `iso-8859-1'. Also the `.*' item in
`gnus-group-charset-alist' is removed.
** Printing capabilities are enhanced.
Gnus supports Muttprint natively with O P from the Summary and Article
buffers. Also, each individual MIME part can be printed using p on
Gnus supports Muttprint natively with `O P' from the Summary and Article
buffers. Also, each individual MIME part can be printed using `p' on
the MIME button.
** Extended format specs.
Format spec `%&user-date;' is added into
`gnus-summary-line-format-alist'. Also, user defined extended format
specs are supported. The extended format specs look like `%u&foo;',
which invokes function `gnus-user-format-function-FOO'. Because `&' is
used as the escape character, old user defined format `%u&' is no longer
supported.
** `/ *' (`gnus-summary-limit-include-cached') is rewritten.
It was aliased to `Y c' (`gnus-summary-insert-cached-articles'). The
new function filters out other articles.
** Some limiting commands accept a `C-u' prefix to negate the match.
If `C-u' is used on subject, author or extra headers, i.e., `/ s', `/
a', and `/ x' (`gnus-summary-limit-to-{subject,author,extra}')
respectively, the result will be to display all articles that do not
match the expression.
** Gnus inlines external parts (message/external).
* Changes in Message mode and related Gnus features
** Delayed articles
You can delay the sending of a message with `C-c C-j' in the Message
buffer. The messages are delivered at specified time. This is useful
for sending yourself reminders. *Note Delayed Articles::.
** If the new option `nnml-use-compressed-files' is non-`nil', the nnml
back end allows compressed message files.
** The new option `gnus-gcc-mark-as-read' automatically marks Gcc articles
as read.
** Externalizing of attachments
If `gnus-gcc-externalize-attachments' or
`message-fcc-externalize-attachments' is non-`nil', attach local files
as external parts.
** The envelope sender address can be customized when using Sendmail.
*Note Mail Variables: (message)Mail Variables.
** Gnus no longer generate the Sender: header automatically.
Earlier it was generated iff the user configurable email address was
different from the Gnus guessed default user address. As the guessing
algorithm is rarely correct these days, and (more controversially) the
only use of the Sender: header was to check if you are entitled to
cancel/supersede news (which is now solved by Cancel Locks instead, see
another entry), generation of the header has been disabled by default.
See the variables `message-required-headers',
`message-required-news-headers', and `message-required-mail-headers'.
** Features from third party `message-utils.el' added to `message.el'.
Message now asks if you wish to remove `(was: <old subject>)' from
subject lines (see `message-subject-trailing-was-query'). `C-c M-m' and
`C-c M-f' inserts markers indicating included text. `C-c C-f a' adds a
X-No-Archive: header. `C-c C-f x' inserts appropriate headers and a
note in the body for cross-postings and followups (see the variables
`message-cross-post-*').
** References and X-Draft-From headers are no longer generated when you
start composing messages and `message-generate-headers-first' is `nil'.
** Easy inclusion of X-Faces headers. *Note X-Face::.
** Group Carbon Copy (GCC) quoting
To support groups that contains SPC and other weird characters, groups
are quoted before they are placed in the Gcc: header. This means
variables such as `gnus-message-archive-group' should no longer contain
quote characters to make groups containing SPC work. Also, if you are
using the string `nnml:foo, nnml:bar' (indicating Gcc into two groups)
you must change it to return the list `("nnml:foo" "nnml:bar")',
otherwise the Gcc: line will be quoted incorrectly. Note that returning
the string `nnml:foo, nnml:bar' was incorrect earlier, it just didn't
generate any problems since it was inserted directly.
** `message-insinuate-rmail'
Adding `(message-insinuate-rmail)' and `(setq mail-user-agent
'gnus-user-agent)' in `.emacs' convinces Rmail to compose, reply and
forward messages in message-mode, where you can enjoy the power of MML.
** `message-minibuffer-local-map'
The line below enables BBDB in resending a message:
(define-key message-minibuffer-local-map [(tab)]
'bbdb-complete-name)
** `gnus-posting-styles'
Add a new format of match like
((header "to" "larsi.*org")
(Organization "Somewhere, Inc."))
The old format like the lines below is obsolete, but still accepted.
(header "to" "larsi.*org"
(Organization "Somewhere, Inc."))
** `message-ignored-news-headers' and `message-ignored-mail-headers'
`X-Draft-From' and `X-Gnus-Agent-Meta-Information' have been added into
these two variables. If you customized those, perhaps you need add
those two headers too.
** Gnus supports the "format=flowed" (RFC 2646) parameter. On composing
messages, it is enabled by `use-hard-newlines'. Decoding format=flowed
was present but not documented in earlier versions.
** The option `mm-fill-flowed' can be used to disable treatment of
"format=flowed" messages. Also, flowed text is disabled when sending
inline PGP signed messages. (New in Gnus 5.10.7)
** Gnus supports the generation of RFC 2298 Disposition Notification
requests.
This is invoked with the `C-c M-n' key binding from message mode.
** Message supports the Importance: (RFC 2156) header.
In the message buffer, `C-c C-f C-i' or `C-c C-u' cycles through the
@ -384,151 +389,130 @@ valid values.
** Gnus supports Cancel Locks in News.
This means a header "Cancel-Lock" is inserted in news posting. It is
used to determine if you wrote a article or not (for cancelling and
This means a header `Cancel-Lock' is inserted in news posting. It is
used to determine if you wrote an article or not (for canceling and
superseding). Gnus generates a random password string the first time
you post a message, and saves it using the Custom system. While the
variable is called `canlock-password', it is not security sensitive
data. Publishing your canlock string on the web will not allow anyone
to be able to anything she could not already do. The behaviour can be
changed by customizing `message-insert-canlock'.
you post a message, and saves it in your `~/.emacs' using the Custom
system. While the variable is called `canlock-password', it is not
security sensitive data. Publishing your canlock string on the web will
not allow anyone to be able to anything she could not already do. The
behavior can be changed by customizing `message-insert-canlock'.
** Gnus supports server-side mail filtering using Sieve.
Sieve rules can be added as Group Parameters for groups, and the
complete Sieve script is generated using `D g' from the Group buffer,
and then uploaded to the server using `C-c C-l' in the generated Sieve
buffer. Search the online Gnus manual for "sieve", and see the new
Sieve manual, for more information.
** Extended format specs.
Format spec "%&user-date;" is added into
`gnus-summary-line-format-alist'. Also, user defined extended format
specs are supported. The extended format specs look like "%u&foo;",
which invokes function `gnus-user-format-function-foo'. Because "&" is
used as the escape character, old user defined format "%u&" is no
longer supported.
** `/ *' (gnus-summary-limit-include-cached) is rewritten.
It was aliased to `Y c' (gnus-summary-insert-cached-articles). The new
function filters out other articles.
** Some limiting commands accept a C-u prefix to negate the match.
If C-u is used on subject, author or extra headers, i.e., `/ s', `/
a', and `/ x' (gnus-summary-limit-to-{subject,author,extra})
respectively, the result will be to display all articles that do not
match the expression.
** Group names are treated as UTF-8 by default.
This is supposedly what USEFOR wanted to migrate to. See
`gnus-group-name-charset-group-alist' and
`gnus-group-name-charset-method-alist' for customization.
** The nnml and nnfolder backends store marks for each group.
This makes it possible to take backup of nnml/nnfolder servers/groups
separately of ~/.newsrc.eld, while preserving marks. It also makes it
possible to share articles and marks between users (without sharing
the ~/.newsrc.eld file) within e.g. a department. It works by storing
the marks stored in ~/.newsrc.eld in a per-group file ".marks" (for
nnml) and "groupname.mrk" (for nnfolder, named "groupname"). If the
nnml/nnfolder is moved to another machine, Gnus will automatically use
the .marks or .mrk file instead of the information in ~/.newsrc.eld.
The new server variables `nnml-marks-is-evil' and
`nnfolder-marks-is-evil' can be used to disable this feature.
** The menu bar item (in Group and Summary buffer) named "Misc" has
been renamed to "Gnus".
** The menu bar item (in Message mode) named "MML" has been renamed to
"Attachments". Note that this menu also contains security related
stuff, like signing and encryption.
** gnus-group-charset-alist and gnus-group-ignored-charsets-alist.
The regexps in these variables are compared with full group names
instead of real group names in 5.8. Users who customize these
variables should change those regexps accordingly. For example:
("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
** Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156) and
S/MIME (RFC 2630-2633).
** Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156) and S/MIME
(RFC 2630-2633).
It needs an external S/MIME and OpenPGP implementation, but no
additional lisp libraries. This add several menu items to the
Attachments menu, and C-c RET key bindings, when composing messages.
additional Lisp libraries. This add several menu items to the
Attachments menu, and `C-c RET' key bindings, when composing messages.
This also obsoletes `gnus-article-hide-pgp-hook'.
** Gnus inlines external parts (message/external).
** MML (Mime compose) prefix changed from `M-m' to `C-c C-m'.
This change was made to avoid conflict with the standard binding of
`back-to-indentation', which is also useful in message mode.
** The default for message-forward-show-mml changed to symbol best.
** The default for `message-forward-show-mml' changed to the symbol `best'.
The behaviour for the `best' value is to show MML (i.e., convert MIME
to MML) when appropriate. MML will not be used when forwarding signed
or encrypted messages, as the conversion invalidate the digital
signature.
The behavior for the `best' value is to show MML (i.e., convert to MIME)
when appropriate. MML will not be used when forwarding signed or
encrypted messages, as the conversion invalidate the digital signature.
** If `auto-compression-mode' is enabled, attachments are automatically
decompressed when activated.
** Support for non-ASCII domain names
Message supports non-ASCII domain names in From:, To: and Cc: and will
query you whether to perform encoding when you try to send a message.
The variable `message-use-idna' controls this. Gnus will also decode
non-ASCII domain names in From:, To: and Cc: when you view a message.
The variable `gnus-use-idna' controls this.
** You can now drag and drop attachments to the Message buffer. See
`mml-dnd-protocol-alist' and `mml-dnd-attach-options'. *Note MIME:
(message)MIME.
** Bug fixes.
* Changes in Pterodactyl Gnus (5.8/5.9)
* Changes in back ends
The Gnus NEWS entries are short, but they reflect sweeping changes in
four areas: Article display treatment, MIME treatment,
internationalization and mail-fetching.
** Gnus can display RSS newsfeeds as a newsgroup. *Note RSS::.
** The mail-fetching functions have changed. See the manual for the
many details. In particular, all procmail fetching variables are gone.
** The nndoc back end now supports mailman digests and exim bounces.
If you used procmail like in
** Gnus supports Maildir groups.
(setq nnmail-use-procmail t)
(setq nnmail-spool-file 'procmail)
(setq nnmail-procmail-directory "~/mail/incoming/")
(setq nnmail-procmail-suffix "\\.in")
Gnus includes a new back end `nnmaildir.el'. *Note Maildir::.
this now has changed to
** The nnml and nnfolder back ends store marks for each groups.
(setq mail-sources
'((directory :path "~/mail/incoming/"
:suffix ".in")))
This makes it possible to take backup of nnml/nnfolder servers/groups
separately of `~/.newsrc.eld', while preserving marks. It also makes it
possible to share articles and marks between users (without sharing the
`~/.newsrc.eld' file) within e.g. a department. It works by storing the
marks stored in `~/.newsrc.eld' in a per-group file `.marks' (for nnml)
and `GROUPNAME.mrk' (for nnfolder, named GROUPNAME). If the
nnml/nnfolder is moved to another machine, Gnus will automatically use
the `.marks' or `.mrk' file instead of the information in
`~/.newsrc.eld'. The new server variables `nnml-marks-is-evil' and
`nnfolder-marks-is-evil' can be used to disable this feature.
More information is available in the info doc at Select Methods ->
Getting Mail -> Mail Sources
** Gnus is now a MIME-capable reader. This affects many parts of
Gnus, and adds a slew of new commands. See the manual for details.
* Appearance
** Gnus has also been multilingualized. This also affects too
many parts of Gnus to summarize here, and adds many new variables.
** The menu bar item (in Group and Summary buffer) named "Misc" has been
renamed to "Gnus".
** gnus-auto-select-first can now be a function to be
called to position point.
** The menu bar item (in Message mode) named "MML" has been renamed to
"Attachments". Note that this menu also contains security related
stuff, like signing and encryption (*note Security: (message)Security.).
** The user can now decide which extra headers should be included in
summary buffers and NOV files.
** The tool bars have been updated to use GNOME icons in Group, Summary and
Message mode. You can also customize the tool bars. This is a new
feature in Gnus 5.10.9. (Only for Emacs, not in XEmacs.)
** `gnus-article-display-hook' has been removed. Instead, a number
of variables starting with `gnus-treat-' have been added.
** The tool bar icons are now (de)activated correctly in the group buffer,
see the variable `gnus-group-update-tool-bar'. Its default value
depends on your Emacs version. This is a new feature in Gnus 5.10.9.
** The Gnus posting styles have been redone again and now works in a
subtly different manner.
* Miscellaneous changes
** New web-based backends have been added: nnslashdot, nnwarchive
and nnultimate. nnweb has been revamped, again, to keep up with
ever-changing layouts.
** `gnus-agent'
The Gnus Agent has seen a major updated and is now enabled by default,
and all nntp and nnimap servers from `gnus-select-method' and
`gnus-secondary-select-method' are agentized by default. Earlier only
the server in `gnus-select-method' was agentized by the default, and the
agent was disabled by default. When the agent is enabled, headers are
now also retrieved from the Agent cache instead of the back ends when
possible. Earlier this only happened in the unplugged state. You can
enroll or remove servers with `J a' and `J r' in the server buffer.
Gnus will not download articles into the Agent cache, unless you
instruct it to do so, though, by using `J u' or `J s' from the Group
buffer. You revert to the old behavior of having the Agent disabled
with `(setq gnus-agent nil)'. Note that putting `(gnus-agentize)' in
`~/.gnus.el' is not needed any more.
** Gnus reads the NOV and articles in the Agent if plugged.
If one reads an article while plugged, and the article already exists in
the Agent, it won't get downloaded once more. `(setq gnus-agent-cache
nil)' reverts to the old behavior.
** Dired integration
`gnus-dired-minor-mode' (see *Note Other modes::) installs key bindings
in dired buffers to send a file as an attachment, open a file using the
appropriate mailcap entry, and print a file using the mailcap entry.
** The format spec `%C' for positioning point has changed to `%*'.
** `gnus-slave-unplugged'
A new command which starts Gnus offline in slave mode.
** Gnus can now read IMAP mail via nnimap.
* For older news, see Gnus info node "New Features".
@ -536,8 +520,8 @@ ever-changing layouts.
----------------------------------------------------------------------
Copyright information:
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
2005, 2006 Free Software Foundation, Inc.
Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005,
2006 Free Software Foundation, Inc.
Permission is granted to anyone to make or distribute verbatim copies
of this document as received, in any medium, provided that the

View file

@ -95,7 +95,6 @@ doesn't automatically select the right one.
Its name is `pt-br-refcard.tex'. The corresponding PostScript file is
also included.
---
** A French translation of the `Emacs Survival Guide' is available.
@ -202,6 +201,13 @@ an interactively callable function.
all frames you create. A position specified with --geometry only
affects the initial frame.
---
** Emacs built for MS-Windows now behaves like Emacs on X does,
wrt its frame position: if you don't specify a position (in your
.emacs init file, in the Registry, or with the --geometry command-line
option), Emacs leaves the frame position to the Windows' window
manager.
+++
** Emacs can now be invoked in full-screen mode on a windowed display.
When Emacs is invoked on a window system, the new command-line options
@ -241,8 +247,9 @@ according to the value of `save-abbrevs'.
+++
** If the environment variable EMAIL is defined, Emacs now uses its value
to compute the default value of `use-mail-address', in preference to
to compute the default value of `user-mail-address', in preference to
concatenation of `user-login-name' with the name of your host machine.
* Incompatible Editing Changes in Emacs 22.1
@ -832,6 +839,13 @@ The variable `automatic-hscrolling' was renamed to
the window now works sensibly, by automatically adjusting the window's
vscroll property.
*** New customize option `overline-margin' controls the space between
overline and text.
*** New variable `x-underline-at-descent-line' controls the relative
position of the underline. When set, it overrides the
`x-use-underline-position-properties' variables.
+++
*** The new face `mode-line-inactive' is used to display the mode line
of non-selected windows. The `mode-line' face is now used to display
@ -1764,9 +1778,8 @@ type "C-h i m org RET" to read that manual. A reference card is
available in `etc/orgcard.tex' and `etc/orgcard.ps'.
+++
** The new package dns-mode.el add syntax highlight of DNS master files.
The key binding C-c C-s (`dns-mode-soa-increment-serial') can be used
to increment the SOA serial.
** The new package dns-mode.el adds syntax highlighting of DNS master files.
It is a modern replacement for zone-mode.el, which is now obsolete.
---
** The new global minor mode `file-name-shadow-mode' modifies the way
@ -1987,6 +2000,7 @@ using hi-lock-mode in an initialization file will turn on Hi Lock in all
buffers and no warning will be issued (for compatibility with the
behavior in older versions of Emacs).
---
** Changes in Allout
*** Topic cryptography added, enabling easy gpg topic encryption and
@ -1995,11 +2009,19 @@ clear-text within a single file to your heart's content, using symmetric
and/or public key modes. Time-limited key caching, user-provided
symmetric key hinting and consistency verification, auto-encryption of
pending topics on save, and more, make it easy to use encryption in
powerful ways.
powerful ways. Encryption behavior customization is collected in the
allout-encryption customization group.
*** `allout-view-change-hook' marked as being deprecated - use
`allout-exposure-change-hook' instead. Both are currently being used, but
`allout-view-change-hook' will be ignored in a subsequent allout version.
`allout-exposure-change-hook' instead. Both are still invoked, but
`allout-view-change-hook' will eventually be ignored. The new
`allout-exposure-change-hook' is called with args that were passed to
`allout-flag-region', making it easier to use.
*** Other allout functions which change the outline structure also have
hooks, enabling cooperative allout enhancements. See
`allout-structure-added-hook', `allout-structure-deleted-hook', and
`allout-structure-shifted-hook'.
*** Default command prefix changed to "\C-c " (control-c space), to avoid
intruding on user's keybinding space. Customize the
@ -2010,23 +2032,43 @@ concealed text, instead of selective-display. This simplifies the code, in
particular avoiding the need for kludges for isearch dynamic-display,
discretionary handling of edits of concealed text, undo concerns, etc.
*** Some previously rough topic-header format edge cases are reconciled.
Level 1 topics use the mode's comment format, and lines starting with the
asterisk - for instance, the comment close of some languages (eg, c's "*/"
or mathematica's "*)") - at the beginning of line are no longer are
interpreted as level 1 topics in those modes. (Yay!)
*** Many substantial fixes and refinements, including:
- repaired inhibition of inadvertent edits to concealed text
- repaired retention of topic body hanging indent upon topic depth shifts
- repaired regexp-quoting of custom header prefixes, so any literals
will now work (for instance, mathematica's "(*" is now properly
accepted).
- repaired inhibition of inadvertent edits to concealed text.
- refuse to create "containment discontinuities", where a
topic is shifted deeper than the offspring-depth of its' container
- auto-fill-mode is now left inactive when allout-mode starts, if it
already was inactive. also, `allout-inhibit-auto-fill' custom
configuration variable makes it easy to disable auto fill in allout
outlines in general or on a per-buffer basis.
- new hook `allout-mode-deactivate-hook', for coordinating with
deactivation of allout-mode.
- mode hook changes: new hook `allout-mode-deactivate-hook', for
coordinating with deactivation of allout-mode. `allout-mode-hook' is
now run after the `allout-mode' variable is changed, as is the new
`allout-mode-deactivate-hook'.
- allout now tolerates fielded text in outlines without disruption.
- hot-spot navigation now is modularized with a new function,
`allout-hotspot-key-handler', enabling easier articulation and
enhancement of the functionality by allout addons.
- topic body navigation is easier, where repeated beginning of line and
end of line key commands cycle through the actually beginning/end of
line and then beginning/end of topic, etc. see new customization vars
`allout-beginning-of-line-cycles' and `allout-end-of-line-cycles'.
- repaired retention of topic body hanging indent upon topic depth shifts
- bulleting variation is simpler and more accommodating, both in the
default behavior and in ability to vary when creating new topics
- mode deactivation now does cleans up effectively, more properly
restoring affected variables and hooks to former state, removing
overlays, etc.
overlays, etc. see `allout-add-resumptions' and
`allout-do-resumptions', which replace the old `allout-resumptions'.
- included a few unit-tests for interior functionality. developers can
have them automatically run at the end of module load by customizing
the option `allout-run-unit-tests-on-load'.
@ -3505,6 +3547,9 @@ variable `calculator-radix-grouping-mode'.
---
** iso-acc.el is now obsolete. Use one of the latin input methods instead.
---
** zone-mode.el is now obsolete. Use dns-mode.el instead.
---
** cplus-md.el has been deleted.
@ -3654,8 +3699,10 @@ w32-use-full-screen-buffer to t.
* Incompatible Lisp Changes in Emacs 22.1
** The function find-operation-coding-system accepts a cons (FILENAME
. BUFFER) in an argument correponding to the target.
** The function find-operation-coding-system may be called with a cons
(FILENAME . BUFFER) in the second argument if the first argument
OPERATION is `insert-file-contents', and thus a function registered in
`file-coding-system-alist' is also called with such an argument.
---
** The variables post-command-idle-hook and post-command-idle-delay have
@ -4625,6 +4672,7 @@ keymap alist to this list.
*** The definition of a key-binding passed to define-key can use XEmacs-style
key-sequences, such as [(control a)].
** Abbrev changes:
+++
@ -5354,6 +5402,11 @@ text to being a piece of code, so you'd put a `jit-lock-defer-multiline'
property over the second half of the command to force (deferred)
refontification of `bar' whenever the `e' is added/removed.
*** `font-lock-extend-region-functions' makes it possible to alter the way
the fontification region is chosen. This can be used to prevent rounding
up to whole lines, or to extend the region to include all related lines
of multiline constructs so that such constructs get properly recognized.
** Major mode mechanism changes:
+++
@ -5448,6 +5501,9 @@ been renamed to `disabled-command-function'. The variable
*** `emacsserver' now runs `pre-command-hook' and `post-command-hook'
when it receives a request from emacsclient.
+++
*** `current-idle-time' reports how long Emacs has been idle.
** Lisp file loading changes:
+++

View file

@ -21,7 +21,7 @@ a window doesn't select it.
but if you type M-n you should get the visited file name of the
current buffer.
** whitespace-cleanup should work only on the region if the region is active.
** describe-face should show an example of text in the face.
** Distribute a bar cursor of width > 1 evenly between the two glyphs
on each side of the bar (what to do at the edges?).
@ -125,6 +125,9 @@ current buffer.
** Internationalize Emacs's messages.
** Set up a facility to save backtraces when errors happen during
specified filters, specified timers, and specified hooks.
** Install mmc@maruska.dyndns.org's no-flicker change.
** Add a "current vertical pixel level" value that goes with point,

View file

@ -217,7 +217,7 @@ This should have scrolled the screen up by 8 lines. If you would like
to scroll it down again, you can give an argument to M-v.
If you are using a windowed display, such as X11 or MS-Windows, there
should be a tall rectangular area called a scroll bar at the left hand
should be a tall rectangular area called a scroll bar at the
side of the Emacs window. You can scroll the text by clicking the
mouse in the scroll bar.
@ -644,18 +644,18 @@ session--this is the command C-x C-c. (Do not worry about losing
changes you have made; C-x C-c offers to save each changed file before
it kills the Emacs.)
If you are using a graphical display that supports multiple
applications in parallel, you don't need any special command to move
from Emacs to another application. You can do this with the mouse or
with window manager commands. However, if you're using a text
terminal which can only show one application at a time, you need to
"suspend" Emacs to move to any other program.
C-z is the command to exit Emacs *temporarily*--so that you can go
back to the same Emacs session afterward.
On systems which allow it, C-z "suspends" Emacs; that is, it returns
to the shell but does not destroy the Emacs. In the most common
shells, you can resume Emacs with the `fg' command or with `%emacs'.
On systems which do not implement suspending, C-z creates a subshell
running under Emacs to give you the chance to run other programs and
return to Emacs afterward; it does not truly "exit" from Emacs. In
this case, the shell command `exit' is the usual way to get back to
Emacs from the subshell.
back to the same Emacs session afterward. When Emacs is running on a
text terminal, C-z "suspends" Emacs; that is, it returns to the shell
but does not destroy the Emacs. In the most common shells, you can
resume Emacs with the `fg' command or with `%emacs'.
The time to use C-x C-c is when you are about to log out. It's also
the right thing to use to exit an Emacs invoked under mail handling

View file

@ -165,7 +165,7 @@ M-comma
大部分的 Emacs 命令接受数字参数,并且对于多数命令而言,这些数字参数的作
用是指定命令的重复次数。为一个命令指定数字参数(也就是重复次数)的方法
是:先输入 C-u然后输入数字作为参数最后再输入命令。如果你有META (或
EDIT 或 ALT那么还有另一种办法按住 META 键不,然后输入数字。不
EDIT 或 ALT那么还有另一种办法按住 META 键不,然后输入数字。不
过我们还是建议你用 C-u因为它在任何终端机上都能用。这种数字参数也称为
“前缀参数”,意思是说这个参数是先于使用它的命令而输入的。
@ -174,9 +174,9 @@ EDIT
>> 为 C-n 或者 C-p 指定一个数字参数,这样你可以只用一个命令就把光标移动
到本行的附近。
虽然大部分命令用数字参数来作为其重复次数,但是也有些命令例外,它们将数
字参数另做它用。比如有些命令(目前还没学到)仅仅将前缀参数作为一个
志——只要有一个前缀参数出现,不管其值为何,命令的功能都会改变
虽然大部分命令把数字参数解释为其重复次数,但是也有些命令例外,它们将数
字参数另做它用。比如有些命令(我们目前还没学到)仅仅将前缀参数作为一个
志——只要给出有一个前缀参数,不管其值为何,它都会改变命令的功能。
而 C-v 和 M-v 则属于另一种类型的例外。当给定一个参数时,它们将滚动你指
定的“行数”而不是“屏数”。举例来说C-u 8 C-v 将屏幕向下滚动 8 行,
@ -188,8 +188,8 @@ EDIT
以给定一个参数然后执行 M-v。
如果你正在使用一个窗口系统,比如 X11 或者微软的 Windows那么在 Emacs
窗口的左边或者右边应该有一个长方形的区域叫“滚动条”,你可以用鼠标操纵
滚动条来滚动文字。
窗口的边应该有一个长方形的区域叫“滚动条”,你可以用鼠标操纵滚动条来
滚动文字。
>> 试着在“滚动条内的反白区域”上按一下鼠标中键。
文字应该会滚动到鼠标所指示的位置。
@ -202,10 +202,10 @@ EDIT
* 在 EMACS 失去响应的时候WHEN EMACS IS HUNG
-----------------------------------------------
如果 Emacs 对你的命令失去响应,你可以很安全地用 C-g 来终止这个命令。
C-g 也可以被用来终止一个执行过久的命令。
如果 Emacs 对你的命令失去响应,你可以用 C-g 来安全地终止这条命令。C-g
也可以终止一条执行过久的命令。
C-g 还可以被来取消数字参数和那些输入到一半的命令。
C-g 还可以取消数字参数和只输入到一半的命令。
>> 输入 C-u 100 设定一个值为 100 的数字参数,然后按 C-g。
现在再按 C-f光标应该只会移动一个字符因为你已经用 C-g 取消了参数。
@ -219,16 +219,16 @@ C-g
-----------------------------------
有一些 Emacs 命令被“禁用”了,以避免初学者在不了解其确切功能的情况下误
这些命令,造成麻烦。
它们,造成麻烦。
如果你用到了一个被禁用的命令Emacs 会显示一个提示消息,告诉你这个命令
到底是干什么的,询问你是否要继续,并在得到你的肯定之后再执行这命令。
你要是真的想执行被禁用的命令,那么在 Emacs 询问你的时候应该按空格。一般
来说如果你不想执行按“n”就行了
如果你真的想用这条命令,在 Emacs 询问你的时候应该按空格。一般来说,如果
你不想用就按“n”
>> 试试 C-x C-l (这是一个被禁用的命令)
然后用 n 来回答问
然后用 n 来回答问。
* 窗格WINDOWS
@ -245,7 +245,7 @@ Emacs
>> 把光标移到本行然后输入 C-u 0 C-l。
>> 输入 CONTROL-h k CONTROL-f。观察当一个新窗格出现时当前窗格用来显示
CONTROL-f 命令的文档)是如何小的。
CONTROL-f 命令的文档)是如何小的。
>> 输入 C-x 1 关掉文档窗格。
@ -265,33 +265,33 @@ Emacs
用法应该一样。一般来说 <Delback> 就是位于 <Return> 键上方某处的一个大号
通常被标示为“Delete”、“Del”或者“Backspace”。
如果你找到了标着“Backspace”的键那么它应该就是 <Delback>;即便你又在
键盘其它地方找到了一个标示为“Del”键,那么它也应该不是 <Delback>。
如果你找到了“Backspace”键那么它应该就是 <Delback>;哪怕你又在别的地
方找到了一个“Del”键那么它也应该不是 <Delback>。
一种更通用的说法是,<Delback> 将位于光标前的一个字符删除
一种更通用的说法是,<Delback> 将删除位于光标前的一个字符。
>> 现在就试试——敲点字,然后按几下 <Delback> 删除它们。
不用担心你会修改文件,你干什么都没关系,这里就是专给你练习用的。
如果一行文字很长、超出了窗格的宽度,显示不下的部分会在紧邻的下一行继续
显示。这时会有一个反斜线(控制台下是反斜线,如果你用图形窗口系统,则
该是一个小小的转弯箭头)显示在右边沿,表明这是某一行的接续显示。
显示。这时会有一个反斜线(控制台下是反斜线,如果你用图形窗口系统,则
该是一个小小的转弯箭头)显示在右边沿,表明这是某一行的接续显示。
>> 输入文字,一直到屏幕的右边界,然后继续,你会看到一个接续行出现。
>> 用 <Delback> 删掉一些文字,直到此行长度小于窗格宽度,接续行就消失了。
你可以像删除其他字符一样删除换行符。删除两行中间的换行符会将两行合并成
一行。如果合并的结果使这一行太长,超出了窗格宽度,它就会以一个接续行
显示。
换行符跟其他字符一样可以被删除。两行中间的换行符被删除后,这两行将会合
并成一行。如果合并的这一行太长,超出了窗格宽度,它就会以一个接续行
显示。
>> 移动光标到行的开头并输入 <Delback>。
这时本行与其前一行将被合并为一行。
>> 移动光标到行的开头并输入 <Delback>。
这时该行将与其前一行一起被合并为一行。
>> 输入 <Return> 重新插入你刚才删除的换行符。
前面过,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
命令。重复执行输入字符的命令实际上就是输入多个一样的字符。
前面过,大部分的 Emacs 命令都可以指定重复次数,这其中也包括输入字符的
命令。重复执行输入字符的命令实际上就是输入多个相同的字符。
>> 试试 C-u 8 *,这将会插入 ********。
@ -329,10 +329,10 @@ C-SPC
注意,“移除kill”和“删除delete”的不同在于被移除的东西可以找回
来,而被删除的就不行了。【实际上,移除掉的东西虽然看起来“消失”了,但
实际上被 Emacs 记录了下来,因此还可以找回来;而删除掉的东西虽然也可能还
在内存里但是已经被Emacs“抛弃”了所以就找不回来了。】重新插入被移
的文字称为“召回yank”。一般而言那些会去除很多文字的命令会把去
掉的文字储存起来(它们被设定成了“可召回”),而那些只是去除一个字符
者只是去除空白的命令就不会储存那些被去除掉的东西(因此你就无法召回)。
在内存里,但是已经被 Emacs“抛弃”了所以就找不回来了。】重新插入被移
的文字称为“召回yank”。一般而言那些会去除很多文字的命令会把去
掉的文字储存起来(它们被设定成了“可召回”),而那些只是去除一个字符
或者只是去除空白的命令就不会储存被去除掉的东西(自然你就无法召回了)。
>> 移动光标到一非空白行的行头,然后输入 C-k 移除那一行上的文字。
@ -409,9 +409,9 @@ C-_ Ҳ
存盘,就要在编辑前“寻找”到一个存盘文件。(这个过程通常也被称为“访问”
文件。)
寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从很多角度讲,
寻找到一个文件意味着你可以在 Emacs 里查看这个文件的内容。从很多方面讲,
这就等于你在直接编辑这个文件。但是你所做的修改只有在“存盘”的时候才会
被写入文件。也正因为如此,你可以丢弃一个改到一半的文件而不必把这个残
被写入文件。也正因为如此,你可以丢弃一个改到一半的文件而不必把这个残
文件也保存到计算机上。最后就算你真正存了盘Emacs 也会把存盘前的文件重
命名保存,以防你改完之后又想反悔。
@ -572,10 +572,10 @@ replace-string
字符串替换命令需要两个参数——被替换的字符串和用来替换它的字符串。每个
参数的输入用换行符来结束。
>> 将光标移到本行的下两行空白,然后输入
>> 将光标移到本行下面第二行的空白,然后输入
M-x repl s<Return>changed<Return>altered<Return>。
为了继续练习,保留一行原文如下
以下保留一行原文,以应练习之需
Notice how this line has changed: you've replaced... 】
请注意这一行是怎么改变的在光标之后的范围内你已经将“changed”这个
@ -617,7 +617,7 @@ replace-string
果位于文件的末尾,就显示 --Bot--。如果文件很小,一屏就足以显示全部内容,
那么状态栏会显示 --All--。
L 和其后的数字给出了光标所在行的行号。
“L” 和其后的数字给出了光标所在行的行号。
最开头的星号(*)表示你已经对文字做过改动。刚刚打开的文件肯定没有被改动
过,所以状态栏上显示的不是星号而是短线(-)。
@ -690,14 +690,14 @@ Emacs
功后,光标会停留在搜索目标出现的地方。
Emacs 的搜索命令的独特之处在于它是“渐进的incremental意思是搜
索与输入同时进行:你在这边一个字一个字地输入你想搜索的东西,同时 Emacs
在那边就替你搜索了。
索与输入同时进行:你在键盘上一字一句地输入搜索词的过程中Emacs 就已经
开始替你搜索了。
C-s 是向前搜索C-r 是向后搜索。不过手别这么快!先等等别着急试。
在你按下 C-s 之后你会发现回显区里有“I-search”字样出现这是在提示
你目前 Emacs 正处于“渐进搜索”状态,正在等待你输入搜索字串。<Return>
会结束搜索。
在你按下 C-s 之后你会发现回显区里有“I-search”字样出现提示你目前
Emacs 正处于“渐进搜索”状态,正在等待你输入搜索字串。<Return> 会结
束搜索。
>> 输入 C-s 开始一个搜索。注意敲慢一点,一次输入一个字符。
慢慢输入“cursor”整个词每敲一个字就暂停一下注意观察光标。
@ -917,10 +917,10 @@ Emacs
Emacs 快速指南Tutorial早有两个刘昭宏的中文译本繁简各一。其简体版本
TUTORIAL.cn基本由繁体版本TUTORIAL.zh经词语替换而得。然而繁简中文
不仅在用词习惯上有所不同,更有诸多表达方式和句法方面的差异。因此一直以来
阅读 TUTORIAL.cn 都略觉晦涩和生硬。这次重新翻译 TUTORIAL.cn 的动机正是源
于这种体验,希望我们的工作能够让本文更好的发挥其应有的作用。TUTORIAL.zh
的译文质量很高,在翻译过程中给予过我们多借鉴和参考,在此对刘昭宏的工作
不仅在用词习惯上有所不同,更有诸多表达方式与句法方面的差异,因此一直以来
用户使用 TUTORIAL.cn 都会略觉生硬和晦涩。这次重新翻译 TUTORIAL.cn 的动机
正是源于这种体验,希望我们的工作能够让本文更好地发挥其作用。TUTORIAL.zh
的译文质量很高,在翻译过程中给予过我们多借鉴和参考,在此对刘昭宏的工作
表示感谢。
翻译过程中最大的挑战莫过于术语译词的选择了。经过水木社区 Emacs 板热心网
@ -954,6 +954,10 @@ Emacs
中的“window”就只能译成“窗格”了。我们认为 Emacs 中 window 和
frame 的关系用窗格和窗口来类比是十分形象的。
《学习GNU Emacs》第二版一书对“window”和“frame”的翻译与本教程
刚好相反(分别译作“窗口”和“窗格”)。在此特别注明,以消除可能产生
的疑惑。
[2] 对于“delete”和“kill”的区别正文已经给出了详细的说明。“删除”和
“移除”相比较起来,前者更多地隐含着“破坏”和“不可恢复”的意思,而
后者更多地隐含着“被转移”和“可恢复”的意思。因此分别选择它们作为上

View file

@ -285,8 +285,8 @@ sein. Wollen Sie ihn nach unten verschieben, dann geben Sie M-v mit
einem numerischen Argument ein.
Wenn Sie eine graphische Oberfläche wie X oder MS-Windows verwenden,
dann befindet sich ein schmaler, langgezogener rechteckiger Bereich im
Regelfall auf der linken Seite des Emacs-Fensters. Dieser Bereich
dann befindet sich ein schmaler, langgezogener rechteckiger Bereich auf
der linken oder rechten Seite des Emacs-Fensters. Dieser Bereich
wird Scrollbar genannt (`Verschiebungsbalken'). Sie können Text
verschieben, indem Sie mit der Maus auf den Scrollbar klicken.

View file

@ -219,9 +219,9 @@ La schermata si sposta di 8 righe verso l'alto. Se vuoi tornare di nuovo
in basso puoi usare un argomento numerico con M-v.
Quando si usa un sistema a finestre, come X11 o MS-Windows, ci dovrebbe
essere un'area rettangolare allungata chiamata barra di scorrimento sul
lato sinistro della finestra di Emacs. Si può far scorrere il testo con
un click del mouse nella barra di scorrimento.
essere un'area rettangolare allungata chiamata barra di scorrimento a
un lato della finestra di Emacs. Si può far scorrere il testo con un
click del mouse nella barra di scorrimento.
>> Prova a premere il pulsante centrale del mouse sopra all'area
evidenziata nella barra di scorrimento. Verrà visualizzata una parte

View file

@ -222,7 +222,7 @@ To bi moralo zaslon premakniti navzgor za osem vrstic.
premaknili nazaj, poskusite M-v z istim argumentom.
Èe uporabljate grafièni vmesnik, denimo X11 ali MS Windows, imate
verjetno ob levem robu Emacsovega okna navpično pravokotno ploskev,
verjetno ob robu Emacsovega okna navpično pravokotno ploskev,
imenovano drsnik. Pogled na besedilo lahko premikate tudi tako, da z
mi¹ko kliknete na drsnik.

View file

@ -224,7 +224,7 @@ Detta borde ha flyttat sk
tillbaka igen är det bara att ge samma argument till M-v.
Om du använder Emacs under ett fönstersystem, som X11 eller
MS-Windows, finns det troligen ett rektangulärt område vänster sida
MS-Windows, finns det troligen ett rektangulärt område sidan
av Emacs-fönstret, en kallad rullningslist. Genom att klicka i den
med musen kan du rulla texten.

View file

@ -1,7 +1,7 @@
"""Definitions used by commands sent to inferior Python in python.el."""
# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
# Author: Dave Love <d.love@dl.ac.uk>
# Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
# Author: Dave Love <fx@gnu.org>
# This file is part of GNU Emacs.
@ -20,17 +20,19 @@
# Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
# Boston, MA 02110-1301, USA.
import os, sys, traceback, inspect, rlcompleter, __main__
import os, sys, traceback, inspect, __main__
from sets import Set
__all__ = ["eexecfile", "args", "complete", "ehelp", "eimport"]
__all__ = ["eexecfile", "eargs", "complete", "ehelp", "eimport", "modpath"]
def eexecfile (file):
"""Execute FILE and then remove it.
Execute the file within the __main__ namespace.
If we get an exception, print a traceback with the top frame
(oursleves) excluded."""
(ourselves) excluded."""
try:
try: execfile (file, globals (), globals ())
except:
try: execfile (file, __main__.__dict__)
except:
(type, value, tb) = sys.exc_info ()
# Lose the stack frame for this location.
tb = tb.tb_next
@ -40,9 +42,10 @@ def eexecfile (file):
finally:
os.remove (file)
def eargs (name):
def eargs (name, imports):
"Get arglist of NAME for Eldoc &c."
try:
if imports: exec imports
parts = name.split ('.')
if len (parts) > 1:
exec 'import ' + parts[0] # might fail
@ -56,8 +59,7 @@ def eargs (name):
return
if inspect.ismethod (func):
func = func.im_func
if not inspect.isfunction (func):
return
if not inspect.isfunction (func): return
(args, varargs, varkw, defaults) = inspect.getargspec (func)
# No space between name and arglist for consistency with builtins.
print '_emacs_out', \
@ -65,41 +67,109 @@ def eargs (name):
defaults)
except: pass
def complete (text, namespace = None):
"""Complete TEXT in NAMESPACE and print a Lisp list of completions.
NAMESPACE is currently not used."""
if namespace is None: namespace = __main__.__dict__
c = rlcompleter.Completer (namespace)
try:
if '.' in text:
matches = c.attr_matches (text)
else:
matches = c.global_matches (text)
print '_emacs_out (',
for elt in matches:
print '"%s"' % elt,
print ')'
except:
print '_emacs_out ()'
def all_names (object):
"""Return (an approximation to) a list of all possible attribute
names reachable via the attributes of OBJECT, i.e. roughly the
leaves of the dictionary tree under it."""
def ehelp (name, g, l):
"""Get help on string NAME using globals G and locals L.
def do_object (object, names):
if inspect.ismodule (object):
do_module (object, names)
elif inspect.isclass (object):
do_class (object, names)
# Might have an object without its class in scope.
elif hasattr (object, '__class__'):
names.add ('__class__')
do_class (object.__class__, names)
# Probably not a good idea to try to enumerate arbitrary
# dictionaries...
return names
def do_module (module, names):
if hasattr (module, '__all__'): # limited export list
names.union_update (module.__all__)
for i in module.__all__:
do_object (getattr (module, i), names)
else: # use all names
names.union_update (dir (module))
for i in dir (module):
do_object (getattr (module, i), names)
return names
def do_class (object, names):
ns = dir (object)
names.union_update (ns)
if hasattr (object, '__bases__'): # superclasses
for i in object.__bases__: do_object (i, names)
return names
return do_object (object, Set ([]))
def complete (name, imports):
"""Complete TEXT in NAMESPACE and print a Lisp list of completions.
Exec IMPORTS first."""
import __main__, keyword
def class_members(object):
names = dir (object)
if hasattr (object, '__bases__'):
for super in object.__bases__:
names = class_members (super)
return names
names = Set ([])
base = None
try:
dict = __main__.__dict__.copy()
if imports: exec imports in dict
l = len (name)
if not "." in name:
for list in [dir (__builtins__), keyword.kwlist, dict.keys()]:
for elt in list:
if elt[:l] == name: names.add(elt)
else:
base = name[:name.rfind ('.')]
name = name[name.rfind('.')+1:]
try:
object = eval (base, dict)
names = Set (dir (object))
if hasattr (object, '__class__'):
names.add('__class__')
names.union_update (class_members (object))
except: names = all_names (dict)
except: return []
l = len(name)
print '_emacs_out (',
for n in names:
if name == n[:l]:
if base: print '"%s.%s"' % (base, n),
else: print '"%s"' % n,
print ')'
def ehelp (name, imports):
"""Get help on string NAME.
First try to eval name for, e.g. user definitions where we need
the object. Otherwise try the string form."""
try: help (eval (name, g, l))
locls = {}
if imports:
try: exec imports in locls
except: pass
try: help (eval (name, globals(), locls))
except: help (name)
def eimport (mod, dir):
"""Import module MOD with directory DIR at the head of the search path.
NB doesn't load from DIR if MOD shadows a system module."""
from __main__ import __dict__
path0 = sys.path[0]
sys.path[0] = dir
try:
try:
if globals().has_key(mod) and inspect.ismodule (eval (mod)):
reload(eval (mod))
if __dict__.has_key(mod) and inspect.ismodule (__dict__[mod]):
reload (__dict__[mod])
else:
globals ()[mod] = __import__ (mod)
__dict__[mod] = __import__ (mod)
except:
(type, value, tb) = sys.exc_info ()
print "Traceback (most recent call last):"
@ -107,6 +177,17 @@ def eimport (mod, dir):
finally:
sys.path[0] = path0
print '_emacs_ok' # ready for input and can call continuation
def modpath (module):
"""Return the source file for the given MODULE (or None).
Assumes that MODULE.py and MODULE.pyc are in the same directory."""
try:
path = __import__ (module).__file__
if path[-4:] == '.pyc' and os.path.exists (path[0:-1]):
path = path[:-1]
print "_emacs_out", path
except:
print "_emacs_out ()"
# print '_emacs_ok' # ready for input and can call continuation
# arch-tag: d90408f3-90e2-4de4-99c2-6eb9c7b9ca46

View file

@ -1,5 +1,5 @@
% Reference Card for Org Mode
\def\orgversionnumber{4.43}
\def\orgversionnumber{4.44}
\def\year{2006}
%
%**start of header

View file

@ -1,3 +1,29 @@
2006-08-09 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* etags.c (readline): expect sscanf returns >= 1.
(readline): Change position on %n and \" in sscanf.
2006-08-07 Masatake YAMATO <jet@gyve.org>
* etags.c (readline): expect sscanf returns 2,
not 1.
2006-08-07 Masatake YAMATO <jet@gyve.org>
* etags.c (TEX_mode): Check getc retruns EOF.
File ended without newline causes infinite loop.
2002-07-30 Adrian Aichner <adrian@xemacs.org> (tiny change)
* etags.c: It's XEmacs, not Xemacs: change all the occurences.
2006-07-30 Francesco Potort,Al(B <pot@gnu.org>
* etags.c [ETAGS_REGEXPS]: Now is unconditionally defined.
[LONG_OPTIONS]: Changed to NO_LONG_OPTIONS, which is undefined.
(Objc_suffixes): Suggest using --lang=c for full help.
(C_entries): Initialise savetoken to 0 to shut up the compiler.
2006-07-20 Andreas Schwab <schwab@suse.de>
* fakemail.c (fatal): Drop second parameter and treat first

View file

@ -41,7 +41,7 @@
* configuration file containing regexp definitions for etags.
*/
char pot_etags_version[] = "@(#) pot revision number is 17.18";
char pot_etags_version[] = "@(#) pot revision number is 17.20";
#define TRUE 1
#define FALSE 0
@ -59,12 +59,10 @@ char pot_etags_version[] = "@(#) pot revision number is 17.18";
/* On some systems, Emacs defines static as nothing for the sake
of unexec. We don't want that here since we don't use unexec. */
# undef static
# define ETAGS_REGEXPS /* use the regexp features */
# define LONG_OPTIONS /* accept long options */
# ifndef PTR /* for Xemacs */
# ifndef PTR /* for XEmacs */
# define PTR void *
# endif
# ifndef __P /* for Xemacs */
# ifndef __P /* for XEmacs */
# define __P(args) args
# endif
#else /* no config.h */
@ -82,14 +80,7 @@ char pot_etags_version[] = "@(#) pot revision number is 17.18";
# define _GNU_SOURCE 1 /* enables some compiler checks on GNU */
#endif
#ifdef LONG_OPTIONS
# undef LONG_OPTIONS
# define LONG_OPTIONS TRUE
#else
# define LONG_OPTIONS FALSE
#endif
/* WIN32_NATIVE is for Xemacs.
/* WIN32_NATIVE is for XEmacs.
MSDOS, WINDOWSNT, DOS_NT are for Emacs. */
#ifdef WIN32_NATIVE
# undef MSDOS
@ -167,25 +158,25 @@ char pot_etags_version[] = "@(#) pot revision number is 17.18";
# define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
#endif
#if LONG_OPTIONS
# include <getopt.h>
#else
#ifdef NO_LONG_OPTIONS /* define this if you don't have GNU getopt */
# define NO_LONG_OPTIONS TRUE
# define getopt_long(argc,argv,optstr,lopts,lind) getopt (argc, argv, optstr)
extern char *optarg;
extern int optind, opterr;
#endif /* LONG_OPTIONS */
#else
# define NO_LONG_OPTIONS FALSE
# include <getopt.h>
#endif /* NO_LONG_OPTIONS */
#ifdef ETAGS_REGEXPS
# ifndef HAVE_CONFIG_H /* this is a standalone compilation */
# ifdef __CYGWIN__ /* compiling on Cygwin */
#ifndef HAVE_CONFIG_H /* this is a standalone compilation */
# ifdef __CYGWIN__ /* compiling on Cygwin */
!!! NOTICE !!!
the regex.h distributed with Cygwin is not compatible with etags, alas!
If you want regular expression support, you should delete this notice and
arrange to use the GNU regex.h and regex.c.
# endif
# endif
# include <regex.h>
#endif /* ETAGS_REGEXPS */
#endif
#include <regex.h>
/* Define CTAGS to make the program "ctags" compatible with the usual one.
Leave it undefined to make the program "etags", which makes emacs-style
@ -312,7 +303,6 @@ typedef struct
char *what; /* the argument itself */
} argument;
#ifdef ETAGS_REGEXPS
/* Structure defining a regular expression. */
typedef struct regexp
{
@ -327,7 +317,6 @@ typedef struct regexp
bool ignore_case; /* ignore case when matching */
bool multi_line; /* do a multi-line match on the whole file */
} regexp;
#endif /* ETAGS_REGEXPS */
/* Many compilers barf on this:
@ -375,11 +364,9 @@ static long readline_internal __P((linebuffer *, FILE *));
static bool nocase_tail __P((char *));
static void get_tag __P((char *, char **));
#ifdef ETAGS_REGEXPS
static void analyse_regex __P((char *));
static void free_regexps __P((void));
static void regex_tag_multiline __P((void));
#endif /* ETAGS_REGEXPS */
static void error __P((const char *, const char *));
static void suggest_asking_for_help __P((void));
void fatal __P((char *, char *));
@ -485,14 +472,9 @@ static bool packages_only; /* --packages-only: in Ada, only tag packages*/
#define STDIN 0x1001 /* returned by getopt_long on --parse-stdin */
static bool parsing_stdin; /* --parse-stdin used */
#ifdef ETAGS_REGEXPS
static regexp *p_head; /* list of all regexps */
static bool need_filebuf; /* some regexes are multi-line */
#else
# define need_filebuf FALSE
#endif /* ETAGS_REGEXPS */
#if LONG_OPTIONS
static struct option longopts[] =
{
{ "append", no_argument, NULL, 'a' },
@ -507,11 +489,9 @@ static struct option longopts[] =
{ "members", no_argument, &members, TRUE },
{ "no-members", no_argument, &members, FALSE },
{ "output", required_argument, NULL, 'o' },
#ifdef ETAGS_REGEXPS
{ "regex", required_argument, NULL, 'r' },
{ "no-regex", no_argument, NULL, 'R' },
{ "ignore-case-regex", required_argument, NULL, 'c' },
#endif /* ETAGS_REGEXPS */
{ "parse-stdin", required_argument, NULL, STDIN },
{ "version", no_argument, NULL, 'V' },
@ -533,7 +513,6 @@ static struct option longopts[] =
#endif
{ NULL }
};
#endif /* LONG_OPTIONS */
static compressor compressors[] =
{
@ -681,13 +660,15 @@ static char *Objc_suffixes [] =
static char Objc_help [] =
"In Objective C code, tags include Objective C definitions for classes,\n\
class categories, methods and protocols. Tags for variables and\n\
functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.";
functions in classes are named `CLASS::VARIABLE' and `CLASS::FUNCTION'.\n\
(Use --help --lang=c --lang=objc --lang=java for full help.)";
static char *Pascal_suffixes [] =
{ "p", "pas", NULL };
static char Pascal_help [] =
"In Pascal code, the tags are the functions and procedures defined\n\
in the file.";
/* " // this is for working around an Emacs highlighting bug... */
static char *Perl_suffixes [] =
{ "pl", "pm", NULL };
@ -885,11 +866,11 @@ print_help (argbuffer)
printf ("Usage: %s [options] [[regex-option ...] file-name] ...\n\
\n\
These are the options accepted by %s.\n", progname, progname);
if (LONG_OPTIONS)
puts ("You may use unambiguous abbreviations for the long option names.");
if (NO_LONG_OPTIONS)
puts ("WARNING: long option names do not work with this executable,\n\
as it is not linked with GNU getopt.");
else
puts ("Long option names do not work with this executable, as it is not\n\
linked with GNU getopt.");
puts ("You may use unambiguous abbreviations for the long option names.");
puts (" A - as file name means read names from stdin (one per line).\n\
Absolute names are stored in the output file as they are.\n\
Relative ones are stored relative to the output file's directory.\n");
@ -949,7 +930,6 @@ Relative ones are stored relative to the output file's directory.\n");
puts ("--members\n\
Create tag entries for members of structures in some languages.");
#ifdef ETAGS_REGEXPS
puts ("-r REGEXP, --regex=REGEXP or --regex=@regexfile\n\
Make a tag for each line matching a regular expression pattern\n\
in the following files. {LANGUAGE}REGEXP uses REGEXP for LANGUAGE\n\
@ -964,7 +944,6 @@ Relative ones are stored relative to the output file's directory.\n");
causes dot to match any character, including newline.");
puts ("-R, --no-regex\n\
Don't create tags from regexps for the following files.");
#endif /* ETAGS_REGEXPS */
puts ("-I, --ignore-indentation\n\
In C and C++ do not assume that a closing brace in the first\n\
column is the final brace of a function or structure definition.");
@ -1194,14 +1173,8 @@ main (argc, argv)
/* When the optstring begins with a '-' getopt_long does not rearrange the
non-options arguments to be at the end, but leaves them alone. */
optstring = "-";
#ifdef ETAGS_REGEXPS
optstring = "-r:Rc:";
#endif /* ETAGS_REGEXPS */
if (!LONG_OPTIONS)
optstring += 1; /* remove the initial '-' */
optstring = concat (optstring,
"aCf:Il:o:SVhH",
optstring = concat (NO_LONG_OPTIONS ? "" : "-",
"ac:Cf:Il:o:r:RSVhH",
(CTAGS) ? "BxdtTuvw" : "Di:");
while ((opt = getopt_long (argc, argv, optstring, longopts, NULL)) != EOF)
@ -1375,11 +1348,9 @@ main (argc, argv)
case at_language:
lang = argbuffer[i].lang;
break;
#ifdef ETAGS_REGEXPS
case at_regexp:
analyse_regex (argbuffer[i].what);
break;
#endif
case at_filename:
#ifdef VMS
while ((this_file = gfnames (argbuffer[i].what, &got_err)) != NULL)
@ -1419,9 +1390,7 @@ main (argc, argv)
}
}
#ifdef ETAGS_REGEXPS
free_regexps ();
#endif /* ETAGS_REGEXPS */
free (lb.buffer);
free (filebuf.buffer);
free (token_name.buffer);
@ -1979,9 +1948,7 @@ find_entries (inf)
parser (inf);
#ifdef ETAGS_REGEXPS
regex_tag_multiline ();
#endif /* ETAGS_REGEXPS */
}
@ -3239,7 +3206,7 @@ C_entries (c_ext, inf)
int typdefbracelev; /* bracelev where a typedef struct body begun */
bool incomm, inquote, inchar, quotednl, midtoken;
bool yacc_rules; /* in the rules part of a yacc file */
struct tok savetoken; /* token saved during preprocessor handling */
struct tok savetoken = {0}; /* token saved during preprocessor handling */
linebuffer_init (&lbs[0].lb);
@ -5198,7 +5165,7 @@ TEX_mode (inf)
{
/* Skip to next line if we hit the TeX comment char. */
if (c == '%')
while (c != '\n')
while (c != '\n' && c != EOF)
c = getc (inf);
else if (c == TEX_LESC || c == TEX_SESC )
break;
@ -5735,8 +5702,6 @@ erlang_atom (s)
}
#ifdef ETAGS_REGEXPS
static char *scan_separators __P((char *));
static void add_regex __P((char *, language *));
static char *substitute __P((char *, char *, struct re_registers *));
@ -6141,8 +6106,6 @@ regex_tag_multiline ()
}
}
#endif /* ETAGS_REGEXPS */
static bool
nocase_tail (cp)
@ -6296,9 +6259,10 @@ readline (lbp, stream)
int start, lno;
if (DEBUG) start = 0; /* shut up the compiler */
if (sscanf (lbp->buffer, "#line %d \"%n", &lno, &start) == 1)
if (sscanf (lbp->buffer, "#line %d %n\"", &lno, &start) >= 1
&& lbp->buffer[start] == '"')
{
char *endp = lbp->buffer + start;
char *endp = lbp->buffer + ++start;
assert (start > 0);
while ((endp = etags_strchr (endp, '"')) != NULL
@ -6405,7 +6369,6 @@ readline (lbp, stream)
}
} /* if #line directives should be considered */
#ifdef ETAGS_REGEXPS
{
int match;
regexp *rp;
@ -6462,7 +6425,6 @@ readline (lbp, stream)
}
}
}
#endif /* ETAGS_REGEXPS */
}
@ -6623,7 +6585,7 @@ static void
suggest_asking_for_help ()
{
fprintf (stderr, "\tTry `%s %s' for a complete list of options.\n",
progname, LONG_OPTIONS ? "--help" : "-h");
progname, NO_LONG_OPTIONS ? "-h" : "--help");
exit (EXIT_FAILURE);
}

View file

@ -1,3 +1,707 @@
2006-08-27 Michael Olson <mwolson@gnu.org>
* emacs-lisp/tq.el: Small grammar fix in comments.
(tq-enqueue): Check for existence of queue rather than the
head queue item's question, which was a no-op.
(tq-filter, tq-process-buffer): Make sure the process buffer
exists before making it the current buffer.
2006-08-27 YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>
* term/mac-win.el (mac-apple-event-map): Rename hicommand to hi-command.
(mac-dnd-drop-data): Apply 2006-08-22 change for x-dnd-drop-data.
(special-event-map): Apply 2006-08-16 change for x-win.el.
2006-08-26 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/python.el (python-send-receive): Wait in the
process's buffer so as to check the right buffer-local variables.
2006-08-25 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/checkdoc.el: Remove * in defcustoms.
(defgroup checkdoc): Move to beginning.
* progmodes/python.el (python-preoutput-skip-next-prompt): New var.
(python-preoutput-continuation): Remove.
(python-preoutput-filter): Simplify correspondingly.
Remove handling of _emacs_ok. Make sure we skip _emacs_out's prompts.
Loop around to catch embedded _emacs_out output.
(run-python): Send the import&print command on a single line.
(python-send-command): Send command&print on a single line.
(python-send-string): Only add double \n if needed.
(python-send-receive): Loop until the result comes.
(python-mode-running): Defvar it.
(python-setup-brm): Remove unused var `menu'.
Only bind py-mode-map and `features' around brm-init.
(python-calculate-indentation): Remove unused var `point'.
(python-beginning-of-defun): Remove unused var `def-line'.
2006-08-25 Richard Stallman <rms@gnu.org>
* kmacro.el (kmacro-repeat-on-last-key): Doc fix.
2006-08-25 Michael Kifer <kifer@cs.stonybrook.edu>
* viper.el (viper-set-hooks): Use frame bindings for
viper-vi-state-cursor-color.
(viper-non-hook-settings): Don't set default
mode-line-buffer-identification.
* viper-util.el (viper-set-cursor-color-according-to-state): New fun.
(viper-set-cursor-color-according-to-state)
(viper-get-saved-cursor-color-in-replace-mode)
(viper-get-saved-cursor-color-in-insert-mode): Make conditional on
viper-emacs-state-cursor-color.
* viper-cmd.el (viper-envelop-ESC-key): Bug fix.
(viper-undo): Use point if undo-beg-posn is nil.
(viper-insert-state-post-command-sentinel, viper-change-state-to-emacs)
(viper-after-change-undo-hook): Don't use
viper-emacs-state-cursor-color by default.
(viper-undo): More sensible positioning after undo.
* viper-ex.el (ex-splice-args-in-1-letr-cmd): Get rid of caddr.
(viper-emacs-state-cursor-color): Default to nil, since this feature
doesn't work well yet.
* ediff-mult.el (ediff-intersect-directories)
(ediff-get-directory-files-under-revision, ediff-dir-diff-copy-file):
always expand filenames.
2006-08-24 Stefan Monnier <monnier@iro.umontreal.ca>
* tumme.el: Remove * in defcustoms's docstrings.
2006-08-24 Chong Yidong <cyd@stupidchicken.com>
* emacs-lisp/timer.el (timer-set-idle-time, run-with-idle-timer):
Accept internal time format for SECS arg.
(timer-relative-time): Doc fix.
* jit-lock.el: "Stealth fontification by requeuing timers" patch,
adapted from Martin Rudalics.
(jit-lock-stealth-repeat-timer, jit-lock-stealth-buffers): New vars.
(jit-lock-mode): Create jit-lock-stealth-repeat-timer.
(jit-lock-stealth-fontify): Reschedule as a idle timer instead of
using sit-for.
2006-08-24 Francesc Rocher <francesc.rocher@gmail.com>
* cus-start.el (all): Add `overline-margin' and
`x-underline-at-descent-line'.
2006-08-24 Kim F. Storm <storm@cua.dk>
* progmodes/grep.el (grep-find-use-xargs): Use explicit value `exec'
to mean "use find -exec"; nil now unambiguously means auto-detect.
(grep-compute-defaults): Set grep-find-use-xargs to `exec' if not `gnu'.
Use shell-quote-argument to build grep-find-command and grep-find-template.
(rgrep): Use shell-quote-argument to properly quote arguments to find.
Reported by Tom Seddon.
2006-08-23 Chong Yidong <cyd@stupidchicken.com>
* startup.el (fancy-splash-head): Give instructions for dismissing
the splash screen for default startup too.
(display-startup-echo-area-message, fancy-splash-screens)
(use-fancy-splash-screens-p): New arg hide-on-input. If nil, show
all splash text at once and keep the splash buffer around.
(command-line-1): Give display-startup-echo-area-message a t arg.
2006-08-23 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el (org-follow-gnus-link): Make sure the dedicated
gnus frame is selected.
2006-08-23 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-starting): Reset gdb-signalled to nil.
2006-08-22 Kim F. Storm <storm@cua.dk>
* ido.el (ido-set-matches-1): Fix full matching for subdirs.
Add suffix matching for subdirs.
2006-08-22 Jorgen Schaefer <forcer@forcix.cx> (tiny change)
* x-dnd.el (x-dnd-drop-data): Don't call goto-char if
mouse-yank-at-point is non-nil.
2006-08-22 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-frame-memory-buffer): Make frame
a bit wider and remove fringes to fit initial output on line.
2006-08-21 Stefan Monnier <monnier@iro.umontreal.ca>
* frame.el (blink-cursor-end): Only ignore the error we care about.
(blink-cursor-mode): Use blink-cursor-end to simplify the code.
2006-08-21 Richard Stallman <rms@gnu.org>
* whitespace.el (whitespace-cleanup): Doc fix.
2006-08-20 Ryan Yeske <rcyeske@gmail.com>
* net/rcirc.el (rcirc-show-maximum-output): New var.
(rcirc-buffer-process): If no buffer argument is supplied, use
current-buffer.
(rcirc-complete-nick): Complete to the last completed nick first.
(rcirc-mode): Preserve the value of `rcirc-urls' across
connections. Setup scroll function.
(rcirc-scroll-to-bottom): New function.
(rcirc-print): Use nick syntax around regexp work.
Notice dim-nicks speaking only if they say our nick.
(rcirc-update-activity-string): Do not show the modeline indicator
if there are no live rcirc processes.
(rcirc-cmd-ignore): Ignore case.
(rcirc-browse-url-at-point): Fix off-by-one error.
2006-08-20 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/python.el: Remove * in defcustom docstrings.
(run-python, python-proc, python-try-complete): Use derived-mode-p.
(python-mode): Set tab-width and indent-tabs-mode.
2006-08-20 Dave Love <fx@gnu.org>
* progmodes/python.el: Update to Dave Love's latest version.
(python-font-lock-keywords, python-mode): Don't use
font-lock-syntax-table, but match symbol elements explicitly instead.
(python-mode-map): Add help, and a few more key bindings.
(python-skip-comments/blanks): Move out of comments as well.
(python-continuation-line-p): Behave better with unbalanced parens.
(python-blank-line-p): New fun.
(python-open-block-statement-p): Don't use a heuristic.
(python-outdent-p): Better handle blocks-in-the-same-line.
(python-calculate-indentation): Misc improvements.
(python-comment-indent): Remove.
(python-block-pairs): New var.
(python-first-word): New fun.
(python-indentation-levels): Handle more common cases.
(python-indent-line-1): Add `leave' argument.
(python-indent-region): New fun.
(python-skip-out): New fun.
(python-beginning-of-statement, python-end-of-statement): Use it.
(python-next-statement): Return correct count even at eob.
(python-end-of-block): Fix paren-typo.
(python-imenu-create-index): Add module variables.
(run-python): Add `new' arg.
Check we're at a prompt before returning.
(python-send-command): Move to end of buffer.
Wait for prompt to return.
(python-set-proc): New fun.
(python-imports): New var.
(python-describe-symbol): Use it. Adjust to new interface of `ehelp'.
(python-eldoc-function): Try to move out of arg list.
(python-outline-level): Offset by 1.
(python-find-imports): New fun.
(python-symbol-completions): Use python-imports.
(python-module-path, ffap-alist): Add support for ffap.
(python-skeletons, python-mode-abbrev-table, def-python-skeleton)
(pythin-insert-*, python-default-template, python-expand-template):
Add templates/skeletons.
(python-setup-brm): Support for Bicycle Repair Man.
(python-abbrev-syntax-table): New var.
(python-abbrev-pc-hook, python-pea-hook): New funs.
2006-08-20 Chong Yidong <cyd@stupidchicken.com>
* frame.el (blink-cursor-start): Set timer first.
(blink-cursor-end): Ignore timer cancelling errors.
Suggested by Ken Manheimer.
2006-08-20 Juanma Barranquero <lekktu@gmail.com>
* newcomment.el (comment-box): Call `comment-normalize-vars'.
Add autoload cookie.
2006-08-20 Richard Stallman <rms@gnu.org>
* simple.el (line-number-at-pos): Doc fix.
* emacs-lisp/timer.el (run-with-idle-timer): Pass t to
timer-activate-when-idle, so timer can run before Emacs becomes
non-idle again.
2006-08-18 Yoni Rabkin Katzenell <yoni-r@actcom.com> (tiny change)
* whitespace.el (whitespace-cleanup-internal): New optional arg
REGION-ONLY. If it's non-nil, modify the message to the user
accordingly.
(whitespace-cleanup-region): Call whitespace-cleanup-internal with
a non-nil argument.
2006-08-18 Gustav H,Ae(Bllberg <gustav@gmail.com> (tiny change)
* rect.el (spaces-string): Simplify and add doc string.
2006-08-17 Romain Francoise <romain@orebokech.com>
* progmodes/gdb-ui.el (gdb-edit-locals-value): Balance parens.
2006-08-17 Richard Stallman <rms@gnu.org>
* compare-w.el (compare-windows): lambda's take an arg and pass
it to compare-windows-skip-whitespace.
2006-08-17 Martin Rudalics <rudalics@gmx.at>
* jit-lock.el (jit-lock-fontify-now): Protect the modified status of
the right buffer.
2006-08-17 Stefan Monnier <monnier@iro.umontreal.ca>
* pcvs-parse.el (cvs-parse-table): Accept the new `...' format for
removed files.
2006-08-17 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-locals-watch-map)
(gdb-locals-watch-map-1): Suppress keymap first.
(gdb-edit-locals-map-1): New variable.
(gdb-edit-locals-value): New function.
(gdb-stack-list-locals-handler): Use them.
2006-08-16 Stefan Monnier <monnier@iro.umontreal.ca>
* mouse.el (global-map): Allow yanking with mouse-2 at a spot whose
cursor would normally be drawn in the fringe.
* font-lock.el (font-lock-extend-region-wholelines): Fix up typo.
Reported by Martin Rudalics <rudalics@gmx.at>.
2006-08-16 Richard Stallman <rms@gnu.org>
* term/x-win.el (x-clipboard-yank): Specify * in interactive spec.
(special-event-map): Process drag-n-drop events this way.
* simple.el (move-beginning-of-line): Test whether fields
would prevent motion back to line's first visible character.
If so, stop where the fields would stop the motion.
* newcomment.el (comment-indent): Fully update INDENT
before checking to see if it will change the text.
* cus-edit.el (custom-newline): New function.
(custom-mode-map): Bind newline to custom-newline.
* compare-w.el (compare-windows): Factor compare-ignore-whitespace
into ignore-whitespace.
Check each buffer for its skip-function.
Handle compare-windows-skip-whitespace special-case test
by returning t from default skip function.
2006-08-15 Carsten Dominik <dominik@science.uva.nl>
* textmodes/org.el (org-clock-special-range)
(org-clock-update-time-maybe): New functions.
(org-stamp-time-of-day-regexp): Allow weekday to be of word chars,
not only a-z.
(org-agenda-get-blocks): Allow multiple blocks per headline.
(org-timestamp-change): Call `org-clock-update-time-maybe'.
(org-export-html-title-format)
(org-export-html-toplevel-hlevel): New options.
(org-export-language-setup): Add support for Czech.
(org-mode, org-insert-todo-heading, org-find-visible)
(org-find-invisible, org-invisible-p, org-invisible-p2)
(org-back-to-heading, org-on-heading-p, org-up-heading-all)
(org-show-subtree, org-show-entry, org-make-options-regexp):
Remove compatibility support for old outline-mode.
(org-check-occur-regexp): Funtion removed.
(org-on-heading-p, org-back-to-heading): Made defalias.
(org-set-local): New defsubst.
(org-set-regexps-and-options, org-mode)
(org-set-font-lock-defaults, org-edit-agenda-file-list)
(org-timeline, org-agenda-list, org-todo-list, org-tags-view)
(org-remember-apply-template, org-table-edit-field)
(org-table-edit-formulas, orgtbl-mode, org-export-as-ascii)
(org-set-autofill-regexps): Use `org-set-local'.
(org-table-eval-formula): Fix bug with parsing of display flags.
2006-08-15 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-info-stack-custom): Indicate selected
frame with fringe arrow. Suggested by Simon Marshall
<simon.marshall@misys.com>.
(gdb-stack-position): New variable.
(gdb-starting, gdb-exited): Reset gdb-stack-position to nil.
(gdb-frames-mode): Set gdb-stack-position to nil.
Add to overlay-arrow-variable-list
(gdb-reset): Delete gdb-stack-position from above list.
2006-08-14 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* term/x-win.el (menu-bar-edit-menu): Disable paste if buffer is
read only.
2006-08-13 Romain Francoise <romain@orebokech.com>
* cus-theme.el (customize-create-theme)
(custom-theme-visit-theme): End `y-or-n-p' prompt with a space.
* filesets.el (filesets-add-buffer): Ditto.
* pcvs.el (cvs-change-cvsroot): Ditto.
2006-08-13 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-frame-separate-io-buffer)
(gdb-use-separate-io-buffer, menu): Avoid using `inferior' in text.
(gdb-memory-mode, gdb-locals-watch-map): Don't quote lambda
expressions.
(gdb-info-breakpoints-custom): Use gdb-breakpoint-regexp.
Only search till end of line.
Add face to function names in case of no filename.
Add face to variable names of watchpoints.
2006-08-12 Robert Thorpe <rthorpe@realworldtech.com> (tiny change)
* cus-start.el <indent-tabs-mode>: Move to the `indent'
customization group.
2006-08-12 Ken Manheimer <ken.manheimer@gmail.com>
* allout.el (allout-prior-bindings, allout-added-bindings):
Remove, after long deprecation.
(allout-beginning-of-line-cycles, allout-end-of-line-cycles):
Add customization vars controlling allout-beginning-of-line and
allout-end-of-line conveniences.
(allout-header-prefix, allout-use-mode-specific-leader)
(allout-use-mode-specific-leader, allout-mode-leaders):
Revise docstrings.
(allout-infer-header-lead): Change to be an alias for
allout-infer-header-lead-and-primary-bullet.
(allout-infer-header-lead-and-primary-bullet): New version of
allout-infer-header-lead which assigns the primary bullet to the
same as the header lead, when its being changed.
(allout-infer-body-reindent): Apply regexp-quote instead of
unconditionally prepending "\\", so that all literal
allout-header-prefix and allout-primary-bullet strings are
properly handled.
(allout-add-resumptions): Add optional qualifier for extending or
appending to existing values, rather than replacing them.
(allout-view-change-hook): Clarify docstring.
(allout-exposure-change-hook): Take explicit arguments, via
run-hook-with-args.
(allout-structure-added-hook)
(allout-structure-deleted-hook)
(allout-structure-shifted-hook): New hooks analogous to
allout-exposure-change-hook for other kinds of structural outline
edits.
(allout-encryption-plaintext-sanitization-regexps): New encryption
customization variable, by which cooperating modes can provde
massage of the plaintext without actually being passed it.
(allout-encryption-ciphertext-rejection-regexps)
(allout-encryption-ciphertext-rejection-ceiling): New encryption
customization variables, by which cooperating modes can prohibit
rare but possible ciphertext patterns from fouling their
operation, with actually being passed the ciphertext.
(allout-mode): Run activation and deactivation hooks after the
minor-mode variable has been toggled, to clarify the mode
disposition. The new encryption ciphertext rejection variable is
used to ensure that the ciphertext does not contain text that
would be recognized as outline structural elements by allout.
Substite allout-beginning-of-line and allout-end-of-line for
conventionall beginning-of-line and end-of-line bindings.
If allout-old-style-prefixes is non-nil, don't nullify it on mode
activation!
(allout-beginning-of-line): Respect `allout-beginning-of-line-cycles'.
(allout-end-of-line): Respect `allout-end-of-line-cycles'.
(allout-chart-subtree): Implement new mode, charting only the
visible items in the subtree, when new 'visible' parameter is non-nil.
(allout-end-of-subtree): Properly handle the last item in the buffer.
(allout-pre-command-business, allout-command-counter):
Increment an advertised counter so that cooperating enhancements can
track revisions of items.
(allout-open-topic): Run allout-structure-added-hook with suitable
arguments.
(allout-shift-in): Run allout-structure-shifted-hook with suitable
arguments.
(allout-shift-out): Fix doubling for negative args and ensure call
of allout-structure-shifted-hook by solely using allout-shift-in.
(allout-kill-line, allout-kill-topic):
Run allout-structure-deleted-hook with suitable arguments.
(allout-yank-processing): Run allout-structure-added-hook with
proper arguments.
(allout-yank): Enclose activity in allout-unprotected.
(allout-flag-region): Run allout-exposure-change-hook with
suitable arguments, instead of making the callee infer the arguments.
(allout-encrypt-string):
Support allout-encryption-plaintext-sanitization-regexps,
allout-encryption-ciphertext-rejection-regexps, and
allout-encryption-ciphertext-rejection-ceiling. Indicate correct
en/de cryption mode in symmetric encryption failure message.
(allout-obtain-passphrase): Use copy-sequence to get a distinct
copy of the passphrase, and don't zero it or we'll corrupt the
stashed copy.
(allout-create-encryption-passphrase-verifier)
(allout-verify-passphrase): Respect the new signature for
allout-encrypt-string.
(allout-get-configvar-values): Convenience for getting a
configuration variable value and handling its absence gracefully.
2006-08-11 Romain Francoise <romain@orebokech.com>
* obsolete/zone-mode.el: Delete.
2006-08-11 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/dns-mode.el (dns-mode): Use before-save-hook.
2006-08-11 Thien-Thi Nguyen <ttn@gnu.org>
* emacs-lisp/bindat.el (bindat-ip-to-string):
Use `format-network-address' if possible.
2006-08-11 Jan Dj,Ad(Brv <jan.h.d@swipnet.se>
* x-dnd.el (x-dnd-init-frame): Call x-register-dnd-atom.
2006-08-10 Chong Yidong <cyd@stupidchicken.com>
* emacs-lisp/edebug.el (edebug-recursive-edit): Don't save and
restore unread-command-events here.
(edebug-display): Do it here, to detect sit-for interruptions.
2006-08-10 Romain Francoise <romain@orebokech.com>
* textmodes/dns-mode.el: Alias `zone-mode' to `dns-mode'.
(dns-mode-soa-auto-increment-serial): New user option.
(dns-mode-soa-maybe-increment-serial): New function.
(dns-mode): Add the latter to `write-contents-functions'.
* obsolete/zone-mode.el: Move to obsolete/ from net/.
Delete autoload cookies.
2006-08-10 John Wiegley <johnw@newartisans.com>
* eshell/em-glob.el (eshell-glob-chars-list)
(eshell-glob-translate-alist): Add support for [^g] in character globs.
2006-08-10 Richard Stallman <rms@gnu.org>
* facemenu.el (facemenu-add-face): Pass frame to facemenu-active-faces.
(facemenu-set-face): Doc fix.
(facemenu-listed-faces): Doc fix.
2006-08-09 Chong Yidong <cyd@stupidchicken.com>
* avoid.el (mouse-avoidance-animating-pointer): New var.
(mouse-avoidance-nudge-mouse): Use it.
(mouse-avoidance-banish): Rename from mouse-avoidance-banish-hook.
(mouse-avoidance-exile): Rename from mouse-avoidance-exile-hook
(mouse-avoidance-fancy): Rename from mouse-avoidance-fancy-hook.
Don't activate if currently animating. All callers changed.
2006-08-09 John Wiegley <johnw@newartisans.com>
* calendar/timeclock.el (timeclock-use-elapsed): Added a new
variable, which causes timeclock to report elapsed time worked,
instead of just work remaining.
2006-08-09 Kenichi Handa <handa@m17n.org>
* international/latexenc.el (latexenc-find-file-coding-system):
Fix for the case that the 2nd element of arg-list is a cons.
2006-08-08 Chong Yidong <cyd@stupidchicken.com>
* info.el (Info-fontify-node): Handle preceding `in' for note
reference hiding rules.
2006-08-08 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/sh-script.el (sh-quoted-subshell): Make sure we don't
mistake a closing " for an opening one.
2006-08-07 Dan Nicolaescu <dann@ics.uci.edu>
* term/xterm.el (terminal-init-xterm): Add more key bindings.
2006-08-07 Stefan Monnier <monnier@iro.umontreal.ca>
* complete.el (PC-do-completion): Filter out completions matching
completion-ignored-extensions before checking whether there are
multiple completions.
Don't use `list' unnecessarily when building completion tables.
2006-08-06 Richard Stallman <rms@gnu.org>
* help.el (describe-mode): Make minor mode list more concise.
2006-08-05 Chong Yidong <cyd@stupidchicken.com>
* bindings.el: Give mode-line-format, mode-line-modes, and
mode-line-position `standard-value' properties.
2006-08-05 Eli Zaretskii <eliz@gnu.org>
* buff-menu.el (list-buffers-noselect): For Info buffers, use
"(file)node" instead of the file name.
2006-08-05 Richard Stallman <rms@gnu.org>
* faces.el (escape-glyph): Doc fix.
2006-08-04 Kenichi Handa <handa@m17n.org>
* international/mule-diag.el (describe-font): Improve docstring
and error message. Use frame-parameter (not frame-parameters).
2006-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/gud.el (gdb-script-font-lock-syntactic-keywords):
Correctly mark the end-of-docstring char.
2006-08-03 Chong Yidong <cyd@stupidchicken.com>
* simple.el (line-move-to-column): Constrain move-to-column to
current field.
2006-08-03 Stefan Monnier <monnier@iro.umontreal.ca>
* font-lock.el (font-lock-beg, font-lock-end)
(font-lock-extend-region-functions): New vars.
(font-lock-extend-region-multiline)
(font-lock-extend-region-wholelines): New functions.
(font-lock-default-fontify-region): Use them.
(font-lock-extend-jit-lock-region-after-change): Only round up
if font-lock-default-fontify-region will do it as well.
* font-lock.el (font-lock-extend-after-change-region-function):
Rename from font-lock-extend-region-function.
(font-lock-extend-region): Remove by inlining at call sites.
(font-lock-after-change-function): Don't needlessly round up to a whole
number of lines.
(font-lock-extend-jit-lock-region-after-change): Be more careful about
the boundary conditions and the interactions between the various ways
to extend the region.
2006-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
* jit-lock.el (jit-lock-fontify-now): Preserve the buffer's
modification status when forcing the second redisplay.
2006-08-03 Kim F. Storm <storm@cua.dk>
* edmacro.el (edmacro-fix-menu-commands): Ignore switch-frame.
2006-08-02 Stefan Monnier <monnier@iro.umontreal.ca>
* pcvs-util.el (cvs-get-buffer-create): Obey `noreuse' even if `name'
doesn't look like a file name.
* complete.el (PC-expand-many-files): Avoid signalling an error when
the current directory doesn't exist. Reported by Micha,Ak(Bl Cadilhac.
2006-08-02 Andreas Schwab <schwab@suse.de>
* bindings.el (mode-line-format): Simplify reference to vc-mode.
2006-08-02 Nick Roberts <nickrob@snap.net.nz>
* bindings.el (map): Make mode-line-buffer-identification-keymap
before defining propertized-buffer-identification.
2006-08-01 Richard Stallman <rms@gnu.org>
* bindings.el (mode-line-format): Adjust spacing around vc-mode.
2006-08-02 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-find-source-frame): Make nil the
default value.
(gdb-find-source-frame): New function.
(menu): Add to menu bar.
2006-08-01 Stefan Monnier <monnier@iro.umontreal.ca>
* font-core.el (font-lock-extend-region-function)
(font-lock-extend-region): Move to font-lock.el.
* font-lock.el (font-lock-extend-region-function)
(font-lock-extend-region): Move from font-core.el. Simplify.
* jit-lock.el (jit-lock-fontify-now): Cause a second redisplay
if needed.
(jit-lock-start, jit-lock-end): New dynamic scoped vars.
(jit-lock-after-change-extend-region-functions): New hook.
(jit-lock-after-change): Use it instead of hard-coding font-lock code.
* font-lock.el (font-lock-extend-jit-lock-region-after-change): New fun.
(font-lock-turn-on-thing-lock): Use it.
* longlines.el (longlines-show-region): Make it work on read-only
buffers as well.
2006-08-01 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-set-hollow): Check for gud-last-last-frame.
2006-07-31 Richard Stallman <rms@gnu.org>
* progmodes/vhdl-mode.el (vhdl-speedbar-display-directory)
(vhdl-speedbar-display-projects): Update old obsolete
speedbar variable names.
2006-07-31 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-find-source-frame): New option.
(gdb-stopped): Use it.
* t-mouse.el (t-mouse-mode): Use set-process-query-on-exit-flag.
2006-07-29 Chong Yidong <cyd@stupidchicken.com>
* loadhist.el (unload-feature): Handle new `(t . SYMBOL)' format
for load-history elements.
2006-07-29 Eli Zaretskii <eliz@gnu.org>
* files.el (convert-standard-filename): For Cygwin, replace
characters not allowed in Windows file names.
(make-auto-save-file-name): Add Cygwin to the list of systems
where the auto-save file name needs to be run through
convert-standard-filename.
2006-07-29 Lennart Borgman <lennart.borgman.073@student.lu.se>
* window.el (bw-get-tree): Don't integerp subtree if it's nil.
2006-07-28 Richard Stallman <rms@gnu.org>
* bindings.el (mode-line-frame-identification)
(propertized-buffer-identification): Centralize the code
to initialize the variable.
* progmodes/grep.el (grep-default-command): Catch errors from
wildcard-to-regexp.
2006-07-29 Kim F. Storm <storm@cua.dk>
* progmodes/grep.el (grep-tag-default): New function.
(grep-default-command, grep-read-regexp): Use it.
(grep-read-files): Use car of grep-files-history or grep-files-aliases
as default if nothing else applies.
2006-07-28 Bill Atkins <atkinw@rpi.edu> (tiny change)
* wdired.el (wdired-change-to-wdired-mode, wdired-change-to-dired-mode):
Throw error if buffer is not in Dired and Wdired mode, respectively.
2006-07-28 Chong Yidong <cyd@stupidchicken.com>
* cus-edit.el (custom-no-edit): Revert 2006-07-27 change, so that
self-insert-command keys don't activate buttons.
(custom-mode-map): Just don't bind "\C-m" to `custom-no-edit'.
2006-07-29 Nick Roberts <nickrob@snap.net.nz>
* progmodes/gdb-ui.el (gdb-info-breakpoints-custom): Use different
faces for enable character.
2006-07-28 Nick Roberts <nickrob@snap.net.nz>
* Makefile.in (recompile): Update comment to reflect change
@ -31,9 +735,9 @@
2006-07-26 Mathias Dahl <mathias.dahl@gmail.com>
* tumme.el (tumme-backward-image): Add prefix argument. Add error
* tumme.el (tumme-backward-image): Add prefix argument. Add error
when at first image.
(tumme-forward-image): Add prefix argument. Add error when at last
(tumme-forward-image): Add prefix argument. Add error when at last
image.
2006-07-25 Stefan Monnier <monnier@iro.umontreal.ca>
@ -45,10 +749,10 @@
* tumme.el (tumme-track-original-file): Add `buffer-live-p' check.
(tumme-format-properties-string): Handle empty `buf'.
(tumme-get-comment): Change variable names inside `let'. Add
missing `let' variable that cause font-lock problems.
(tumme-write-comments): Change variable names inside `let'. Add
missing `let' variable that cause font-lock problems.
(tumme-get-comment): Change variable names inside `let'.
Add missing `let' variable that cause font-lock problems.
(tumme-write-comments): Change variable names inside `let'.
Add missing `let' variable that cause font-lock problems.
(tumme-forward-image): Rename from `tumme-forward-char'.
(tumme-backward-image): Rename from `tumme-backward-char'.
@ -97,8 +801,8 @@
2006-07-24 Daiki Ueno <ueno@unixuser.org>
* pgg-def.el (pgg-truncate-key-identifier): Truncate the key ID to 8
letters from the end. Thanks to "David Smith" <davidsmith@acm.org> and
andreas@altroot.de (Andreas V,Av(Bgele)
letters from the end. Thanks to "David Smith" <davidsmith@acm.org>
and andreas@altroot.de (Andreas V,Av(Bgele).
2006-07-23 Thien-Thi Nguyen <ttn@gnu.org>
@ -137,7 +841,7 @@
2006-07-21 Dan Nicolaescu <dann@ics.uci.edu>
* term/xterm.el (terminal-init-xterm): Fix key bindings
syntax. Bind S-return, C-M-., C-TAB, S-TAB and C-S-TAB.
syntax. Bind S-return, C-M-., C-TAB, S-TAB and C-S-TAB.
2006-07-21 Eli Zaretskii <eliz@gnu.org>
@ -173,7 +877,7 @@
* calc.el (calc-previous-alg-entry): Remove variable.
* calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
* calc-aent.el (calc-alg-entry-history, calc-quick-calc-history):
New variables.
(calc-alg-entry): Use `calc-alg-entry-history'.
(calc-do-quick-calc): Use `calc-quick-calc-history'.
@ -497,8 +1201,8 @@
2006-07-10 Chong Yidong <cyd@stupidchicken.com>
* progmodes/cc-awk.el (defconst): Use eval-and-compile to avoid
compilation error.
* progmodes/cc-awk.el (c-awk-escaped-nls*): Use eval-and-compile to
avoid compilation error.
* subr.el (sit-for): New function.

File diff suppressed because it is too large Load diff

View file

@ -124,6 +124,7 @@ Only applies in mouse-avoidance-modes `animate' and `jump'."
(defvar mouse-avoidance-pointer-shapes nil)
(defvar mouse-avoidance-n-pointer-shapes 0)
(defvar mouse-avoidance-old-pointer-shape nil)
(defvar mouse-avoidance-animating-pointer nil)
;; This timer is used to run something when Emacs is idle.
(defvar mouse-avoidance-timer nil)
@ -243,16 +244,19 @@ You can redefine this if you want the mouse banished to a different corner."
(+ (cdr mouse-avoidance-state) deltay)))
(if (or (eq mouse-avoidance-mode 'animate)
(eq mouse-avoidance-mode 'proteus))
(let ((i 0.0))
(let ((i 0.0)
(incr (max .1 (/ 1.0 mouse-avoidance-nudge-dist))))
(setq mouse-avoidance-animating-pointer t)
(while (<= i 1)
(mouse-avoidance-set-mouse-position
(cons (+ (car cur-pos) (round (* i deltax)))
(+ (cdr cur-pos) (round (* i deltay)))))
(setq i (+ i (max .1 (/ 1.0 mouse-avoidance-nudge-dist))))
(setq i (+ i incr))
(if (eq mouse-avoidance-mode 'proteus)
(mouse-avoidance-set-pointer-shape
(mouse-avoidance-random-shape)))
(sit-for mouse-avoidance-animation-delay)))
(sit-for mouse-avoidance-animation-delay))
(setq mouse-avoidance-animating-pointer nil))
(mouse-avoidance-set-mouse-position (cons (+ (car (cdr cur)) deltax)
(+ (cdr (cdr cur)) deltay))))))
@ -294,11 +298,11 @@ redefine this function to suit your own tastes."
(memq 'drag modifiers)
(memq 'down modifiers)))))))
(defun mouse-avoidance-banish-hook ()
(defun mouse-avoidance-banish ()
(if (not (mouse-avoidance-ignore-p))
(mouse-avoidance-banish-mouse)))
(defun mouse-avoidance-exile-hook ()
(defun mouse-avoidance-exile ()
;; For exile mode, the state is nil when the mouse is in its normal
;; position, and set to the old mouse-position when the mouse is in exile.
(if (not (mouse-avoidance-ignore-p))
@ -317,9 +321,10 @@ redefine this function to suit your own tastes."
;; but clear state anyway, to be ready for another move
(setq mouse-avoidance-state nil))))))
(defun mouse-avoidance-fancy-hook ()
(defun mouse-avoidance-fancy ()
;; Used for the "fancy" modes, ie jump et al.
(if (and (not (mouse-avoidance-ignore-p))
(if (and (not mouse-avoidance-animating-pointer)
(not (mouse-avoidance-ignore-p))
(mouse-avoidance-too-close-p (mouse-position)))
(let ((old-pos (mouse-position)))
(mouse-avoidance-nudge-mouse)
@ -375,14 +380,14 @@ definition of \"random distance\".)"
(eq mode 'animate)
(eq mode 'proteus))
(setq mouse-avoidance-timer
(run-with-idle-timer 0.1 t 'mouse-avoidance-fancy-hook))
(run-with-idle-timer 0.1 t 'mouse-avoidance-fancy))
(setq mouse-avoidance-mode mode
mouse-avoidance-state (cons 0 0)
mouse-avoidance-old-pointer-shape
(and (boundp 'x-pointer-shape) x-pointer-shape)))
((eq mode 'exile)
(setq mouse-avoidance-timer
(run-with-idle-timer 0.1 t 'mouse-avoidance-exile-hook))
(run-with-idle-timer 0.1 t 'mouse-avoidance-exile))
(setq mouse-avoidance-mode mode
mouse-avoidance-state nil))
((or (eq mode 'banish)
@ -390,7 +395,7 @@ definition of \"random distance\".)"
(and (null mode) (null mouse-avoidance-mode))
(and mode (> (prefix-numeric-value mode) 0)))
(setq mouse-avoidance-timer
(run-with-idle-timer 0.1 t 'mouse-avoidance-banish-hook))
(run-with-idle-timer 0.1 t 'mouse-avoidance-banish))
(setq mouse-avoidance-mode 'banish))
(t (setq mouse-avoidance-mode nil)))
(force-mode-line-update))

View file

@ -215,14 +215,6 @@ mnemonics of the following coding systems:
(make-variable-buffer-local 'mode-line-mule-info)
(defvar mode-line-buffer-identification (purecopy '("%12b")) "\
Mode-line control for identifying the buffer being displayed.
Its default value is (\"%12b\").
Major modes that edit things other than ordinary files may change this
\(e.g. Info, Dired,...)")
(make-variable-buffer-local 'mode-line-buffer-identification)
(defvar mode-line-frame-identification '(window-system " " "-%F ")
"Mode-line control to describe the current frame.")
@ -294,56 +286,102 @@ Keymap to display on minor modes.")
;; mouse-1: select window, mouse-2: delete others, mouse-3: delete,
;; drag-mouse-1: resize, C-mouse-2: split horizontally"
"mouse-1: select (drag to resize), mouse-2: delete others, mouse-3: delete this")
(dashes (propertize "--" 'help-echo help-echo)))
(setq-default mode-line-format
(list
"%e"
(propertize "-" 'help-echo help-echo)
'mode-line-mule-info
'mode-line-client
'mode-line-modified
'mode-line-frame-identification
'mode-line-buffer-identification
(propertize " " 'help-echo help-echo)
'mode-line-position
`(vc-mode ("" vc-mode ,(propertize " " 'help-echo help-echo)))
'mode-line-modes
`(which-func-mode ("" which-func-format ,dashes))
`(global-mode-string (,dashes global-mode-string))
(propertize "-%-" 'help-echo help-echo)))
(dashes (propertize "--" 'help-echo help-echo))
(standard-mode-line-format
(list
"%e"
(propertize "-" 'help-echo help-echo)
'mode-line-mule-info
'mode-line-client
'mode-line-modified
'mode-line-frame-identification
'mode-line-buffer-identification
(propertize " " 'help-echo help-echo)
'mode-line-position
'(vc-mode vc-mode)
(propertize " " 'help-echo help-echo)
'mode-line-modes
`(which-func-mode ("" which-func-format ,dashes))
`(global-mode-string (,dashes global-mode-string))
(propertize "-%-" 'help-echo help-echo)))
(standard-mode-line-modes
(list
(propertize "%[(" 'help-echo help-echo)
`(:propertize ("" mode-name)
help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes"
mouse-face mode-line-highlight
local-map ,mode-line-major-mode-keymap)
'("" mode-line-process)
`(:propertize ("" minor-mode-alist)
mouse-face mode-line-highlight
help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes"
local-map ,mode-line-minor-mode-keymap)
(propertize "%n" 'help-echo "mouse-2: widen"
'mouse-face 'mode-line-highlight
'local-map (make-mode-line-mouse-map
'mouse-2 #'mode-line-widen))
(propertize ")%]--" 'help-echo help-echo)))
(setq-default mode-line-modes
(list
(propertize "%[(" 'help-echo help-echo)
`(:propertize ("" mode-name)
help-echo "mouse-1: major mode, mouse-2: major mode help, mouse-3: toggle minor modes"
mouse-face mode-line-highlight
local-map ,mode-line-major-mode-keymap)
'("" mode-line-process)
`(:propertize ("" minor-mode-alist)
mouse-face mode-line-highlight
help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes"
local-map ,mode-line-minor-mode-keymap)
(propertize "%n" 'help-echo "mouse-2: widen"
'mouse-face 'mode-line-highlight
'local-map (make-mode-line-mouse-map
'mouse-2 #'mode-line-widen))
(propertize ")%]--" 'help-echo help-echo)))
(standard-mode-line-position
`((-3 ,(propertize "%p" 'help-echo help-echo))
(size-indication-mode
(8 ,(propertize " of %I" 'help-echo help-echo)))
(line-number-mode
((column-number-mode
(10 ,(propertize " (%l,%c)" 'help-echo help-echo))
(6 ,(propertize " L%l" 'help-echo help-echo))))
((column-number-mode
(5 ,(propertize " C%c" 'help-echo help-echo))))))))
(setq-default mode-line-position
`((-3 ,(propertize "%p" 'help-echo help-echo))
(size-indication-mode
(8 ,(propertize " of %I" 'help-echo help-echo)))
(line-number-mode
((column-number-mode
(10 ,(propertize " (%l,%c)" 'help-echo help-echo))
(6 ,(propertize " L%l" 'help-echo help-echo))))
((column-number-mode
(5 ,(propertize " C%c" 'help-echo help-echo))))))))
(setq-default mode-line-format standard-mode-line-format)
(put 'mode-line-format 'standard-value
(list `(quote ,standard-mode-line-format)))
(setq-default mode-line-modes standard-mode-line-modes)
(put 'mode-line-modes 'standard-value
(list `(quote ,standard-mode-line-modes)))
(setq-default mode-line-position standard-mode-line-position)
(put 'mode-line-position 'standard-value
(list `(quote ,standard-mode-line-position))))
(defvar mode-line-buffer-identification-keymap nil "\
Keymap for what is displayed by `mode-line-buffer-identification'.")
;; Add menu of buffer operations to the buffer identification part
;; of the mode line.or header line.
;
(let ((map (make-sparse-keymap)))
;; Bind down- events so that the global keymap won't ``shine
;; through''.
(define-key map [mode-line mouse-1] 'mode-line-previous-buffer)
(define-key map [header-line down-mouse-1] 'ignore)
(define-key map [header-line mouse-1] 'mode-line-previous-buffer)
(define-key map [header-line down-mouse-3] 'ignore)
(define-key map [mode-line mouse-3] 'mode-line-next-buffer)
(define-key map [header-line down-mouse-3] 'ignore)
(define-key map [header-line mouse-3] 'mode-line-next-buffer)
(setq mode-line-buffer-identification-keymap map))
(defun propertized-buffer-identification (fmt)
"Return a list suitable for `mode-line-buffer-identification'.
FMT is a format specifier such as \"%12b\". This function adds
text properties for face, help-echo, and local-map to it."
(list (propertize fmt
'face 'mode-line-buffer-id
'help-echo
(purecopy "mouse-1: previous buffer, mouse-3: next buffer")
'mouse-face 'mode-line-highlight
'local-map mode-line-buffer-identification-keymap)))
(defvar mode-line-buffer-identification (propertized-buffer-identification "%12b") "\
Mode-line control for identifying the buffer being displayed.
Its default value is (\"%12b\") with some text properties added.
Major modes that edit things other than ordinary files may change this
\(e.g. Info, Dired,...)")
(make-variable-buffer-local 'mode-line-buffer-identification)
(defun unbury-buffer () "\
Switch to the last buffer in the buffer list."
(interactive)
@ -449,35 +487,6 @@ Menu of mode operations in the mode line.")
(let ((indicator (car (nth 4 (car (cdr event))))))
(describe-minor-mode-from-indicator indicator)))
;; Add menu of buffer operations to the buffer identification part
;; of the mode line.or header line.
;
(let ((map (make-sparse-keymap)))
;; Bind down- events so that the global keymap won't ``shine
;; through''.
(define-key map [mode-line mouse-1] 'mode-line-previous-buffer)
(define-key map [header-line down-mouse-1] 'ignore)
(define-key map [header-line mouse-1] 'mode-line-previous-buffer)
(define-key map [header-line down-mouse-3] 'ignore)
(define-key map [mode-line mouse-3] 'mode-line-next-buffer)
(define-key map [header-line down-mouse-3] 'ignore)
(define-key map [header-line mouse-3] 'mode-line-next-buffer)
(setq mode-line-buffer-identification-keymap map))
(defun propertized-buffer-identification (fmt)
"Return a list suitable for `mode-line-buffer-identification'.
FMT is a format specifier such as \"%12b\". This function adds
text properties for face, help-echo, and local-map to it."
(list (propertize fmt
'face 'mode-line-buffer-id
'help-echo
(purecopy "mouse-1: previous buffer, mouse-3: next buffer")
'mouse-face 'mode-line-highlight
'local-map mode-line-buffer-identification-keymap)))
(setq-default mode-line-buffer-identification
(propertized-buffer-identification "%12b"))
(defvar minor-mode-alist nil "\
Alist saying how to show minor modes in the mode line.
Each element looks like (VARIABLE STRING);

View file

@ -117,6 +117,7 @@ file buffers. It affects both manual reverting and reverting by
Auto Revert Mode.")
(defvar Info-current-file) ;; from info.el
(defvar Info-current-node) ;; from info.el
(make-variable-buffer-local 'Buffer-menu-files-only)
@ -786,7 +787,12 @@ For more information, see the function `buffer-menu'."
((eq file 'toc)
(setq file "*Info TOC*"))
((not (stringp file)) ;; avoid errors
(setq file nil))))))
(setq file nil))
(t
(setq file (concat "("
(file-name-nondirectory file)
")"
Info-current-node)))))))
(push (list buffer bits name (buffer-size) mode file)
list))))))
;; Preserve the original buffer-list ordering, just in case.

View file

@ -95,7 +95,7 @@
:group 'timeclock)
(defcustom timeclock-relative t
"*Whether to maken reported time relative to `timeclock-workday'.
"*Whether to make reported time relative to `timeclock-workday'.
For example, if the length of a normal workday is eight hours, and you
work four hours on Monday, then the amount of time \"remaining\" on
Tuesday is twelve hours -- relative to an averaged work period of
@ -251,7 +251,10 @@ each day.")
This value is not accurate enough to be useful by itself. Rather,
call `timeclock-workday-elapsed', to determine how much time has been
worked so far today. Also, if `timeclock-relative' is nil, this value
will be the same as `timeclock-discrepancy'.") ; ? gm
will be the same as `timeclock-discrepancy'.")
(defvar timeclock-use-elapsed nil
"Non-nil if the modeline should display time elapsed, not remaining.")
(defvar timeclock-last-period nil
"Integer representing the number of seconds in the last period.
@ -424,7 +427,9 @@ If SHOW-SECONDS is non-nil, display second resolution.
If TODAY-ONLY is non-nil, the display will be relative only to time
worked today, ignoring the time worked on previous days."
(interactive "P")
(let ((remainder (timeclock-workday-remaining)) ; today-only?
(let ((remainder (timeclock-workday-remaining
(or today-only
(not timeclock-relative))))
(last-in (equal (car timeclock-last-event) "i"))
status)
(setq status
@ -619,7 +624,10 @@ relative only to the time worked today, and not to past time."
The value of `timeclock-relative' affects the display as described in
that variable's documentation."
(interactive)
(let ((remainder (timeclock-workday-remaining (not timeclock-relative)))
(let ((remainder
(if timeclock-use-elapsed
(timeclock-workday-elapsed)
(timeclock-workday-remaining (not timeclock-relative))))
(last-in (equal (car timeclock-last-event) "i")))
(when (and (< remainder 0)
(not (and timeclock-day-over

View file

@ -167,16 +167,14 @@ on first call it advances points to the next difference,
on second call it synchronizes points by skipping the difference,
on third call it again advances points to the next difference and so on."
(interactive "P")
(if compare-ignore-whitespace
(setq ignore-whitespace (not ignore-whitespace)))
(let* (p1 p2 maxp1 maxp2 b1 b2 w2
(progress 1)
(opoint1 (point))
opoint2
(skip-func (if (if ignore-whitespace ; XOR
(not compare-ignore-whitespace)
compare-ignore-whitespace)
(if (stringp compare-windows-whitespace)
'compare-windows-skip-whitespace
compare-windows-whitespace)))
skip-func-1
skip-func-2
(sync-func (if (stringp compare-windows-sync)
'compare-windows-sync-regexp
compare-windows-sync)))
@ -190,8 +188,21 @@ on third call it again advances points to the next difference and so on."
b2 (window-buffer w2))
(setq opoint2 p2)
(setq maxp1 (point-max))
(save-excursion
(set-buffer b2)
(setq skip-func-1 (if ignore-whitespace
(if (stringp compare-windows-whitespace)
(lambda (pos)
(compare-windows-skip-whitespace pos)
t)
compare-windows-whitespace)))
(with-current-buffer b2
(setq skip-func-2 (if ignore-whitespace
(if (stringp compare-windows-whitespace)
(lambda (pos)
(compare-windows-skip-whitespace pos)
t)
compare-windows-whitespace)))
(push-mark p2 t)
(setq maxp2 (point-max)))
(push-mark)
@ -199,17 +210,16 @@ on third call it again advances points to the next difference and so on."
(while (> progress 0)
;; If both windows have whitespace next to point,
;; optionally skip over it.
(and skip-func
(and skip-func-1
(save-excursion
(let (p1a p2a w1 w2 result1 result2)
(setq result1 (funcall skip-func opoint1))
(setq result1 (funcall skip-func-1 opoint1))
(setq p1a (point))
(set-buffer b2)
(goto-char p2)
(setq result2 (funcall skip-func opoint2))
(setq result2 (funcall skip-func-2 opoint2))
(setq p2a (point))
(if (or (stringp compare-windows-whitespace)
(and result1 result2 (eq result1 result2)))
(if (and result1 result2 (eq result1 result2))
(setq p1 p1a
p2 p2a)))))

View file

@ -543,8 +543,8 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(let ((compl (all-completions (if env-on
(file-name-nondirectory (substring str 0 p))
(substring str 0 p))
table
pred)))
table
pred)))
(setq p compl)
(while p
(and (string-match regex (car p))
@ -553,6 +553,34 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(setq poss (cons (car p) poss))))
(setq p (cdr p)))))
;; Handle completion-ignored-extensions
(and filename
(not (eq mode 'help))
(let ((p2 poss))
;; Build a regular expression representing the extensions list
(or (equal completion-ignored-extensions PC-ignored-extensions)
(setq PC-ignored-regexp
(concat "\\("
(mapconcat
'regexp-quote
(setq PC-ignored-extensions
completion-ignored-extensions)
"\\|")
"\\)\\'")))
;; Check if there are any without an ignored extension.
;; Also ignore `.' and `..'.
(setq p nil)
(while p2
(or (string-match PC-ignored-regexp (car p2))
(string-match "\\(\\`\\|/\\)[.][.]?/?\\'" (car p2))
(setq p (cons (car p2) p)))
(setq p2 (cdr p2)))
;; If there are "good" names, use them
(and p (setq poss p))))
;; Now we have a list of possible completions
(cond
@ -575,34 +603,6 @@ of `minibuffer-completion-table' and the minibuffer contents.")
((or (cdr (setq helpposs poss))
(memq mode '(help word)))
;; Handle completion-ignored-extensions
(and filename
(not (eq mode 'help))
(let ((p2 poss))
;; Build a regular expression representing the extensions list
(or (equal completion-ignored-extensions PC-ignored-extensions)
(setq PC-ignored-regexp
(concat "\\("
(mapconcat
'regexp-quote
(setq PC-ignored-extensions
completion-ignored-extensions)
"\\|")
"\\)\\'")))
;; Check if there are any without an ignored extension.
;; Also ignore `.' and `..'.
(setq p nil)
(while p2
(or (string-match PC-ignored-regexp (car p2))
(string-match "\\(\\`\\|/\\)[.][.]?/?\\'" (car p2))
(setq p (cons (car p2) p)))
(setq p2 (cdr p2)))
;; If there are "good" names, use them
(and p (setq poss p))))
;; Is the actual string one of the possible completions?
(setq p (and (not (eq mode 'help)) poss))
(while (and p
@ -623,7 +623,8 @@ of `minibuffer-completion-table' and the minibuffer contents.")
;; Check if next few letters are the same in all cases
(if (and (not (eq mode 'help))
(setq prefix (try-completion (PC-chunk-after basestr skip) (mapcar 'list poss))))
(setq prefix (try-completion (PC-chunk-after basestr skip)
poss)))
(let ((first t) i)
;; Retain capitalization of user input even if
;; completion-ignore-case is set.
@ -669,13 +670,9 @@ of `minibuffer-completion-table' and the minibuffer contents.")
(+ beg (length dirname)) end)
skip)
(mapcar
(function
(lambda (x)
(list
(and (string-match skip x)
(substring
x
(match-end 0))))))
(lambda (x)
(when (string-match skip x)
(substring x (match-end 0))))
poss)))
(or (> i 0) (> (length prefix) 0))
(or (not (eq mode 'word))
@ -811,6 +808,12 @@ or properties are considered."
(defun PC-expand-many-files (name)
(with-current-buffer (generate-new-buffer " *Glob Output*")
(erase-buffer)
(when (and (file-name-absolute-p name)
(not (file-directory-p default-directory)))
;; If the current working directory doesn't exist `shell-command'
;; signals an error. So if the file names we're looking for don't
;; depend on the working directory, switch to a valid directory first.
(setq default-directory "/"))
(shell-command (concat "echo " name) t)
(goto-char (point-min))
;; CSH-style shells were known to output "No match", whereas

View file

@ -4435,9 +4435,8 @@ The format is suitable for use with `easy-menu-define'."
;; Actually, this misfeature of dense keymaps was fixed on 2001-11-26.
(let ((map (make-keymap)))
(set-keymap-parent map widget-keymap)
(define-key map [remap self-insert-command]
'custom-no-edit)
(define-key map "\^m" 'custom-no-edit)
(define-key map [remap self-insert-command] 'custom-no-edit)
(define-key map "\^m" 'custom-newline)
(define-key map " " 'scroll-up)
(define-key map "\177" 'scroll-down)
(define-key map "\C-c\C-c" 'Custom-set)
@ -4450,6 +4449,11 @@ The format is suitable for use with `easy-menu-define'."
"Keymap for `custom-mode'.")
(defun custom-no-edit (pos &optional event)
"Invoke button at POS, or refuse to allow editing of Custom buffer."
(interactive "@d")
(error "You can't edit this part of the Custom buffer"))
(defun custom-newline (pos &optional event)
"Invoke button at POS, or refuse to allow editing of Custom buffer."
(interactive "@d")
(let ((button (get-char-property pos 'button)))

View file

@ -175,7 +175,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of
;; fringe.c
(overflow-newline-into-fringe fringe boolean)
;; indent.c
(indent-tabs-mode fill boolean)
(indent-tabs-mode indent boolean)
;; keyboard.c
(meta-prefix-char keyboard character)
(auto-save-interval auto-save integer)
@ -360,6 +360,7 @@ since it could result in memory overflow and make Emacs crash."
(other :tag "Unlimited" t)))
(unibyte-display-via-language-environment mule boolean)
(blink-cursor-alist cursor alist "22.1")
(overline-margin display integer "22.1")
;; xfaces.c
(scalable-fonts-allowed display boolean)
;; xfns.c
@ -371,6 +372,7 @@ since it could result in memory overflow and make Emacs crash."
;; xterm.c
(mouse-autoselect-window display boolean "21.3")
(x-use-underline-position-properties display boolean "21.3")
(x-underline-at-descent-line display boolean "22.1")
(x-stretch-cursor display boolean "21.1")))
this symbol group type standard version native-p
;; This function turns a value

View file

@ -99,7 +99,7 @@ the directory " custom-theme-directory "\n\n")
(widget-insert " ")
(widget-create 'push-button
:notify (lambda (&rest ignore)
(when (y-or-n-p "Discard current changes?")
(when (y-or-n-p "Discard current changes? ")
(kill-buffer (current-buffer))
(customize-create-theme)))
"Reset Buffer")
@ -137,7 +137,7 @@ the directory " custom-theme-directory "\n\n")
(widget-insert "\n")
(widget-create 'push-button
:notify (lambda (&rest ignore)
(when (y-or-n-p "Discard current changes?")
(when (y-or-n-p "Discard current changes? ")
(kill-buffer (current-buffer))
(customize-create-theme)))
"Reset Buffer")
@ -290,7 +290,7 @@ Optional EVENT is the location for the menu."
(defun custom-theme-visit-theme ()
(interactive)
(when (or (null custom-theme-variables)
(if (y-or-n-p "Discard current changes?")
(if (y-or-n-p "Discard current changes? ")
(progn (customize-create-theme) t)))
(let ((theme (call-interactively 'custom-theme-merge-theme)))
(unless (eq theme 'user)

View file

@ -648,8 +648,8 @@ behavior."
(mapcar
(lambda (elt)
(ediff-make-new-meta-list-element
(concat auxdir1 elt)
(concat auxdir2 elt)
(expand-file-name (concat auxdir1 elt))
(expand-file-name (concat auxdir2 elt))
(if lis3
(progn
;; The following is done because: In merging with
@ -660,7 +660,7 @@ behavior."
;; the second case, we insert nil.
(setq elt (ediff-add-slash-if-directory auxdir3 elt))
(if (file-exists-p (concat auxdir3 elt))
(concat auxdir3 elt))))))
(expand-file-name (concat auxdir3 elt)))))))
common)))
;; return result
(cons common-part difflist)
@ -716,7 +716,7 @@ behavior."
auxdir1 nil nil
merge-autostore-dir nil)
(mapcar (lambda (elt) (ediff-make-new-meta-list-element
(concat auxdir1 elt) nil nil))
(expand-file-name (concat auxdir1 elt)) nil nil))
common))
))
@ -1338,7 +1338,10 @@ Useful commands:
;; update ediff-meta-list by direct modification
(nconc meta-list
(list (ediff-make-new-meta-list-element
otherfile1 otherfile2 otherfile3)))
(expand-file-name otherfile1)
(expand-file-name otherfile2)
(if otherfile3
(expand-file-name otherfile3)))))
)
(ediff-update-meta-buffer meta-buf 'must-redraw)
))

View file

@ -670,6 +670,7 @@ This function assumes that the events can be stored in a string."
(cond ((atom ev)
(push ev result))
((eq (car ev) 'help-echo))
((eq (car ev) 'switch-frame))
((equal ev '(menu-bar))
(push 'menu-bar result))
((equal (cadadr ev) '(menu-bar))

View file

@ -619,9 +619,12 @@ If optional second arg SEP is a string, use that as separator."
(bindat-format-vector vect "%02x" (if (stringp sep) sep ":")))
(defun bindat-ip-to-string (ip)
"Format vector IP as an ip address in dotted notation."
(format "%d.%d.%d.%d"
(aref ip 0) (aref ip 1) (aref ip 2) (aref ip 3)))
"Format vector IP as an ip address in dotted notation.
The port (if any) is omitted. IP can be a string, as well."
(if (vectorp ip)
(format-network-address ip t)
(format "%d.%d.%d.%d"
(aref ip 0) (aref ip 1) (aref ip 2) (aref ip 3))))
(provide 'bindat)

View file

@ -193,8 +193,14 @@
(defvar compilation-error-regexp-alist)
(defvar compilation-mode-font-lock-keywords)
(defgroup checkdoc nil
"Support for doc string checking in Emacs Lisp."
:prefix "checkdoc"
:group 'lisp
:version "20.3")
(defcustom checkdoc-autofix-flag 'semiautomatic
"*Non-nil means attempt auto-fixing of doc strings.
"Non-nil means attempt auto-fixing of doc strings.
If this value is the symbol `query', then the user is queried before
any change is made. If the value is `automatic', then all changes are
made without asking unless the change is very-complex. If the value
@ -208,37 +214,39 @@ The value `never' is the same as nil, never ask or change anything."
(other :tag "semiautomatic" semiautomatic)))
(defcustom checkdoc-bouncy-flag t
"*Non-nil means to \"bounce\" to auto-fix locations.
"Non-nil means to \"bounce\" to auto-fix locations.
Setting this to nil will silently make fixes that require no user
interaction. See `checkdoc-autofix-flag' for auto-fixing details."
:group 'checkdoc
:type 'boolean)
(defcustom checkdoc-force-docstrings-flag t
"*Non-nil means that all checkable definitions should have documentation.
"Non-nil means that all checkable definitions should have documentation.
Style guide dictates that interactive functions MUST have documentation,
and that it's good but not required practice to make non user visible items
have doc strings."
:group 'checkdoc
:type 'boolean)
(put 'checkdoc-force-docstrings-flag 'safe-local-variable 'booleanp)
(defcustom checkdoc-force-history-flag t
"*Non-nil means that files should have a History section or ChangeLog file.
"Non-nil means that files should have a History section or ChangeLog file.
This helps document the evolution of, and recent changes to, the package."
:group 'checkdoc
:type 'boolean)
(defcustom checkdoc-permit-comma-termination-flag nil
"*Non-nil means the first line of a docstring may end with a comma.
"Non-nil means the first line of a docstring may end with a comma.
Ordinarily, a full sentence is required. This may be misleading when
there is a substantial caveat to the one-line description -- the comma
should be used when the first part could stand alone as a sentence, but
it indicates that a modifying clause follows."
:group 'checkdoc
:type 'boolean)
(put 'checkdoc-permit-comma-termination-flag 'safe-local-variable 'booleanp)
(defcustom checkdoc-spellcheck-documentation-flag nil
"*Non-nil means run Ispell on text based on value.
"Non-nil means run Ispell on text based on value.
This is automatically set to nil if Ispell does not exist on your
system. Possible values are:
@ -259,14 +267,14 @@ system. Possible values are:
"List of words that are correct when spell-checking Lisp documentation.")
(defcustom checkdoc-max-keyref-before-warn 10
"*The number of \\ [command-to-keystroke] tokens allowed in a doc string.
"The number of \\ [command-to-keystroke] tokens allowed in a doc string.
Any more than this and a warning is generated suggesting that the construct
\\ {keymap} be used instead."
:group 'checkdoc
:type 'integer)
(defcustom checkdoc-arguments-in-order-flag t
"*Non-nil means warn if arguments appear out of order.
"Non-nil means warn if arguments appear out of order.
Setting this to nil will mean only checking that all the arguments
appear in the proper form in the documentation, not that they are in
the same order as they appear in the argument list. No mention is
@ -298,7 +306,7 @@ problem discovered. This is useful for adding additional checks.")
A search leaves the cursor in front of the parameter list.")
(defcustom checkdoc-verb-check-experimental-flag t
"*Non-nil means to attempt to check the voice of the doc string.
"Non-nil means to attempt to check the voice of the doc string.
This check keys off some words which are commonly misused. See the
variable `checkdoc-common-verbs-wrong-voice' if you wish to add your own."
:group 'checkdoc
@ -2633,12 +2641,6 @@ function called to create the messages."
(setq checkdoc-pending-errors nil)
nil)))
(defgroup checkdoc nil
"Support for doc string checking in Emacs Lisp."
:prefix "checkdoc"
:group 'lisp
:version "20.3")
(custom-add-option 'emacs-lisp-mode-hook
(lambda () (checkdoc-minor-mode 1)))
@ -2650,5 +2652,5 @@ function called to create the messages."
(provide 'checkdoc)
;;; arch-tag: c49a7ec8-3bb7-46f2-bfbc-d5f26e033b26
;; arch-tag: c49a7ec8-3bb7-46f2-bfbc-d5f26e033b26
;;; checkdoc.el ends here

View file

@ -2556,6 +2556,7 @@ MSG is printed after `::::} '."
(edebug-outside-buffer (current-buffer))
(edebug-outside-point (point))
(edebug-outside-mark (edebug-mark))
(edebug-outside-unread-command-events unread-command-events)
edebug-outside-windows ; window or screen configuration
edebug-buffer-points
@ -2574,6 +2575,7 @@ MSG is printed after `::::} '."
(overlay-arrow-string overlay-arrow-string)
(cursor-in-echo-area nil)
(default-cursor-in-non-selected-windows t)
(unread-command-events unread-command-events)
;; any others??
)
(if (not (buffer-name edebug-buffer))
@ -2662,6 +2664,7 @@ MSG is printed after `::::} '."
(t (message "")))
(setq unread-command-events nil)
(if (eq 'after edebug-arg-mode)
(progn
;; Display result of previous evaluation.
@ -2681,8 +2684,7 @@ MSG is printed after `::::} '."
((eq edebug-execution-mode 'trace)
(edebug-sit-for edebug-sit-for-seconds)) ; Force update and pause.
((eq edebug-execution-mode 'Trace-fast)
(edebug-sit-for 0)) ; Force update and continue.
)
(edebug-sit-for 0))) ; Force update and continue.
(unwind-protect
(if (or edebug-stop
@ -2778,6 +2780,7 @@ MSG is printed after `::::} '."
(with-timeout-unsuspend edebug-with-timeout-suspend)
;; Reset global variables to outside values in case they were changed.
(setq
unread-command-events edebug-outside-unread-command-events
overlay-arrow-position edebug-outside-o-a-p
overlay-arrow-string edebug-outside-o-a-s
cursor-in-echo-area edebug-outside-c-i-e-a
@ -2868,7 +2871,6 @@ MSG is printed after `::::} '."
(edebug-outside-last-input-event last-input-event)
(edebug-outside-last-command-event last-command-event)
(edebug-outside-unread-command-events unread-command-events)
(edebug-outside-last-event-frame last-event-frame)
(edebug-outside-last-nonmenu-event last-nonmenu-event)
(edebug-outside-track-mouse track-mouse)
@ -2890,7 +2892,6 @@ MSG is printed after `::::} '."
;; More for Emacs 19
(last-input-event nil)
(last-command-event nil)
(unread-command-events nil)
(last-event-frame nil)
(last-nonmenu-event nil)
(track-mouse nil)
@ -2950,7 +2951,6 @@ MSG is printed after `::::} '."
last-command edebug-outside-last-command
this-command edebug-outside-this-command
unread-command-char edebug-outside-unread-command-char
unread-command-events edebug-outside-unread-command-events
current-prefix-arg edebug-outside-current-prefix-arg
last-input-char edebug-outside-last-input-char
last-input-event edebug-outside-last-input-event

View file

@ -60,14 +60,22 @@ fire repeatedly that many seconds apart."
(defun timer-set-idle-time (timer secs &optional repeat)
"Set the trigger idle time of TIMER to SECS.
SECS may be an integer, floating point number, or the internal
time format (HIGH LOW USECS) returned by, e.g., `current-idle-time'.
If optional third argument REPEAT is non-nil, make the timer
fire each time Emacs is idle for that many seconds."
(or (timerp timer)
(error "Invalid timer"))
(aset timer 1 0)
(aset timer 2 0)
(aset timer 3 0)
(timer-inc-time timer secs)
(if (consp secs)
(progn (aset timer 1 (car secs))
(aset timer 2 (if (consp (cdr secs)) (car (cdr secs)) (cdr secs)))
(aset timer 3 (or (and (consp (cdr secs)) (consp (cdr (cdr secs)))
(nth 2 secs))
0)))
(aset timer 1 0)
(aset timer 2 0)
(aset timer 3 0)
(timer-inc-time timer secs))
(aset timer 4 repeat)
timer)
@ -104,7 +112,7 @@ of SECS seconds since the epoch. SECS may be a fraction."
(defun timer-relative-time (time secs &optional usecs)
"Advance TIME by SECS seconds and optionally USECS microseconds.
SECS may be a fraction."
SECS may be either an integer or a floating point number."
(let ((high (car time))
(low (if (consp (cdr time)) (nth 1 time) (cdr time)))
(micro (if (numberp (car-safe (cdr-safe (cdr time))))
@ -412,7 +420,10 @@ This function is for compatibility; see also `run-with-timer'."
(defun run-with-idle-timer (secs repeat function &rest args)
"Perform an action the next time Emacs is idle for SECS seconds.
The action is to call FUNCTION with arguments ARGS.
SECS may be an integer or a floating point number.
SECS may be an integer, a floating point number, or the internal
time format (HIGH LOW USECS) returned by, e.g., `current-idle-time'.
If Emacs is currently idle, and has been idle for N seconds (N < SECS),
then it will call FUNCTION in SECS - N seconds from now.
If REPEAT is non-nil, do the action each time Emacs has been idle for
exactly SECS seconds (that is, only once for each time Emacs becomes idle).
@ -425,7 +436,7 @@ This function returns a timer object which you can use in `cancel-timer'."
(let ((timer (timer-create)))
(timer-set-function timer function args)
(timer-set-idle-time timer secs repeat)
(timer-activate-when-idle timer)
(timer-activate-when-idle timer t)
timer))
(defun with-timeout-handler (tag)

View file

@ -66,7 +66,7 @@
;; regexp: regular expression that matches the end of a response from
;; the process
(defun tq-queue-head-regexp (tq) (car (cdr (car (tq-queue tq)))))
;; closure: additional data to pass to function
;; closure: additional data to pass to the function
(defun tq-queue-head-closure (tq) (car (cdr (cdr (car (tq-queue tq))))))
;; fn: function to call upon receiving a complete response from the
;; process
@ -119,7 +119,7 @@ If DELAY-QUESTION is non-nil, delay sending this question until
the process has finished replying to any previous questions.
This produces more reliable results with some processes."
(let ((sendp (or (not delay-question)
(not (tq-queue-head-question tq)))))
(not (tq-queue tq)))))
(tq-queue-add tq (unless sendp question) regexp closure fn)
(when sendp
(process-send-string (tq-process tq) question))))
@ -131,35 +131,39 @@ This produces more reliable results with some processes."
(defun tq-filter (tq string)
"Append STRING to the TQ's buffer; then process the new data."
(with-current-buffer (tq-buffer tq)
(goto-char (point-max))
(insert string)
(tq-process-buffer tq)))
(let ((buffer (tq-buffer tq)))
(when (buffer-live-p buffer)
(with-current-buffer buffer
(goto-char (point-max))
(insert string)
(tq-process-buffer tq)))))
(defun tq-process-buffer (tq)
"Check TQ's buffer for the regexp at the head of the queue."
(set-buffer (tq-buffer tq))
(if (= 0 (buffer-size)) ()
(if (tq-queue-empty tq)
(let ((buf (generate-new-buffer "*spurious*")))
(copy-to-buffer buf (point-min) (point-max))
(delete-region (point-min) (point))
(pop-to-buffer buf nil)
(error "Spurious communication from process %s, see buffer %s"
(process-name (tq-process tq))
(buffer-name buf)))
(goto-char (point-min))
(if (re-search-forward (tq-queue-head-regexp tq) nil t)
(let ((answer (buffer-substring (point-min) (point))))
(delete-region (point-min) (point))
(unwind-protect
(condition-case nil
(funcall (tq-queue-head-fn tq)
(tq-queue-head-closure tq)
answer)
(error nil))
(tq-queue-pop tq))
(tq-process-buffer tq))))))
(let ((buffer (tq-buffer tq)))
(when (buffer-live-p buffer)
(set-buffer buffer)
(if (= 0 (buffer-size)) ()
(if (tq-queue-empty tq)
(let ((buf (generate-new-buffer "*spurious*")))
(copy-to-buffer buf (point-min) (point-max))
(delete-region (point-min) (point))
(pop-to-buffer buf nil)
(error "Spurious communication from process %s, see buffer %s"
(process-name (tq-process tq))
(buffer-name buf)))
(goto-char (point-min))
(if (re-search-forward (tq-queue-head-regexp tq) nil t)
(let ((answer (buffer-substring (point-min) (point))))
(delete-region (point-min) (point))
(unwind-protect
(condition-case nil
(funcall (tq-queue-head-fn tq)
(tq-queue-head-closure tq)
answer)
(error nil))
(tq-queue-pop tq))
(tq-process-buffer tq))))))))
(provide 'tq)

View file

@ -46,6 +46,8 @@
(defvar mark-even-if-inactive)
(defvar init-message)
(defvar initial)
(defvar undo-beg-posn)
(defvar undo-end-posn)
;; loading happens only in non-interactive compilation
;; in order to spare non-viperized emacs from being viperized
@ -196,7 +198,7 @@
(viper-save-cursor-color 'before-insert-mode))
;; set insert mode cursor color
(viper-change-cursor-color viper-insert-state-cursor-color)))
(if (eq viper-current-state 'emacs-state)
(if (and viper-emacs-state-cursor-color (eq viper-current-state 'emacs-state))
(let ((has-saved-cursor-color-in-emacs-mode
(stringp (viper-get-saved-cursor-color-in-emacs-mode))))
(or has-saved-cursor-color-in-emacs-mode
@ -722,12 +724,13 @@
(viper-set-replace-overlay (point-min) (point-min)))
(viper-hide-replace-overlay)
(let ((has-saved-cursor-color-in-emacs-mode
(stringp (viper-get-saved-cursor-color-in-emacs-mode))))
(or has-saved-cursor-color-in-emacs-mode
(string= (viper-get-cursor-color) viper-emacs-state-cursor-color)
(viper-save-cursor-color 'before-emacs-mode))
(viper-change-cursor-color viper-emacs-state-cursor-color))
(if viper-emacs-state-cursor-color
(let ((has-saved-cursor-color-in-emacs-mode
(stringp (viper-get-saved-cursor-color-in-emacs-mode))))
(or has-saved-cursor-color-in-emacs-mode
(string= (viper-get-cursor-color) viper-emacs-state-cursor-color)
(viper-save-cursor-color 'before-emacs-mode))
(viper-change-cursor-color viper-emacs-state-cursor-color)))
(viper-change-state 'emacs-state)
@ -1030,10 +1033,13 @@ as a Meta key and any number of multiple escapes is allowed."
(inhibit-quit t))
(if (viper-ESC-event-p event)
(progn
;; Emacs 22.50.8 introduced a bug, which makes even a single ESC into
;; a fast keyseq. To guard against this, we added a check if there
;; are other events as well
(if (and (viper-fast-keysequence-p) unread-command-events)
;; Some versions of Emacs (eg., 22.50.8 have a bug, which makes even
;; a single ESC into ;; a fast keyseq. To guard against this, we
;; added a check if there are other events as well. Keep the next
;; line for the next time the bug reappears, so that will remember to
;; report it.
;;(if (and (viper-fast-keysequence-p) unread-command-events)
(if (viper-fast-keysequence-p) ;; for Emacsen without the above bug
(progn
(let (minor-mode-map-alist emulation-mode-map-alists)
(viper-set-unread-command-events event)
@ -1744,12 +1750,14 @@ invokes the command before that, etc."
;; Hook used in viper-undo
(defun viper-after-change-undo-hook (beg end len)
(setq undo-beg-posn beg
undo-end-posn (or end beg))
;; some other hooks may be changing various text properties in
;; the buffer in response to 'undo'; so remove this hook to avoid
;; its repeated invocation
(remove-hook 'viper-undo-functions 'viper-after-change-undo-hook 'local))
(if undo-in-progress
(setq undo-beg-posn beg
undo-end-posn (or end beg))
;; some other hooks may be changing various text properties in
;; the buffer in response to 'undo'; so remove this hook to avoid
;; its repeated invocation
(remove-hook 'viper-undo-functions 'viper-after-change-undo-hook 'local)
))
(defun viper-undo ()
"Undo previous change."
@ -1764,25 +1772,29 @@ invokes the command before that, etc."
(undo-start)
(undo-more 2)
(setq undo-beg-posn (or undo-beg-posn before-undo-pt)
undo-end-posn (or undo-end-posn undo-beg-posn))
;;(setq undo-beg-posn (or undo-beg-posn (point))
;; undo-end-posn (or undo-end-posn (point)))
;;(setq undo-beg-posn (or undo-beg-posn before-undo-pt)
;; undo-end-posn (or undo-end-posn undo-beg-posn))
(goto-char undo-beg-posn)
(sit-for 0)
(if (and viper-keep-point-on-undo
(pos-visible-in-window-p before-undo-pt))
(if (and undo-beg-posn undo-end-posn)
(progn
(push-mark (point-marker) t)
(viper-sit-for-short 300)
(goto-char undo-end-posn)
(viper-sit-for-short 300)
(if (and (> (viper-chars-in-region undo-beg-posn before-undo-pt) 1)
(> (viper-chars-in-region undo-end-posn before-undo-pt) 1))
(goto-char before-undo-pt)
(goto-char undo-beg-posn)))
(push-mark before-undo-pt t))
(goto-char undo-beg-posn)
(sit-for 0)
(if (and viper-keep-point-on-undo
(pos-visible-in-window-p before-undo-pt))
(progn
(push-mark (point-marker) t)
(viper-sit-for-short 300)
(goto-char undo-end-posn)
(viper-sit-for-short 300)
(if (pos-visible-in-window-p undo-beg-posn)
(goto-char before-undo-pt)
(goto-char undo-beg-posn)))
(push-mark before-undo-pt t))
))
(if (and (eolp) (not (bolp))) (backward-char 1))
;;(if (not modified) (set-buffer-modified-p t))
)
(setq this-command 'viper-undo))
@ -3952,7 +3964,8 @@ Null string will repeat previous search."
(let ((val (viper-p-val arg))
(com (viper-getcom arg))
debug-on-error)
(if (null viper-s-string) (error viper-NoPrevSearch))
(if (or (null viper-s-string) (string= viper-s-string ""))
(error viper-NoPrevSearch))
(viper-search viper-s-string viper-s-forward arg)
(if com
(progn

View file

@ -208,12 +208,12 @@
;; If this is a one-letter magic command, splice in args.
(defun ex-splice-args-in-1-letr-cmd (key list)
(let ((onelet (ex-cmd-is-one-letter (assoc (substring key 0 1) list))))
(if onelet
(let ((oneletter (ex-cmd-is-one-letter (assoc (substring key 0 1) list))))
(if oneletter
(list key
(append (cadr onelet)
(append (cadr oneletter)
(if (< 1 (length key)) (list (substring key 1))))
(caddr onelet)))
(car (cdr (cdr oneletter))) ))
))

View file

@ -434,7 +434,10 @@ delete the text being replaced, as in standard Vi."
(if (fboundp 'make-variable-frame-local)
(make-variable-frame-local 'viper-insert-state-cursor-color))
(defcustom viper-emacs-state-cursor-color "Magenta"
;; viper-emacs-state-cursor-color doesn't work well. Causes cursor colors to be
;; confused in some cases. So, this var is nulled for now.
;; (defcustom viper-emacs-state-cursor-color "Magenta"
(defcustom viper-emacs-state-cursor-color nil
"Cursor color when Viper is in emacs state."
:type 'string
:group 'viper)

View file

@ -137,10 +137,10 @@
(x-display-color-p) ; emacs
))
(defsubst viper-get-cursor-color ()
(defun viper-get-cursor-color (&optional frame)
(viper-cond-compile-for-xemacs-or-emacs
(color-instance-name
(frame-property (selected-frame) 'cursor-color)) ; xemacs
(frame-property (or frame (selected-frame)) 'cursor-color)) ; xemacs
(cdr (assoc 'cursor-color (frame-parameters))) ; emacs
))
@ -152,18 +152,31 @@
;; cursor colors
(defun viper-change-cursor-color (new-color)
(defun viper-change-cursor-color (new-color &optional frame)
(if (and (viper-window-display-p) (viper-color-display-p)
(stringp new-color) (viper-color-defined-p new-color)
(not (string= new-color (viper-get-cursor-color))))
(viper-cond-compile-for-xemacs-or-emacs
(set-frame-property
(selected-frame) 'cursor-color (make-color-instance new-color))
(or frame (selected-frame))
'cursor-color (make-color-instance new-color))
(modify-frame-parameters
(selected-frame) (list (cons 'cursor-color new-color)))
(or frame (selected-frame))
(list (cons 'cursor-color new-color)))
)
))
(defun viper-set-cursor-color-according-to-state (&optional frame)
(cond ((eq viper-current-state 'replace-state)
(viper-change-cursor-color viper-replace-state-cursor-color frame))
((and (eq viper-current-state 'emacs-state)
viper-emacs-state-cursor-color)
(viper-change-cursor-color viper-emacs-state-cursor-color frame))
((eq viper-current-state 'insert-state)
(viper-change-cursor-color viper-insert-state-cursor-color frame))
(t
(viper-change-cursor-color viper-vi-state-cursor-color frame))))
;; By default, saves current frame cursor color in the
;; viper-saved-cursor-color-in-replace-mode property of viper-replace-overlay
(defun viper-save-cursor-color (before-which-mode)
@ -191,7 +204,7 @@
(if viper-emacs-p 'frame-parameter 'frame-property)
(selected-frame)
'viper-saved-cursor-color-in-replace-mode)
(if (eq viper-current-state 'emacs-mode)
(if (and (eq viper-current-state 'emacs-mode) viper-emacs-state-cursor-color)
viper-emacs-state-cursor-color
viper-vi-state-cursor-color)))
@ -201,7 +214,7 @@
(if viper-emacs-p 'frame-parameter 'frame-property)
(selected-frame)
'viper-saved-cursor-color-in-insert-mode)
(if (eq viper-current-state 'emacs-mode)
(if (and (eq viper-current-state 'emacs-mode) viper-emacs-state-cursor-color)
viper-emacs-state-cursor-color
viper-vi-state-cursor-color)))

View file

@ -534,10 +534,6 @@ If Viper is enabled, turn it off. Otherwise, turn it on."
(defun viper-mode ()
"Turn on Viper emulation of Vi in Emacs. See Info node `(viper)Viper'."
(interactive)
(if (null viper-vi-state-cursor-color)
(modify-frame-parameters
(selected-frame)
(list (cons 'viper-vi-state-cursor-color (viper-get-cursor-color)))))
(if (not noninteractive)
(progn
;; if the user requested viper-mode explicitly
@ -618,7 +614,8 @@ This startup message appears whenever you load Viper, unless you type `y' now."
(or (memq major-mode viper-emacs-state-mode-list) ; don't switch to Vi
(memq major-mode viper-insert-state-mode-list) ; don't switch
(viper-change-state-to-vi)))))
(viper-change-state-to-vi))
)))
;; Apply a little heuristic to invoke vi state on major-modes
@ -862,8 +859,11 @@ It also can't undo some Viper settings."
;; info about the display and windows until emacs initialization is complete
;; So do it via the window-setup-hook
(add-hook 'window-setup-hook
'(lambda ()
(setq viper-vi-state-cursor-color (viper-get-cursor-color))))
'(lambda ()
(modify-frame-parameters
(selected-frame)
(list (cons 'viper-vi-state-cursor-color
(viper-get-cursor-color))))))
;; Tell vc-diff to put *vc* in Vi mode
(if (featurep 'vc)
@ -903,7 +903,6 @@ It also can't undo some Viper settings."
(defadvice set-cursor-color (after viper-set-cursor-color-ad activate)
"Change cursor color in VI state."
;;(setq viper-vi-state-cursor-color (ad-get-arg 0))
(modify-frame-parameters
(selected-frame)
(list (cons 'viper-vi-state-cursor-color (ad-get-arg 0))))
@ -1008,8 +1007,8 @@ It also can't undo some Viper settings."
;; these are primarily advices and Vi-ish variable settings
(defun viper-non-hook-settings ()
;; Viper changes the default mode-line-buffer-identification
(setq-default mode-line-buffer-identification '(" %b"))
;;;; Viper changes the default mode-line-buffer-identification
;;(setq-default mode-line-buffer-identification '(" %b"))
;; setup emacs-supported vi-style feel
(setq next-line-add-newlines nil

View file

@ -1,3 +1,78 @@
2006-08-13 Romain Francoise <romain@orebokech.com>
* erc-match.el (erc-log-matches-make-buffer): End `y-or-n-p'
prompt with a space.
2006-08-07 Michael Olson <mwolson@gnu.org>
* erc-backend.el (erc-process-sentinel-1): Use erc-display-message
in several places instead of inserting text.
(erc-process-sentinel): Move to the input-marker before removing
the prompt.
* erc.el (erc-port): Fix customization options.
(erc-display-message): Handle null type explicitly. Previously,
this was relying on a chance side-effect. Cosmetic indentation
tweak.
(english): Add 'finished and 'terminated entries to the catalog.
Add initial and terminal newlines to 'disconnected and
'disconnected-noreconnect entries. Avoid long lines.
2006-08-06 Michael Olson <mwolson@gnu.org>
* erc.el (erc-arrange-session-in-multiple-windows): Fix bug with
multi-tty Emacs.
(erc-select-startup-file): Fix bug introduced by recent change.
2006-08-05 Michael Olson <mwolson@gnu.org>
* erc-log.el (erc-log-standardize-name): New function that returns
a filename that is safe for use for a log file.
(erc-current-logfile): Use it.
* erc.el (erc-startup-file-list): Search in ~/.emacs.d first,
since that is a fairly standard directory.
(erc-select-startup-file): Re-write to use
convert-standard-filename, which will ensure that MS-DOS systems
look for the _ercrc.el file.
2006-08-02 Michael Olson <mwolson@gnu.org>
* erc.el (erc-version-string): Release ERC 5.1.4.
* Makefile, NEWS, erc.texi: Update for the 5.1.4 release.
* erc.el (erc-active-buffer): Fix bug that caused messages to go
to the wrong buffer. Thanks to offby1 for the report.
* erc-backend.el (erc-coding-system-for-target): Handle case where
target is nil. Thanks to Kai Fan for the patch.
2006-07-29 Michael Olson <mwolson@gnu.org>
* erc-log.el (erc-log-setup-logging): Don't offer to save the
buffer. It will be saved automatically killed. Thanks to Johan
Bockgård and Tassilo Horn for pointing this out.
2006-07-27 Johan Bockgård <bojohan@users.sourceforge.net>
* erc.el (define-erc-module): Make find-function and find-variable
find the names constructed by `define-erc-module' in Emacs 22.
2006-07-14 Michael Olson <mwolson@gnu.org>
* erc-log.el (log): Make sure that we enable logging on
already-opened buffers as well, in case the user toggles this
module after loading ERC. Also be sure to remove logging ability
from all ERC buffers when the module is disabled.
(erc-log-setup-logging): Set buffer-file-name to nil rather than
the empty string. This should fix some errors that occur when
quitting Emacs without first killing all ERC buffers.
(erc-log-disable-logging): New function that removes the logging
ability from the current buffer.
* erc-spelling.el (spelling): Use dolist and buffer-live-p.
2006-07-12 Michael Olson <mwolson@gnu.org>
* erc-match.el (erc-log-matches): Bind inhibit-read-only rather

View file

@ -493,11 +493,7 @@ action."
(if erc-server-quitting
;; normal quit
(progn
(let ((string "\n\n*** ERC finished ***\n")
(inhibit-read-only t))
(erc-put-text-property 0 (length string)
'face 'erc-error-face string)
(insert string))
(erc-display-message nil 'error (current-buffer) 'finished)
(when erc-kill-server-buffer-on-quit
(set-buffer-modified-p nil)
(kill-buffer (current-buffer))))
@ -519,12 +515,8 @@ action."
(erc erc-session-server erc-session-port erc-server-current-nick
erc-session-user-full-name t erc-session-password)
;; terminate, do not reconnect
(let ((string (concat "\n\n*** ERC terminated: " event
"\n"))
(inhibit-read-only t))
(erc-put-text-property 0 (length string)
'face 'erc-error-face string)
(insert string)))))
(erc-display-message nil 'error (current-buffer)
'terminated ?e event))))
(defun erc-process-sentinel (cproc event)
"Sentinel function for ERC process."
@ -545,6 +537,7 @@ action."
(run-hook-with-args 'erc-disconnected-hook
(erc-current-nick) (system-name) "")
;; Remove the prompt
(goto-char (or (marker-position erc-input-marker) (point-max)))
(forward-line 0)
(erc-remove-text-properties-region (point) (point-max))
(delete-region (point) (point-max))
@ -563,11 +556,12 @@ action."
"Return the coding system or cons cell appropriate for TARGET.
This is determined via `erc-encoding-coding-alist' or
`erc-server-coding-system'."
(or (let ((case-fold-search t))
(catch 'match
(dolist (pat erc-encoding-coding-alist)
(when (string-match (car pat) target)
(throw 'match (cdr pat))))))
(or (when target
(let ((case-fold-search t))
(catch 'match
(dolist (pat erc-encoding-coding-alist)
(when (string-match (car pat) target)
(throw 'match (cdr pat)))))))
(and (functionp erc-server-coding-system)
(funcall erc-server-coding-system))
erc-server-coding-system))

View file

@ -71,8 +71,6 @@
;; markers.
;;; TODO:
;; * Erc needs a generalised make-safe-file-name function, so that
;; generated file names don't contain any invalid file characters.
;;
;; * Really, we need to lock the logfiles somehow, so that if a user
;; is running multiple emacsen and/or on the same channel as more
@ -218,7 +216,10 @@ also be a predicate function. To only log when you are not set away, use:
(add-hook 'erc-quit-hook 'erc-conditional-save-queries)
(add-hook 'erc-part-hook 'erc-conditional-save-buffer)
;; append, so that 'erc-initialize-log-marker runs first
(add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append))
(add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
(dolist (buffer (erc-buffer-list))
(when (buffer-live-p buffer)
(with-current-buffer buffer (erc-log-setup-logging)))))
;; disable
((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
@ -226,7 +227,10 @@ also be a predicate function. To only log when you are not set away, use:
(remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
(remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
(remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
(remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)))
(remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
(dolist (buffer (erc-buffer-list))
(when (buffer-live-p buffer)
(with-current-buffer buffer (erc-log-disable-logging))))))
(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
@ -236,8 +240,7 @@ also be a predicate function. To only log when you are not set away, use:
This function is destined to be run from `erc-connect-pre-hook'."
(when (erc-logging-enabled)
(auto-save-mode -1)
(setq buffer-offer-save t
buffer-file-name "")
(setq buffer-file-name nil)
(set (make-local-variable 'write-file-functions)
'(erc-save-buffer-in-logs))
(when erc-log-insert-log-on-open
@ -245,6 +248,12 @@ This function is destined to be run from `erc-connect-pre-hook'."
(move-marker erc-last-saved-position
(1- (point-max)))))))
(defun erc-log-disable-logging ()
"Disable logging in the current buffer."
(when (erc-logging-enabled)
(setq buffer-offer-save nil
erc-enable-logging nil)))
(defun erc-log-all-but-server-buffers (buffer)
"Returns t if logging should be enabled in BUFFER.
Returns nil iff `erc-server-buffer-p' returns t."
@ -282,17 +291,27 @@ is writeable (it will be created as necessary) and
(funcall erc-enable-logging (or buffer (current-buffer)))
erc-enable-logging)))
(defun erc-log-standardize-name (filename)
"Make FILENAME safe to use as the name of an ERC log.
This will not work with full paths, only names.
Any unsafe characters in the name are replaced with \"!\". The
filename is downcased."
(downcase (erc-replace-regexp-in-string
"[/\\]" "!" (convert-standard-filename filename))))
(defun erc-current-logfile (&optional buffer)
"Return the logfile to use for BUFFER.
If BUFFER is nil, the value of `current-buffer' is used.
This is determined by `erc-generate-log-file-name-function'.
The result is converted to lowercase, as IRC is case-insensitive"
(expand-file-name
(downcase (funcall erc-generate-log-file-name-function
(or buffer (current-buffer))
(or (erc-default-target) (buffer-name buffer))
(erc-current-nick)
erc-session-server erc-session-port))
(erc-log-standardize-name
(funcall erc-generate-log-file-name-function
(or buffer (current-buffer))
(or (erc-default-target) (buffer-name buffer))
(erc-current-nick)
erc-session-server erc-session-port))
erc-log-channels-directory))
(defun erc-generate-log-file-name-with-date (buffer &rest ignore)

View file

@ -566,7 +566,7 @@ deactivate/activate match logging in the latter. See
(unless buffer-already
(insert " == Type \"q\" to dismiss messages ==\n")
(erc-view-mode-enter nil (lambda (buffer)
(when (y-or-n-p "Discard messages?")
(when (y-or-n-p "Discard messages? ")
(kill-buffer buffer)))))
buffer)))

View file

@ -40,15 +40,13 @@
;; Use erc-connect-pre-hook instead of erc-mode-hook as pre-hook is
;; called AFTER the server buffer is initialized.
((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
(mapc (lambda (buffer)
(when buffer
(with-current-buffer buffer (erc-spelling-init))))
(erc-buffer-list)))
(dolist (buffer (erc-buffer-list))
(when (buffer-live-p buffer)
(with-current-buffer buffer (erc-spelling-init)))))
((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
(mapc (lambda (buffer)
(when buffer
(with-current-buffer buffer (flyspell-mode 0))))
(erc-buffer-list))))
(dolist (buffer (erc-buffer-list))
(when (buffer-live-p buffer)
(with-current-buffer buffer (flyspell-mode 0))))))
(defcustom erc-spelling-dictionaries nil
"An alist mapping buffer names to dictionaries.

View file

@ -67,7 +67,7 @@
;;; Code:
(defconst erc-version-string "Version 5.1.3"
(defconst erc-version-string "Version 5.1.4"
"ERC version. This is used by function `erc-version'.")
(eval-when-compile (require 'cl))
@ -157,8 +157,8 @@ parameters and authentication."
This can be either a string or a number."
:group 'erc
:type '(choice (const :tag "None" nil)
(const :tag "Port number" number)
(const :tag "Port string" string)))
(integer :tag "Port number")
(string :tag "Port string")))
(defcustom erc-nick nil
"Nickname to use if one is not provided.
@ -822,7 +822,8 @@ See `erc-server-flood-margin' for other flood-related parameters.")
;; Script parameters
(defcustom erc-startup-file-list
'("~/.ercrc.el" "~/.ercrc" ".ercrc.el" ".ercrc")
'("~/.emacs.d/.ercrc.el" "~/.emacs.d/.ercrc"
"~/.ercrc.el" "~/.ercrc" ".ercrc.el" ".ercrc")
"List of files to try for a startup script.
The first existent and readable one will get executed.
@ -1243,7 +1244,11 @@ With arg, turn ERC %S mode on if and only if arg is positive.
(format "erc-%s-mode"
(downcase (symbol-name alias)))))
(quote
,mode))))))
,mode)))
;; For find-function and find-variable.
(put ',mode 'definition-name ',name)
(put ',enable 'definition-name ',name)
(put ',disable 'definition-name ',name))))
(put 'define-erc-module 'doc-string-elt 3)
@ -1388,8 +1393,8 @@ server buffer")
Defaults to the server buffer."
(with-current-buffer (erc-server-buffer)
(if (buffer-live-p erc-active-buffer)
erc-active-buffer)
(setq erc-active-buffer (current-buffer))))
erc-active-buffer
(setq erc-active-buffer (current-buffer)))))
(defun erc-set-active-buffer (buffer)
"Set the value of `erc-active-buffer' to BUFFER."
@ -2358,6 +2363,8 @@ See also `erc-format-message' and `erc-display-line'."
msg)))
(setq string
(cond
((null type)
string)
((listp type)
(mapc (lambda (type)
(setq string
@ -2370,7 +2377,7 @@ See also `erc-format-message' and `erc-display-line'."
(if (not (erc-response-p parsed))
(erc-display-line string buffer)
(unless (member (erc-response.command parsed) erc-hide-list)
(erc-put-text-property 0 (length string) 'erc-parsed parsed string)
(erc-put-text-property 0 (length string) 'erc-parsed parsed string)
(erc-put-text-property 0 (length string) 'rear-sticky t string)
(erc-display-line string buffer)))))
@ -5237,13 +5244,11 @@ If FILE is found, return the path to it."
(defun erc-select-startup-file ()
"Select an ERC startup file.
See also `erc-startup-file-list'."
(let ((l erc-startup-file-list)
(f nil))
(while (and (not f) l)
(if (file-readable-p (car l))
(setq f (car l)))
(setq l (cdr l)))
f))
(catch 'found
(dolist (f erc-startup-file-list)
(setq f (convert-standard-filename f))
(when (file-readable-p f)
(throw 'found f)))))
(defun erc-find-script-file (file)
"Search for FILE in `default-directory', and any in `erc-script-path'."
@ -5890,7 +5895,8 @@ All windows are opened in the current frame."
(setq bufs (cdr bufs))
(while bufs
(split-window)
(switch-to-buffer-other-window (car bufs))
(other-window 1)
(switch-to-buffer (car bufs))
(setq bufs (cdr bufs))
(balance-windows)))))
@ -5942,12 +5948,17 @@ All windows are opened in the current frame."
(ctcp-request-to . "==> CTCP request from %n (%u@%h) to %t: %r")
(ctcp-too-many . "Too many CTCP queries in single message. Ignoring")
(flood-ctcp-off . "FLOOD PROTECTION: Automatic CTCP responses turned off.")
(flood-strict-mode . "FLOOD PROTECTION: Switched to Strict Flood Control mode.")
(disconnected . "Connection failed! Re-establishing connection...")
(disconnected-noreconnect . "Connection failed! Not re-establishing connection.")
(flood-strict-mode
. "FLOOD PROTECTION: Switched to Strict Flood Control mode.")
(disconnected . "\n\nConnection failed! Re-establishing connection...\n")
(disconnected-noreconnect
. "\n\nConnection failed! Not re-establishing connection.\n")
(finished . "\n\n*** ERC finished ***\n")
(terminated . "\n\n*** ERC terminated: %e\n")
(login . "Logging in as \'%n\'...")
(nick-in-use . "%n is in use. Choose new nickname: ")
(nick-too-long . "WARNING: Nick length (%i) exceeds max NICKLEN(%l) defined by server")
(nick-too-long
. "WARNING: Nick length (%i) exceeds max NICKLEN(%l) defined by server")
(no-default-channel . "No default channel")
(no-invitation . "You've got no invitation")
(no-target . "No target")

View file

@ -97,7 +97,7 @@ This option slows down recursive glob processing by quite a bit."
:type 'boolean
:group 'eshell-glob)
(defcustom eshell-glob-chars-list '(?\] ?\[ ?* ?? ?~ ?\( ?\) ?| ?#)
(defcustom eshell-glob-chars-list '(?\] ?\[ ?* ?? ?~ ?\( ?\) ?| ?# ?^)
"*List of additional characters used in extended globbing."
:type '(repeat character)
:group 'eshell-glob)
@ -105,6 +105,7 @@ This option slows down recursive glob processing by quite a bit."
(defcustom eshell-glob-translate-alist
'((?\] . "]")
(?\[ . "[")
(?^ . "^")
(?? . ".")
(?* . ".*")
(?~ . "~")

View file

@ -134,18 +134,24 @@ just before \"Other\" at the end."
(defcustom facemenu-listed-faces nil
"*List of faces to include in the Face menu.
Each element should be a symbol, which is the name of a face.
Each element should be a symbol, the name of a face.
The \"basic \" faces in `facemenu-keybindings' are automatically
added to the Face menu, and are not included in this list.
added to the Face menu, and need not be in this list.
You can set this list before loading facemenu.el, or add a face to it before
creating that face if you want it to be listed. If you change the
variable so as to eliminate faces that have already been added to the menu,
call `facemenu-update' to recalculate the menu contents.
This value takes effect when you load facemenu.el. If the
list includes symbols which are not defined as faces, they
are ignored; however, subsequently defining or creating
those faces adds them to the menu then. You can call
`facemenu-update' to recalculate the menu contents, such as
if you change the value of this variable,
If this variable is t, all faces will be added to the menu. This
is useful for setting temporarily if you want to add faces to the
menu when they are created."
If this variable is t, all faces that you apply to text
using the face menu commands (even by name), and all faces
that you define or create, are added to the menu. You may
find it useful to set this variable to t temporarily while
you define some faces, so that they will be added. However,
if the value is no longer t and you call `facemenu-update',
it will remove any faces not explicitly in the list."
:type '(choice (const :tag "List all faces" t)
(const :tag "None" nil)
(repeat symbol))
@ -320,19 +326,24 @@ variables."
;;;###autoload
(defun facemenu-set-face (face &optional start end)
"Add FACE to the region or next character typed.
This adds FACE to the top of the face list; any faces lower on the list that
will not show through at all will be removed.
"Apply FACE to the region or next character typed.
Interactively, reads the face name with the minibuffer.
If the region is active (normally true except in Transient
Mark mode) and nonempty, and there is no prefix argument,
this command applies FACE to the region. Otherwise, it applies FACE
to the faces to use for the next character
inserted. (Moving point or switching buffers before typing
a character to insert cancels the specification.)
If the region is active (normally true except in Transient Mark mode)
and there is no prefix argument, this command sets the region to the
requested face.
If FACE is `default', to \"apply\" it means clearing
the list of faces to be used. For any other value of FACE,
to \"apply\" it means putting FACE at the front of the list
of faces to be used, and removing any faces further
along in the list that would be completely overridden by
preceding faces (including FACE).
Otherwise, this command specifies the face for the next character
inserted. Moving point or switching buffers before
typing a character to insert cancels the specification."
This command can also add FACE to the menu of faces,
if `facemenu-listed-faces' says to do that."
(interactive (list (progn
(barf-if-buffer-read-only)
(read-face-name "Use face"))
@ -612,7 +623,12 @@ effect. See `facemenu-remove-face-function'."
(cons face
(if (listp prev)
prev
(list prev)))))))
(list prev)))
;; Specify the selected frame
;; because nil would mean to use
;; the new-frame default settings,
;; and those are usually nil.
(selected-frame)))))
(setq part-start part-end)))
(setq self-insert-face (if (eq last-command self-insert-face-command)
(cons face (if (listp self-insert-face)
@ -655,9 +671,8 @@ use the selected frame. If t, then the global, non-frame faces are used."
(nreverse active-list)))
(defun facemenu-add-new-face (face)
"Add FACE (a face) to the Face menu.
This is called whenever you create a new face."
"Add FACE (a face) to the Face menu if `facemenu-listed-faces' says so.
This is called whenever you create a new face, and at other times."
(let* (name
symbol
menu docstring

View file

@ -2075,7 +2075,7 @@ terminal type to a different value."
;; red4 is too dark, but some say blue is too loud.
;; brown seems to work ok. -- rms.
(t :foreground "brown"))
"Face for characters displayed as ^-sequences or \-sequences."
"Face for characters displayed as sequences using `^' or `\\'."
:group 'basic-faces
:version "22.1")

View file

@ -540,13 +540,21 @@ is a valid DOS file name, but c:/bar/c:/foo is not.
This function's standard definition is trivial; it just returns
the argument. However, on Windows and DOS, replace invalid
characters. On DOS, make sure to obey the 8.3 limitations. On
Windows, turn Cygwin names into native names, and also turn
slashes into backslashes if the shell requires it (see
characters. On DOS, make sure to obey the 8.3 limitations.
In the native Windows build, turn Cygwin names into native names,
and also turn slashes into backslashes if the shell requires it (see
`w32-shell-dos-semantics').
See Info node `(elisp)Standard File Names' for more details."
filename)
(if (eq system-type 'cygwin)
(let ((name (copy-sequence filename))
(start 0))
;; Replace invalid filename characters with !
(while (string-match "[?*:<>|\"\000-\037]" name start)
(aset name (match-beginning 0) ?!)
(setq start (match-end 0)))
name)
filename))
(defun read-directory-name (prompt &optional dir default-dirname mustmatch initial)
"Read directory name, prompting with PROMPT and completing in directory DIR.
@ -4369,7 +4377,7 @@ See also `auto-save-file-name-p'."
"#")))
;; Make sure auto-save file names don't contain characters
;; invalid for the underlying filesystem.
(if (and (memq system-type '(ms-dos windows-nt))
(if (and (memq system-type '(ms-dos windows-nt cygwin))
;; Don't modify remote (ange-ftp) filenames
(not (string-match "^/\\w+@[-A-Za-z0-9._]+:" result)))
(convert-standard-filename result)
@ -4404,7 +4412,7 @@ See also `auto-save-file-name-p'."
((file-writable-p default-directory) default-directory)
((file-writable-p "/var/tmp/") "/var/tmp/")
("~/")))))
(if (and (memq system-type '(ms-dos windows-nt))
(if (and (memq system-type '(ms-dos windows-nt cygwin))
;; Don't modify remote (ange-ftp) filenames
(not (string-match "^/\\w+@[-A-Za-z0-9._]+:" fname)))
;; The call to convert-standard-filename is in case

View file

@ -1798,7 +1798,7 @@ User will be queried, if no fileset name is provided."
filesets-data nil)))
(entry (or (assoc name filesets-data)
(when (y-or-n-p
(format "Fileset %s does not exist. Create it?"
(format "Fileset %s does not exist. Create it? "
name))
(progn
(add-to-list 'filesets-data (list name '(:files)))

View file

@ -83,34 +83,6 @@ where MAJOR-MODE is a symbol and FONT-LOCK-DEFAULTS is a list of default
settings. See the variable `font-lock-defaults', which takes precedence.")
(make-obsolete-variable 'font-lock-defaults-alist 'font-lock-defaults)
(defvar font-lock-extend-region-function nil
"A function that determines the region to fontify after a change.
This buffer-local variable is either nil, or is a function that determines the
region to fontify. It is usually set by the major mode. The currently active
font-lock after-change function calls this function after each buffer change.
The function is given three parameters, the standard BEG, END, and OLD-LEN
from after-change-functions. It should return either a cons of the beginning
and end buffer positions \(in that order) of the region to fontify, or nil
\(which directs the caller to fontify a default region). This function need
not preserve point or the match-data, but must preserve the current
restriction. The region it returns may start or end in the middle of a
line.")
(make-variable-buffer-local 'font-lock-extend-region-function)
(defun font-lock-extend-region (beg end old-len)
"Determine the region to fontify after a buffer change.
BEG END and OLD-LEN are the standard parameters from after-change-functions.
The return value is either nil \(which directs the caller to chose the region
itself), or a cons of the beginning and end \(in that order) of the region.
The region returned may start or end in the middle of a line."
(if font-lock-extend-region-function
(save-match-data
(save-excursion
(funcall font-lock-extend-region-function beg end old-len)))))
(defvar font-lock-function 'font-lock-default-function
"A function which is called when `font-lock-mode' is toggled.
It will be passed one argument, which is the current value of

View file

@ -893,7 +893,11 @@ The value of this variable is used when Font Lock mode is turned on."
(set (make-local-variable 'font-lock-fontified) t)
;; Use jit-lock.
(jit-lock-register 'font-lock-fontify-region
(not font-lock-keywords-only))))))
(not font-lock-keywords-only))
;; Tell jit-lock how we extend the region to refontify.
(add-hook 'jit-lock-after-change-extend-region-functions
'font-lock-extend-jit-lock-region-after-change
nil t)))))
(defun font-lock-turn-off-thing-lock ()
(cond ((and (boundp 'fast-lock-mode) fast-lock-mode)
@ -971,6 +975,21 @@ The value of this variable is used when Font Lock mode is turned on."
;; directives correctly and cleanly. (It is the same problem as fontifying
;; multi-line strings and comments; regexps are not appropriate for the job.)
(defvar font-lock-extend-after-change-region-function nil
"A function that determines the region to refontify after a change.
This variable is either nil, or is a function that determines the
region to refontify after a change.
It is usually set by the major mode via `font-lock-defaults'.
Font-lock calls this function after each buffer change.
The function is given three parameters, the standard BEG, END, and OLD-LEN
from `after-change-functions'. It should return either a cons of the beginning
and end buffer positions \(in that order) of the region to refontify, or nil
\(which directs the caller to fontify a default region).
This function should preserve the match-data.
The region it returns may start or end in the middle of a line.")
(defun font-lock-fontify-buffer ()
"Fontify the current buffer the way the function `font-lock-mode' would."
(interactive)
@ -1021,6 +1040,59 @@ The value of this variable is used when Font Lock mode is turned on."
Useful for things like RMAIL and Info where the whole buffer is not
a very meaningful entity to highlight.")
(defvar font-lock-beg) (defvar font-lock-end)
(defvar font-lock-extend-region-functions
'(font-lock-extend-region-wholelines
;; This use of font-lock-multiline property is unreliable but is just
;; a handy heuristic: in case you don't have a function that does
;; /identification/ of multiline elements, you may still occasionally
;; discover them by accident (or you may /identify/ them but not in all
;; cases), in which case the font-lock-multiline property can help make
;; sure you will properly *re*identify them during refontification.
font-lock-extend-region-multiline)
"Special hook run just before proceeding to fontify a region.
This is used to allow major modes to help font-lock find safe buffer positions
as beginning and end of the fontified region. Its most common use is to solve
the problem of /identification/ of multiline elements by providing a function
that tries to find such elements and move the boundaries such that they do
not fall in the middle of one.
Each function is called with no argument; it is expected to adjust the
dynamically bound variables `font-lock-beg' and `font-lock-end'; and return
non-nil iff it did make such an adjustment.
These functions are run in turn repeatedly until they all return nil.
Put first the functions more likely to cause a change and cheaper to compute.")
;; Mark it as a special hook which doesn't use any global setting
;; (i.e. doesn't obey the element t in the buffer-local value).
(make-variable-buffer-local 'font-lock-extend-region-functions)
(defun font-lock-extend-region-multiline ()
"Move fontification boundaries away from any `font-lock-multiline' property."
(let ((changed nil))
(when (and (> font-lock-beg (point-min))
(get-text-property (1- font-lock-beg) 'font-lock-multiline))
(setq changed t)
(setq font-lock-beg (or (previous-single-property-change
font-lock-beg 'font-lock-multiline)
(point-min))))
;;
(when (get-text-property font-lock-end 'font-lock-multiline)
(setq changed t)
(setq font-lock-end (or (text-property-any font-lock-end (point-max)
'font-lock-multiline nil)
(point-max))))
changed))
(defun font-lock-extend-region-wholelines ()
"Move fontification boundaries to beginning of lines."
(let ((changed nil))
(goto-char font-lock-beg)
(unless (bolp) (setq changed t font-lock-beg (line-beginning-position)))
(goto-char font-lock-end)
(unless (bolp) (setq changed t font-lock-end (line-beginning-position 2)))
changed))
(defun font-lock-default-fontify-region (beg end loudly)
(save-buffer-state
((parse-sexp-lookup-properties
@ -1032,24 +1104,21 @@ a very meaningful entity to highlight.")
;; Use the fontification syntax table, if any.
(when font-lock-syntax-table
(set-syntax-table font-lock-syntax-table))
(goto-char beg)
(setq beg (line-beginning-position))
;; check to see if we should expand the beg/end area for
;; proper multiline matches
(when (and (> beg (point-min))
(get-text-property (1- beg) 'font-lock-multiline))
;; We are just after or in a multiline match.
(setq beg (or (previous-single-property-change
beg 'font-lock-multiline)
(point-min)))
(goto-char beg)
(setq beg (line-beginning-position)))
(setq end (or (text-property-any end (point-max)
'font-lock-multiline nil)
(point-max)))
(goto-char end)
;; Round up to a whole line.
(unless (bolp) (setq end (line-beginning-position 2)))
;; Extend the region to fontify so that it starts and ends at
;; safe places.
(let ((funs font-lock-extend-region-functions)
(font-lock-beg beg)
(font-lock-end end))
(while funs
(setq funs (if (or (not (funcall (car funs)))
(eq funs font-lock-extend-region-functions))
(cdr funs)
;; If there's been a change, we should go through
;; the list again since this new position may
;; warrant a different answer from one of the fun
;; we've already seen.
font-lock-extend-region-functions)))
(setq beg font-lock-beg end font-lock-end))
;; Now do the fontification.
(font-lock-unfontify-region beg end)
(when font-lock-syntactic-keywords
@ -1083,19 +1152,77 @@ what properties to clear before refontifying a region.")
;; Called when any modification is made to buffer text.
(defun font-lock-after-change-function (beg end old-len)
(let ((inhibit-point-motion-hooks t)
(inhibit-quit t)
(region (font-lock-extend-region beg end old-len)))
(save-excursion
(save-excursion
(let ((inhibit-point-motion-hooks t)
(inhibit-quit t)
(region (if font-lock-extend-after-change-region-function
(funcall font-lock-extend-after-change-region-function
beg end old-len))))
(save-match-data
(if region
;; Fontify the region the major mode has specified.
(setq beg (car region) end (cdr region))
;; Fontify the whole lines which enclose the region.
(setq beg (progn (goto-char beg) (line-beginning-position))
end (progn (goto-char end) (line-beginning-position 2))))
;; Actually, this is not needed because
;; font-lock-default-fontify-region already rounds up to a whole
;; number of lines.
;; (setq beg (progn (goto-char beg) (line-beginning-position))
;; end (progn (goto-char end) (line-beginning-position 2)))
)
(font-lock-fontify-region beg end)))))
(defvar jit-lock-start) (defvar jit-lock-end)
(defun font-lock-extend-jit-lock-region-after-change (beg end old-len)
"Function meant for `jit-lock-after-change-extend-region-functions'.
This function does 2 things:
- extend the region so that it not only includes the part that was modified
but also the surrounding text whose highlighting may change as a consequence.
- anticipate (part of) the region extension that will happen later in
`font-lock-default-fontify-region', in order to avoid the need for
double-redisplay in `jit-lock-fontify-now'."
(save-excursion
;; First extend the region as font-lock-after-change-function would.
(let ((region (if font-lock-extend-after-change-region-function
(funcall font-lock-extend-after-change-region-function
beg end old-len))))
(if region
(setq beg (min jit-lock-start (car region))
end (max jit-lock-end (cdr region))))
;; Then extend the region obeying font-lock-multiline properties,
;; indicating which part of the buffer needs to be refontified.
;; !!! This is the *main* user of font-lock-multiline property !!!
;; font-lock-after-change-function could/should also do that, but it
;; doesn't need to because font-lock-default-fontify-region does
;; it anyway. Here OTOH we have no guarantee that
;; font-lock-default-fontify-region will be executed on this region
;; any time soon.
;; Note: contrary to font-lock-default-fontify-region, we do not do
;; any loop here because we are not looking for a safe spot: we just
;; mark the text whose appearance may need to change as a result of
;; the buffer modification.
(when (and (> beg (point-min))
(get-text-property (1- beg) 'font-lock-multiline))
(setq beg (or (previous-single-property-change
beg 'font-lock-multiline)
(point-min))))
(setq end (or (text-property-any end (point-max)
'font-lock-multiline nil)
(point-max)))
;; Finally, pre-enlarge the region to a whole number of lines, to try
;; and anticipate what font-lock-default-fontify-region will do, so as to
;; avoid double-redisplay.
;; We could just run `font-lock-extend-region-functions', but since
;; the only purpose is to avoid the double-redisplay, we prefer to
;; do here only the part that is cheap and most likely to be useful.
(when (memq 'font-lock-extend-region-wholelines
font-lock-extend-region-functions)
(goto-char beg)
(forward-line 0)
(setq jit-lock-start (min jit-lock-start (point)))
(goto-char end)
(forward-line 1)
(setq jit-lock-end (max jit-lock-end (point)))))))
(defun font-lock-fontify-block (&optional arg)
"Fontify some lines the way `font-lock-fontify-buffer' would.
The lines could be a function or paragraph, or a specified number of lines.

View file

@ -117,17 +117,17 @@ DOC-STR should be a single line providing more information about the
REGEXP is a regular expression to match against the beginning of the file;
it should match only files in that format. Use nil to avoid
matching at all for formats for which this isn't appropriate to
matching at all for formats for which it isn't appropriate to
require explicit encoding/decoding.
FROM-FN is called to decode files in that format; it gets two args, BEGIN
FROM-FN is called to decode files in that format; it takes two args, BEGIN
and END, and can make any modifications it likes, returning the new
end. It must make sure that the beginning of the file no longer
matches REGEXP, or else it will get called again.
Alternatively, FROM-FN can be a string, which specifies a shell command
(including options) to be used as a filter to perform the conversion.
TO-FN is called to encode a region into that format; it is passed three
TO-FN is called to encode a region into that format; it takes three
arguments: BEGIN, END, and BUFFER. BUFFER is the original buffer that
the data being written came from, which the function could use, for
example, to find the values of local variables. TO-FN should either
@ -142,7 +142,7 @@ MODIFY, if non-nil, means the TO-FN wants to modify the region. If nil,
MODE-FN, if specified, is called when visiting a file with that format.
It is called with a single positive argument, on the assumption
that it turns on some Emacs mode.
that this would turn on some minor mode.
PRESERVE, if non-nil, means that `format-write-file' should not remove
this format from `buffer-file-formats'.")
@ -150,8 +150,8 @@ PRESERVE, if non-nil, means that `format-write-file' should not remove
;;; Basic Functions (called from Lisp)
(defun format-encode-run-method (method from to &optional buffer)
"Translate using function or shell script METHOD the text from FROM to TO.
If METHOD is a string, it is a shell command;
"Translate using METHOD the text from FROM to TO.
If METHOD is a string, it is a shell command (including options);
otherwise, it should be a Lisp function.
BUFFER should be the buffer that the output originally came from."
(if (stringp method)
@ -173,9 +173,9 @@ BUFFER should be the buffer that the output originally came from."
(funcall method from to buffer)))
(defun format-decode-run-method (method from to &optional buffer)
"Decode using function or shell script METHOD the text from FROM to TO.
If METHOD is a string, it is a shell command; otherwise, it should be
a Lisp function. Decoding is done for the given BUFFER."
"Decode using METHOD the text from FROM to TO.
If METHOD is a string, it is a shell command (including options); otherwise,
it should be a Lisp function. Decoding is done for the given BUFFER."
(if (stringp method)
(let ((error-buff (get-buffer-create "*Format Errors*"))
(coding-system-for-write 'no-conversion)
@ -200,15 +200,15 @@ a Lisp function. Decoding is done for the given BUFFER."
(defun format-annotate-function (format from to orig-buf format-count)
"Return annotations for writing region as FORMAT.
FORMAT is a symbol naming one of the formats defined in `format-alist',
it must be a single symbol, not a list like `buffer-file-format'.
FORMAT is a symbol naming one of the formats defined in `format-alist'.
It must be a single symbol, not a list like `buffer-file-format'.
FROM and TO delimit the region to be operated on in the current buffer.
ORIG-BUF is the original buffer that the data came from.
FORMAT-COUNT is an integer specifying how many times this function has
been called in the process of decoding ORIG-BUF.
This function works like a function on `write-region-annotate-functions':
This function works like a function in `write-region-annotate-functions':
it either returns a list of annotations, or returns with a different buffer
current, which contains the modified text to write. In the latter case,
this function's value is nil.
@ -253,7 +253,7 @@ If optional third arg VISIT-FLAG is true, set `buffer-file-format'
to the reverted list of formats used, and call any mode functions defined
for those formats.
Returns the new length of the decoded region.
Return the new length of the decoded region.
For most purposes, consider using `format-decode-region' instead."
(let ((mod (buffer-modified-p))
@ -312,9 +312,9 @@ For most purposes, consider using `format-decode-region' instead."
(defun format-decode-buffer (&optional format)
"Translate the buffer from some FORMAT.
If the format is not specified, this function attempts to guess.
`buffer-file-format' is set to the format used, and any mode-functions
for the format are called."
If the format is not specified, attempt a regexp-based guess.
Set `buffer-file-format' to the format used, and call any
format-specific mode functions."
(interactive
(list (format-read "Translate buffer from format (default guess): ")))
(save-excursion
@ -343,7 +343,7 @@ formats defined in `format-alist', or a list of such symbols."
(defun format-encode-region (beg end &optional format)
"Translate the region into some FORMAT.
FORMAT defaults to `buffer-file-format', it is a symbol naming
FORMAT defaults to `buffer-file-format'. It is a symbol naming
one of the formats defined in `format-alist', or a list of such symbols."
(interactive
(list (region-beginning) (region-end)
@ -374,9 +374,9 @@ Make buffer visit that file and set the format as the default for future
saves. If the buffer is already visiting a file, you can specify a directory
name as FILENAME, to write a file of the same old name in that directory.
If optional third arg CONFIRM is non-nil, this function asks for
confirmation before overwriting an existing file. Interactively,
confirmation is required unless you supply a prefix argument."
If optional third arg CONFIRM is non-nil, ask for confirmation before
overwriting an existing file. Interactively, confirmation is required
unless you supply a prefix argument."
(interactive
;; Same interactive spec as write-file, plus format question.
(let* ((file (if buffer-file-name
@ -419,7 +419,7 @@ If FORMAT is nil then do not do any format conversion."
"Insert the contents of file FILENAME using data format FORMAT.
If FORMAT is nil then do not do any format conversion.
The optional third and fourth arguments BEG and END specify
the part of the file to read.
the part (in bytes) of the file to read.
The return value is like the value of `insert-file-contents':
a list (ABSOLUTE-FILE-NAME SIZE)."
@ -456,10 +456,10 @@ Formats are defined in `format-alist'. Optional arg is the PROMPT to use."
(defun format-replace-strings (alist &optional reverse beg end)
"Do multiple replacements on the buffer.
ALIST is a list of (FROM . TO) pairs, which should be proper arguments to
`search-forward' and `replace-match' respectively.
Optional 2nd arg REVERSE, if non-nil, means the pairs are (TO . FROM), so that
you can use the same list in both directions if it contains only literal
strings.
`search-forward' and `replace-match', respectively.
Optional second arg REVERSE, if non-nil, means the pairs are (TO . FROM),
so that you can use the same list in both directions if it contains only
literal strings.
Optional args BEG and END specify a region of the buffer on which to operate."
(save-excursion
(save-restriction
@ -497,7 +497,7 @@ the value of `foo'."
(defun format-make-relatively-unique (a b)
"Delete common elements of lists A and B, return as pair.
Compares using `equal'."
Compare using `equal'."
(let* ((acopy (copy-sequence a))
(bcopy (copy-sequence b))
(tail acopy))
@ -511,9 +511,9 @@ Compares using `equal'."
(defun format-common-tail (a b)
"Given two lists that have a common tail, return it.
Compares with `equal', and returns the part of A that is equal to the
Compare with `equal', and return the part of A that is equal to the
equivalent part of B. If even the last items of the two are not equal,
returns nil."
return nil."
(let ((la (length a))
(lb (length b)))
;; Make sure they are the same length
@ -534,9 +534,9 @@ A proper list is a list ending with a nil cdr, not with an atom "
(null list)))
(defun format-reorder (items order)
"Arrange ITEMS to following partial ORDER.
Elements of ITEMS equal to elements of ORDER will be rearranged to follow the
ORDER. Unmatched items will go last."
"Arrange ITEMS to follow partial ORDER.
Elements of ITEMS equal to elements of ORDER will be rearranged
to follow the ORDER. Unmatched items will go last."
(if order
(let ((item (member (car order) items)))
(if item
@ -793,7 +793,7 @@ yet known.
;; next-single-property-change instead of text-property-not-all, but then
;; we have to see if we passed TO.
(defun format-property-increment-region (from to prop delta default)
"Over the region between FROM and TO increment property PROP by amount DELTA.
"In the region from FROM to TO increment property PROP by amount DELTA.
DELTA may be negative. If property PROP is nil anywhere
in the region, it is treated as though it were DEFAULT."
(let ((cur from) val newval next)
@ -810,7 +810,7 @@ in the region, it is treated as though it were DEFAULT."
(defun format-insert-annotations (list &optional offset)
"Apply list of annotations to buffer as `write-region' would.
Inserts each element of the given LIST of buffer annotations at its
Insert each element of the given LIST of buffer annotations at its
appropriate place. Use second arg OFFSET if the annotations' locations are
not relative to the beginning of the buffer: annotations will be inserted
at their location-OFFSET+1 \(ie, the offset is treated as the position of
@ -834,7 +834,7 @@ property is the name of the annotation that you want to use, as it is for the
(defun format-annotate-region (from to translations format-fn ignore)
"Generate annotations for text properties in the region.
Searches for changes between FROM and TO, and describes them with a list of
Search for changes between FROM and TO, and describe them with a list of
annotations as defined by alist TRANSLATIONS and FORMAT-FN. IGNORE lists text
properties not to consider; any text properties that are neither ignored nor
listed in TRANSLATIONS are warned about.
@ -975,9 +975,9 @@ either strings, or lists of the form (PARAMETER VALUE)."
"Return annotations for property PROP changing from OLD to NEW.
These are searched for in the translations alist TRANSLATIONS
(see `format-annotate-region' for the format).
If NEW does not appear in the list, but there is a default function, then that
function is called.
Returns a cons of the form (CLOSE . OPEN)
If NEW does not appear in the list, but there is a default function,
then call that function.
Return a cons of the form (CLOSE . OPEN)
where CLOSE is a list of annotations to close
and OPEN is a list of annotations to open.
@ -1016,7 +1016,7 @@ either strings, or lists of the form (PARAMETER VALUE)."
(format-annotate-atomic-property-change prop-alist old new)))))
(defun format-annotate-atomic-property-change (prop-alist old new)
"Internal function annotate a single property change.
"Internal function to annotate a single property change.
PROP-ALIST is the relevant element of a TRANSLATIONS list.
OLD and NEW are the values."
(let (num-ann)

View file

@ -1362,49 +1362,19 @@ The function `blink-cursor-start' is called when the timer fires.")
This timer calls `blink-cursor-timer-function' every
`blink-cursor-interval' seconds.")
(define-minor-mode blink-cursor-mode
"Toggle blinking cursor mode.
With a numeric argument, turn blinking cursor mode on iff ARG is positive.
When blinking cursor mode is enabled, the cursor of the selected
window blinks.
Note that this command is effective only when Emacs
displays through a window system, because then Emacs does its own
cursor display. On a text-only terminal, this is not implemented."
:init-value (not (or noninteractive
no-blinking-cursor
(eq system-type 'ms-dos)
(not (memq initial-window-system '(x w32 mac)))))
:initialize 'custom-initialize-safe-default
:group 'cursor
:global t
(if blink-cursor-idle-timer (cancel-timer blink-cursor-idle-timer))
(if blink-cursor-timer (cancel-timer blink-cursor-timer))
(setq blink-cursor-idle-timer nil
blink-cursor-timer nil)
(if blink-cursor-mode
(progn
;; Hide the cursor.
;;(internal-show-cursor nil nil)
(setq blink-cursor-idle-timer
(run-with-idle-timer blink-cursor-delay
blink-cursor-delay
'blink-cursor-start)))
(internal-show-cursor nil t)))
(define-obsolete-variable-alias 'blink-cursor 'blink-cursor-mode "22.1")
(defun blink-cursor-start ()
"Timer function called from the timer `blink-cursor-idle-timer'.
This starts the timer `blink-cursor-timer', which makes the cursor blink
if appropriate. It also arranges to cancel that timer when the next
command starts, by installing a pre-command hook."
(when (null blink-cursor-timer)
(add-hook 'pre-command-hook 'blink-cursor-end)
(internal-show-cursor nil nil)
;; Set up the timer first, so that if this signals an error,
;; blink-cursor-end is not added to pre-command-hook.
(setq blink-cursor-timer
(run-with-timer blink-cursor-interval blink-cursor-interval
'blink-cursor-timer-function))))
'blink-cursor-timer-function))
(add-hook 'pre-command-hook 'blink-cursor-end)
(internal-show-cursor nil nil)))
(defun blink-cursor-timer-function ()
"Timer function of timer `blink-cursor-timer'."
@ -1417,10 +1387,38 @@ When run, it cancels the timer `blink-cursor-timer' and removes
itself as a pre-command hook."
(remove-hook 'pre-command-hook 'blink-cursor-end)
(internal-show-cursor nil t)
(cancel-timer blink-cursor-timer)
(setq blink-cursor-timer nil))
(when blink-cursor-timer
(cancel-timer blink-cursor-timer)
(setq blink-cursor-timer nil)))
(define-minor-mode blink-cursor-mode
"Toggle blinking cursor mode.
With a numeric argument, turn blinking cursor mode on iff ARG is positive.
When blinking cursor mode is enabled, the cursor of the selected
window blinks.
Note that this command is effective only when Emacs
displays through a window system, because then Emacs does its own
cursor display. On a text-only terminal, this is not implemented."
:init-value (not (or noninteractive
no-blinking-cursor
(eq system-type 'ms-dos)
(not (memq window-system '(x w32 mac)))))
:initialize 'custom-initialize-safe-default
:group 'cursor
:global t
(if blink-cursor-idle-timer (cancel-timer blink-cursor-idle-timer))
(setq blink-cursor-idle-timer nil)
(blink-cursor-end)
(when blink-cursor-mode
;; Hide the cursor.
;;(internal-show-cursor nil nil)
(setq blink-cursor-idle-timer
(run-with-idle-timer blink-cursor-delay
blink-cursor-delay
'blink-cursor-start))))
(define-obsolete-variable-alias 'blink-cursor 'blink-cursor-mode "22.1")
;; Hourglass pointer

View file

@ -1,3 +1,47 @@
2006-08-23 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
[ Backported bug fix from No Gnus. ]
* gnus.el (gnus-find-method-for-group): On killed/unknown groups, try
looking up the method using GROUP's prefix before inventing a new one.
It is used on killed/unknown groups in various places where returning
an all-new method isn't expected by the caller.
* gnus-util.el (gnus-group-server): Copy required macro from No Gnus.
2006-08-13 Romain Francoise <romain@orebokech.com>
* mm-extern.el (mm-extern-mail-server): End `y-or-n-p' prompt with a
space.
2006-08-09 Katsumi Yamaoka <yamaoka@jpl.org>
* compface.el (uncompface): Use binary rather than raw-text-unix.
2006-08-09 Katsumi Yamaoka <yamaoka@jpl.org>
* compface.el (uncompface): Make sure the eol conversion doesn't take
place when communicating with the external programs. Reported by
ARISAWA Akihiro <ari@mbf.ocn.ne.jp>.
2006-07-31 Katsumi Yamaoka <yamaoka@jpl.org>
* nnheader.el (nnheader-insert-head): Fix typo in comment.
2006-07-31 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
* nnweb.el (nnweb-google-parse-1): Update regexp for author and date.
Make it more robust by parsing author and date independently.
2006-07-28 Katsumi Yamaoka <yamaoka@jpl.org>
* nnheader.el (nnheader-insert-head): Make it work with Mac as well.
2006-07-27 Katsumi Yamaoka <yamaoka@jpl.org>
* nnheader.el (nnheader-insert-head): Make it work even if the file
uses CRLF for the line-break code.
2006-07-19 Andreas Seltenreich <uwi7@rz.uni-karlsruhe.de>
* mm-url.el (mm-url-insert-file-contents): Inhibit Connection: close

View file

@ -34,24 +34,28 @@ GNU/Linux system these might be in packages with names like `compface'
or `faces-xface' and `netpbm' or `libgr-progs', for instance."
(with-temp-buffer
(insert face)
(and (eq 0 (apply 'call-process-region (point-min) (point-max)
"uncompface"
'delete '(t nil) nil))
(progn
(goto-char (point-min))
(insert "/* Width=48, Height=48 */\n")
;; I just can't get "icontopbm" to work correctly on its
;; own in XEmacs. And Emacs doesn't understand un-raw pbm
;; files.
(if (not (featurep 'xemacs))
(eq 0 (call-process-region (point-min) (point-max)
"icontopbm"
'delete '(t nil)))
(shell-command-on-region (point-min) (point-max)
"icontopbm | pnmnoraw"
(current-buffer) t)
t))
(buffer-string))))
(let ((coding-system-for-read 'raw-text)
;; At least "icontopbm" doesn't work with Windows because
;; the line-break code is converted into CRLF by default.
(coding-system-for-write 'binary))
(and (eq 0 (apply 'call-process-region (point-min) (point-max)
"uncompface"
'delete '(t nil) nil))
(progn
(goto-char (point-min))
(insert "/* Width=48, Height=48 */\n")
;; I just can't get "icontopbm" to work correctly on its
;; own in XEmacs. And Emacs doesn't understand un-raw pbm
;; files.
(if (not (featurep 'xemacs))
(eq 0 (call-process-region (point-min) (point-max)
"icontopbm"
'delete '(t nil)))
(shell-command-on-region (point-min) (point-max)
"icontopbm | pnmnoraw"
(current-buffer) t)
t))
(buffer-string)))))
(provide 'compface)

View file

@ -607,6 +607,17 @@ If N, return the Nth ancestor instead."
(substring gname (match-end 0))
gname)))
(defmacro gnus-group-server (group)
"Find the server name of a foreign newsgroup.
For example, (gnus-group-server \"nnimap+yxa:INBOX.foo\") would
yield \"nnimap:yxa\"."
`(let ((gname ,group))
(if (string-match "^\\([^:+]+\\)\\(?:\\+\\([^:]*\\)\\)?:" gname)
(format "%s:%s" (match-string 1 gname) (or
(match-string 2 gname)
""))
(format "%s:%s" (car gnus-select-method) (cadr gnus-select-method)))))
(defun gnus-make-sort-function (funs)
"Return a composite sort condition based on the functions in FUNS."
(cond

View file

@ -4079,8 +4079,13 @@ If NEWSGROUP is nil, return the global kill file name instead."
(or gnus-override-method
(and (not group)
gnus-select-method)
(and (not (gnus-group-entry group)) ;; a new group
(gnus-group-name-to-method group))
(and (not (gnus-group-entry group))
;; Killed or otherwise unknown group.
(or
;; If we know a virtual server by that name, return its method.
(gnus-server-to-method (gnus-group-server group))
;; Guess a new method as last resort.
(gnus-group-name-to-method group)))
(let ((info (or info (gnus-get-info group)))
method)
(if (or (not info)

View file

@ -97,7 +97,7 @@
(subject (or (cdr (assq 'subject params)) "none"))
(buf (current-buffer))
info)
(if (y-or-n-p (format "Send a request message to %s?" server))
(if (y-or-n-p (format "Send a request message to %s? " server))
(save-window-excursion
(message-mail server subject)
(message-goto-body)

View file

@ -586,17 +586,27 @@ the line could be found."
(if (eq nnheader-max-head-length t)
;; Just read the entire file.
(nnheader-insert-file-contents file)
;; Read 1K blocks until we find a separator.
;; Read blocks of the size specified by `nnheader-head-chop-length'
;; until we find a separator.
(let ((beg 0)
format-alist)
(start (point))
;; Use `binary' to prevent the contents from being decoded,
;; or it will change the number of characters that
;; `insert-file-contents' returns.
(coding-system-for-read 'binary))
(while (and (eq nnheader-head-chop-length
(nth 1 (nnheader-insert-file-contents
(nth 1 (mm-insert-file-contents
file nil beg
(incf beg nnheader-head-chop-length))))
(prog1 (not (search-forward "\n\n" nil t))
;; CRLF or CR might be used for the line-break code.
(prog1 (not (re-search-forward "\n\r?\n\\|\r\r" nil t))
(goto-char (point-max)))
(or (null nnheader-max-head-length)
(< beg nnheader-max-head-length))))))
(< beg nnheader-max-head-length))))
;; Finally decode the contents.
(when (mm-coding-system-p nnheader-file-coding-system)
(mm-decode-coding-region start (point-max)
nnheader-file-coding-system))))
t))
(defun nnheader-article-p ()

View file

@ -366,14 +366,15 @@ Valid types include `google', `dejanews', and `gmane'.")
(mm-url-decode-entities)
(search-backward " - ")
(when (looking-at
" - \\([a-zA-Z]+\\) \\([0-9]+\\)\\(?: \\([0-9]\\{4\\}\\)\\)?[^\n]+by ?\n?\\([^<\n]+\\)\n")
(setq From (match-string 4)
Date (format "%s %s 00:00:00 %s"
"\\W+\\(\\w+\\) \\([0-9]+\\)\\(?: \\([0-9]\\{4\\}\\)\\)?")
(setq Date (format "%s %s 00:00:00 %s"
(match-string 1)
(match-string 2)
(or (match-string 3)
(substring (current-time-string) -4)))))
(substring (current-time-string) -4))))
(goto-char (match-end 0)))
(when (looking-at "[^b]+by\\W+\\([^<\n]+\\)")
(setq From (match-string 1)))
(widen)
(forward-line 1)
(incf i)

View file

@ -822,16 +822,13 @@ whose documentation describes the minor mode."
(sort minor-modes
(lambda (a b) (string-lessp (cadr a) (cadr b)))))
(when minor-modes
(princ "Summary of minor modes:\n")
(princ "Enabled minor modes:\n")
(make-local-variable 'help-button-cache)
(with-current-buffer standard-output
(dolist (mode minor-modes)
(let ((mode-function (nth 0 mode))
(pretty-minor-mode (nth 1 mode))
(indicator (nth 2 mode)))
(setq indicator (if (zerop (length indicator))
"no indicator"
(format "indicator%s" indicator)))
(add-text-properties 0 (length pretty-minor-mode)
'(face bold) pretty-minor-mode)
(save-excursion
@ -840,16 +837,22 @@ whose documentation describes the minor mode."
(push (point-marker) help-button-cache)
;; Document the minor modes fully.
(insert pretty-minor-mode)
(princ (format " minor mode (%s):\n" indicator))
(princ (format " minor mode (%s):\n"
(if (zerop (length indicator))
"no indicator"
(format "indicator%s"
indicator))))
(princ (documentation mode-function)))
(princ " ")
(insert-button pretty-minor-mode
'action (car help-button-cache)
'follow-link t
'help-echo "mouse-2, RET: show full information")
(princ (format " minor mode (%s):\n" indicator)))))
(princ "\n(Full information about these minor modes
follows the description of the major mode.)\n\n"))
(newline)))
(forward-line -1)
(fill-paragraph nil)
(forward-line 1))
(princ "\n(Information about these minor modes follows the major mode info.)\n\n"))
;; Document the major mode.
(let ((mode mode-name))
(with-current-buffer standard-output

View file

@ -1840,6 +1840,7 @@ If INITIAL is non-nil, it specifies the initial input string."
(and d (cdr d)))))))
(if (member ido-default-item ido-ignore-item-temp-list)
(setq ido-default-item nil))
(ido-trace "new default" ido-default-item)
(setq ido-set-default-item nil))
(if ido-process-ignore-lists-inhibit
@ -3528,37 +3529,40 @@ for first matching file."
(let* ((case-fold-search ido-case-fold)
(slash (and (not ido-enable-prefix) (ido-final-slash ido-text)))
(text (if slash (substring ido-text 0 -1) ido-text))
(rexq (concat (if ido-enable-regexp text (regexp-quote text)) (if slash ".*/" "")))
(rex0 (if ido-enable-regexp text (regexp-quote text)))
(rexq (concat rex0 (if slash ".*/" "")))
(re (if ido-enable-prefix (concat "\\`" rexq) rexq))
(full-re (and do-full (not ido-enable-regexp) (not (string-match "\$\\'" re))
(concat "\\`" re "\\'")))
(full-re (and do-full (not ido-enable-regexp) (not (string-match "\$\\'" rex0))
(concat "\\`" rex0 (if slash "/" "") "\\'")))
(suffix-re (and do-full slash
(not ido-enable-regexp) (not (string-match "\$\\'" rex0))
(concat rex0 "/\\'")))
(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)
full-matches suffix-matches prefix-matches matches)
(setq ido-incomplete-regexp nil)
(condition-case error
(mapcar
(lambda (item)
(let ((name (ido-name item)))
(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)))
((and prefix-re (string-match prefix-re name))
(setq prefix-matches (cons item prefix-matches)))
(t (setq matches (cons item matches))))))
t)
(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)))
((and suffix-re (string-match suffix-re name))
(setq suffix-matches (cons item suffix-matches)))
((and prefix-re (string-match prefix-re name))
(setq prefix-matches (cons item prefix-matches)))
(t (setq matches (cons item matches))))))
t)
items)
(invalid-regexp
(setq ido-incomplete-regexp t
@ -3566,10 +3570,15 @@ for first matching file."
;; special-case single match, and handle appropriately
;; elsewhere.
matches (cdr error))))
(if prefix-matches
(setq matches (nconc prefix-matches matches)))
(if full-matches
(setq matches (nconc full-matches matches)))
(when prefix-matches
(ido-trace "prefix match" prefix-matches)
(setq matches (nconc prefix-matches matches)))
(when suffix-matches
(ido-trace "suffix match" (list text suffix-re suffix-matches))
(setq matches (nconc suffix-matches matches)))
(when full-matches
(ido-trace "full match" (list text full-re full-matches))
(setq matches (nconc full-matches matches)))
(when (and (null matches)
ido-enable-flex-matching
(> (length ido-text) 1)
@ -4096,12 +4105,13 @@ For details of keybindings, do `\\[describe-function] ido-find-file'."
try-single-dir-match
refresh)
(ido-trace "\nexhibit" this-command)
(ido-trace "dir" ido-current-directory)
(ido-trace "contents" contents)
(ido-trace "list" ido-cur-list)
(ido-trace "matches" ido-matches)
(ido-trace "rescan" ido-rescan)
(when ido-trace-enable
(ido-trace "\nexhibit" this-command)
(ido-trace "dir" ido-current-directory)
(ido-trace "contents" contents)
(ido-trace "list" ido-cur-list)
(ido-trace "matches" ido-matches)
(ido-trace "rescan" ido-rescan))
(save-excursion
(goto-char (point-max))

View file

@ -3805,6 +3805,8 @@ the variable `Info-file-list-for-emacs'."
(setq other-tag
(cond ((save-match-data (looking-back "\\<see"))
"")
((save-match-data (looking-back "\\<in"))
"")
((memq (char-before) '(nil ?\. ?! ??))
"See ")
((save-match-data

View file

@ -138,8 +138,14 @@ coding system names is determined from `latex-inputenc-coding-alist'."
((and (require 'code-pages nil t) (coding-system-p sym)) sym)
(t 'undecided)))
;; else try to find it in the master/main file
(let ((default-directory (file-name-directory (nth 1 arg-list)))
latexenc-main-file)
;; Fixme: If the current file is in an archive (e.g. tar,
;; zip), we should find the master file in that archive.
;; But, that is not yet implemented. -- K.Handa
(let ((default-directory (if (stringp (nth 1 arg-list))
(file-name-directory (nth 1 arg-list))
default-directory))
latexenc-main-file)
;; Is there a TeX-master or tex-main-file in the local variables
;; section?
(unless latexenc-dont-use-TeX-master-flag

View file

@ -1039,18 +1039,28 @@ but still contains full information about each coding system."
;;;###autoload
(defun describe-font (fontname)
"Display information about fonts which partially match FONTNAME."
(interactive "sFontname (default current choice for ASCII chars): ")
"Display information about a font whose name is FONTNAME.
The font must be already used by Emacs."
(interactive "sFont name (default current choice for ASCII chars): ")
(or (and window-system (fboundp 'fontset-list))
(error "No fontsets being used"))
(when (or (not fontname) (= (length fontname) 0))
(setq fontname (cdr (assq 'font (frame-parameters))))
(if (query-fontset fontname)
(setq fontname
(nth 1 (assq 'ascii (aref (fontset-info fontname) 2))))))
(let ((font-info (font-info fontname)))
(error "No fonts being used"))
(let (fontset font-info)
(when (or (not fontname) (= (length fontname) 0))
(setq fontname (frame-parameter nil 'font))
;; Check if FONTNAME is a fontset.
(if (query-fontset fontname)
(setq fontset fontname
fontname (nth 1 (assq 'ascii
(aref (fontset-info fontname) 2))))))
(setq font-info (font-info fontname))
(if (null font-info)
(message "No matching font")
(if fontset
;; The font should be surely used. So, there's some
;; problem about getting information about it. It is
;; better to print the fontname to show which font has
;; this problem.
(message "No information about \"%s\"" fontname)
(message "No matching font being used"))
(with-output-to-temp-buffer "*Help*"
(describe-font-internal font-info 'verbose)))))

View file

@ -31,6 +31,8 @@
(eval-when-compile
(require 'cl)
(defmacro with-buffer-unmodified (&rest body)
"Eval BODY, preserving the current buffer's modified state."
(declare (debug t))
@ -169,6 +171,8 @@ If nil, contextual fontification is disabled.")
(defvar jit-lock-stealth-timer nil
"Timer for stealth fontification in Just-in-time Lock mode.")
(defvar jit-lock-stealth-repeat-timer nil
"Timer for repeated stealth fontification in Just-in-time Lock mode.")
(defvar jit-lock-context-timer nil
"Timer for context fontification in Just-in-time Lock mode.")
(defvar jit-lock-defer-timer nil
@ -176,6 +180,8 @@ If nil, contextual fontification is disabled.")
(defvar jit-lock-defer-buffers nil
"List of buffers with pending deferred fontification.")
(defvar jit-lock-stealth-buffers nil
"List of buffers that are being fontified stealthily.")
;;; JIT lock mode
@ -223,6 +229,13 @@ the variable `jit-lock-stealth-nice'."
(run-with-idle-timer jit-lock-stealth-time t
'jit-lock-stealth-fontify)))
;; Create, but do not activate, the idle timer for repeated
;; stealth fontification.
(when (and jit-lock-stealth-time (null jit-lock-stealth-repeat-timer))
(setq jit-lock-stealth-repeat-timer (timer-create))
(timer-set-function jit-lock-stealth-repeat-timer
'jit-lock-stealth-fontify '(t)))
;; Init deferred fontification timer.
(when (and jit-lock-defer-time (null jit-lock-defer-timer))
(setq jit-lock-defer-timer
@ -331,7 +344,7 @@ Defaults to the whole buffer. END can be out of bounds."
;; from the end of a buffer to its start, can do repeated
;; `parse-partial-sexp' starting from `point-min', which can
;; take a long time in a large buffer.
(let (next)
(let ((orig-start start) next)
(save-match-data
;; Fontify chunks beginning at START. The end of a
;; chunk is either `end', or the start of a region
@ -374,6 +387,26 @@ Defaults to the whole buffer. END can be out of bounds."
(quit (put-text-property start next 'fontified nil)
(funcall 'signal (car err) (cdr err))))
;; The redisplay engine has already rendered the buffer up-to
;; `orig-start' and won't notice if the above jit-lock-functions
;; changed the appearance of any part of the buffer prior
;; to that. So if `start' is before `orig-start', we need to
;; cause a new redisplay cycle after this one so that any changes
;; are properly reflected on screen.
;; To make such repeated redisplay happen less often, we can
;; eagerly extend the refontified region with
;; jit-lock-after-change-extend-region-functions.
(when (< start orig-start)
(lexical-let ((start start)
(orig-start orig-start)
(buf (current-buffer)))
(run-with-timer
0 nil (lambda ()
(with-current-buffer buf
(with-buffer-prepared-for-jit-lock
(put-text-property start orig-start
'fontified t)))))))
;; Find the start of the next chunk, if any.
(setq start (text-property-any next end 'fontified nil))))))))
@ -421,71 +454,55 @@ Value is nil if there is nothing more to fontify."
(t next))))
result))))
(defun jit-lock-stealth-fontify ()
(defun jit-lock-stealth-fontify (&optional repeat)
"Fontify buffers stealthily.
This functions is called after Emacs has been idle for
`jit-lock-stealth-time' seconds."
;; I used to check `inhibit-read-only' here, but I can't remember why. -stef
This function is called repeatedly after Emacs has become idle for
`jit-lock-stealth-time' seconds. Optional argument REPEAT is expected
non-nil in a repeated invocation of this function."
;; Cancel timer for repeated invocations.
(unless repeat
(cancel-timer jit-lock-stealth-repeat-timer))
(unless (or executing-kbd-macro
memory-full
(window-minibuffer-p (selected-window)))
(let ((buffers (buffer-list))
(outer-buffer (current-buffer))
(window-minibuffer-p (selected-window))
;; For first invocation set up `jit-lock-stealth-buffers'.
;; In repeated invocations it's already been set up.
(null (if repeat
jit-lock-stealth-buffers
(setq jit-lock-stealth-buffers (buffer-list)))))
(let ((buffer (car jit-lock-stealth-buffers))
(delay 0)
minibuffer-auto-raise
message-log-max)
(with-local-quit
(while (and buffers (not (input-pending-p)))
(with-current-buffer (pop buffers)
(when jit-lock-mode
;; This is funny. Calling sit-for with 3rd arg non-nil
;; so that it doesn't redisplay, internally calls
;; wait_reading_process_input also with a parameter
;; saying "don't redisplay." Since this function here
;; is called periodically, this effectively leads to
;; process output not being redisplayed at all because
;; redisplay_internal is never called. (That didn't
;; work in the old redisplay either.) So, we learn that
;; we mustn't call sit-for that way here. But then, we
;; have to be cautious not to call sit-for in a widened
;; buffer, since this could display hidden parts of that
;; buffer. This explains the seemingly weird use of
;; save-restriction/widen here.
(with-temp-message (if jit-lock-stealth-verbose
(concat "JIT stealth lock "
(buffer-name)))
;; In the following code, the `sit-for' calls cause a
;; redisplay, so it's required that the
;; buffer-modified flag of a buffer that is displayed
;; has the right value---otherwise the mode line of
;; an unmodified buffer would show a `*'.
(let (start
(nice (or jit-lock-stealth-nice 0))
(point (point-min)))
(while (and (setq start
(jit-lock-stealth-chunk-start point))
;; In case sit-for runs any timers,
;; give them the expected current buffer.
(with-current-buffer outer-buffer
(sit-for nice)))
;; fontify a block.
(jit-lock-fontify-now start (+ start jit-lock-chunk-size))
;; If stealth jit-locking is done backwards, this leads to
;; excessive O(n^2) refontification. -stef
;; (when (>= jit-lock-context-unfontify-pos start)
;; (setq jit-lock-context-unfontify-pos end))
;; Wait a little if load is too high.
(when (and jit-lock-stealth-load
(> (car (load-average)) jit-lock-stealth-load))
;; In case sit-for runs any timers,
;; give them the expected current buffer.
(with-current-buffer outer-buffer
(sit-for (or jit-lock-stealth-time 30))))))))))))))
message-log-max
start)
(if (and jit-lock-stealth-load
(> (car (load-average)) jit-lock-stealth-load))
;; Wait a little if load is too high.
(setq delay jit-lock-stealth-time)
(if (buffer-live-p buffer)
(with-current-buffer buffer
(if (and jit-lock-mode
(setq start (jit-lock-stealth-chunk-start (point))))
;; Fontify one block of at most `jit-lock-chunk-size'
;; characters.
(with-temp-message (if jit-lock-stealth-verbose
(concat "JIT stealth lock "
(buffer-name)))
(jit-lock-fontify-now start
(+ start jit-lock-chunk-size))
;; Run again after `jit-lock-stealth-nice' seconds.
(setq delay (or jit-lock-stealth-nice 0)))
;; Nothing to fontify here. Remove this buffer from
;; `jit-lock-stealth-buffers' and run again immediately.
(setq jit-lock-stealth-buffers (cdr jit-lock-stealth-buffers))))
;; Buffer is no longer live. Remove it from
;; `jit-lock-stealth-buffers' and run again immediately.
(setq jit-lock-stealth-buffers (cdr jit-lock-stealth-buffers))))
;; Call us again.
(when jit-lock-stealth-buffers
(timer-set-idle-time jit-lock-stealth-repeat-timer (current-idle-time))
(timer-inc-time jit-lock-stealth-repeat-timer delay)
(timer-activate-when-idle jit-lock-stealth-repeat-timer t)))))
;;; Deferred fontification.
@ -548,6 +565,19 @@ This functions is called after Emacs has been idle for
'(fontified nil jit-lock-defer-multiline nil)))
(setq jit-lock-context-unfontify-pos (point-max)))))))))
(defvar jit-lock-start) (defvar jit-lock-end) ; Dynamically scoped variables.
(defvar jit-lock-after-change-extend-region-functions nil
"Hook that can extend the text to refontify after a change.
This is run after every buffer change. The functions are called with
the three arguments of `after-change-functions': START END OLD-LEN.
The extended region to refontify is returned indirectly by modifying
the variables `jit-lock-start' and `jit-lock-end'.
Note that extending the region this way is not strictly necessary, except
that the nature of the redisplay code tends to otherwise leave some of
the rehighlighted text displayed with the old highlight until the next
redisplay (see comment about repeated redisplay in `jit-lock-fontify-now').")
(defun jit-lock-after-change (start end old-len)
"Mark the rest of the buffer as not fontified after a change.
Installed on `after-change-functions'.
@ -557,44 +587,24 @@ This function ensures that lines following the change will be refontified
in case the syntax of those lines has changed. Refontification
will take place when text is fontified stealthily."
(when (and jit-lock-mode (not memory-full))
(let ((region (font-lock-extend-region start end old-len)))
(save-excursion
(with-buffer-prepared-for-jit-lock
;; It's important that the `fontified' property be set from the
;; beginning of the line, else font-lock will properly change the
;; text's face, but the display will have been done already and will
;; be inconsistent with the buffer's content.
;;
;; FIXME!!! (Alan Mackenzie, 2006-03-14): If start isn't at a BOL,
;; expanding the region to BOL might mis-fontify, should the BOL not
;; be at a "safe" position.
(setq start (if region
(car region)
(goto-char start)
(line-beginning-position)))
;; If we're in text that matches a multi-line font-lock pattern,
;; make sure the whole text will be redisplayed.
;; I'm not sure this is ever necessary and/or sufficient. -stef
(when (get-text-property start 'font-lock-multiline)
(setq start (or (previous-single-property-change
start 'font-lock-multiline)
(point-min))))
(if region (setq end (cdr region)))
;; Make sure we change at least one char (in case of deletions).
(setq end (min (max end (1+ start)) (point-max)))
;; Request refontification.
(put-text-property start end 'fontified nil))
;; Mark the change for deferred contextual refontification.
(when jit-lock-context-unfontify-pos
(setq jit-lock-context-unfontify-pos
;; Here we use `start' because nothing guarantees that the
;; text between start and end will be otherwise refontified:
;; usually it will be refontified by virtue of being
;; displayed, but if it's outside of any displayed area in the
;; buffer, only jit-lock-context-* will re-fontify it.
(min jit-lock-context-unfontify-pos start)))))))
(let ((jit-lock-start start)
(jit-lock-end end))
(with-buffer-prepared-for-jit-lock
(run-hook-with-args 'jit-lock-after-change-extend-region-functions
start end old-len)
;; Make sure we change at least one char (in case of deletions).
(setq jit-lock-end (min (max jit-lock-end (1+ start)) (point-max)))
;; Request refontification.
(put-text-property jit-lock-start jit-lock-end 'fontified nil))
;; Mark the change for deferred contextual refontification.
(when jit-lock-context-unfontify-pos
(setq jit-lock-context-unfontify-pos
;; Here we use `start' because nothing guarantees that the
;; text between start and end will be otherwise refontified:
;; usually it will be refontified by virtue of being
;; displayed, but if it's outside of any displayed area in the
;; buffer, only jit-lock-context-* will re-fontify it.
(min jit-lock-context-unfontify-pos jit-lock-start))))))
(provide 'jit-lock)

View file

@ -409,7 +409,7 @@ Optional arg EMPTY is message to print if no macros are defined."
(defun kmacro-repeat-on-last-key (keys)
"Process kmacro commands keys immidiately after cycling the ring."
"Process kmacro commands keys immediately after cycling the ring."
(setq keys (vconcat keys))
(let ((n (1- (length keys)))
cmd done repeat)

View file

@ -222,8 +222,8 @@ such as redefining an Emacs function."
(if aload
(fset fun (cons 'autoload aload))
(fmakunbound fun))))))
(require nil)
(t (message "Unexpected element %s in load-history" x)))
((t require) nil)
(t (message "Unexpected element %s in load-history" x)))
;; Kill local values as much as possible.
(dolist (buf (buffer-list))
(with-current-buffer buf

View file

@ -44,7 +44,7 @@
:group 'fill)
(defcustom longlines-auto-wrap t
"*Non-nil means long lines are automatically wrapped after each command.
"Non-nil means long lines are automatically wrapped after each command.
Otherwise, you can perform filling using `fill-paragraph' or
`auto-fill-mode'. In any case, the soft newlines will be removed
when the file is saved to disk."
@ -52,7 +52,7 @@ when the file is saved to disk."
:type 'boolean)
(defcustom longlines-wrap-follows-window-size nil
"*Non-nil means wrapping and filling happen at the edge of the window.
"Non-nil means wrapping and filling happen at the edge of the window.
Otherwise, `fill-column' is used, regardless of the window size. This
does not work well when the buffer is displayed in multiple windows
with differing widths."
@ -60,7 +60,7 @@ with differing widths."
:type 'boolean)
(defcustom longlines-show-hard-newlines nil
"*Non-nil means each hard newline is marked on the screen.
"Non-nil means each hard newline is marked on the screen.
\(The variable `longlines-show-effect' controls what they look like.)
You can also enable the display temporarily, using the command
`longlines-show-hard-newlines'"
@ -68,7 +68,7 @@ You can also enable the display temporarily, using the command
:type 'boolean)
(defcustom longlines-show-effect (propertize "|\n" 'face 'escape-glyph)
"*A string to display when showing hard newlines.
"A string to display when showing hard newlines.
This is used when `longlines-show-hard-newlines' is on."
:group 'longlines
:type 'string)
@ -202,7 +202,8 @@ With optional argument ARG, make the hard newlines invisible again."
"Make hard newlines between BEG and END visible."
(let* ((pmin (min beg end))
(pmax (max beg end))
(pos (text-property-not-all pmin pmax 'hard nil)))
(pos (text-property-not-all pmin pmax 'hard nil))
(inhibit-read-only t))
(while pos
(put-text-property pos (1+ pos) 'display
(copy-sequence longlines-show-effect))

View file

@ -2398,6 +2398,8 @@ and selects that window."
(global-set-key [right-fringe mouse-1] 'mouse-set-point)
(global-set-key [mouse-2] 'mouse-yank-at-click)
;; Allow yanking also when the corresponding cursor is "in the fringe".
(global-set-key [right-fringe mouse-2] [mouse-2])
(global-set-key [mouse-3] 'mouse-save-then-kill)
;; By binding these to down-going events, we let the user use the up-going

View file

@ -40,6 +40,8 @@
;; Open a new irc connection with:
;; M-x irc RET
;;; Todo:
;;; Code:
(require 'ring)
@ -140,6 +142,10 @@ number. If zero or nil, no truncating is done."
(integer :tag "Number of lines"))
:group 'rcirc)
(defcustom rcirc-show-maximum-output t
"*If non-nil, scroll buffer to keep the point at the bottom of
the window.")
(defcustom rcirc-authinfo nil
"List of authentication passwords.
Each element of the list is a list with a SERVER-REGEXP string
@ -297,6 +303,7 @@ and the cdr part is used for encoding."
(defvar rcirc-urls nil
"List of urls seen in the current buffer.")
(put 'rcirc-urls 'permanent-local t)
(defvar rcirc-keepalive-seconds 60
"Number of seconds between keepalive pings.
@ -539,7 +546,10 @@ Function is called with PROCESS, COMMAND, SENDER, ARGS and LINE.")
(defun rcirc-buffer-process (&optional buffer)
"Return the process associated with channel BUFFER.
With no argument or nil as argument, use the current buffer."
(get-buffer-process (or buffer rcirc-server-buffer)))
(get-buffer-process (if buffer
(with-current-buffer buffer
rcirc-server-buffer)
rcirc-server-buffer)))
(defun rcirc-server-name (process)
"Return PROCESS server name, given by the 001 response."
@ -601,10 +611,11 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
(defvar rcirc-nick-completions nil)
(defvar rcirc-nick-completion-start-offset nil)
(defun rcirc-complete-nick ()
"Cycle through nick completions from list of nicks in channel."
(interactive)
(if (eq last-command 'rcirc-complete-nick)
(if (eq last-command this-command)
(setq rcirc-nick-completions
(append (cdr rcirc-nick-completions)
(list (car rcirc-nick-completions))))
@ -626,9 +637,10 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
rcirc-target))))))
(let ((completion (car rcirc-nick-completions)))
(when completion
(rcirc-put-nick-channel (rcirc-buffer-process) completion rcirc-target)
(delete-region (+ rcirc-prompt-end-marker
rcirc-nick-completion-start-offset)
(point))
rcirc-nick-completion-start-offset)
(point))
(insert (concat completion
(if (= (+ rcirc-prompt-end-marker
rcirc-nick-completion-start-offset)
@ -709,7 +721,6 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
(make-local-variable 'rcirc-short-buffer-name)
(setq rcirc-short-buffer-name nil)
(make-local-variable 'rcirc-urls)
(setq rcirc-urls nil)
(setq use-hard-newlines t)
(make-local-variable 'rcirc-decode-coding-system)
@ -742,6 +753,9 @@ If NOTICEP is non-nil, send a notice instead of privmsg."
(make-local-variable 'kill-buffer-hook)
(add-hook 'kill-buffer-hook 'rcirc-kill-buffer-hook)
(make-local-variable 'window-scroll-functions)
(add-hook 'window-scroll-functions 'rcirc-scroll-to-bottom)
;; add to buffer list, and update buffer abbrevs
(when target ; skip server buffer
(let ((buffer (current-buffer)))
@ -1144,6 +1158,15 @@ is found by looking up RESPONSE in `rcirc-response-formats'."
(make-variable-buffer-local 'rcirc-last-sender)
(defvar rcirc-gray-toggle nil)
(make-variable-buffer-local 'rcirc-gray-toggle)
(defun rcirc-scroll-to-bottom (window display-start)
"Scroll window to show maximum output if `rcirc-show-maximum-output' is
non-nil."
(when rcirc-show-maximum-output
(with-selected-window window
(when (>= (window-point) rcirc-prompt-end-marker)
(recenter -1)))))
(defun rcirc-print (process sender response target text &optional activity)
"Print TEXT in the buffer associated with TARGET.
Format based on SENDER and RESPONSE. If ACTIVITY is non-nil,
@ -1240,16 +1263,19 @@ record activity."
;; record modeline activity
(when activity
(let ((nick-match
(string-match (concat "\\b"
(regexp-quote (rcirc-nick process))
"\\b")
text)))
(with-syntax-table rcirc-nick-syntax-table
(string-match (concat "\\b"
(regexp-quote (rcirc-nick process))
"\\b")
text))))
(when (if rcirc-ignore-buffer-activity-flag
;; - Always notice when our nick is mentioned
nick-match
;; - Never bother us if a dim-nick spoke
(not (and rcirc-dim-nick-regexp sender
(string-match rcirc-dim-nick-regexp sender))))
;; - unless our nick is mentioned, don't bother us
;; - with dim-nicks
(or nick-match
(not (and rcirc-dim-nick-regexp sender
(string-match rcirc-dim-nick-regexp sender)))))
(rcirc-record-activity
(current-buffer)
(when (or nick-match (and (not (rcirc-channel-p rcirc-target))
@ -1504,18 +1530,20 @@ activity. Only run if the buffer is not visible and
(lopri (car pair))
(hipri (cdr pair)))
(setq rcirc-activity-string
(if (or hipri lopri)
(concat "-"
(and hipri "[")
(rcirc-activity-string hipri)
(and hipri lopri ",")
(and lopri
(concat "("
(rcirc-activity-string lopri)
")"))
(and hipri "]")
"-")
"-[]-"))))
(cond ((or hipri lopri)
(concat "-"
(and hipri "[")
(rcirc-activity-string hipri)
(and hipri lopri ",")
(and lopri
(concat "("
(rcirc-activity-string lopri)
")"))
(and hipri "]")
"-"))
((not (null (rcirc-process-list)))
"-[]-")
(t "")))))
(defun rcirc-activity-string (buffers)
(mapconcat (lambda (b)
@ -1771,7 +1799,7 @@ nicks when no NICK is given. When listing ignored nicks, the
ones added to the list automatically are marked with an asterisk."
(interactive "sToggle ignoring of nick: ")
(when (not (string= "" nick))
(if (member nick rcirc-ignore-list)
(if (member-ignore-case nick rcirc-ignore-list)
(setq rcirc-ignore-list (delete nick rcirc-ignore-list))
(setq rcirc-ignore-list (cons nick rcirc-ignore-list))))
(rcirc-print process (rcirc-nick process) "IGNORE" target
@ -1800,6 +1828,7 @@ ones added to the list automatically are marked with an asterisk."
"://")
"www.")
(1+ (char "-a-zA-Z0-9_."))
(1+ (char "-a-zA-Z0-9_"))
(optional ":" (1+ (char "0-9"))))
(and (1+ (char "-a-zA-Z0-9_."))
(or ".com" ".net" ".org")
@ -1823,7 +1852,7 @@ ones added to the list automatically are marked with an asterisk."
(defun rcirc-browse-url-at-point (point)
"Send URL at point to `browse-url'."
(interactive "d")
(let ((beg (previous-single-property-change point 'mouse-face))
(let ((beg (previous-single-property-change (1+ point) 'mouse-face))
(end (next-single-property-change point 'mouse-face)))
(browse-url (buffer-substring-no-properties beg end))))

View file

@ -1,120 +0,0 @@
;;; zone-mode.el --- major mode for editing DNS zone files
;; Copyright (C) 1998, 2002, 2003, 2004, 2005,
;; 2006 Free Software Foundation, Inc.
;; Author: John Heidemann <johnh@isi.edu>
;; Keywords: DNS, languages
;; 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., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;;;
;;; See the comments in ``define-derived-mode zone-mode''
;;; (the last function in this file)
;;; for what this mode is and how to use it automatically.
;;;
;;;
;;; Credits:
;;; Zone-mode was written by John Heidemann <johnh@isi.edu>,
;;; with bug fixes from Simon Leinen <simon@limmat.switch.ch>.
;;;
;;; Code:
(defun zone-mode-update-serial ()
"Update the serial number in a zone."
(interactive)
(save-excursion
(goto-char (point-min))
(while (re-search-forward "\\b\\([0-9]+\\)\\([0-9][0-9]\\)\\([ \t]+;[ \t]+[Ss]erial\\)" (point-max) t)
(let* ((old-date (match-string 1))
(old-seq (match-string 2))
(old-seq-num (string-to-number (match-string 2)))
(old-flag (match-string 3))
(cur-date (format-time-string "%Y%m%d"))
(new-seq
(cond
((not (string= old-date cur-date))
"00") ;; reset sequence number
((>= old-seq-num 99)
(error "Serial number's sequence cannot increment beyond 99"))
(t
(format "%02d" (1+ old-seq-num)))))
(old-serial (concat old-date old-seq))
(new-serial (concat cur-date new-seq)))
(if (string-lessp new-serial old-serial)
(error "Serial numbers want to move backwards from %s to %s" old-serial new-serial)
(replace-match (concat cur-date new-seq old-flag) t t))))))
;;;###autoload
(defun zone-mode-update-serial-hook ()
"Update the serial number in a zone if the file was modified."
(interactive)
(if (buffer-modified-p (current-buffer))
(zone-mode-update-serial))
nil ;; so we can run from write-file-hooks
)
(defvar zone-mode-syntax-table nil
"Zone-mode's syntax table.")
(defun zone-mode-load-time-setup ()
"Initialize `zone-mode' stuff."
(setq zone-mode-syntax-table (make-syntax-table))
(modify-syntax-entry ?\; "<" zone-mode-syntax-table)
(modify-syntax-entry ?\n ">" zone-mode-syntax-table))
;;;###autoload
(define-derived-mode zone-mode fundamental-mode "zone"
"A mode for editing DNS zone files.
Zone-mode does two things:
- automatically update the serial number for a zone
when saving the file
- fontification"
(add-hook 'write-file-functions 'zone-mode-update-serial-hook nil t)
(if (null zone-mode-syntax-table)
(zone-mode-load-time-setup)) ;; should have been run at load-time
;; font-lock support:
(set-syntax-table zone-mode-syntax-table)
(make-local-variable 'comment-start)
(setq comment-start ";")
(make-local-variable 'comment-start-skip)
;; Look within the line for a ; following an even number of backslashes
;; after either a non-backslash or the line beginning.
(setq comment-start-skip "\\(\\(^\\|[^\\\\\n]\\)\\(\\\\\\\\\\)*\\);+[ \t]*")
(make-local-variable 'comment-column)
(setq comment-column 40)
(make-local-variable 'font-lock-defaults)
(setq font-lock-defaults
'(nil nil nil nil beginning-of-line)))
(zone-mode-load-time-setup)
(provide 'zone-mode)
;;; arch-tag: 6a2940ef-fd4f-4de7-b979-b027b09821fe
;;; zone-mode.el ends here

View file

@ -299,7 +299,7 @@ the variables are properly set."
(substring comment-start 1)))
;; Hasn't been necessary yet.
;; (unless (string-match comment-start-skip comment-continue)
;; (kill-local-variable 'comment-continue))
;; (kill-local-variable 'comment-continue))
)
;; comment-skip regexps
(unless (and comment-start-skip
@ -599,11 +599,16 @@ If CONTINUE is non-nil, use the `comment-continue' markers if any."
(if (and other (<= other max) (> other min))
;; There is a comment and it's in the range: bingo.
(setq indent other))))))))
;; Update INDENT to leave at least one space
;; after other nonwhite text on the line.
(save-excursion
(skip-chars-backward " \t")
(unless (bolp)
(setq indent (max indent (1+ (current-column))))))
;; If that's different from comment's current position, change it.
(unless (= (current-column) indent)
;; If that's different from current, change it.
(delete-region (point) (progn (skip-chars-backward " \t") (point)))
(indent-to (if (bolp) indent
(max indent (1+ (current-column)))))))
(indent-to indent)))
(goto-char cpos)
(set-marker cpos nil))))
@ -764,7 +769,7 @@ comment markers."
(box-equal nil)) ;Whether we might be using `=' for boxes.
(save-restriction
(narrow-to-region spt ept)
;; Remove the comment-start.
(goto-char ipt)
(skip-syntax-backward " ")
@ -793,7 +798,7 @@ comment markers."
;; If there's something left but it doesn't look like
;; a comment-start any more, just remove it.
(delete-region (point-min) (point))))
;; Remove the end-comment (and leading padding and such).
(goto-char (point-max)) (comment-enter-backward)
;; Check for special `=' used sometimes in comment-box.
@ -1057,11 +1062,13 @@ The strings used as comment starts are built from
lines
(nth 3 style))))))
;;;###autoload
(defun comment-box (beg end &optional arg)
"Comment out the BEG .. END region, putting it inside a box.
The numeric prefix ARG specifies how many characters to add to begin- and
end- comment markers additionally to what `comment-add' already specifies."
(interactive "*r\np")
(comment-normalize-vars)
(let ((comment-style (if (cadr (assoc comment-style comment-styles))
'box-multi 'box)))
(comment-region beg end (+ comment-add arg))))

View file

@ -285,7 +285,8 @@ The remaining KEYS are passed directly to `cvs-create-fileinfo'."
(and
(cvs-or
(cvs-match "warning: \\(.*\\) is not (any longer) pertinent$" (file 1))
(cvs-match "\\(.*\\) is no longer in the repository$" (file 1)))
(cvs-match "`\\(.*\\)' is no longer in the repository$" (file 1))
(cvs-match "\\(.*\\) is no longer in the repository$" (file 1)))
(cvs-parsed-fileinfo
(if dont-change-disc '(NEED-UPDATE . REMOVED) 'DEAD) file))

View file

@ -126,7 +126,9 @@ with `create-file-buffer' and will probably get another name than NAME.
In such a case, the search for another buffer with the same name doesn't
use the buffer name but the buffer's `list-buffers-directory' variable.
If NOREUSE is non-nil, always return a new buffer."
(or (and (not (file-name-absolute-p name)) (get-buffer-create name))
(or (and (not (file-name-absolute-p name))
(if noreuse (generate-new-buffer name)
(get-buffer-create name)))
(unless noreuse
(dolist (buf (buffer-list))
(with-current-buffer buf

View file

@ -2287,7 +2287,7 @@ this file, or a list of arguments to send to the program."
(interactive "DNew repository: ")
(if (or (file-directory-p (expand-file-name "CVSROOT" newroot))
(y-or-n-p (concat "Warning: no CVSROOT found inside repository."
" Change cvs-cvsroot anyhow?")))
" Change cvs-cvsroot anyhow? ")))
(setq cvs-cvsroot newroot)))
;;;;

View file

@ -115,6 +115,7 @@ address for root variables.")
(defvar gdb-main-file nil "Source file from which program execution begins.")
(defvar gud-old-arrow nil)
(defvar gdb-overlay-arrow-position nil)
(defvar gdb-stack-position nil)
(defvar gdb-server-prefix nil)
(defvar gdb-flush-pending-output nil)
(defvar gdb-location-alist nil
@ -314,14 +315,14 @@ Also display the main routine in the disassembly buffer if present."
"Nil means just pop up the GUD buffer unless `gdb-show-main' is t.
In this case it starts with two windows: one displaying the GUD
buffer and the other with the source file with the main routine
of the inferior. Non-nil means display the layout shown for
of the debugged program. Non-nil means display the layout shown for
`gdba'."
:type 'boolean
:group 'gud
:version "22.1")
(defcustom gdb-use-separate-io-buffer nil
"Non-nil means display output from the inferior in a separate buffer."
"Non-nil means display output from the debugged program in a separate buffer."
:type 'boolean
:group 'gud
:version "22.1")
@ -353,14 +354,14 @@ With arg, display additional buffers iff arg is positive."
(error nil))))
(defun gdb-use-separate-io-buffer (arg)
"Toggle separate IO for inferior.
"Toggle separate IO for debugged program.
With arg, use separate IO iff arg is positive."
(interactive "P")
(setq gdb-use-separate-io-buffer
(if (null arg)
(not gdb-use-separate-io-buffer)
(> (prefix-numeric-value arg) 0)))
(message (format "Separate inferior IO %sabled"
(message (format "Separate IO %sabled"
(if gdb-use-separate-io-buffer "en" "dis")))
(if (and gud-comint-buffer
(buffer-name gud-comint-buffer))
@ -383,8 +384,7 @@ With arg, use separate IO iff arg is positive."
(list t nil) nil "-c"
(concat gdb-cpp-define-alist-program " "
gdb-cpp-define-alist-flags)))))
(define-list (split-string output "\n" t))
(name))
(define-list (split-string output "\n" t)) (name))
(setq gdb-define-alist nil)
(dolist (define define-list)
(setq name (nth 1 (split-string define "[( ]")))
@ -1030,7 +1030,7 @@ The key should be one of the cars in `gdb-buffer-rules-assoc'."
(minibuffer . nil)))
(defun gdb-frame-separate-io-buffer ()
"Display IO of inferior in a new frame."
"Display IO of debugged program in a new frame."
(interactive)
(if gdb-use-separate-io-buffer
(let ((special-display-regexps (append special-display-regexps '(".*")))
@ -1290,12 +1290,14 @@ not GDB."
(progn
(setq gud-running t)
(setq gdb-inferior-status "running")
(setq gdb-signalled nil)
(gdb-force-mode-line-update
(propertize gdb-inferior-status 'face font-lock-type-face))
(gdb-remove-text-properties)
(setq gud-old-arrow gud-overlay-arrow-position)
(setq gud-overlay-arrow-position nil)
(setq gdb-overlay-arrow-position nil)
(setq gdb-stack-position nil)
(if gdb-use-separate-io-buffer
(setq gdb-output-sink 'inferior))))
(t
@ -1330,6 +1332,7 @@ directives."
(setq gdb-active-process nil)
(setq gud-overlay-arrow-position nil)
(setq gdb-overlay-arrow-position nil)
(setq gdb-stack-position nil)
(setq gud-old-arrow nil)
(setq gdb-inferior-status "exited")
(gdb-force-mode-line-update
@ -1358,6 +1361,23 @@ directives."
:type 'boolean
:version "22.1")
(defcustom gdb-find-source-frame nil
"Non-nil means try to find a source frame further up stack e.g after signal."
:group 'gud
:type 'boolean
:version "22.1")
(defun gdb-find-source-frame (arg)
"Toggle trying to find a source frame further up stack.
With arg, look for a source frame further up stack iff arg is positive."
(interactive "P")
(setq gdb-find-source-frame
(if (null arg)
(not gdb-find-source-frame)
(> (prefix-numeric-value arg) 0)))
(message (format "Looking for source frame %sabled"
(if gdb-find-source-frame "en" "dis"))))
(defun gdb-stopped (ignored)
"An annotation handler for `stopped'.
It is just like `gdb-stopping', except that if we already set the output
@ -1371,14 +1391,15 @@ sink to `user' in `gdb-stopping', that is fine."
(if gdb-same-frame
(gdb-display-gdb-buffer)
(gdb-frame-gdb-buffer))
(if gdb-find-source-frame
;;Try to find source further up stack e.g after signal.
(setq gdb-look-up-stack
(if (gdb-get-buffer 'gdb-stack-buffer)
'keep
(progn
(gdb-get-buffer-create 'gdb-stack-buffer)
(gdb-invalidate-frames)
'delete)))))
(setq gdb-look-up-stack
(if (gdb-get-buffer 'gdb-stack-buffer)
'keep
(progn
(gdb-get-buffer-create 'gdb-stack-buffer)
(gdb-invalidate-frames)
'delete))))))
(unless (member gdb-inferior-status '("exited" "signal"))
(setq gdb-inferior-status "stopped")
(gdb-force-mode-line-update
@ -1754,52 +1775,69 @@ static char *magick[] = {
(gdb-remove-breakpoint-icons (point-min) (point-max)))))
(with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
(save-excursion
(let ((buffer-read-only nil))
(goto-char (point-min))
(while (< (point) (- (point-max) 1))
(forward-line 1)
(if (looking-at "[^\t].*?breakpoint")
(if (looking-at gdb-breakpoint-regexp)
(progn
(looking-at "\\([0-9]+\\)\\s-+\\S-+\\s-+\\S-+\\s-+\\(.\\)")
(setq bptno (match-string 1))
(setq flag (char-after (match-beginning 2)))
(beginning-of-line)
(if (re-search-forward " in \\(.*\\) at\\s-+" nil t)
(progn
(let ((buffer-read-only nil))
(add-text-properties (match-beginning 1) (match-end 1)
'(face font-lock-function-name-face)))
(looking-at "\\(\\S-+\\):\\([0-9]+\\)")
(let ((line (match-string 2)) (buffer-read-only nil)
(file (match-string 1)))
(add-text-properties (line-beginning-position)
(line-end-position)
'(mouse-face highlight
help-echo "mouse-2, RET: visit breakpoint"))
(unless (file-exists-p file)
(setq file (cdr (assoc bptno gdb-location-alist))))
(if (and file
(not (string-equal file "File not found")))
(with-current-buffer
(find-file-noselect file 'nowarn)
(set (make-local-variable 'gud-minor-mode)
'gdba)
(set (make-local-variable 'tool-bar-map)
gud-tool-bar-map)
;; Only want one breakpoint icon at each
;; location.
(save-excursion
(goto-line (string-to-number line))
(gdb-put-breakpoint-icon (eq flag ?y) bptno)))
(gdb-enqueue-input
(list
(concat gdb-server-prefix "list "
(match-string-no-properties 1) ":1\n")
'ignore))
(gdb-enqueue-input
(list (concat gdb-server-prefix "info source\n")
`(lambda () (gdb-get-location
,bptno ,line ,flag))))))))))
(end-of-line)))))
(add-text-properties
(match-beginning 2) (match-end 2)
(if (eq flag ?y)
'(face font-lock-warning-face)
'(face font-lock-type-face)))
(let ((bl (point))
(el (line-end-position)))
(if (re-search-forward " in \\(.*\\) at\\s-+" el t)
(progn
(add-text-properties
(match-beginning 1) (match-end 1)
'(face font-lock-function-name-face))
(looking-at "\\(\\S-+\\):\\([0-9]+\\)")
(let ((line (match-string 2))
(file (match-string 1)))
(add-text-properties bl el
'(mouse-face highlight
help-echo "mouse-2, RET: visit breakpoint"))
(unless (file-exists-p file)
(setq file (cdr (assoc bptno gdb-location-alist))))
(if (and file
(not (string-equal file "File not found")))
(with-current-buffer
(find-file-noselect file 'nowarn)
(set (make-local-variable 'gud-minor-mode)
'gdba)
(set (make-local-variable 'tool-bar-map)
gud-tool-bar-map)
;; Only want one breakpoint icon at each
;; location.
(save-excursion
(goto-line (string-to-number line))
(gdb-put-breakpoint-icon (eq flag ?y) bptno)))
(gdb-enqueue-input
(list
(concat gdb-server-prefix "list "
(match-string-no-properties 1) ":1\n")
'ignore))
(gdb-enqueue-input
(list (concat gdb-server-prefix "info source\n")
`(lambda () (gdb-get-location
,bptno ,line ,flag)))))))
(if (re-search-forward
"<\\(\\(\\sw\\|[_.]\\)+\\)\\(\\+[0-9]+\\)?>"
el t)
(add-text-properties
(match-beginning 1) (match-end 1)
'(face font-lock-function-name-face))
(end-of-line)
(re-search-backward "\\s-\\(\\S-*\\)"
bl t)
(add-text-properties
(match-beginning 1) (match-end 1)
'(face font-lock-variable-name-face)))))))
(end-of-line))))))
(if (gdb-get-buffer 'gdb-assembler-buffer) (gdb-assembler-custom)))
(defun gdb-mouse-set-clear-breakpoint (event)
@ -2002,8 +2040,14 @@ static char *magick[] = {
(goto-char bl)
(when (looking-at "^#\\([0-9]+\\)")
(when (string-equal (match-string 1) gdb-frame-number)
(put-text-property bl (+ bl 4)
'face '(:inverse-video t)))
(if (> (car (window-fringes)) 0)
(progn
(or gdb-stack-position
(setq gdb-stack-position (make-marker)))
(set-marker gdb-stack-position (point)))
(set-marker gdb-stack-position nil)
(put-text-property bl (+ bl 4)
'face '(:inverse-video t))))
(when (re-search-forward
(concat
(if (string-equal (match-string 1) "0") "" " in ")
@ -2036,9 +2080,10 @@ static char *magick[] = {
(setq gdb-look-up-stack nil))
(defun gdb-set-hollow ()
(with-current-buffer (gud-find-file (car gud-last-last-frame))
(setq fringe-indicator-alist
'((overlay-arrow . hollow-right-triangle)))))
(if gud-last-last-frame
(with-current-buffer (gud-find-file (car gud-last-last-frame))
(setq fringe-indicator-alist
'((overlay-arrow . hollow-right-triangle))))))
(defun gdb-stack-buffer-name ()
(with-current-buffer gud-comint-buffer
@ -2073,6 +2118,8 @@ static char *magick[] = {
(kill-all-local-variables)
(setq major-mode 'gdb-frames-mode)
(setq mode-name "Frames")
(setq gdb-stack-position nil)
(add-to-list 'overlay-arrow-variable-list 'gdb-stack-position)
(setq buffer-read-only t)
(use-local-map gdb-frames-mode-map)
(run-mode-hooks 'gdb-frames-mode-hook)
@ -2524,18 +2571,18 @@ corresponding to the mode line clicked."
'local-map
(gdb-make-header-line-mouse-map
'mouse-1
#'(lambda () (interactive)
(let ((gdb-memory-address
;; Let GDB do the arithmetic.
(concat
gdb-memory-address " - "
(number-to-string
(* gdb-memory-repeat-count
(cond ((string= gdb-memory-unit "b") 1)
((string= gdb-memory-unit "h") 2)
((string= gdb-memory-unit "w") 4)
((string= gdb-memory-unit "g") 8)))))))
(gdb-invalidate-memory)))))
(lambda () (interactive)
(let ((gdb-memory-address
;; Let GDB do the arithmetic.
(concat
gdb-memory-address " - "
(number-to-string
(* gdb-memory-repeat-count
(cond ((string= gdb-memory-unit "b") 1)
((string= gdb-memory-unit "h") 2)
((string= gdb-memory-unit "w") 4)
((string= gdb-memory-unit "g") 8)))))))
(gdb-invalidate-memory)))))
"|"
(propertize "+"
'face font-lock-warning-face
@ -2543,9 +2590,9 @@ corresponding to the mode line clicked."
'mouse-face 'mode-line-highlight
'local-map (gdb-make-header-line-mouse-map
'mouse-1
#'(lambda () (interactive)
(let ((gdb-memory-address nil))
(gdb-invalidate-memory)))))
(lambda () (interactive)
(let ((gdb-memory-address nil))
(gdb-invalidate-memory)))))
"]: "
(propertize gdb-memory-address
'face font-lock-warning-face
@ -2592,8 +2639,11 @@ corresponding to the mode line clicked."
(defun gdb-frame-memory-buffer ()
"Display memory contents in a new frame."
(interactive)
(let ((special-display-regexps (append special-display-regexps '(".*")))
(special-display-frame-alist gdb-frame-parameters))
(let* ((special-display-regexps (append special-display-regexps '(".*")))
(special-display-frame-alist
(cons '(left-fringe . 0)
(cons '(right-fringe . 0)
(cons '(width . 83) gdb-frame-parameters)))))
(display-buffer (gdb-get-buffer-create 'gdb-memory-buffer))))
@ -2610,13 +2660,14 @@ corresponding to the mode line clicked."
(defvar gdb-locals-watch-map
(let ((map (make-sparse-keymap)))
(define-key map "\r" '(lambda () (interactive)
(beginning-of-line)
(gud-watch)))
(define-key map [mouse-2] '(lambda (event) (interactive "e")
(mouse-set-point event)
(beginning-of-line)
(gud-watch)))
(suppress-keymap map)
(define-key map "\r" (lambda () (interactive)
(beginning-of-line)
(gud-watch)))
(define-key map [mouse-2] (lambda (event) (interactive "e")
(mouse-set-point event)
(beginning-of-line)
(gud-watch)))
map)
"Keymap to create watch expression of a complex data type local variable.")
@ -2739,7 +2790,7 @@ corresponding to the mode line clicked."
(define-key menu [gdb] '("Gdb" . gdb-display-gdb-buffer))
(define-key menu [threads] '("Threads" . gdb-display-threads-buffer))
(define-key menu [inferior]
'(menu-item "Inferior IO" gdb-display-separate-io-buffer
'(menu-item "Separate IO" gdb-display-separate-io-buffer
:enable gdb-use-separate-io-buffer))
(define-key menu [memory] '("Memory" . gdb-display-memory-buffer))
(define-key menu [registers] '("Registers" . gdb-display-registers-buffer))
@ -2758,7 +2809,7 @@ corresponding to the mode line clicked."
(define-key menu [threads] '("Threads" . gdb-frame-threads-buffer))
(define-key menu [memory] '("Memory" . gdb-frame-memory-buffer))
(define-key menu [inferior]
'(menu-item "Inferior IO" gdb-frame-separate-io-buffer
'(menu-item "Separate IO" gdb-frame-separate-io-buffer
:enable gdb-use-separate-io-buffer))
(define-key menu [registers] '("Registers" . gdb-frame-registers-buffer))
(define-key menu [disassembly] '("Disassembly" . gdb-frame-assembler-buffer))
@ -2771,10 +2822,15 @@ corresponding to the mode line clicked."
(define-key gud-menu-map [ui]
`(menu-item (if (eq gud-minor-mode 'gdba) "GDB-UI" "GDB-MI")
,menu :visible (memq gud-minor-mode '(gdbmi gdba))))
(define-key menu [gdb-use-separate-io]
'(menu-item "Separate inferior IO" gdb-use-separate-io-buffer
(define-key menu [gdb-find-source-frame]
'(menu-item "Look For Source Frame" gdb-find-source-frame
:visible (eq gud-minor-mode 'gdba)
:help "Toggle separate IO for inferior."
:help "Toggle look for source frame."
:button (:toggle . gdb-find-source-frame)))
(define-key menu [gdb-use-separate-io]
'(menu-item "Separate IO" gdb-use-separate-io-buffer
:visible (eq gud-minor-mode 'gdba)
:help "Toggle separate IO for debugged program."
:button (:toggle . gdb-use-separate-io-buffer)))
(define-key menu [gdb-many-windows]
'(menu-item "Display Other Windows" gdb-many-windows
@ -2871,12 +2927,13 @@ Kills the gdb buffers, and resets variables and the source buffers."
(setq gud-minor-mode nil)
(kill-local-variable 'tool-bar-map)
(kill-local-variable 'gdb-define-alist))))))
(when (markerp gdb-overlay-arrow-position)
(move-marker gdb-overlay-arrow-position nil)
(setq gdb-overlay-arrow-position nil))
(setq gdb-overlay-arrow-position nil)
(setq overlay-arrow-variable-list
(delq 'gdb-overlay-arrow-position overlay-arrow-variable-list))
(setq fringe-indicator-alist '((overlay-arrow . right-triangle)))
(setq gdb-stack-position nil)
(setq overlay-arrow-variable-list
(delq 'gdb-stack-position overlay-arrow-variable-list))
(if (boundp 'speedbar-frame) (speedbar-timer-fn))
(setq gud-running nil)
(setq gdb-active-process nil)
@ -3098,8 +3155,7 @@ BUFFER nil or omitted means use the current buffer."
'((overlay-arrow . hollow-right-triangle))))
(or gdb-overlay-arrow-position
(setq gdb-overlay-arrow-position (make-marker)))
(set-marker gdb-overlay-arrow-position
(point) (current-buffer))))))
(set-marker gdb-overlay-arrow-position (point))))))
;; remove all breakpoint-icons in assembler buffer before updating.
(gdb-remove-breakpoint-icons (point-min) (point-max))))
(with-current-buffer (gdb-get-buffer 'gdb-breakpoints-buffer)
@ -3460,10 +3516,32 @@ in_scope=\"\\(.*?\\)\".*?}")
(defvar gdb-locals-watch-map-1
(let ((map (make-sparse-keymap)))
(suppress-keymap map)
(define-key map "\r" 'gud-watch)
(define-key map [mouse-2] 'gud-watch)
map)
"Keymap to create watch expression of a complex data type local variable.")
(defvar gdb-edit-locals-map-1
(let ((map (make-sparse-keymap)))
(suppress-keymap map)
(define-key map "\r" 'gdb-edit-locals-value)
(define-key map [mouse-2] 'gdb-edit-locals-value)
map)
"Keymap to edit value of a simple data type local variable.")
(defun gdb-edit-locals-value (&optional event)
"Assign a value to a variable displayed in the locals buffer."
(interactive (list last-input-event))
(save-excursion
(if event (posn-set-point (event-end event)))
(beginning-of-line)
(let* ((var (current-word))
(value (read-string (format "New value (%s): " var))))
(gdb-enqueue-input
(list (concat gdb-server-prefix"set variable " var " = " value "\n")
'ignore)))))
;; Dont display values of arrays or structures.
;; These can be expanded using gud-watch.
(defun gdb-stack-list-locals-handler ()
@ -3491,20 +3569,26 @@ in_scope=\"\\(.*?\\)\".*?}")
(let* ((window (get-buffer-window buf 0))
(start (window-start window))
(p (window-point window))
(buffer-read-only nil))
(buffer-read-only nil) (name) (value))
(erase-buffer)
(dolist (local locals-list)
(setq name (car local))
(if (or (not (nth 2 local))
(string-match "^\\0x" (nth 2 local)))
(setq value (nth 2 local))
(if (or (not value)
(string-match "^\\0x" value))
(add-text-properties 0 (length name)
`(mouse-face highlight
help-echo "mouse-2: create watch expression"
local-map ,gdb-locals-watch-map-1)
name))
name)
(add-text-properties 0 (length value)
`(mouse-face highlight
help-echo "mouse-2: edit value"
local-map ,gdb-edit-locals-map-1)
value))
(insert
(concat name "\t" (nth 1 local)
"\t" (nth 2 local) "\n")))
"\t" value "\n")))
(set-window-start window start)
(set-window-point window p))))))))

View file

@ -335,7 +335,7 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
(defvar grep-find-use-xargs nil
"Whether \\[grep-find] uses the `xargs' utility by default.
If nil, it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
If `exec', it uses `find -exec'; if `gnu', it uses `find -print0' and `xargs -0';
if not nil and not `gnu', it uses `find -print' and `xargs'.
This variable's value takes effect when `grep-compute-defaults' is called.")
@ -419,21 +419,29 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(format "%s <C> %s <R> <F>" grep-program grep-options)))
(unless grep-find-use-xargs
(setq grep-find-use-xargs
(if (and
(grep-probe find-program `(nil nil nil ,null-device "-print0"))
(grep-probe "xargs" `(nil nil nil "-0" "-e" "echo")))
'gnu)))
(cond
((and
(grep-probe find-program `(nil nil nil ,null-device "-print0"))
(grep-probe "xargs" `(nil nil nil "-0" "-e" "echo")))
'gnu)
(t
'exec))))
(unless grep-find-command
(setq grep-find-command
(cond ((eq grep-find-use-xargs 'gnu)
(format "%s . -type f -print0 | xargs -0 -e %s"
find-program grep-command))
(grep-find-use-xargs
((eq grep-find-use-xargs 'exec)
(let ((cmd0 (format "%s . -type f -exec %s"
find-program grep-command)))
(cons
(format "%s {} %s %s"
cmd0 null-device
(shell-quote-argument ";"))
(1+ (length cmd0)))))
(t
(format "%s . -type f -print | xargs %s"
find-program grep-command))
(t (cons (format "%s . -type f -exec %s {} %s \\;"
find-program grep-command null-device)
(+ 22 (length grep-command)))))))
find-program grep-command)))))
(unless grep-find-template
(setq grep-find-template
(let ((gcmd (format "%s <C> %s <R>"
@ -441,11 +449,13 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(cond ((eq grep-find-use-xargs 'gnu)
(format "%s . <X> -type f <F> -print0 | xargs -0 -e %s"
find-program gcmd))
(grep-find-use-xargs
((eq grep-find-use-xargs 'exec)
(format "%s . <X> -type f <F> -exec %s {} %s %s"
find-program gcmd null-device
(shell-quote-argument ";")))
(t
(format "%s . <X> -type f <F> -print | xargs %s"
find-program gcmd))
(t (format "%s . <X> -type f <F> -exec %s {} %s \\;"
find-program gcmd null-device))))))))
find-program gcmd))))))))
(unless (or (not grep-highlight-matches) (eq grep-highlight-matches t))
(setq grep-highlight-matches
(with-temp-buffer
@ -455,34 +465,48 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
(search-forward "--color" nil t))
t)))))
(defun grep-tag-default ()
(or (and transient-mark-mode mark-active
(/= (point) (mark))
(buffer-substring-no-properties (point) (mark)))
(funcall (or find-tag-default-function
(get major-mode 'find-tag-default-function)
'find-tag-default))
""))
(defun grep-default-command ()
(let ((tag-default
(shell-quote-argument
(or (funcall (or find-tag-default-function
(get major-mode 'find-tag-default-function)
'find-tag-default))
"")))
"Compute the default grep command for C-u M-x grep to offer."
(let ((tag-default (shell-quote-argument (grep-tag-default)))
;; This a regexp to match single shell arguments.
;; Could someone please add comments explaining it?
(sh-arg-re "\\(\\(?:\"\\(?:[^\"]\\|\\\\\"\\)+\"\\|'[^']+'\\|[^\"' \t\n]\\)+\\)")
(grep-default (or (car grep-history) grep-command)))
;; Replace the thing matching for with that around cursor.
;; In the default command, find the arg that specifies the pattern.
(when (or (string-match
(concat "[^ ]+\\s +\\(?:-[^ ]+\\s +\\)*"
sh-arg-re "\\(\\s +\\(\\S +\\)\\)?")
grep-default)
;; If the string is not yet complete.
(string-match "\\(\\)\\'" grep-default))
(unless (or (not (stringp buffer-file-name))
(when (match-beginning 2)
(save-match-data
(string-match
(wildcard-to-regexp
(file-name-nondirectory
(match-string 3 grep-default)))
(file-name-nondirectory buffer-file-name)))))
(setq grep-default (concat (substring grep-default
0 (match-beginning 2))
" *."
(file-name-extension buffer-file-name))))
;; Maybe we will replace the pattern with the default tag.
;; But first, maybe replace the file name pattern.
(condition-case nil
(unless (or (not (stringp buffer-file-name))
(when (match-beginning 2)
(save-match-data
(string-match
(wildcard-to-regexp
(file-name-nondirectory
(match-string 3 grep-default)))
(file-name-nondirectory buffer-file-name)))))
(setq grep-default (concat (substring grep-default
0 (match-beginning 2))
" *."
(file-name-extension buffer-file-name))))
;; In case wildcard-to-regexp gets an error
;; from invalid data.
(error nil))
;; Now replace the pattern with the default tag.
(replace-match tag-default t t grep-default 1))))
@ -590,15 +614,11 @@ substitution string. Note dynamic scoping of variables.")
(defun grep-read-regexp ()
"Read regexp arg for interactive grep."
(let ((default
(or (funcall (or find-tag-default-function
(get major-mode 'find-tag-default-function)
'find-tag-default))
"")))
(let ((default (grep-tag-default)))
(read-string
(concat "Search for"
(if (and default (> (length default) 0))
(format " (default %s): " default) ": "))
(format " (default \"%s\"): " default) ": "))
nil 'grep-regexp-history default)))
(defun grep-read-files (regexp)
@ -620,7 +640,9 @@ substitution string. Note dynamic scoping of variables.")
(cdr alias)))
(and fn
(let ((ext (file-name-extension fn)))
(and ext (concat "*." ext))))))
(and ext (concat "*." ext))))
(car grep-files-history)
(car (car grep-files-aliases))))
(files (read-string
(concat "Search for \"" regexp
"\" in files"
@ -724,18 +746,26 @@ This command shares argument histories with \\[lgrep] and \\[grep-find]."
(let ((command (grep-expand-template
grep-find-template
regexp
(concat "\\( -name "
(concat (shell-quote-argument "(")
" -name "
(mapconcat #'shell-quote-argument
(split-string files)
" -o -name ")
" \\)")
" "
(shell-quote-argument ")"))
dir
(and grep-find-ignored-directories
(concat "\\( -path '*/"
(mapconcat #'identity
(concat (shell-quote-argument "(")
;; we should use shell-quote-argument here
" -path "
(mapconcat #'(lambda (dir)
(shell-quote-argument
(concat "*/" dir)))
grep-find-ignored-directories
"' -o -path '*/")
"' \\) -prune -o ")))))
" -o -path ")
" "
(shell-quote-argument ")")
" -prune -o ")))))
(when command
(if current-prefix-arg
(setq command

View file

@ -3180,7 +3180,15 @@ class of the file (using s to separate nested class ids)."
(defvar gdb-script-font-lock-syntactic-keywords
'(("^document\\s-.*\\(\n\\)" (1 "< b"))
;; It would be best to change the \n in front, but it's more difficult.
("^en\\(d\\)\\>" (1 "> b"))))
("^end\\>"
(0 (progn
(unless (eq (match-beginning 0) (point-min))
(put-text-property (1- (match-beginning 0)) (match-beginning 0)
'syntax-table (eval-when-compile
(string-to-syntax "> b")))
(put-text-property (1- (match-beginning 0)) (match-end 0)
'font-lock-multiline t)
nil))))))
(defun gdb-script-font-lock-syntactic-face (state)
(cond

File diff suppressed because it is too large Load diff

View file

@ -986,7 +986,9 @@ subshells can nest."
;; FIXME: This can (and often does) match multiple lines, yet it makes no
;; effort to handle multiline cases correctly, so it ends up being
;; rather flakey.
(when (re-search-forward "\"\\(?:\\(?:.\\|\n\\)*?[^\\]\\(?:\\\\\\\\\\)*\\)??\\(\\$(\\|`\\)" limit t)
(when (and (re-search-forward "\"\\(?:\\(?:.\\|\n\\)*?[^\\]\\(?:\\\\\\\\\\)*\\)??\\(\\$(\\|`\\)" limit t)
;; Make sure the " we matched is an opening quote.
(eq ?\" (nth 3 (syntax-ppss))))
;; bingo we have a $( or a ` inside a ""
(let ((char (char-after (point)))
(continue t)
@ -1081,9 +1083,6 @@ This is used to flag quote characters in subshell constructs inside strings
("\\(\\\\\\)'" 1 ,sh-st-punc)
;; Make sure $@ and @? are correctly recognized as sexps.
("\\$\\([?@]\\)" 1 ,sh-st-symbol)
;; highlight (possibly nested) subshells inside "" quoted regions correctly.
(sh-quoted-subshell
(1 (sh-apply-quoted-subshell) t t))
;; Find HEREDOC starters and add a corresponding rule for the ender.
(sh-font-lock-here-doc
(2 (sh-font-lock-open-heredoc
@ -1093,7 +1092,11 @@ This is used to flag quote characters in subshell constructs inside strings
(and (match-beginning 3) (/= (match-beginning 3) (match-end 3))))
nil t))
;; Distinguish the special close-paren in `case'.
(")" 0 (sh-font-lock-paren (match-beginning 0)))))
(")" 0 (sh-font-lock-paren (match-beginning 0)))
;; highlight (possibly nested) subshells inside "" quoted regions correctly.
;; This should be at the very end because it uses syntax-ppss.
(sh-quoted-subshell
(1 (sh-apply-quoted-subshell) t t))))
(defun sh-font-lock-syntactic-face-function (state)
(let ((q (nth 3 state)))

View file

@ -14112,8 +14112,8 @@ if required."
(defun vhdl-speedbar-display-directory (directory depth &optional rescan)
"Display directory and hierarchy information in speedbar."
(setq vhdl-speedbar-show-projects nil)
(setq speedbar-ignored-path-regexp
(speedbar-extension-list-to-regex speedbar-ignored-path-expressions))
(setq speedbar-ignored-directory-regexp
(speedbar-extension-list-to-regex speedbar-ignored-directory-expressions))
(setq directory (abbreviate-file-name (file-name-as-directory directory)))
(setq speedbar-last-selected-file nil)
(speedbar-with-writable
@ -14133,7 +14133,7 @@ if required."
(defun vhdl-speedbar-display-projects (project depth &optional rescan)
"Display projects and hierarchy information in speedbar."
(setq vhdl-speedbar-show-projects t)
(setq speedbar-ignored-path-regexp ".")
(setq speedbar-ignored-directory-regexp ".")
(setq speedbar-last-selected-file nil)
(setq vhdl-speedbar-last-selected-project nil)
(speedbar-with-writable

View file

@ -181,12 +181,9 @@ the function is called."
;; this one is untouched --dv
(defun spaces-string (n)
"Returns a string with N spaces."
(if (<= n 8) (aref spaces-strings n)
(let ((val ""))
(while (> n 8)
(setq val (concat " " val)
n (- n 8)))
(concat val (aref spaces-strings n)))))
(make-string n ? )))
;;;###autoload
(defun delete-rectangle (start end &optional fill)

View file

@ -887,7 +887,9 @@ and the greater of them is not at the start of a line."
(defun line-number-at-pos (&optional pos)
"Return (narrowed) buffer line number at position POS.
If POS is nil, use current buffer location."
If POS is nil, use current buffer location.
Counting starts at (point-min), so the value refers
to the contents of the accessible portion of the buffer."
(let ((opoint (or pos (point))) start)
(save-excursion
(goto-char (point-min))
@ -3689,7 +3691,10 @@ because what we really need is for `move-to-column'
and `current-column' to be able to ignore invisible text."
(if (zerop col)
(beginning-of-line)
(move-to-column col))
(let ((opoint (point)))
(move-to-column col)
;; move-to-column doesn't respect field boundaries.
(goto-char (constrain-to-field (point) opoint))))
(when (and line-move-ignore-invisible
(not (bolp)) (line-move-invisible-p (1- (point))))
@ -3759,7 +3764,8 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(interactive "p")
(or arg (setq arg 1))
(let ((orig (point)))
(let ((orig (point))
start first-vis first-vis-field-value)
;; Move by lines, if ARG is not 1 (the default).
(if (/= arg 1)
@ -3770,10 +3776,24 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
(while (and (not (bobp)) (line-move-invisible-p (1- (point))))
(goto-char (previous-char-property-change (point)))
(skip-chars-backward "^\n"))
(setq start (point))
;; Take care of fields.
(goto-char (constrain-to-field (point) orig
(/= arg 1) t nil))))
;; Now find first visible char in the line
(while (and (not (eobp)) (line-move-invisible-p (point)))
(goto-char (next-char-property-change (point))))
(setq first-vis (point))
;; See if fields would stop us from reaching FIRST-VIS.
(setq first-vis-field-value
(constrain-to-field first-vis orig (/= arg 1) t nil))
(goto-char (if (/= first-vis-field-value first-vis)
;; If yes, obey them.
first-vis-field-value
;; Otherwise, move to START with attention to fields.
;; (It is possible that fields never matter in this case.)
(constrain-to-field (point) orig
(/= arg 1) t nil)))))
;;; Many people have said they rarely use this feature, and often type

View file

@ -1249,11 +1249,16 @@ where FACE is a valid face specification, as it can be used with
"GNU Emacs is one component of the GNU/Linux operating system."
"GNU Emacs is one component of the GNU operating system."))
(insert "\n")
(unless (equal (buffer-name fancy-splash-outer-buffer) "*scratch*")
(fancy-splash-insert :face 'variable-pitch
(substitute-command-keys
"Type \\[recenter] to begin editing your file.\n"))))
(if fancy-splash-outer-buffer
(fancy-splash-insert
:face 'variable-pitch
(substitute-command-keys
(concat
"Type \\[recenter] to begin editing"
(if (equal (buffer-name fancy-splash-outer-buffer)
"*scratch*")
".\n"
" your file.\n"))))))
(defun fancy-splash-tail ()
"Insert the tail part of the splash screen into the current buffer."
@ -1333,55 +1338,74 @@ mouse."
(if (frame-live-p frame)
(run-at-time 0 nil 'fancy-splash-exit)))
(defun fancy-splash-screens ()
(defun fancy-splash-screens (&optional hide-on-input)
"Display fancy splash screens when Emacs starts."
(setq fancy-splash-help-echo (startup-echo-area-message))
(let ((old-hourglass display-hourglass)
(fancy-splash-outer-buffer (current-buffer))
splash-buffer
(old-minor-mode-map-alist minor-mode-map-alist)
(old-emulation-mode-map-alists emulation-mode-map-alists)
(frame (fancy-splash-frame))
timer)
(save-selected-window
(select-frame frame)
(switch-to-buffer "GNU Emacs")
(setq tab-width 20)
(setq splash-buffer (current-buffer))
(catch 'stop-splashing
(unwind-protect
(let* ((map (make-sparse-keymap))
(overriding-local-map map)
;; Catch if our frame is deleted; the delete-frame
;; event is unreliable and is handled by
;; `special-event-map' anyway.
(delete-frame-functions (cons 'fancy-splash-delete-frame
delete-frame-functions)))
(define-key map [t] 'fancy-splash-default-action)
(define-key map [mouse-movement] 'ignore)
(define-key map [mode-line t] 'ignore)
(define-key map [select-window] 'ignore)
(setq cursor-type nil
display-hourglass nil
minor-mode-map-alist nil
emulation-mode-map-alists nil
buffer-undo-list t
mode-line-format (propertize "---- %b %-"
'face 'mode-line-buffer-id)
fancy-splash-stop-time (+ (float-time)
fancy-splash-max-time)
timer (run-with-timer 0 fancy-splash-delay
#'fancy-splash-screens-1
splash-buffer))
(recursive-edit))
(cancel-timer timer)
(setq display-hourglass old-hourglass
minor-mode-map-alist old-minor-mode-map-alist
emulation-mode-map-alists old-emulation-mode-map-alists)
(kill-buffer splash-buffer)
(when (frame-live-p frame)
(select-frame frame)
(switch-to-buffer fancy-splash-outer-buffer)))))))
(if hide-on-input
(let ((old-hourglass display-hourglass)
(fancy-splash-outer-buffer (current-buffer))
splash-buffer
(old-minor-mode-map-alist minor-mode-map-alist)
(old-emulation-mode-map-alists emulation-mode-map-alists)
(frame (fancy-splash-frame))
timer)
(save-selected-window
(select-frame frame)
(switch-to-buffer "GNU Emacs")
(setq tab-width 20)
(setq splash-buffer (current-buffer))
(catch 'stop-splashing
(unwind-protect
(let* ((map (make-sparse-keymap))
(overriding-local-map map)
;; Catch if our frame is deleted; the delete-frame
;; event is unreliable and is handled by
;; `special-event-map' anyway.
(delete-frame-functions (cons 'fancy-splash-delete-frame
delete-frame-functions)))
(define-key map [t] 'fancy-splash-default-action)
(define-key map [mouse-movement] 'ignore)
(define-key map [mode-line t] 'ignore)
(define-key map [select-window] 'ignore)
(setq cursor-type nil
display-hourglass nil
minor-mode-map-alist nil
emulation-mode-map-alists nil
buffer-undo-list t
mode-line-format (propertize "---- %b %-"
'face 'mode-line-buffer-id)
fancy-splash-stop-time (+ (float-time)
fancy-splash-max-time)
timer (run-with-timer 0 fancy-splash-delay
#'fancy-splash-screens-1
splash-buffer))
(recursive-edit))
(cancel-timer timer)
(setq display-hourglass old-hourglass
minor-mode-map-alist old-minor-mode-map-alist
emulation-mode-map-alists old-emulation-mode-map-alists)
(kill-buffer splash-buffer)
(when (frame-live-p frame)
(select-frame frame)
(switch-to-buffer fancy-splash-outer-buffer))))))
;; If hide-on-input is non-nil, don't hide the buffer on input.
(if (or (window-minibuffer-p)
(window-dedicated-p (selected-window)))
(pop-to-buffer (current-buffer))
(switch-to-buffer "GNU Emacs"))
(erase-buffer)
(if pure-space-overflow
(insert "\
Warning Warning!!! Pure space overflow !!!Warning Warning
\(See the node Pure Storage in the Lisp manual for details.)\n"))
(let (fancy-splash-outer-buffer)
(fancy-splash-head)
(dolist (text fancy-splash-text)
(apply #'fancy-splash-insert text))
(fancy-splash-tail)
(set-buffer-modified-p nil)
(goto-char (point-min)))))
(defun fancy-splash-frame ()
"Return the frame to use for the fancy splash screen.
@ -1412,14 +1436,16 @@ we put it on this frame."
(> window-height (+ image-height 19)))))))
(defun normal-splash-screen ()
(defun normal-splash-screen (&optional hide-on-input)
"Display splash screen when Emacs starts."
(let ((prev-buffer (current-buffer)))
(unwind-protect
(with-current-buffer (get-buffer-create "GNU Emacs")
(erase-buffer)
(set (make-local-variable 'tab-width) 8)
(set (make-local-variable 'mode-line-format)
(propertize "---- %b %-" 'face 'mode-line-buffer-id))
(if hide-on-input
(set (make-local-variable 'mode-line-format)
(propertize "---- %b %-" 'face 'mode-line-buffer-id)))
(if pure-space-overflow
(insert "\
@ -1435,9 +1461,13 @@ Warning Warning!!! Pure space overflow !!!Warning Warning
", one component of the GNU/Linux operating system.\n"
", a part of the GNU operating system.\n"))
(unless (equal (buffer-name prev-buffer) "*scratch*")
(insert (substitute-command-keys
"\nType \\[recenter] to begin editing your file.\n")))
(if hide-on-input
(insert (substitute-command-keys
(concat
"\nType \\[recenter] to begin editing"
(if (equal (buffer-name prev-buffer) "*scratch*")
".\n"
" your file.\n")))))
(if (display-mouse-p)
;; The user can use the mouse to activate menus
@ -1548,20 +1578,23 @@ Type \\[describe-distribution] for information on getting the latest version."))
"type M-x recover-session RET\nto recover"
" the files you were editing."))
;; Display the input that we set up in the buffer.
(set-buffer-modified-p nil)
(goto-char (point-min))
(if (or (window-minibuffer-p)
(window-dedicated-p (selected-window)))
;; There's no point is using pop-to-buffer since creating
;; a new frame will generate enough events that the
;; subsequent `sit-for' will immediately return anyway.
nil ;; (pop-to-buffer (current-buffer))
(save-window-excursion
(switch-to-buffer (current-buffer))
(sit-for 120))))
;; Unwind ... ensure splash buffer is killed
(kill-buffer "GNU Emacs"))))
;; Display the input that we set up in the buffer.
(set-buffer-modified-p nil)
(goto-char (point-min))
(if (or (window-minibuffer-p)
(window-dedicated-p (selected-window)))
;; If hide-on-input is nil, creating a new frame will
;; generate enough events that the subsequent `sit-for'
;; will immediately return anyway.
(pop-to-buffer (current-buffer))
(if hide-on-input
(save-window-excursion
(switch-to-buffer (current-buffer))
(sit-for 120))
(switch-to-buffer (current-buffer)))))
;; Unwind ... ensure splash buffer is killed
(if hide-on-input
(kill-buffer "GNU Emacs")))))
(defun startup-echo-area-message ()
@ -1615,7 +1648,7 @@ Type \\[describe-distribution] for information on getting the latest version."))
(message "%s" (startup-echo-area-message))))))
(defun display-splash-screen ()
(defun display-splash-screen (&optional hide-on-input)
"Display splash screen according to display.
Fancy splash screens are used on graphic displays,
normal otherwise."
@ -1623,8 +1656,8 @@ normal otherwise."
;; Prevent recursive calls from server-process-filter.
(if (not (get-buffer "GNU Emacs"))
(if (use-fancy-splash-screens-p)
(fancy-splash-screens)
(normal-splash-screen))))
(fancy-splash-screens hide-on-input)
(normal-splash-screen hide-on-input))))
(defun command-line-1 (command-line-args-left)
(display-startup-echo-area-message)
@ -1888,7 +1921,7 @@ normal otherwise."
;; If user typed input during all that work,
;; abort the startup screen. Otherwise, display it now.
(unless (input-pending-p)
(display-splash-screen))))
(display-splash-screen t))))
(defun command-line-normalize-file-name (file)

View file

@ -292,9 +292,7 @@ Turn it on to use emacs mouse commands, and off to use t-mouse commands."
"-f")))
(setq t-mouse-filter-accumulator "")
(set-process-filter t-mouse-process 't-mouse-process-filter)
; use commented line instead for emacs 21.4 onwards
(process-kill-without-query t-mouse-process)))
; (set-process-query-on-exit-flag t-mouse-process nil)))
(set-process-query-on-exit-flag t-mouse-process nil)))
;; Turn it off
(setq mouse-position-function nil)
(delete-process t-mouse-process)

View file

@ -1539,7 +1539,7 @@ in `selection-converter-alist', which see."
(put 'autosave-now 'mac-apple-event-id "asav") ; kAEAutosaveNow
;; kAEInternetEventClass
(put 'get-url 'mac-apple-event-id "GURL") ; kAEGetURL
;; Converted HICommand events
;; Converted HI command events
(put 'about 'mac-apple-event-id "abou") ; kHICommandAbout
(defmacro mac-event-spec (event)
@ -1739,7 +1739,7 @@ Currently the `mailto' scheme is supported."
(define-key mac-apple-event-map [internet-event get-url] 'mac-ae-get-url)
(define-key mac-apple-event-map [hicommand about] 'display-splash-screen)
(define-key mac-apple-event-map [hi-command about] 'display-splash-screen)
;;; Converted Carbon Events
(defun mac-handle-toolbar-switch-mode (event)
@ -2208,7 +2208,8 @@ See also `mac-dnd-known-types'."
;; If dropping in an ordinary window which we could use,
;; let dnd-open-file-other-window specify what to do.
(progn
(goto-char (posn-point (event-start event)))
(when (not mouse-yank-at-point)
(goto-char (posn-point (event-start event))))
(funcall handler window action data))
;; If we can't display the file here,
;; make a new window for it.
@ -2561,8 +2562,8 @@ ascii:-*-Monaco-*-*-*-*-12-*-*-*-*-*-mac-roman")
;; Initiate drag and drop
(global-set-key [drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
(global-set-key [M-drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
(define-key special-event-map [drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
(define-key special-event-map [M-drag-n-drop] 'mac-dnd-handle-drag-n-drop-event)
;;;; Non-toolkit Scroll bars

View file

@ -2386,7 +2386,7 @@ order until succeed.")
(defun x-clipboard-yank ()
"Insert the clipboard contents, or the last stretch of killed text."
(interactive)
(interactive "*")
(let ((clipboard-text (x-selection-value 'CLIPBOARD))
(x-select-enable-clipboard t))
(if (and clipboard-text (> (length clipboard-text) 0))
@ -2518,8 +2518,9 @@ order until succeed.")
;; Override Paste so it looks at CLIPBOARD first.
(define-key menu-bar-edit-menu [paste]
(cons "Paste" (cons "Paste text from clipboard or kill ring"
'x-clipboard-yank)))
'(menu-item "Paste" x-clipboard-yank
:enable (not buffer-read-only)
:help "Paste (yank) text most recently cut/copied"))
(setq x-initialized t))
@ -2531,7 +2532,7 @@ order until succeed.")
;; Initiate drag and drop
(add-hook 'after-make-frame-functions 'x-dnd-init-frame)
(global-set-key [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
(define-key special-event-map [drag-n-drop] 'x-dnd-handle-drag-n-drop-event)
;; arch-tag: f1501302-db8b-4d95-88e3-116697d89f78
;;; x-win.el ends here

View file

@ -159,8 +159,37 @@
(define-key xterm-function-map "\e[4~" [select])
(define-key xterm-function-map "\e[29~" [print])
;; These keys are available in xterm starting from version 214
;; These keys are available in xterm starting from version 216
;; if the modifyOtherKeys resource is set to 1.
(define-key xterm-function-map "\e[27;5;39~" [?\C-\'])
(define-key xterm-function-map "\e[27;5;45~" [?\C--])
(define-key xterm-function-map "\e[27;5;48~" [?\C-0])
(define-key xterm-function-map "\e[27;5;49~" [?\C-1])
;; Not all C-DIGIT keys have a distinct binding.
(define-key xterm-function-map "\e[27;5;57~" [?\C-9])
(define-key xterm-function-map "\e[27;5;59~" [?\C-\;])
(define-key xterm-function-map "\e[27;5;61~" [?\C-=])
(define-key xterm-function-map "\e[27;6;33~" [?\C-!])
(define-key xterm-function-map "\e[27;6;34~" [?\C-\"])
(define-key xterm-function-map "\e[27;6;35~" [?\C-#])
(define-key xterm-function-map "\e[27;6;36~" [?\C-$])
(define-key xterm-function-map "\e[27;6;37~" [?\C-%])
(define-key xterm-function-map "\e[27;6;38~" [(C-&)])
(define-key xterm-function-map "\e[27;6;40~" [?\C-(])
(define-key xterm-function-map "\e[27;6;41~" [?\C-)])
(define-key xterm-function-map "\e[27;6;42~" [?\C-*])
(define-key xterm-function-map "\e[27;6;43~" [?\C-+])
(define-key xterm-function-map "\e[27;6;58~" [?\C-:])
(define-key xterm-function-map "\e[27;6;60~" [?\C-<])
(define-key xterm-function-map "\e[27;6;62~" [?\C->])
(define-key xterm-function-map "\e[27;6;63~" [(C-\?)])
(define-key xterm-function-map "\e[27;5;9~" [C-tab])
(define-key xterm-function-map "\e[27;5;13~" [C-return])
(define-key xterm-function-map "\e[27;5;44~" [?\C-,])

View file

@ -90,6 +90,18 @@
:type 'sexp
:group 'dns-mode)
(defcustom dns-mode-soa-auto-increment-serial t
"Whether to increment the SOA serial number automatically.
If this variable is t, the serial number is incremented upon each save of
the file. If it is `ask', Emacs asks for confirmation whether it should
increment the serial upon saving. If nil, serials must be incremented
manually with \\[dns-mode-soa-increment-serial]."
:type '(choice (const :tag "Always" t)
(const :tag "Ask" ask)
(const :tag "Never" nil))
:group 'dns-mode)
;; Syntax table.
(defvar dns-mode-syntax-table
@ -135,8 +147,12 @@ Turning on DNS mode runs `dns-mode-hook'."
(unless (featurep 'xemacs)
(set (make-local-variable 'font-lock-defaults)
'(dns-mode-font-lock-keywords nil nil ((?_ . "w")))))
(add-hook 'before-save-hook 'dns-mode-soa-maybe-increment-serial
nil t)
(easy-menu-add dns-mode-menu dns-mode-map))
;;;###autoload (defalias 'zone-mode 'dns-mode)
;; Tools.
;;;###autoload
@ -192,6 +208,21 @@ Turning on DNS mode runs `dns-mode-hook'."
(message "Replaced old serial %s with %s" serial new))
(error "Cannot locate serial number in SOA record"))))))
(defun dns-mode-soa-maybe-increment-serial ()
"Increment SOA serial if needed.
This function is run from `before-save-hook'."
(when (and (buffer-modified-p)
dns-mode-soa-auto-increment-serial
(or (eq dns-mode-soa-auto-increment-serial t)
(y-or-n-p "Increment SOA serial? ")))
;; If `dns-mode-soa-increment-serial' signals an error saving will
;; fail but that probably means that the serial should be fixed to
;; comply with the RFC anyway! -rfr
(progn (dns-mode-soa-increment-serial)
;; We return nil in case this is used in write-contents-functions.
nil)))
;;;###autoload(add-to-list 'auto-mode-alist '("\\.soa\\'" . dns-mode))
(provide 'dns-mode)

View file

@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
;; Version: 4.43
;; Version: 4.44
;;
;; This file is part of GNU Emacs.
;;
@ -90,10 +90,12 @@
;;
;; Recent changes
;; --------------
;; Version 4.43
;; - Big fixes
;; Version 4.44
;; - Clock table can be done for a limited time interval.
;; - Obsolete support for the old outline mode has been removed.
;; - Bug fixes and code cleaning.
;;
;; Version 4.42
;; Version 4.43
;; - Bug fixes
;; - `s' key in the agenda saves all org-mode buffers.
;;
@ -212,16 +214,13 @@
;;; Customization variables
(defvar org-version "4.43"
(defvar org-version "4.44"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
(message "Org-mode version %s" org-version))
;; The following constant is for compatibility with different versions
;; of outline.el.
(defconst org-noutline-p (featurep 'noutline)
"Are we using the new outline mode?")
;; Compatibility constants
(defconst org-xemacs-p (featurep 'xemacs)) ; not used by org.el itself
(defconst org-format-transports-properties-p
(let ((x "a"))
@ -1132,7 +1131,7 @@ files and the cdr the corresponding command. Possible values for the
file identifier are
\"ext\" A string identifying an extension
`directory' Matches a directory
`remote' Matches a remove file, accessible through tramp or efs.
`remote' Matches a remote file, accessible through tramp or efs.
Remote files most likely should be visited through emacs
because external applications cannot handle such paths.
t Default for all remaining files
@ -1831,6 +1830,7 @@ Org-mode files lives."
(defcustom org-export-language-setup
'(("en" "Author" "Date" "Table of Contents")
("cs" "Autor" "Datum" "Obsah")
("da" "Ophavsmand" "Dato" "Indhold")
("de" "Autor" "Datum" "Inhaltsverzeichnis")
("es" "Autor" "Fecha" "\xccndice")
@ -2150,6 +2150,16 @@ you can \"misuse\" it to add arbitrary text to the header."
:group 'org-export-html
:type 'string)
(defcustom org-export-html-title-format "<h1 class=\"title\">%s</h1>\n"
"Format for typesetting the document title in HTML export."
:group 'org-export-html
:type 'string)
(defcustom org-export-html-toplevel-hlevel 2
"The <H> level for level 1 headings in HTML export."
:group 'org-export-html
:type 'string)
(defcustom org-export-html-link-org-files-as-html t
"Non-nil means, make file links to `file.org' point to `file.html'.
When org-mode is exporting an org-mode file to HTML, links to
@ -2694,6 +2704,10 @@ Also put tags into group 4 if tags are present.")
(remove-text-properties 0 (length s) org-rm-props s)
s)
(defsubst org-set-local (var value)
"Make VAR local in current buffer and set it to VALUE."
(set (make-variable-buffer-local var) value))
(defsubst org-mode-p ()
"Check if the current buffer is in Org-mode."
(eq major-mode 'org-mode))
@ -2703,7 +2717,7 @@ Also put tags into group 4 if tags are present.")
(when (org-mode-p)
(let ((re (org-make-options-regexp
'("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
"STARTUP" "ARCHIVE" "TAGS")))
"STARTUP" "ARCHIVE" "TAGS" "CALC")))
(splitre "[ \t]+")
kwds int key value cat arch tags)
(save-excursion
@ -2755,10 +2769,10 @@ Also put tags into group 4 if tags are present.")
(remove-text-properties 0 (length arch)
'(face t fontified t) arch)))
)))
(and cat (set (make-local-variable 'org-category) cat))
(and kwds (set (make-local-variable 'org-todo-keywords) kwds))
(and arch (set (make-local-variable 'org-archive-location) arch))
(and int (set (make-local-variable 'org-todo-interpretation) int))
(and cat (org-set-local 'org-category cat))
(and kwds (org-set-local 'org-todo-keywords kwds))
(and arch (org-set-local 'org-archive-location arch))
(and int (org-set-local 'org-todo-interpretation int))
(when tags
(let (e tgs)
(while (setq e (pop tags))
@ -2770,7 +2784,7 @@ Also put tags into group 4 if tags are present.")
(string-to-char (match-string 2 e)))
tgs))
(t (push (list e) tgs))))
(set (make-local-variable 'org-tag-alist) nil)
(org-set-local 'org-tag-alist nil)
(while (setq e (pop tgs))
(or (and (stringp (car e))
(assoc (car e) org-tag-alist))
@ -2928,15 +2942,11 @@ The following commands are available:
;; Need to do this here because define-derived-mode sets up
;; the keymap so late.
(if (featurep 'xemacs)
(if org-noutline-p
(progn
(easy-menu-remove outline-mode-menu-heading)
(easy-menu-remove outline-mode-menu-show)
(easy-menu-remove outline-mode-menu-hide))
(delete-menu-item '("Headings"))
(delete-menu-item '("Show"))
(delete-menu-item '("Hide"))
(set-menubar-dirty-flag))
(progn
;; Assume this is Greg's port, it used easymenu
(easy-menu-remove outline-mode-menu-heading)
(easy-menu-remove outline-mode-menu-show)
(easy-menu-remove outline-mode-menu-hide))
(define-key org-mode-map [menu-bar headings] 'undefined)
(define-key org-mode-map [menu-bar hide] 'undefined)
(define-key org-mode-map [menu-bar show] 'undefined))
@ -2947,7 +2957,7 @@ The following commands are available:
(if org-descriptive-links (org-add-to-invisibility-spec '(org-link)))
(org-add-to-invisibility-spec '(org-cwidth))
(when (featurep 'xemacs)
(set (make-local-variable 'line-move-ignore-invisible) t))
(org-set-local 'line-move-ignore-invisible t))
(setq outline-regexp "\\*+")
;;(setq outline-regexp "\\(?:\\*+\\|[ \t]*\\(?:[-+*]\\|[0-9]+[.)]\\) \\)")
(setq outline-level 'org-outline-level)
@ -2958,12 +2968,14 @@ The following commands are available:
4 (string-to-vector org-ellipsis))
(setq buffer-display-table org-display-table))
(org-set-regexps-and-options)
;; Calc embedded
(org-set-local 'calc-embedded-open-mode "# ")
(modify-syntax-entry ?# "<")
(if org-startup-truncated (setq truncate-lines t))
(set (make-local-variable 'font-lock-unfontify-region-function)
'org-unfontify-region)
(org-set-local 'font-lock-unfontify-region-function
'org-unfontify-region)
;; Activate before-change-function
(set (make-local-variable 'org-table-may-need-update) t)
(org-set-local 'org-table-may-need-update t)
(org-add-hook 'before-change-functions 'org-before-change-function nil
'local)
;; Check for running clock before killing a buffer
@ -3107,7 +3119,7 @@ that will be added to PLIST. Returns the string that was modified."
org-ts-regexp "\\)?")
"Regular expression matching a time stamp or time stamp range.")
(defvar org-§emph-face nil)
(defvar org-<EFBFBD>§emph-face nil)
(defun org-do-emphasis-faces (limit)
"Run through the buffer and add overlays to links."
@ -3340,10 +3352,9 @@ between words."
)))
(setq org-font-lock-extra-keywords (delq nil org-font-lock-extra-keywords))
;; Now set the full font-lock-keywords
(set (make-local-variable 'org-font-lock-keywords)
org-font-lock-extra-keywords)
(set (make-local-variable 'font-lock-defaults)
'(org-font-lock-keywords t nil nil backward-paragraph))
(org-set-local 'org-font-lock-keywords org-font-lock-extra-keywords)
(org-set-local 'font-lock-defaults
'(org-font-lock-keywords t nil nil backward-paragraph))
(kill-local-variable 'font-lock-keywords) nil))
(defvar org-m nil)
@ -3812,9 +3823,7 @@ state (TODO by default). Also with prefix arg, force first state."
(org-insert-heading)
(save-excursion
(org-back-to-heading)
(if org-noutline-p
(outline-previous-heading)
(outline-previous-visible-heading t))
(outline-previous-heading)
(looking-at org-todo-line-regexp))
(if (or arg
(not (match-beginning 2))
@ -4703,7 +4712,7 @@ the children that do not contain any open TODO items."
(pc '(:org-comment t))
(pall '(:org-archived t :org-comment t))
(rea (concat ":" org-archive-tag ":"))
bmp file re)
bmp file re)
(save-excursion
(while (setq file (pop files))
(org-check-agenda-file file)
@ -4775,7 +4784,7 @@ If not found, stay at current position and return nil."
pos))
(defconst org-dblock-start-re
"^#\\+BEGIN:[ \t]+\\(\\S-+\\)[ \t]+\\(.*\\)"
"^#\\+BEGIN:[ \t]+\\(\\S-+\\)\\([ \t]+\\(.*\\)\\)?"
"Matches the startline of a dynamic block, with parameters.")
(defconst org-dblock-end-re "^#\\+END\\([: \t\r\n]\\|$\\)"
@ -4803,7 +4812,7 @@ the property list including an extra property :name with the block name."
(let* ((begdel (1+ (match-end 0)))
(name (match-string 1))
(params (append (list :name name)
(read (concat "(" (match-string 2) ")")))))
(read (concat "(" (match-string 3) ")")))))
(unless (re-search-forward org-dblock-end-re nil t)
(error "Dynamic block not terminated"))
(delete-region begdel (match-beginning 0))
@ -5200,7 +5209,6 @@ If CALLBACK is non-nil, it is a function which is called to confirm
that the match should indeed be shown."
(interactive "sRegexp: ")
(org-remove-occur-highlights nil nil t)
(setq regexp (org-check-occur-regexp regexp))
(let ((cnt 0))
(save-excursion
(goto-char (point-min))
@ -5625,56 +5633,58 @@ next column.
For time difference computation, a year is assumed to be exactly 365
days in order to avoid rounding problems."
(interactive "P")
(save-excursion
(unless (org-at-date-range-p)
(goto-char (point-at-bol))
(re-search-forward org-tr-regexp (point-at-eol) t))
(if (not (org-at-date-range-p))
(error "Not at a time-stamp range, and none found in current line")))
(let* ((ts1 (match-string 1))
(ts2 (match-string 2))
(havetime (or (> (length ts1) 15) (> (length ts2) 15)))
(match-end (match-end 0))
(time1 (org-time-string-to-time ts1))
(time2 (org-time-string-to-time ts2))
(t1 (time-to-seconds time1))
(t2 (time-to-seconds time2))
(diff (abs (- t2 t1)))
(negative (< (- t2 t1) 0))
;; (ys (floor (* 365 24 60 60)))
(ds (* 24 60 60))
(hs (* 60 60))
(fy "%dy %dd %02d:%02d")
(fy1 "%dy %dd")
(fd "%dd %02d:%02d")
(fd1 "%dd")
(fh "%02d:%02d")
y d h m align)
(if havetime
(setq ; y (floor (/ diff ys)) diff (mod diff ys)
y 0
d (floor (/ diff ds)) diff (mod diff ds)
h (floor (/ diff hs)) diff (mod diff hs)
m (floor (/ diff 60)))
(setq ; y (floor (/ diff ys)) diff (mod diff ys)
y 0
d (floor (+ (/ diff ds) 0.5))
h 0 m 0))
(if (not to-buffer)
(message (org-make-tdiff-string y d h m))
(when (org-at-table-p)
(goto-char match-end)
(setq align t)
(and (looking-at " *|") (goto-char (match-end 0))))
(if (looking-at
"\\( *-? *[0-9]+y\\)?\\( *[0-9]+d\\)? *[0-9][0-9]:[0-9][0-9]")
(replace-match ""))
(if negative (insert " -"))
(if (> y 0) (insert " " (format (if havetime fy fy1) y d h m))
(if (> d 0) (insert " " (format (if havetime fd fd1) d h m))
(insert " " (format fh h m))))
(if align (org-table-align))
(message "Time difference inserted"))))
(or
(org-clock-update-time-maybe)
(save-excursion
(unless (org-at-date-range-p)
(goto-char (point-at-bol))
(re-search-forward org-tr-regexp (point-at-eol) t))
(if (not (org-at-date-range-p))
(error "Not at a time-stamp range, and none found in current line")))
(let* ((ts1 (match-string 1))
(ts2 (match-string 2))
(havetime (or (> (length ts1) 15) (> (length ts2) 15)))
(match-end (match-end 0))
(time1 (org-time-string-to-time ts1))
(time2 (org-time-string-to-time ts2))
(t1 (time-to-seconds time1))
(t2 (time-to-seconds time2))
(diff (abs (- t2 t1)))
(negative (< (- t2 t1) 0))
;; (ys (floor (* 365 24 60 60)))
(ds (* 24 60 60))
(hs (* 60 60))
(fy "%dy %dd %02d:%02d")
(fy1 "%dy %dd")
(fd "%dd %02d:%02d")
(fd1 "%dd")
(fh "%02d:%02d")
y d h m align)
(if havetime
(setq ; y (floor (/ diff ys)) diff (mod diff ys)
y 0
d (floor (/ diff ds)) diff (mod diff ds)
h (floor (/ diff hs)) diff (mod diff hs)
m (floor (/ diff 60)))
(setq ; y (floor (/ diff ys)) diff (mod diff ys)
y 0
d (floor (+ (/ diff ds) 0.5))
h 0 m 0))
(if (not to-buffer)
(message (org-make-tdiff-string y d h m))
(when (org-at-table-p)
(goto-char match-end)
(setq align t)
(and (looking-at " *|") (goto-char (match-end 0))))
(if (looking-at
"\\( *-? *[0-9]+y\\)?\\( *[0-9]+d\\)? *[0-9][0-9]:[0-9][0-9]")
(replace-match ""))
(if negative (insert " -"))
(if (> y 0) (insert " " (format (if havetime fy fy1) y d h m))
(if (> d 0) (insert " " (format (if havetime fd fd1) d h m))
(insert " " (format fh h m))))
(if align (org-table-align))
(message "Time difference inserted")))))
(defun org-make-tdiff-string (y d h m)
(let ((fmt "")
@ -5817,6 +5827,7 @@ in the timestamp determines what will be changed."
(setcar (nthcdr 2 time0) (or (nth 1 time0) 0))
(setq time (apply 'encode-time time0))))
(insert (setq org-last-changed-timestamp (format-time-string fmt time)))
(org-clock-update-time-maybe)
(goto-char pos)
;; Try to recenter the calendar window, if any
(if (and org-calendar-follow-timestamp-change
@ -5937,18 +5948,19 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
"Holds the file total time in minutes, after a call to `org-clock-sum'.")
(make-variable-buffer-local 'org-clock-file-total-minutes)
(defun org-clock-sum ()
(defun org-clock-sum (&optional tstart tend)
"Sum the times for each subtree.
Puts the resulting times in minutes as a text property on each headline."
(interactive)
(let* ((bmp (buffer-modified-p))
(re (concat "^\\(\\*+\\)[ \t]\\|^[ \t]*"
org-clock-string
".*=>[ \t]*\\([0-9]+\\):\\([0-9]+\\)[ \t]*$"))
"[ \t]*\\(\\[.*?\\]\\)-+\\(\\[.*?\\]\\)"))
(lmax 30)
(ltimes (make-vector lmax 0))
(t1 0)
(level 0)
ts te dt
time)
(remove-text-properties (point-min) (point-max) '(:org-clock-minutes t))
(save-excursion
@ -5956,8 +5968,16 @@ Puts the resulting times in minutes as a text property on each headline."
(while (re-search-backward re nil t)
(if (match-end 2)
;; A time
(setq t1 (+ t1 (* 60 (string-to-number (match-string 2)))
(string-to-number (match-string 3))))
(setq ts (match-string 2)
te (match-string 3)
ts (time-to-seconds
(apply 'encode-time (org-parse-time-string ts)))
te (time-to-seconds
(apply 'encode-time (org-parse-time-string te)))
ts (if tstart (max ts tstart) ts)
te (if tend (min te tend) te)
dt (- te ts)
t1 (if (> dt 0) (+ t1 (floor (/ dt 60))) t1))
;; A headline
(setq level (- (match-end 1) (match-beginning 1)))
(when (or (> t1 0) (> (aref ltimes level) 0))
@ -6069,26 +6089,112 @@ The BEGIN line can contain parameters. Allowed are:
(interactive)
(org-remove-clock-overlays)
(unless (org-find-dblock "clocktable")
(org-create-dblock (list :name "clocktable"
:maxlevel 2 :emphasize nil)))
(org-create-dblock (list :name "clocktable"
:maxlevel 2 :emphasize nil)))
(org-update-dblock))
(defun org-clock-update-time-maybe ()
"If this is a CLOCK line, update it and return t.
Otherwise, return nil."
(interactive)
(save-excursion
(beginning-of-line 1)
(skip-chars-forward " \t")
(when (looking-at org-clock-string)
(let ((re (concat "[ \t]*" org-clock-string
" *[[<]\\([^]>]+\\)[]>]-+[[<]\\([^]>]+\\)[]>]"
"\\([ \t]*=>.*\\)?"))
ts te h m s)
(if (not (looking-at re))
nil
(and (match-end 3) (delete-region (match-beginning 3) (match-end 3)))
(end-of-line 1)
(setq ts (match-string 1)
te (match-string 2))
(setq s (- (time-to-seconds
(apply 'encode-time (org-parse-time-string te)))
(time-to-seconds
(apply 'encode-time (org-parse-time-string ts))))
h (floor (/ s 3600))
s (- s (* 3600 h))
m (floor (/ s 60))
s (- s (* 60 s)))
(insert " => " (format "%2d:%02d" h m))
t)))))
(defun org-clock-special-range (key &optional time as-strings)
"Return two times bordering a special time range.
Key is a symbol specifying the range and can be one of `today', `yesterday',
`thisweek', `lastweek', `thismonth', `lastmonth', `thisyear', `lastyear'.
A week starts Monday 0:00 and ends Sunday 24:00.
The range is determined relative to TIME. TIME defaults to the current time.
The return value is a cons cell with two internal times like the ones
returned by `current time' or `encode-time'. if AS-STRINGS is non-nil,
the returned times will be formatted strings."
(let* ((tm (decode-time (or time (current-time))))
(s 0) (m (nth 1 tm)) (h (nth 2 tm))
(d (nth 3 tm)) (month (nth 4 tm)) (y (nth 5 tm))
(dow (nth 6 tm))
s1 m1 h1 d1 month1 y1 diff ts te fm)
(cond
((eq key 'today)
(setq h 0 m 0 h1 24 m1 0))
((eq key 'yesterday)
(setq d (1- d) h 0 m 0 h1 24 m1 0))
((eq key 'thisweek)
(setq diff (if (= dow 0) 6 (1- dow))
m 0 h 0 d (- d diff) d1 (+ 7 d)))
((eq key 'lastweek)
(setq diff (+ 7 (if (= dow 0) 6 (1- dow)))
m 0 h 0 d (- d diff) d1 (+ 7 d)))
((eq key 'thismonth)
(setq d 1 h 0 m 0 d1 1 month1 (1+ month) h1 0 m1 0))
((eq key 'lastmonth)
(setq d 1 h 0 m 0 d1 1 month (1- month) month1 (1+ month) h1 0 m1 0))
((eq key 'thisyear)
(setq m 0 h 0 d 1 month 1 y1 (1+ y)))
((eq key 'lastyear)
(setq m 0 h 0 d 1 month 1 y (1- y) y1 (1+ y)))
(t (error "No such time block %s" key)))
(setq ts (encode-time s m h d month y)
te (encode-time (or s1 s) (or m1 m) (or h1 h)
(or d1 d) (or month1 month) (or y1 y)))
(setq fm (cdr org-time-stamp-formats))
(if as-strings
(cons (format-time-string fm ts) (format-time-string fm te))
(cons ts te))))
(defun org-dblock-write:clocktable (params)
"Write the standard clocktable."
(let ((hlchars '((1 . "*") (2 . ?/)))
(emph nil)
(ins (make-marker))
ipos time h m p level hlc hdl maxlevel)
ipos time h m p level hlc hdl maxlevel
ts te cc block)
(setq maxlevel (or (plist-get params :maxlevel) 3)
emph (plist-get params :emphasize))
emph (plist-get params :emphasize)
ts (plist-get params :tstart)
te (plist-get params :tend)
block (plist-get params :block))
(when block
(setq cc (org-clock-special-range block nil t)
ts (car cc) te (cdr cc)))
(if ts (setq ts (time-to-seconds
(apply 'encode-time (org-parse-time-string ts)))))
(if te (setq te (time-to-seconds
(apply 'encode-time (org-parse-time-string te)))))
(move-marker ins (point))
(setq ipos (point))
(insert-before-markers "Clock summary at ["
(substring
(format-time-string (cdr org-time-stamp-formats))
1 -1)
"]\n|L|Headline|Time|\n")
(org-clock-sum)
"]."
(if block
(format " Considered range is /%s/." block)
"")
"\n\n|L|Headline|Time|\n")
(org-clock-sum ts te)
(setq h (/ org-clock-file-total-minutes 60)
m (- org-clock-file-total-minutes (* 60 h)))
(insert-before-markers "|-\n|0|" "*Total file time*| "
@ -6475,7 +6581,7 @@ the buffer and restores the previous window configuration."
(if (stringp org-agenda-files)
(let ((cw (current-window-configuration)))
(find-file org-agenda-files)
(set (make-local-variable 'org-window-configuration) cw)
(org-set-local 'org-window-configuration cw)
(org-add-hook 'after-save-hook
(lambda ()
(set-window-configuration
@ -6603,7 +6709,7 @@ dates."
(setq buffer-read-only nil)
(erase-buffer)
(org-agenda-mode) (setq buffer-read-only nil)
(set (make-local-variable 'org-agenda-type) 'timeline)
(org-set-local 'org-agenda-type 'timeline)
(if doclosed (push :closed args))
(push :timestamp args)
(if dotodo (push :todo args))
@ -6701,9 +6807,9 @@ NDAYS defaults to `org-agenda-ndays'."
(setq buffer-read-only nil)
(erase-buffer)
(org-agenda-mode) (setq buffer-read-only nil)
(set (make-local-variable 'org-agenda-type) 'agenda)
(set (make-local-variable 'starting-day) (car day-numbers))
(set (make-local-variable 'include-all-loc) include-all)
(org-set-local 'org-agenda-type 'agenda)
(org-set-local 'starting-day (car day-numbers))
(org-set-local 'include-all-loc include-all)
(when (and (or include-all org-agenda-include-all-todo)
(member today day-numbers))
(setq files thefiles
@ -6812,11 +6918,11 @@ for a keyword. A numeric prefix directly selects the Nth keyword in
(setq buffer-read-only nil)
(erase-buffer)
(org-agenda-mode) (setq buffer-read-only nil)
(set (make-local-variable 'org-agenda-type) 'todo)
(set (make-local-variable 'last-arg) arg)
(set (make-local-variable 'org-todo-keywords) kwds)
(set (make-local-variable 'org-agenda-redo-command)
'(org-todo-list (or current-prefix-arg last-arg) t))
(org-set-local 'org-agenda-type 'todo)
(org-set-local 'last-arg arg)
(org-set-local 'org-todo-keywords kwds)
(org-set-local 'org-agenda-redo-command
'(org-todo-list (or current-prefix-arg last-arg) t))
(setq files (org-agenda-files)
rtnall nil)
(org-prepare-agenda-buffers files)
@ -7704,11 +7810,12 @@ the documentation of `org-diary'."
(abbreviate-file-name buffer-file-name))))
(regexp org-tr-regexp)
(d0 (calendar-absolute-from-gregorian date))
marker hdmarker ee txt d1 d2 s1 s2 timestr category tags)
marker hdmarker ee txt d1 d2 s1 s2 timestr category tags pos)
(goto-char (point-min))
(while (re-search-forward regexp nil t)
(catch :skip
(org-agenda-skip)
(setq pos (point))
(setq timestr (match-string 0)
s1 (match-string 1)
s2 (match-string 2)
@ -7736,7 +7843,8 @@ the documentation of `org-diary'."
'org-marker marker 'org-hd-marker hdmarker
'priority (org-get-priority txt) 'category category)
(push txt ee)))
(outline-next-heading)))
(goto-char pos)))
; (outline-next-heading))) ;FIXME: correct to be removed??????
;; Sort the entries by expiration date.
(nreverse ee)))
@ -7757,7 +7865,7 @@ groups carry important information:
(defconst org-stamp-time-of-day-regexp
(concat
"<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +[a-zA-Z]+ +\\)"
"<\\([0-9]\\{4\\}-[0-9]\\{2\\}-[0-9]\\{2\\} +\\sw+ +\\)"
"\\([012][0-9]:[0-5][0-9]\\)>"
"\\(--?"
"<\\1\\([012][0-9]:[0-5][0-9]\\)>\\)?")
@ -8620,10 +8728,10 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
(setq buffer-read-only nil)
(erase-buffer)
(org-agenda-mode) (setq buffer-read-only nil)
(set (make-local-variable 'org-agenda-type) 'tags)
(set (make-local-variable 'org-agenda-redo-command)
(list 'org-tags-view (list 'quote todo-only)
(list 'if 'current-prefix-arg nil match) t))
(org-set-local 'org-agenda-type 'tags)
(org-set-local 'org-agenda-redo-command
(list 'org-tags-view (list 'quote todo-only)
(list 'if 'current-prefix-arg nil match) t))
(setq files (org-agenda-files)
rtnall nil)
(org-prepare-agenda-buffers files)
@ -9359,6 +9467,7 @@ onto the ring."
"Follow a Gnus link to GROUP and ARTICLE."
(require 'gnus)
(funcall (cdr (assq 'gnus org-link-frame-setup)))
(if gnus-other-frame-object (select-frame gnus-other-frame-object))
(if group (gnus-fetch-group group))
(if article
(or (gnus-summary-goto-article article nil 'force)
@ -10234,13 +10343,13 @@ to be run from that hook to fucntion properly."
(org-startup-with-deadline-check nil))
(org-mode))
(if (and file (string-match "\\S-" file) (not (file-directory-p file)))
(set (make-local-variable 'org-default-notes-file) file))
(org-set-local 'org-default-notes-file file))
(goto-char (point-min))
(if (re-search-forward "%\\?" nil t) (replace-match "")))
(let ((org-startup-folded nil)
(org-startup-with-deadline-check nil))
(org-mode)))
(set (make-local-variable 'org-finish-function) 'remember-buffer))
(org-set-local 'org-finish-function 'remember-buffer))
;;;###autoload
(defun org-remember-handler ()
@ -11492,10 +11601,10 @@ it can be edited in place."
'(invisible t org-cwidth t display t
intangible t))
(goto-char p)
(set (make-local-variable 'org-finish-function)
'org-table-finish-edit-field)
(set (make-local-variable 'org-window-configuration) cw)
(set (make-local-variable 'org-field-marker) pos)
(org-set-local 'org-finish-function
'org-table-finish-edit-field)
(org-set-local 'org-window-configuration cw)
(org-set-local 'org-field-marker pos)
(message "Edit and finish with C-c C-c"))))
(defun org-table-finish-edit-field ()
@ -12098,10 +12207,11 @@ not overwrite the stored one."
(setq formula (car tmp)
fmt (concat (cdr (assoc "%" org-table-local-parameters))
(nth 1 tmp)))
(while (string-match "[pnfse]\\(-?[0-9]+\\)" fmt)
(while (string-match "\\([pnfse]\\)\\(-?[0-9]+\\)" fmt)
(setq c (string-to-char (match-string 1 fmt))
n (string-to-number (or (match-string 1 fmt) "")))
(if (= c ?p) (setq modes (org-set-calc-mode 'calc-internal-prec n))
n (string-to-number (match-string 2 fmt)))
(if (= c ?p)
(setq modes (org-set-calc-mode 'calc-internal-prec n))
(setq modes (org-set-calc-mode
'calc-float-format
(list (cdr (assoc c '((?n . float) (?f . fix)
@ -12314,8 +12424,8 @@ Parameters get priority."
(switch-to-buffer-other-window "*Edit Formulas*")
(erase-buffer)
(fundamental-mode)
(set (make-local-variable 'org-pos) pos)
(set (make-local-variable 'org-window-configuration) wc)
(org-set-local 'org-pos pos)
(org-set-local 'org-window-configuration wc)
(use-local-map org-edit-formulas-map)
(setq s "# Edit formulas and finish with `C-c C-c'.
# Use `C-u C-c C-c' to also appy them immediately to the entire table.
@ -12481,15 +12591,15 @@ table editor in arbitrary modes.")
(let ((c (assq 'orgtbl-mode minor-mode-map-alist)))
(and c (setq minor-mode-map-alist
(cons c (delq c minor-mode-map-alist)))))
(set (make-local-variable (quote org-table-may-need-update)) t)
(org-set-local (quote org-table-may-need-update) t)
(org-add-hook 'before-change-functions 'org-before-change-function
nil 'local)
(set (make-local-variable 'org-old-auto-fill-inhibit-regexp)
auto-fill-inhibit-regexp)
(set (make-local-variable 'auto-fill-inhibit-regexp)
(if auto-fill-inhibit-regexp
(concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp)
"[ \t]*|"))
(org-set-local 'org-old-auto-fill-inhibit-regexp
auto-fill-inhibit-regexp)
(org-set-local 'auto-fill-inhibit-regexp
(if auto-fill-inhibit-regexp
(concat "\\([ \t]*|\\|" auto-fill-inhibit-regexp)
"[ \t]*|"))
(org-add-to-invisibility-spec '(org-cwidth))
(easy-menu-add orgtbl-mode-menu)
(run-hooks 'orgtbl-mode-hook))
@ -13388,7 +13498,7 @@ underlined headlines. The default is 3."
(set (make-local-variable (cdr x))
(plist-get opt-plist (car x))))
org-export-plist-vars)
(set (make-local-variable 'org-odd-levels-only) odd)
(org-set-local 'org-odd-levels-only odd)
(setq umax (if arg (prefix-numeric-value arg)
org-export-headline-levels))
@ -13594,22 +13704,15 @@ command."
(goto-char (point-min)))))
(defun org-find-visible ()
(if (featurep 'noutline)
(let ((s (point)))
(while (and (not (= (point-max) (setq s (next-overlay-change s))))
(get-char-property s 'invisible)))
s)
(skip-chars-forward "^\n")
(point)))
(let ((s (point)))
(while (and (not (= (point-max) (setq s (next-overlay-change s))))
(get-char-property s 'invisible)))
s))
(defun org-find-invisible ()
(if (featurep 'noutline)
(let ((s (point)))
(while (and (not (= (point-max) (setq s (next-overlay-change s))))
(not (get-char-property s 'invisible))))
s)
(skip-chars-forward "^\r")
(point)))
(let ((s (point)))
(while (and (not (= (point-max) (setq s (next-overlay-change s))))
(not (get-char-property s 'invisible))))
s))
;; HTML
@ -13859,14 +13962,16 @@ lang=\"%s\" xml:lang=\"%s\">
(insert (or (plist-get opt-plist :preamble) ""))
(when (plist-get opt-plist :auto-preamble)
(if title (insert (concat "<h1 class=\"title\">"
(org-html-expand title) "</h1>\n")))
(if title (insert (format org-export-html-title-format
(org-html-expand title))))
(if text (insert "<p>\n" (org-html-expand text) "</p>")))
(if org-export-with-toc
(progn
(insert (format "<h2>%s</h2>\n" (nth 3 lang-words)))
(insert (format "<h%d>%s</h%d>\n"
org-export-html-toplevel-hlevel
(nth 3 lang-words)
org-export-html-toplevel-hlevel))
(insert "<ul>\n<li>")
(setq lines
(mapcar '(lambda (line)
@ -14553,7 +14658,7 @@ When TITLE is nil, just close all open levels."
(insert "<ul>\n<li>" title "<br/>\n")))
(if org-export-with-section-numbers
(setq title (concat (org-section-number level) " " title)))
(setq level (+ level 1))
(setq level (+ level org-export-html-toplevel-hlevel -1))
(if with-toc
(insert (format "\n<h%d><a name=\"sec-%d\">%s</a></h%d>\n"
level head-count title level))
@ -15763,6 +15868,10 @@ See the individual commands for more information."
"--"
("TODO Lists"
["TODO/DONE/-" org-todo t]
("Select keyword"
["Next keyword" org-shiftright (org-on-heading-p)]
["Previous keyword" org-shiftleft (org-on-heading-p)]
["Complete Keyword" org-complete (assq :todo-keyword (org-context))])
["Show TODO Tree" org-show-todo-tree t]
["Global TODO list" org-todo-list t]
"--"
@ -16042,31 +16151,32 @@ return nil."
;; In the paragraph separator we include headlines, because filling
;; text in a line directly attached to a headline would otherwise
;; fill the headline as well.
(set (make-local-variable 'comment-start-skip) "^#+[ \t]*")
(set (make-local-variable 'paragraph-separate) "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]")
(org-set-local 'comment-start-skip "^#+[ \t]*")
(org-set-local 'paragraph-separate "\f\\|\\*\\|[ ]*$\\|[ \t]*[:|]")
;; The paragraph starter includes hand-formatted lists.
(set (make-local-variable 'paragraph-start)
"\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
(org-set-local 'paragraph-start
"\f\\|[ ]*$\\|\\([*\f]+\\)\\|[ \t]*\\([-+*][ \t]+\\|[0-9]+[.)][ \t]+\\)\\|[ \t]*[:|]")
;; Inhibit auto-fill for headers, tables and fixed-width lines.
;; But only if the user has not turned off tables or fixed-width regions
(set (make-local-variable 'auto-fill-inhibit-regexp)
(concat "\\*\\|#"
"\\|[ \t]*" org-keyword-time-regexp
(if (or org-enable-table-editor org-enable-fixed-width-editor)
(concat
"\\|[ \t]*["
(if org-enable-table-editor "|" "")
(if org-enable-fixed-width-editor ":" "")
"]"))))
(org-set-local
'auto-fill-inhibit-regexp
(concat "\\*\\|#"
"\\|[ \t]*" org-keyword-time-regexp
(if (or org-enable-table-editor org-enable-fixed-width-editor)
(concat
"\\|[ \t]*["
(if org-enable-table-editor "|" "")
(if org-enable-fixed-width-editor ":" "")
"]"))))
;; We use our own fill-paragraph function, to make sure that tables
;; and fixed-width regions are not wrapped. That function will pass
;; through to `fill-paragraph' when appropriate.
(set (make-local-variable 'fill-paragraph-function) 'org-fill-paragraph)
;; Adaptive filling: To get full control, first make sure that
(org-set-local 'fill-paragraph-function 'org-fill-paragraph)
; Adaptive filling: To get full control, first make sure that
;; `adaptive-fill-regexp' never matches. Then install our own matcher.
(set (make-local-variable 'adaptive-fill-regexp) "\000")
(set (make-local-variable 'adaptive-fill-function)
'org-adaptive-fill-function))
(org-set-local 'adaptive-fill-regexp "\000")
(org-set-local 'adaptive-fill-function
'org-adaptive-fill-function))
(defun org-fill-paragraph (&optional justify)
"Re-align a table, pass through to fill-paragraph if no table."
@ -16145,18 +16255,7 @@ that can be added."
t)
"\\'"))))
;; Functions needed for compatibility with old outline.el.
;; Programming for the old outline.el (that uses selective display
;; instead of `invisible' text properties) is a nightmare, mostly
;; because regular expressions can no longer be anchored at
;; beginning/end of line. Therefore a number of function need special
;; treatment when the old outline.el is being used.
;; The following functions capture almost the entire compatibility code
;; between the different versions of outline-mode. The only other
;; places where this is important are the font-lock-keywords, and in
;; `org-export-visible'. Search for `org-noutline-p' to find them.
;; Functions extending outline functionality
;; C-a should go to the beginning of a *visible* line, also in the
;; new outline.el. I guess this should be patched into Emacs?
@ -16174,60 +16273,26 @@ to a visible line beginning. This makes the function of C-a more intuitive."
(beginning-of-line 1))
(forward-char 1))))
(when org-noutline-p
(define-key org-mode-map "\C-a" 'org-beginning-of-line))
(define-key org-mode-map "\C-a" 'org-beginning-of-line)
(defun org-invisible-p ()
"Check if point is at a character currently not visible."
(if org-noutline-p
;; Early versions of noutline don't have `outline-invisible-p'.
(if (fboundp 'outline-invisible-p)
(outline-invisible-p)
(get-char-property (point) 'invisible))
(save-excursion
(skip-chars-backward "^\r\n")
(equal (char-before) ?\r))))
;; Early versions of noutline don't have `outline-invisible-p'.
(if (fboundp 'outline-invisible-p)
(outline-invisible-p)
(get-char-property (point) 'invisible)))
(defun org-invisible-p2 ()
"Check if point is at a character currently not visible."
(save-excursion
(if org-noutline-p
(progn
(if (and (eolp) (not (bobp))) (backward-char 1))
;; Early versions of noutline don't have `outline-invisible-p'.
(if (fboundp 'outline-invisible-p)
(outline-invisible-p)
(get-char-property (point) 'invisible)))
(skip-chars-backward "^\r\n")
(equal (char-before) ?\r))))
(if (and (eolp) (not (bobp))) (backward-char 1))
;; Early versions of noutline don't have `outline-invisible-p'.
(if (fboundp 'outline-invisible-p)
(outline-invisible-p)
(get-char-property (point) 'invisible))))
(defun org-back-to-heading (&optional invisible-ok)
"Move to previous heading line, or beg of this line if it's a heading.
Only visible heading lines are considered, unless INVISIBLE-OK is non-nil."
(if org-noutline-p
(outline-back-to-heading invisible-ok)
(if (and (or (bobp) (memq (char-before) '(?\n ?\r)))
(looking-at outline-regexp))
t
(if (re-search-backward (concat (if invisible-ok "\\([\r\n]\\|^\\)" "^")
outline-regexp)
nil t)
(if invisible-ok
(progn (goto-char (or (match-end 1) (match-beginning 0)))
(looking-at outline-regexp)))
(error "Before first heading")))))
(defun org-on-heading-p (&optional invisible-ok)
"Return t if point is on a (visible) heading line.
If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
(if org-noutline-p
(outline-on-heading-p 'invisible-ok)
(save-excursion
(skip-chars-backward "^\n\r")
(and (looking-at outline-regexp)
(or invisible-ok
(bobp)
(equal (char-before) ?\n))))))
(defalias 'org-back-to-heading 'outline-back-to-heading)
(defalias 'org-on-heading-p 'outline-on-heading-p)
(defun org-on-target-p ()
(let ((pos (point)))
@ -16243,47 +16308,20 @@ If INVISIBLE-OK is non-nil, an invisible heading line is ok too."
"Move to the heading line of which the present line is a subheading.
This function considers both visible and invisible heading lines.
With argument, move up ARG levels."
(if org-noutline-p
(if (fboundp 'outline-up-heading-all)
(outline-up-heading-all arg) ; emacs 21 version of outline.el
(outline-up-heading arg t)) ; emacs 22 version of outline.el
(org-back-to-heading t)
(looking-at outline-regexp)
(if (<= (- (match-end 0) (match-beginning 0)) arg)
(error "Cannot move up %d levels" arg)
(re-search-backward
(concat "[\n\r]" (regexp-quote
(make-string (- (match-end 0) (match-beginning 0) arg)
?*))
"[^*]"))
(forward-char 1))))
(if (fboundp 'outline-up-heading-all)
(outline-up-heading-all arg) ; emacs 21 version of outline.el
(outline-up-heading arg t))) ; emacs 22 version of outline.el
(defun org-show-hidden-entry ()
"Show an entry where even the heading is hidden."
(save-excursion
(if (not org-noutline-p)
(progn
(org-back-to-heading t)
(org-flag-heading nil)))
(org-show-entry)))
(defun org-check-occur-regexp (regexp)
"If REGEXP starts with \"^\", modify it to check for \\r as well.
Of course, only for the old outline mode."
(if org-noutline-p
regexp
(if (string-match "^\\^" regexp)
(concat "[\n\r]" (substring regexp 1))
regexp)))
(defun org-flag-heading (flag &optional entry)
"Flag the current heading. FLAG non-nil means make invisible.
When ENTRY is non-nil, show the entire entry."
(save-excursion
(org-back-to-heading t)
(if (not org-noutline-p)
;; Make the current headline visible
(outline-flag-region (max 1 (1- (point))) (point) (if flag ?\r ?\n)))
;; Check if we should show the entire entry
(if entry
(progn
@ -16293,9 +16331,7 @@ When ENTRY is non-nil, show the entire entry."
(org-flag-heading nil))))
(outline-flag-region (max 1 (1- (point)))
(save-excursion (outline-end-of-heading) (point))
(if org-noutline-p
flag
(if flag ?\r ?\n))))))
flag))))
(defun org-end-of-subtree (&optional invisible-OK)
;; This is an exact copy of the original function, but it uses
@ -16324,7 +16360,7 @@ When ENTRY is non-nil, show the entire entry."
(point)
(save-excursion
(outline-end-of-subtree) (outline-next-heading) (point))
(if org-noutline-p nil ?\n)))
nil))
(defun org-show-entry ()
"Show the body directly following this heading.
@ -16337,16 +16373,16 @@ Show the heading too, if it is currently invisible."
(save-excursion
(re-search-forward (concat "[\r\n]\\(" outline-regexp "\\)") nil 'move)
(or (match-beginning 1) (point-max)))
(if org-noutline-p nil ?\n))))
nil)))
(defun org-make-options-regexp (kwds)
"Make a regular expression for keyword lines."
(concat
(if org-noutline-p "^" "[\n\r]")
"^"
"#?[ \t]*\\+\\("
(mapconcat 'regexp-quote kwds "\\|")
"\\):[ \t]*"
(if org-noutline-p "\\(.+\\)" "\\([^\n\r]+\\)")))
"\\(.+\\)"))
;; Make `bookmark-jump' show the jump location if it was hidden.
(eval-after-load "bookmark"

View file

@ -172,12 +172,12 @@
:group 'multimedia)
(defcustom tumme-dir "~/.emacs.d/tumme/"
"*Directory where thumbnail images are stored."
"Directory where thumbnail images are stored."
:type 'string
:group 'tumme)
(defcustom tumme-thumbnail-storage 'use-tumme-dir
"*How to store tumme's thumbnail files.
"How to store tumme's thumbnail files.
Tumme can store thumbnail files in one of two ways and this is
controlled by this variable. \"Use tumme dir\" means that the
thumbnails are stored in a central directory. \"Per directory\"
@ -193,17 +193,17 @@ that allows sharing of thumbnails across different programs."
:group 'tumme)
(defcustom tumme-db-file "~/.emacs.d/tumme/.tumme_db"
"*Database file where file names and their associated tags are stored."
"Database file where file names and their associated tags are stored."
:type 'string
:group 'tumme)
(defcustom tumme-temp-image-file "~/.emacs.d/tumme/.tumme_temp"
"*Name of temporary image file used by various commands."
"Name of temporary image file used by various commands."
:type 'string
:group 'tumme)
(defcustom tumme-gallery-dir "~/.emacs.d/tumme/.tumme_gallery"
"*Directory to store generated gallery html pages.
"Directory to store generated gallery html pages.
This path needs to be \"shared\" to the public so that it can access
the index.html page that tumme creates."
:type 'string
@ -211,7 +211,7 @@ the index.html page that tumme creates."
(defcustom tumme-gallery-image-root-url
"http://your.own.server/tummepics"
"*URL where the full size images are to be found.
"URL where the full size images are to be found.
Note that this path has to be configured in your web server. Tumme
expects to find pictures in this directory."
:type 'string
@ -219,7 +219,7 @@ expects to find pictures in this directory."
(defcustom tumme-gallery-thumb-image-root-url
"http://your.own.server/tummethumbs"
"*URL where the thumbnail images are to be found.
"URL where the thumbnail images are to be found.
Note that this path has to be configured in your web server. Tumme
expects to find pictures in this directory."
:type 'string
@ -227,14 +227,14 @@ expects to find pictures in this directory."
(defcustom tumme-cmd-create-thumbnail-program
"convert"
"*Executable used to create thumbnail.
"Executable used to create thumbnail.
Used together with `tumme-cmd-create-thumbnail-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-create-thumbnail-options
"%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
"*Format of command used to create thumbnail image.
"Format of command used to create thumbnail image.
Available options are %p which is replaced by
`tumme-cmd-create-thumbnail-program', %w which is replaced by
`tumme-thumb-width', %h which is replaced by `tumme-thumb-height',
@ -245,14 +245,14 @@ which is replaced by the file name of the thumbnail file."
(defcustom tumme-cmd-create-temp-image-program
"convert"
"*Executable used to create temporary image.
"Executable used to create temporary image.
Used together with `tumme-cmd-create-temp-image-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-create-temp-image-options
"%p -size %wx%h \"%f\" -resize %wx%h +profile \"*\" jpeg:\"%t\""
"*Format of command used to create temporary image for display window.
"Format of command used to create temporary image for display window.
Available options are %p which is replaced by
`tumme-cmd-create-temp-image-program', %w and %h which is replaced by
the calculated max size for width and height in the image display window,
@ -262,13 +262,13 @@ is replaced by the file name of the temporary file."
:group 'tumme)
(defcustom tumme-cmd-pngnq-program (executable-find "pngnq")
"*The file name of the `pngnq' program.
"The file name of the `pngnq' program.
It quantizes colors of PNG images down to 256 colors."
:type '(choice (const :tag "Not Set" nil) string)
:group 'tumme)
(defcustom tumme-cmd-pngcrush-program (executable-find "pngcrush")
"*The file name of the `pngcrush' program.
"The file name of the `pngcrush' program.
It optimizes the compression of PNG images. Also it adds PNG textual chunks
with the information required by the Thumbnail Managing Standard."
:type '(choice (const :tag "Not Set" nil) string)
@ -305,20 +305,20 @@ with the information required by the Thumbnail Managing Standard."
"-text b \"Thumb::URI\" \"file://%f\" "
"%q %t"
" ; rm %q")))
"*Command to create thumbnails according to the Thumbnail Managing Standard."
"Command to create thumbnails according to the Thumbnail Managing Standard."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-rotate-thumbnail-program
"mogrify"
"*Executable used to rotate thumbnail.
"Executable used to rotate thumbnail.
Used together with `tumme-cmd-rotate-thumbnail-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-rotate-thumbnail-options
"%p -rotate %d \"%t\""
"*Format of command used to rotate thumbnail image.
"Format of command used to rotate thumbnail image.
Available options are %p which is replaced by
`tumme-cmd-rotate-thumbnail-program', %d which is replaced by the
number of (positive) degrees to rotate the image, normally 90 or 270
@ -329,14 +329,14 @@ of the thumbnail file."
(defcustom tumme-cmd-rotate-original-program
"jpegtran"
"*Executable used to rotate original image.
"Executable used to rotate original image.
Used together with `tumme-cmd-rotate-original-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-rotate-original-options
"%p -rotate %d -copy all \"%o\" > %t"
"*Format of command used to rotate original image.
"Format of command used to rotate original image.
Available options are %p which is replaced by
`tumme-cmd-rotate-original-program', %d which is replaced by the
number of (positive) degrees to rotate the image, normally 90 or
@ -348,7 +348,7 @@ original image file name and %t which is replaced by
(defcustom tumme-temp-rotate-image-file
"~/.emacs.d/tumme/.tumme_rotate_temp"
"*Temporary file for rotate operations."
"Temporary file for rotate operations."
:type 'string
:group 'tumme)
@ -361,14 +361,14 @@ original file with `tumme-temp-rotate-image-file'."
(defcustom tumme-cmd-write-exif-data-program
"exiftool"
"*Program used to write EXIF data to image.
"Program used to write EXIF data to image.
Used together with `tumme-cmd-write-exif-data-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-write-exif-data-options
"%p -%t=\"%v\" \"%f\""
"*Format of command used to write EXIF data.
"Format of command used to write EXIF data.
Available options are %p which is replaced by
`tumme-cmd-write-exif-data-program', %f which is replaced by the
image file name, %t which is replaced by the tag name and %v
@ -378,14 +378,14 @@ which is replaced by the tag value."
(defcustom tumme-cmd-read-exif-data-program
"exiftool"
"*Program used to read EXIF data to image.
"Program used to read EXIF data to image.
Used together with `tumme-cmd-read-exif-data-program-options'."
:type 'string
:group 'tumme)
(defcustom tumme-cmd-read-exif-data-options
"%p -s -s -s -%t \"%f\""
"*Format of command used to read EXIF data.
"Format of command used to read EXIF data.
Available options are %p which is replaced by
`tumme-cmd-write-exif-data-options', %f which is replaced
by the image file name and %t which is replaced by the tag name."
@ -394,7 +394,7 @@ by the image file name and %t which is replaced by the tag name."
(defcustom tumme-gallery-hidden-tags
(list "private" "hidden" "pending")
"*List of \"hidden\" tags.
"List of \"hidden\" tags.
Used by `tumme-gallery-generate' to leave out \"hidden\" images."
:type '(repeat string)
:group 'tumme)
@ -416,18 +416,18 @@ This is the default size for both `tumme-thumb-width' and `tumme-thumb-height'."
:group 'tumme)
(defcustom tumme-thumb-relief 2
"*Size of button-like border around thumbnails."
"Size of button-like border around thumbnails."
:type 'integer
:group 'tumme)
(defcustom tumme-thumb-margin 2
"*Size of the margin around thumbnails.
"Size of the margin around thumbnails.
This is where you see the cursor."
:type 'integer
:group 'tumme)
(defcustom tumme-line-up-method 'dynamic
"*Default method for line-up of thumbnails in thumbnail buffer.
"Default method for line-up of thumbnails in thumbnail buffer.
Used by `tumme-display-thumbs' and other functions that needs to
line-up thumbnails. Dynamic means to use the available width of the
window containing the thumbnail buffer, Fixed means to use
@ -441,19 +441,19 @@ line-up means that no automatic line-up will be done."
:group 'tumme)
(defcustom tumme-thumbs-per-row 3
"*Number of thumbnails to display per row in thumb buffer."
"Number of thumbnails to display per row in thumb buffer."
:type 'integer
:group 'tumme)
(defcustom tumme-display-window-width-correction 1
"*Number to be used to correct image display window width.
"Number to be used to correct image display window width.
Change if the default (1) does not work (i.e. if the image does not
completely fit)."
:type 'integer
:group 'tumme)
(defcustom tumme-display-window-height-correction 0
"*Number to be used to correct image display window height.
"Number to be used to correct image display window height.
Change if the default (0) does not work (i.e. if the image does not
completely fit)."
:type 'integer
@ -487,7 +487,7 @@ dired and you might want to turn it off."
:group 'tumme)
(defcustom tumme-display-properties-format "%b: %f (%t): %c"
"*Display format for thumbnail properties.
"Display format for thumbnail properties.
%b is replaced with associated dired buffer name, %f with file name
\(without path) of original image file, %t with the list of tags and %c
with the comment."
@ -500,20 +500,20 @@ with the comment."
(cond ((executable-find "display"))
((executable-find "xli"))
((executable-find "qiv") "qiv -t"))
"*Name of external viewer.
"Name of external viewer.
Including parameters. Used when displaying original image from
`tumme-thumbnail-mode'."
:type 'string
:group 'tumme)
(defcustom tumme-main-image-directory "~/pics/"
"*Name of main image directory, if any.
"Name of main image directory, if any.
Used by `tumme-copy-with-exif-file-name'."
:type 'string
:group 'tumme)
(defcustom tumme-show-all-from-dir-max-files 50
"*Maximum number of files to show using `tumme-show-all-from-dir'.
"Maximum number of files to show using `tumme-show-all-from-dir'.
before warning the user."
:type 'integer
:group 'tumme)

View file

@ -1,3 +1,20 @@
2006-08-25 Stefan Monnier <monnier@iro.umontreal.ca>
* url-handlers.el (url-file-local-copy): Tell url-copy-file that the
dest file will already exist.
2006-07-31 Stefan Monnier <monnier@iro.umontreal.ca>
* url-util.el (url-hexify-string): Only utf-8 encode if it's
a multibyte string.
(url-normalize-url): Remove unused var `grok'.
(url-truncate-url-for-viewing): Remove unused var `tail'.
2006-07-30 Thien-Thi Nguyen <ttn@gnu.org>
* url-util.el (url-hexify-string): Rewrite.
Suggested by David Smith <davidsmith@acm.org>.
2006-07-12 Michael Olson <mwolson@gnu.org>
* url-irc.el (url-irc-erc): Call erc-handle-irc-url.

View file

@ -213,7 +213,7 @@ A prefix arg makes KEEP-TIME non-nil."
Returns the name of the local copy, or nil, if FILE is directly
accessible."
(let ((filename (make-temp-file "url")))
(url-copy-file url filename)
(url-copy-file url filename 'ok-if-already-exists)
filename))
(defun url-insert (buffer &optional beg end)

Some files were not shown because too many files have changed in this diff Show more