Merge changes from emacs-23 branch.

This commit is contained in:
Juanma Barranquero 2010-09-14 16:41:53 +02:00
commit 6664fc59a8
24 changed files with 459 additions and 194 deletions

View file

@ -1,3 +1,19 @@
2010-09-14 Glenn Morris <rgm@gnu.org>
* cal-xtra.texi (Fancy Diary Display): Emphasize that sort should be
the last hook item.
* calendar.texi (Appointments): Also updated when a diary include file
is saved.
2010-09-14 Glenn Morris <rgm@gnu.org>
* trouble.texi (Bugs): Update the section intro.
(Known Problems): New section.
(Checklist): Misc updates. Prefer M-x report-emacs-bug.
(Sending Patches): Bug fixes are best as responses to existing bugs.
* emacs.texi (Known Problems): Add menu entry for new section.
2010-09-09 Glenn Morris <rgm@gnu.org>
* xresources.texi: Untabify.

View file

@ -613,7 +613,9 @@ each day's diary entries by their time of day. Here's how:
@noindent
For each day, this sorts diary entries that begin with a recognizable
time of day according to their times. Diary entries without times come
first within each day.
first within each day. Note how the sort command is placed at the end
of the hook list, in case earlier members of the list change the order
of the diary entries, or add items.
@vindex diary-include-string
Your main diary file can include other files. This permits a group of

View file

@ -1508,7 +1508,14 @@ automatically just after midnight. You can force an update at any
time by re-enabling appointment notification. Both these actions also
display the day's diary buffer, unless you set
@code{appt-display-diary} to @code{nil}. The appointments list is
also updated whenever the diary file is saved.
also updated whenever the diary file (or a file it includes; see
@iftex
@inforef{Fancy Diary Display,, emacs-xtra})
@end iftex
@ifnottex
@ref{Fancy Diary Display})
@end ifnottex
is saved.
@findex appt-add
@findex appt-delete

View file

@ -1137,6 +1137,7 @@ Dealing with Emacs Trouble
Reporting Bugs
* Known Problems:: How to read about known problems and bugs.
* Bug Criteria:: Have you really found a bug?
* Understanding Bug Reporting:: How to report a bug effectively.
* Checklist:: Steps to follow for a good bug report.

View file

@ -409,29 +409,76 @@ say something to the psychotherapist, you must end it by typing
@section Reporting Bugs
@cindex bugs
Sometimes you will encounter a bug in Emacs. Although we cannot
promise we can or will fix the bug, and we might not even agree that it
is a bug, we want to hear about problems you encounter. Often we agree
they are bugs and want to fix them.
To make it possible for us to fix a bug, you must report it. In order
to do so effectively, you must know when and how to do it.
Before reporting a bug, it is a good idea to see if it is already
known. You can find the list of known problems in the file
@file{etc/PROBLEMS} in the Emacs distribution; type @kbd{C-h C-p} to read
it. Some additional user-level problems can be found in @ref{Bugs and
problems, , Bugs and problems, efaq, GNU Emacs FAQ}. Looking up your
problem in these two documents might provide you with a solution or a
work-around, or give you additional information about related issues.
If you think you have found a bug in Emacs, please report it. We
cannot promise to fix it, or always to agree that it is a bug, but we
certainly want to hear about it. The same applies for new features
you would like to see added. The following sections will help you to
construct an effective bug report.
@menu
* Known Problems:: How to read about known problems and bugs.
* Criteria: Bug Criteria. Have you really found a bug?
* Understanding Bug Reporting:: How to report a bug effectively.
* Checklist:: Steps to follow for a good bug report.
* Sending Patches:: How to send a patch for GNU Emacs.
@end menu
@node Known Problems
@subsection Reading Existing Bug Reports and Known Problems
Before reporting a bug, if at all possible please check to see if it
is already known about. Indeed, it may already have been fixed in a
later release of Emacs, or in the development version. Here is a list
of the main places you can read about known issues:
@itemize
@item
The @file{etc/PROBLEMS} file in the Emacs distribution; type @kbd{C-h
C-p} to read it. This file contains a list of particularly well-known
issues that have been encountered in compiling, installing and running
Emacs. Often, there are suggestions for workarounds and solutions.
@item
Some additional user-level problems can be found in @ref{Bugs and
problems, , Bugs and problems, efaq, GNU Emacs FAQ}.
@item
The @samp{bug-gnu-emacs} mailing list (also available as the newsgroup
@samp{gnu.emacs.bug}). This is where you will find most Emacs bug
reports. You can read the list archives at
@url{http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs}. If you
like, you can also subscribe to the list. Be aware that the sole
purpose of this list is to provide the Emacs maintainers with
information about bugs and feature requests. Reports may contain
fairly large amounts of data; spectators should not complain about
this.
@item
The bug tracker at @url{http://debbugs.gnu.org}. From early 2008,
reports from the @samp{bug-gnu-emacs} list have been sent here. The
tracker contains the same information as the mailing list, just in a
different format. You may prefer to browse and read reports using the
tracker.
@item
The @samp{emacs-pretest-bug} mailing list. This list is no longer
used, and is mainly of historical interest. At one time, it was used
for bug reports in development (i.e., not yet released) versions of
Emacs. You can read the archives for 2003 to mid 2007 at
@url{http://lists.gnu.org/archive/html/emacs-pretest-bug/}. From
late 2007 to mid 2008, the address was an alias for the
@samp{emacs-devel} mailing list. From mid 2008 onwards, it has been
an alias for @samp{bug-gnu-emacs}.
@item
The @samp{emacs-devel} mailing list. Sometimes people report bugs to
this mailing list. This is not the main purpose of the list, however,
and it is much better to send bug reports to the bug list. You should
not feel obliged to read this list before reporting a bug.
@end itemize
@node Bug Criteria
@subsection When Is There a Bug
@ -540,56 +587,81 @@ well.
@subsection Checklist for Bug Reports
@cindex reporting bugs
The best way to send a bug report is to mail it electronically to the
Emacs maintainers at @email{bug-gnu-emacs@@gnu.org}. (If you want to
suggest a change as an improvement, use the same address.)
If you'd like to read the bug reports, you can find them on the
newsgroup @samp{gnu.emacs.bug}; keep in mind, however, that as a
spectator you should not criticize anything about what you see there.
The purpose of bug reports is to give information to the Emacs
maintainers. Spectators are welcome only as long as they do not
interfere with this. In particular, some bug reports contain fairly
large amounts of data; spectators should not complain about this.
Before reporting a bug, first try to see if the problem has already
been reported (@pxref{Known Problems}).
Please do not post bug reports using netnews; mail is more reliable
than netnews about reporting your correct address, which we may need
in order to ask you for more information. If your data is more than
500,000 bytes, please don't include it directly in the bug report;
instead, offer to send it on request, or make it available by ftp and
say where.
If you are able to, try the latest release of Emacs to see if the
problem has already been fixed. Even better is to try the latest
development version. We recognize that this is not easy for some
people, so do not feel that you absolutely must do this before making
a report.
@findex report-emacs-bug
A convenient way to send a bug report for Emacs is to use the command
@kbd{M-x report-emacs-bug}. This sets up a mail buffer (@pxref{Sending
Mail}) and automatically inserts @emph{some} of the essential
information. However, it cannot supply all the necessary information;
you should still read and follow the guidelines below, so you can enter
the other crucial information by hand before you send the message.
The best way to write a bug report for Emacs is to use the command
@kbd{M-x report-emacs-bug}. This sets up a mail buffer
(@pxref{Sending Mail}) and automatically inserts @emph{some} of the
essential information. However, it cannot supply all the necessary
information; you should still read and follow the guidelines below, so
you can enter the other crucial information by hand before you send
the message. You may feel that some of the information inserted by
@kbd{M-x report-emacs-bug} is not relevant, but unless you are
absolutely sure it is best to leave it, so that the developers can
decide for themselves.
When you have finished writing your report, type @kbd{C-c C-c} and it
will be sent to the Emacs maintainers at @email{bug-gnu-emacs@@gnu.org}.
(If you want to suggest an improvement or new feature, use the same
address.) If you cannot send mail from inside Emacs, you can copy the
text of your report to your normal mail client and send it to that
address. Or you can simply send an email to that address describing
the problem.
Your report will be sent to the @samp{bug-gnu-emacs} mailing list, and
stored in the tracker at @url{http://debbugs.gnu.org}. Please try to
include a valid reply email address, in case we need to ask you for
more information about your report. Submissions are moderated, so
there may be a delay before your report appears.
You do not need to know how the @url{http://debbugs.gnu.org} bug
tracker works in order to report a bug, but if you want to, you can
read the tracker's online documentation to see the various features
you can use.
All mail sent to the @samp{bug-gnu-emacs} mailing list is also
gatewayed to the @samp{bug.gnu.emacs} newsgroup. The reverse is also
true, but we ask you not to post bug reports via the newsgroup. It
can make it much harder to contact you if we need to ask for more
information, and it does not integrate well with the bug tracker.
If your data is more than 500,000 bytes, please don't include it
directly in the bug report; instead, offer to send it on request, or
make it available by ftp and say where.
To enable maintainers to investigate a bug, your report
should include all these things:
@itemize @bullet
@item
The version number of Emacs. Without this, we won't know whether there
is any point in looking for the bug in the current version of GNU
Emacs.
The version number of Emacs. Without this, we won't know whether there is any
point in looking for the bug in the current version of GNU Emacs.
You can get the version number by typing @kbd{M-x emacs-version
@key{RET}}. If that command does not work, you probably have something
other than GNU Emacs, so you will have to report the bug somewhere
else.
@kbd{M-x report-emacs-bug} includes this information automatically,
but if you are not using that command for your report you can get the
version number by typing @kbd{M-x emacs-version @key{RET}}. If that
command does not work, you probably have something other than GNU
Emacs, so you will have to report the bug somewhere else.
@item
The type of machine you are using, and the operating system name and
version number. @kbd{M-x emacs-version @key{RET}} provides this
information too. Copy its output from the @samp{*Messages*} buffer, so
that you get it all and get it accurately.
version number (again, automatically included by @kbd{M-x
report-emacs-bug}). @kbd{M-x emacs-version @key{RET}} provides this
information too. Copy its output from the @samp{*Messages*} buffer,
so that you get it all and get it accurately.
@item
The operands given to the @code{configure} command when Emacs was
installed.
installed (automatically included by @kbd{M-x report-emacs-bug}).
@item
A complete list of any modifications you have made to the Emacs source.
@ -619,12 +691,15 @@ the last line is terminated, but try telling the bugs that).
@item
The precise commands we need to type to reproduce the bug.
If at all possible, give a full recipe for an Emacs started with the
@samp{-Q} option (@pxref{Initial Options}). This bypasses your
@file{.emacs} customizations.
@findex open-dribble-file
@cindex dribble file
@cindex logging keystrokes
The easy way to record the input to Emacs precisely is to write a
dribble file. To start the file, execute the Lisp expression
One way to record the input to Emacs precisely is to write a dribble
file. To start the file, execute the Lisp expression
@example
(open-dribble-file "~/dribble")
@ -735,7 +810,7 @@ Check whether any programs you have loaded into the Lisp world,
including your @file{.emacs} file, set any variables that may affect the
functioning of Emacs. Also, see whether the problem happens in a
freshly started Emacs without loading your @file{.emacs} file (start
Emacs with the @code{-q} switch to prevent loading the init file). If
Emacs with the @code{-Q} switch to prevent loading the init files). If
the problem does @emph{not} occur then, you must report the precise
contents of any programs that you must load into the Lisp world in order
to cause the problem to occur.
@ -907,12 +982,10 @@ your best to help.
@itemize @bullet
@item
Send an explanation with your changes of what problem they fix or what
improvement they bring about. For a bug fix, just include a copy of the
bug report, and explain why the change fixes the bug.
(Referring to a bug report is not as good as including it, because then
we will have to look it up, and we have probably already deleted it if
we've already fixed the bug.)
improvement they bring about. For a fix for an existing bug, it is
best to reply to the relevant discussion on the @samp{bug-gnu-emacs}
list, or item in the @url{http://debbugs.gnu.org} tracker. Explain
why your change fixes the bug.
@item
Always include a proper bug report for the problem you think you have

View file

@ -40,6 +40,8 @@ This can be used in place of the default appt-message-warning-time.
* Lisp changes in Emacs 23.3
** The use of unintern without an obarray arg is declared obsolete.
** New function byte-to-string, like char-to-string but for bytes.

View file

@ -1,3 +1,72 @@
2010-09-14 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/byte-run.el (set-advertised-calling-convention):
Add `when' argument. Update callers.
* subr.el (unintern): Declare the obarray arg mandatory.
2010-09-14 Glenn Morris <rgm@gnu.org>
* calendar/diary-lib.el (diary-list-entries-hook, diary-sort-entries):
Doc fixes.
* calendar/diary-lib.el (diary-included-files): New variable.
(diary-list-entries): Maybe initialize diary-included-files.
(diary-include-other-diary-files): Append to diary-included-files.
* calendar/appt.el (appt-update-list): Also check the members of
diary-included-files. (Bug#6999)
(appt-check): Doc fix.
2010-09-14 David Reitter <david.reitter@gmail.com>
* simple.el (line-move-visual): Do not truncate goal column to
integer size. (Bug#7020)
2010-09-14 Stefan Monnier <monnier@iro.umontreal.ca>
* repeat.el (repeat): Allow repeating when the last event is a click.
Suggested by Drew Adams (bug#6256).
2010-09-14 Sascha Wilde <wilde@sha-bang.de>
* vc/vc-hg.el (vc-hg-state,vc-hg-working-revision):
Replace setting HGRCPATH to "" by some less invasive --config options.
2010-09-14 Stefan Monnier <monnier@iro.umontreal.ca>
* font-lock.el (font-lock-beginning-of-syntax-function):
Mark as obsolete.
2010-09-14 Glenn Morris <rgm@gnu.org>
* menu-bar.el (menu-bar-options-save): Fix handling of menu-bar
and tool-bar modes. (Bug#6211)
(menu-bar-mode): Move setting of standard-value after the
minor-mode definition, otherwise it seems to have no effect.
2010-09-14 Masatake YAMATO <yamato@redhat.com>
* progmodes/antlr-mode.el (antlr-font-lock-additional-keywords):
Fix typo. (Bug#6976)
2010-09-14 Vinicius Jose Latorre <viniciusjl@ig.com.br>
* whitespace.el: Allow cleaning up blanks without blank
visualization (Bug#6651). Adjust help window for
whitespace-toggle-options (Bug#6479). Allow to use fill-column
instead of whitespace-line-column (from EmacsWiki). New version 13.1.
(whitespace-style): Add new value 'face. Adjust docstring.
(whitespace-space, whitespace-hspace, whitespace-tab):
Adjust foreground property face.
(whitespace-line-column): Adjust docstring and type declaration.
(whitespace-style-value-list, whitespace-toggle-option-alist)
(whitespace-help-text): Adjust const initialization.
(whitespace-toggle-options, global-whitespace-toggle-options):
Adjust docstring.
(whitespace-display-window, whitespace-interactive-char)
(whitespace-style-face-p, whitespace-color-on): Adjust code.
(whitespace-help-scroll): New fun.
2010-09-14 Katsumi Yamaoka <yamaoka@jpl.org>
* calendar/time-date.el (format-seconds): Comment fix.
@ -116,7 +185,7 @@
(tramp-get-remote-readlink, tramp-get-remote-trash)
(tramp-get-remote-id, tramp-get-remote-uid, tramp-get-remote-gid)
(tramp-get-local-uid, tramp-get-local-gid)
(tramp-get-inline-compress, tramp-get-inline-coding, ): Move to
(tramp-get-inline-compress, tramp-get-inline-coding): Move to
tramp-sh.el.
(tramp-methods, tramp-default-method-alist)
(tramp-default-user-alist, tramp-foreign-file-name-handler-alist):

View file

@ -48,8 +48,9 @@
;; package is activated. Additionally, the appointments list is
;; recreated automatically at 12:01am for those who do not logout
;; every day or are programming late. It is also updated when the
;; `diary-file' is saved. Calling `appt-check' with an argument (or
;; re-enabling the package) forces a re-initialization at any time.
;; `diary-file' (or a file it includes) is saved. Calling
;; `appt-check' with an argument (or re-enabling the package) forces a
;; re-initialization at any time.
;;
;; In order to add or delete items from today's list, without
;; changing the diary file, use `appt-add' and `appt-delete'.
@ -262,7 +263,7 @@ The variable `appt-audible' controls the audible reminder."
"Check for an appointment and update any reminder display.
If optional argument FORCE is non-nil, reparse the diary file for
appointments. Otherwise the diary file is only parsed once per day,
and when saved.
or when it (or a file it includes) is saved.
Note: the time must be the first thing in the line in the diary
for a warning to be issued. The format of the time can be either
@ -346,6 +347,8 @@ displayed in a window:
(if d-buff ; diary buffer exists
(with-current-buffer d-buff
diary-selective-display))))
;; FIXME why not using diary-list-entries with
;; non-nil LIST-ONLY?
(diary)
;; If the diary buffer existed before this command,
;; restore its display state. Otherwise, kill it.
@ -643,8 +646,10 @@ hour and minute parts."
(defun appt-update-list ()
"If the current buffer is visiting the diary, update appointments.
This function is intended for use with `write-file-functions'."
(and (string-equal buffer-file-name (expand-file-name diary-file))
This function also acts on any file listed in `diary-included-files'.
It is intended for use with `write-file-functions'."
(and (member buffer-file-name (append diary-included-files
(list (expand-file-name diary-file))))
appt-timer
(let ((appt-display-diary nil))
(appt-check t)))

View file

@ -187,11 +187,12 @@ you will probably also want to add `diary-mark-included-diary-files' to
(setq diary-display-function 'diary-fancy-display)
(add-hook 'diary-list-entries-hook 'diary-include-other-diary-files)
(add-hook 'diary-list-entries-hook 'diary-sort-entries)
(add-hook 'diary-list-entries-hook 'diary-sort-entries t)
in your `.emacs' file to cause the fancy diary buffer to be displayed with
diary entries from various included files, each day's entries sorted into
lexicographic order."
lexicographic order. Note how the sort function is placed last,
so that it can sort the entries included from other files."
:type 'hook
:options '(diary-include-other-diary-files diary-sort-entries)
:group 'diary)
@ -699,6 +700,10 @@ of the appropriate type."
(1+ (calendar-absolute-from-gregorian gdate))))))
(goto-char (point-min)))
(defvar diary-including) ; dynamically bound in diary-include-other-diary-files
(defvar diary-included-files nil
"List of any diary files included in the last call to `diary-list-entries'.")
;; FIXME non-greg and list hooks run same number of times?
(defun diary-list-entries (date number &optional list-only)
"Create and display a buffer containing the relevant lines in `diary-file'.
@ -743,6 +748,8 @@ LIST-ONLY is non-nil, in which case it just returns the list."
(date-string (calendar-date-string date))
(diary-buffer (find-buffer-visiting diary-file))
diary-entries-list file-glob-attrs)
(or (bound-and-true-p diary-including)
(setq diary-included-files nil))
(message "Preparing diary...")
(save-current-buffer
(if (not diary-buffer)
@ -828,11 +835,15 @@ the variable `diary-include-string'."
(let ((diary-file (match-string-no-properties 1))
(diary-list-entries-hook 'diary-include-other-diary-files)
(diary-display-function 'ignore)
(diary-including t)
diary-hook diary-list-include-blanks)
(if (file-exists-p diary-file)
(if (file-readable-p diary-file)
(unwind-protect
(setq diary-entries-list
(setq diary-included-files
(append diary-included-files
(list (expand-file-name diary-file)))
diary-entries-list
(append diary-entries-list
(diary-list-entries original-date number)))
(with-current-buffer (find-buffer-visiting diary-file)
@ -1574,7 +1585,10 @@ be used instead of a colon (:) to separate the hour and minute parts."
(string-lessp ts1 ts2)))))))
(defun diary-sort-entries ()
"Sort the list of diary entries by time of day."
"Sort the list of diary entries by time of day.
If you add this function to `diary-list-entries-hook', it should
be the last item in the hook, in case earlier items add diary
entries, or change the order."
(setq diary-entries-list (sort diary-entries-list 'diary-entry-compare)))
(define-obsolete-function-alias 'sort-diary-entries 'diary-sort-entries "23.1")

View file

@ -108,10 +108,11 @@ The return value of this function is not used."
(defvar advertised-signature-table (make-hash-table :test 'eq :weakness 'key))
(defun set-advertised-calling-convention (function signature)
(defun set-advertised-calling-convention (function signature when)
"Set the advertised SIGNATURE of FUNCTION.
This will allow the byte-compiler to warn the programmer when she uses
an obsolete calling convention."
an obsolete calling convention. WHEN specifies since when the calling
convention was modified."
(puthash (indirect-function function) signature
advertised-signature-table))
@ -132,7 +133,7 @@ was first made obsolete, for example a date or a release number."
obsolete-name)
(set-advertised-calling-convention
;; New code should always provide the `when' argument.
'make-obsolete '(obsolete-name current-name when))
'make-obsolete '(obsolete-name current-name when) "23.1")
(defmacro define-obsolete-function-alias (obsolete-name current-name
&optional when docstring)
@ -153,7 +154,7 @@ See the docstrings of `defalias' and `make-obsolete' for more details."
(set-advertised-calling-convention
;; New code should always provide the `when' argument.
'define-obsolete-function-alias
'(obsolete-name current-name when &optional docstring))
'(obsolete-name current-name when &optional docstring) "23.1")
(defun make-obsolete-variable (obsolete-name current-name &optional when)
"Make the byte-compiler warn that OBSOLETE-NAME is obsolete.
@ -175,7 +176,7 @@ was first made obsolete, for example a date or a release number."
obsolete-name)
(set-advertised-calling-convention
;; New code should always provide the `when' argument.
'make-obsolete-variable '(obsolete-name current-name when))
'make-obsolete-variable '(obsolete-name current-name when) "23.1")
(defmacro define-obsolete-variable-alias (obsolete-name current-name
&optional when docstring)
@ -210,7 +211,7 @@ CURRENT-NAME, if it does not already have them:
(set-advertised-calling-convention
;; New code should always provide the `when' argument.
'define-obsolete-variable-alias
'(obsolete-name current-name when &optional docstring))
'(obsolete-name current-name when &optional docstring) "23.1")
;; FIXME This is only defined in this file because the variable- and
;; function- versions are too. Unlike those two, this one is not used

View file

@ -564,6 +564,8 @@ outside of any comment, string, or sexp. This variable is semi-obsolete;
we recommend setting `syntax-begin-function' instead.
This is normally set via `font-lock-defaults'.")
(make-obsolete-variable 'font-lock-beginning-of-syntax-function
'syntax-begin-function "23.3")
(defvar font-lock-mark-block-function nil
"*Non-nil means use this function to mark a block of text.

View file

@ -664,13 +664,23 @@ by \"Save Options\" in Custom buffers.")
;; put on a customized-value property.
(dolist (elt '(line-number-mode column-number-mode size-indication-mode
cua-mode show-paren-mode transient-mark-mode
blink-cursor-mode display-time-mode display-battery-mode))
blink-cursor-mode display-time-mode display-battery-mode
;; These are set by other functions that don't set
;; the customized state. Having them here has the
;; side-effect that turning them off via X
;; resources acts like having customized them, but
;; that seems harmless.
menu-bar-mode tool-bar-mode))
;; FIXME ? It's a little annoying that running this command
;; always loads cua-base, paren, time, and battery, even if they
;; have not been customized in any way. (Due to custom-load-symbol.)
(and (customize-mark-to-save elt)
(setq need-save t)))
;; These are set with `customize-set-variable'.
(dolist (elt '(scroll-bar-mode
debug-on-quit debug-on-error
tooltip-mode menu-bar-mode tool-bar-mode
;; Somehow this works, when tool-bar and menu-bar don't.
tooltip-mode
save-place uniquify-buffer-name-style fringe-mode
indicate-empty-lines indicate-buffer-boundaries
case-fold-search font-use-system-font
@ -2037,6 +2047,16 @@ turn on menu bars; otherwise, turn off menu bars."
(run-with-idle-timer 0 nil 'message
"Menu-bar mode disabled. Use M-x menu-bar-mode to make the menu bar appear.")))
;;;###autoload
;; (This does not work right unless it comes after the above definition.)
;; This comment is taken from tool-bar.el near
;; (put 'tool-bar-mode ...)
;; We want to pretend the menu bar by standard is on, as this will make
;; customize consider disabling the menu bar a customization, and save
;; that. We could do this for real by setting :init-value above, but
;; that would overwrite disabling the menu bar from X resources.
(put 'menu-bar-mode 'standard-value '(t))
(defun toggle-menu-bar-mode-from-frame (&optional arg)
"Toggle menu bar on or off, based on the status of the current frame.
See `menu-bar-mode' for more information."

View file

@ -951,7 +951,7 @@ group. The string matched by the first group is highlighted with
(3 antlr-keyword-face)
(4 (if (member (match-string 4) '("Lexer" "Parser" "TreeParser"))
antlr-keyword-face
type-face)))
font-lock-type-face)))
(,(lambda (limit)
(antlr-re-search-forward
"\\<\\(header\\|options\\|tokens\\|exception\\|catch\\|returns\\)\\>"

View file

@ -335,7 +335,12 @@ recently executed command not bound to an input event\"."
(setq real-last-command 'repeat)
(setq repeat-undo-count 1)
(unwind-protect
(while (eq (read-event) repeat-repeat-char)
(while (let ((evt (read-event))) ;FIXME: read-key maybe?
;; For clicks, we need to strip the meta-data to
;; check the underlying event name.
(eq (or (car-safe evt) evt)
(or (car-safe repeat-repeat-char)
repeat-repeat-char)))
(repeat repeat-arg))
;; Make sure `repeat-undo-count' is reset.
(setq repeat-undo-count nil))

View file

@ -4343,7 +4343,7 @@ into account variable-width characters and line continuation."
(or (and (= (vertical-motion
(cons (or goal-column
(if (consp temporary-goal-column)
(truncate (car temporary-goal-column))
(car temporary-goal-column)
temporary-goal-column))
arg))
arg)

View file

@ -239,7 +239,7 @@ letter but *do not* end with a period. Please follow this convention
for the sake of consistency."
(while t
(signal 'error (list (apply 'format args)))))
(set-advertised-calling-convention 'error '(string &rest args))
(set-advertised-calling-convention 'error '(string &rest args) "23.1")
;; We put this here instead of in frame.el so that it's defined even on
;; systems where frame.el isn't loaded.
@ -1039,9 +1039,10 @@ is converted into a string by expressing it in decimal."
(make-obsolete 'make-variable-frame-local
"explicitly check for a frame-parameter instead." "22.2")
(make-obsolete 'interactive-p 'called-interactively-p "23.2")
(set-advertised-calling-convention 'called-interactively-p '(kind))
(set-advertised-calling-convention 'called-interactively-p '(kind) "23.1")
(set-advertised-calling-convention
'all-completions '(string collection &optional predicate))
'all-completions '(string collection &optional predicate) "23.1")
(set-advertised-calling-convention 'unintern '(name obarray) "23.3")
;;;; Obsolescence declarations for variables, and aliases.
@ -2064,7 +2065,7 @@ floating point support."
(setq read (cons t read)))
(push read unread-command-events)
nil))))))
(set-advertised-calling-convention 'sit-for '(seconds &optional nodisp))
(set-advertised-calling-convention 'sit-for '(seconds &optional nodisp) "22.1")
;;; Atomic change groups.
@ -2592,7 +2593,7 @@ discouraged."
(start-process name buffer shell-file-name shell-command-switch
(mapconcat 'identity args " ")))
(set-advertised-calling-convention 'start-process-shell-command
'(name buffer command))
'(name buffer command) "23.1")
(defun start-file-process-shell-command (name buffer &rest args)
"Start a program in a subprocess. Return the process object for it.
@ -2603,7 +2604,7 @@ Similar to `start-process-shell-command', but calls `start-file-process'."
(if (file-remote-p default-directory) "-c" shell-command-switch)
(mapconcat 'identity args " ")))
(set-advertised-calling-convention 'start-file-process-shell-command
'(name buffer command))
'(name buffer command) "23.1")
(defun call-process-shell-command (command &optional infile buffer display
&rest args)

View file

@ -1,3 +1,15 @@
2010-09-14 Julien Danjou <julien@danjou.info>
* url-cache (url-store-in-cache): Make `buff' argument really optional.
2010-09-14 Glenn Morris <rgm@gnu.org>
* url-cookie.el (url-cookie-expired-p): Tweak previous change.
2010-09-14 shawn boles <shawn.boles@gmail.com> (tiny change)
* url-cookie.el (url-cookie-expired-p): Simplify and fix. (Bug#6957)
2010-09-11 Glenn Morris <rgm@gnu.org>
* url-cache.el, url-gw.el, url-history.el, url-irc.el, url-util.el:

View file

@ -62,14 +62,11 @@ FILE can be created or overwritten."
;;;###autoload
(defun url-store-in-cache (&optional buff)
"Store buffer BUFF in the cache."
(if (not (and buff (get-buffer buff)))
nil
(save-current-buffer
(and buff (set-buffer buff))
(let* ((fname (url-cache-create-filename (url-view-url t))))
(if (url-cache-prepare fname)
(let ((coding-system-for-write 'binary))
(write-region (point-min) (point-max) fname nil 5)))))))
(with-current-buffer (get-buffer (or buff (current-buffer)))
(let ((fname (url-cache-create-filename (url-view-url t))))
(if (url-cache-prepare fname)
(let ((coding-system-for-write 'binary))
(write-region (point-min) (point-max) fname nil 5))))))
;;;###autoload
(defun url-is-cached (url)

View file

@ -1,7 +1,7 @@
;;; url-cookie.el --- Netscape Cookie support
;; Copyright (C) 1996, 1997, 1998, 1999, 2004,
;; 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
;; Copyright (C) 1996, 1997, 1998, 1999, 2004, 2005, 2006, 2007, 2008,
;; 2009, 2010 Free Software Foundation, Inc.
;; Keywords: comm, data, processes, hypermedia
@ -24,7 +24,6 @@
;;; Code:
(require 'timezone)
(require 'url-util)
(require 'url-parse)
(eval-when-compile (require 'cl))
@ -194,34 +193,9 @@ telling Microsoft that."
(setq url-cookie-storage (list (list domain tmp))))))))
(defun url-cookie-expired-p (cookie)
(let* (
(exp (url-cookie-expires cookie))
(cur-date (and exp (timezone-parse-date (current-time-string))))
(exp-date (and exp (timezone-parse-date exp)))
(cur-greg (and cur-date (timezone-absolute-from-gregorian
(string-to-number (aref cur-date 1))
(string-to-number (aref cur-date 2))
(string-to-number (aref cur-date 0)))))
(exp-greg (and exp (timezone-absolute-from-gregorian
(string-to-number (aref exp-date 1))
(string-to-number (aref exp-date 2))
(string-to-number (aref exp-date 0)))))
(diff-in-days (and exp (- cur-greg exp-greg)))
)
(cond
((not exp) nil) ; No expiry == expires at browser quit
((< diff-in-days 0) nil) ; Expires sometime after today
((> diff-in-days 0) t) ; Expired before today
(t ; Expires sometime today, check times
(let* ((cur-time (timezone-parse-time (aref cur-date 3)))
(exp-time (timezone-parse-time (aref exp-date 3)))
(cur-norm (+ (* 360 (string-to-number (aref cur-time 2)))
(* 60 (string-to-number (aref cur-time 1)))
(* 1 (string-to-number (aref cur-time 0)))))
(exp-norm (+ (* 360 (string-to-number (aref exp-time 2)))
(* 60 (string-to-number (aref exp-time 1)))
(* 1 (string-to-number (aref exp-time 0))))))
(> (- cur-norm exp-norm) 1))))))
"Return non-nil if COOKIE is expired."
(let ((exp (url-cookie-expires cookie)))
(and exp (> (float-time) (float-time (date-to-time exp))))))
(defun url-cookie-retrieve (host &optional localpart secure)
"Retrieve all the netscape-style cookies for a specified HOST and LOCALPART."

View file

@ -171,10 +171,12 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
(let ((process-environment
;; Avoid localization of messages so we
;; can parse the output.
(append (list "TERM=dumb" "LANGUAGE=C" "HGRCPATH=")
(append (list "TERM=dumb" "LANGUAGE=C")
process-environment)))
(process-file
"hg" nil t nil
"--config" "alias.status=status"
"--config" "defaults.status="
"status" "-A" (file-relative-name file)))
;; Some problem happened. E.g. We can't find an `hg'
;; executable.
@ -199,7 +201,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
((status nil)
(default-directory (file-name-directory file))
;; Avoid localization of messages so we can parse the output.
(avoid-local-env (append (list "TERM=dumb" "LANGUAGE=C" "HGRCPATH=")
(avoid-local-env (append (list "TERM=dumb" "LANGUAGE=C")
process-environment))
(out
(with-output-to-string
@ -211,6 +213,8 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
;; Ignore all errors.
(process-file
"hg" nil t nil
"--config" "alias.parents=parents"
"--config" "defaults.parents="
"parents" "--template" "{rev}" (file-relative-name file)))
;; Some problem happened. E.g. We can't find an `hg'
;; executable.

View file

@ -1,7 +1,29 @@
2010-09-14 Jan Djärv <jan.h.d@swipnet.se>
* xterm.c (get_current_vm_state): New function.
(do_ewmh_fullscreen): Call get_current_vm_state and compare with
want_fullscreen so set_wm_state calls are few (Bug#7013).
(x_handle_net_wm_state): Move code to get_current_vm_state and
call that function.
2010-09-14 Courtney Bane <emacs-bugs-7626@cbane.org> (tiny change)
* term.c (tty_set_terminal_modes): Don't initialize twice (bug#7002).
2010-09-14 Kenichi Handa <handa@m17n.org>
* coding.c (encode_coding_iso_2022): Don't optimize for ASCII if
we may use designation or locking-shift.
2010-09-14 Kenichi Handa <handa@m17n.org>
* coding.c (detect_coding_emacs_mule): Fix checking of multibyte
sequence when the source is multibyte.
2010-09-14 Andreas Schwab <schwab@linux-m68k.org>
* xml.c (Fxml_parse_string, Fxml_parse_string): Revert last
change. Don't make first argument optional. Doc fix.
* xml.c (Fxml_parse_string, Fxml_parse_string): Revert last change.
Don't make first argument optional. Doc fix.
2010-09-14 Leo <sdl.web@gmail.com> (tiny change)
@ -111,8 +133,8 @@
(produce_stretch_glyph): Set it2.char_to_display too before
calling x_produce_glyphs.
(x_produce_glyphs): Simplify by using the same code for ASCII and
non-ASCII characters. Don't set it->char_to_display here. Don't
handle unibyte-display-via-language-environment here. For a
non-ASCII characters. Don't set it->char_to_display here.
Don't handle unibyte-display-via-language-environment here. For a
charater of no glyph, use font->space_width instead of FONT_WIDTH.
2010-08-31 Stefan Monnier <monnier@iro.umontreal.ca>

View file

@ -2008,7 +2008,7 @@ detect_coding_emacs_mule (struct coding_system *coding,
}
else
{
int more_bytes = emacs_mule_bytes[*src_base] - 1;
int more_bytes = emacs_mule_bytes[c] - 1;
while (more_bytes > 0)
{
@ -4490,7 +4490,10 @@ encode_coding_iso_2022 (struct coding_system *coding)
charset_list = CODING_ATTR_CHARSET_LIST (attrs);
coding->safe_charsets = SDATA (CODING_ATTR_SAFE_CHARSETS (attrs));
ascii_compatible = ! NILP (CODING_ATTR_ASCII_COMPAT (attrs));
ascii_compatible
= (! NILP (CODING_ATTR_ASCII_COMPAT (attrs))
&& ! (CODING_ISO_FLAGS (coding) & (CODING_ISO_FLAG_DESIGNATION
| CODING_ISO_FLAG_LOCKING_SHIFT)));
while (charbuf < charbuf_end)
{

View file

@ -247,7 +247,6 @@ tty_set_terminal_modes (struct terminal *terminal)
cmputc ('\n');
}
OUTPUT_IF (tty, tty->TS_termcap_modes);
OUTPUT_IF (tty, visible_cursor ? tty->TS_cursor_visible : tty->TS_cursor_normal);
OUTPUT_IF (tty, tty->TS_keypad_mode);
losecursor (tty);

View file

@ -8285,19 +8285,89 @@ x_set_sticky (struct frame *f, Lisp_Object new_value, Lisp_Object old_value)
"_NET_WM_STATE_STICKY", NULL);
}
/* Return the current _NET_WM_STATE.
SIZE_STATE is set to one of the FULLSCREEN_* values.
STICKY is set to 1 if the sticky state is set, 0 if not. */
static void
get_current_vm_state (struct frame *f,
Window window,
int *size_state,
int *sticky)
{
Atom actual_type;
unsigned long actual_size, bytes_remaining;
int i, rc, actual_format;
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
long max_len = 65536;
Display *dpy = FRAME_X_DISPLAY (f);
unsigned char *tmp_data = NULL;
Atom target_type = XA_ATOM;
*sticky = 0;
*size_state = FULLSCREEN_NONE;
BLOCK_INPUT;
x_catch_errors (dpy);
rc = XGetWindowProperty (dpy, window, dpyinfo->Xatom_net_wm_state,
0, max_len, False, target_type,
&actual_type, &actual_format, &actual_size,
&bytes_remaining, &tmp_data);
if (rc != Success || actual_type != target_type || x_had_errors_p (dpy))
{
if (tmp_data) XFree (tmp_data);
x_uncatch_errors ();
UNBLOCK_INPUT;
return;
}
x_uncatch_errors ();
for (i = 0; i < actual_size; ++i)
{
Atom a = ((Atom*)tmp_data)[i];
if (a == dpyinfo->Xatom_net_wm_state_maximized_horz)
{
if (*size_state == FULLSCREEN_HEIGHT)
*size_state = FULLSCREEN_MAXIMIZED;
else
*size_state = FULLSCREEN_WIDTH;
}
else if (a == dpyinfo->Xatom_net_wm_state_maximized_vert)
{
if (*size_state == FULLSCREEN_WIDTH)
*size_state = FULLSCREEN_MAXIMIZED;
else
*size_state = FULLSCREEN_HEIGHT;
}
else if (a == dpyinfo->Xatom_net_wm_state_fullscreen_atom)
*size_state = FULLSCREEN_BOTH;
else if (a == dpyinfo->Xatom_net_wm_state_sticky)
*sticky = 1;
}
if (tmp_data) XFree (tmp_data);
UNBLOCK_INPUT;
}
/* Do fullscreen as specified in extended window manager hints */
static int
do_ewmh_fullscreen (struct frame *f)
{
int have_net_atom = wm_supports (f, "_NET_WM_STATE");
Lisp_Object lval = get_frame_param (f, Qfullscreen);
int cur, dummy;
get_current_vm_state (f, FRAME_OUTER_WINDOW (f), &cur, &dummy);
/* Some window managers don't say they support _NET_WM_STATE, but they do say
they support _NET_WM_STATE_FULLSCREEN. Try that also. */
if (!have_net_atom)
have_net_atom = wm_supports (f, "_NET_WM_STATE_FULLSCREEN");
if (have_net_atom)
if (have_net_atom && cur != f->want_fullscreen)
{
Lisp_Object frame;
const char *fs = "_NET_WM_STATE_FULLSCREEN";
@ -8306,26 +8376,41 @@ do_ewmh_fullscreen (struct frame *f)
XSETFRAME (frame, f);
set_wm_state (frame, 0, fs, NULL);
set_wm_state (frame, 0, fh, NULL);
set_wm_state (frame, 0, fw, NULL);
/* If there are _NET_ atoms we assume we have extended window manager
hints. */
/* Keep number of calls to set_wm_state as low as possible.
Some window managers, or possible Gtk+, hangs when too many
are sent at once. */
switch (f->want_fullscreen)
{
case FULLSCREEN_BOTH:
if (cur == FULLSCREEN_WIDTH || cur == FULLSCREEN_MAXIMIZED
|| cur == FULLSCREEN_HEIGHT)
set_wm_state (frame, 0, fw, fh);
set_wm_state (frame, 1, fs, NULL);
break;
case FULLSCREEN_WIDTH:
set_wm_state (frame, 1, fw, NULL);
if (cur == FULLSCREEN_BOTH || cur == FULLSCREEN_HEIGHT
|| cur == FULLSCREEN_MAXIMIZED)
set_wm_state (frame, 0, fs, fh);
if (cur != FULLSCREEN_MAXIMIZED)
set_wm_state (frame, 1, fw, NULL);
break;
case FULLSCREEN_HEIGHT:
set_wm_state (frame, 1, fh, NULL);
if (cur == FULLSCREEN_BOTH || cur == FULLSCREEN_WIDTH
|| cur == FULLSCREEN_MAXIMIZED)
set_wm_state (frame, 0, fs, fw);
if (cur != FULLSCREEN_MAXIMIZED)
set_wm_state (frame, 1, fh, NULL);
break;
case FULLSCREEN_MAXIMIZED:
if (cur == FULLSCREEN_BOTH)
set_wm_state (frame, 0, fs, NULL);
set_wm_state (frame, 1, fw, fh);
break;
case FULLSCREEN_NONE:
if (cur == FULLSCREEN_BOTH)
set_wm_state (frame, 0, fs, NULL);
else
set_wm_state (frame, 0, fw, fh);
}
f->want_fullscreen = FULLSCREEN_NONE;
@ -8351,57 +8436,11 @@ XTfullscreen_hook (FRAME_PTR f)
static void
x_handle_net_wm_state (struct frame *f, XPropertyEvent *event)
{
Atom actual_type;
unsigned long actual_size, bytes_remaining;
int i, rc, actual_format, value = FULLSCREEN_NONE;
struct x_display_info *dpyinfo = FRAME_X_DISPLAY_INFO (f);
long max_len = 65536;
Display *dpy = FRAME_X_DISPLAY (f);
unsigned char *tmp_data = NULL;
Atom target_type = XA_ATOM;
int value = FULLSCREEN_NONE;
Lisp_Object lval;
int sticky = 0;
BLOCK_INPUT;
x_catch_errors (dpy);
rc = XGetWindowProperty (dpy, event->window,
event->atom, 0, max_len, False, target_type,
&actual_type, &actual_format, &actual_size,
&bytes_remaining, &tmp_data);
if (rc != Success || actual_type != target_type || x_had_errors_p (dpy))
{
if (tmp_data) XFree (tmp_data);
x_uncatch_errors ();
UNBLOCK_INPUT;
return;
}
x_uncatch_errors ();
for (i = 0; i < actual_size; ++i)
{
Atom a = ((Atom*)tmp_data)[i];
if (a == dpyinfo->Xatom_net_wm_state_maximized_horz)
{
if (value == FULLSCREEN_HEIGHT)
value = FULLSCREEN_MAXIMIZED;
else
value = FULLSCREEN_WIDTH;
}
else if (a == dpyinfo->Xatom_net_wm_state_maximized_vert)
{
if (value == FULLSCREEN_WIDTH)
value = FULLSCREEN_MAXIMIZED;
else
value = FULLSCREEN_HEIGHT;
}
else if (a == dpyinfo->Xatom_net_wm_state_fullscreen_atom)
value = FULLSCREEN_BOTH;
else if (a == dpyinfo->Xatom_net_wm_state_sticky)
sticky = 1;
}
get_current_vm_state (f, event->window, &value, &sticky);
lval = Qnil;
switch (value)
{
@ -8421,9 +8460,6 @@ x_handle_net_wm_state (struct frame *f, XPropertyEvent *event)
store_frame_param (f, Qfullscreen, lval);
store_frame_param (f, Qsticky, sticky ? Qt : Qnil);
if (tmp_data) XFree (tmp_data);
UNBLOCK_INPUT;
}
/* Check if we need to resize the frame due to a fullscreen request.