/confdefs.h
/config.status
/configure.lineno
+/conftest*
src/config.h
src/epaths.h
-Copyright (C) 2006-2014 Free Software Foundation, Inc.
-See end for license conditions.
+This file contains information on Emacs developer processes.
+For information on contributing to Emacs as a non-developer, see
+(info "(emacs)Contributing") or
+http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html
- Contributing to Emacs
-
-Emacs is a collaborative project and we encourage contributions from
-anyone and everyone. If you want to contribute in the way that will
-help us most, we recommend (1) fixing reported bugs and (2)
-implementing the feature ideas in etc/TODO. However, if you think of
-new features to add, please suggest them too -- we might like your
-idea. Porting to new platforms is also useful, when there is a new
-platform, but that is not common nowadays.
-
-For documentation on Emacs (to understand how to implement your
-desired change), refer to:
-
-- the Emacs Manual
- http://www.gnu.org/software/emacs/manual/emacs.html
- (info "(Emacs)Top")
-
-- the Emacs Lisp Reference Manual
- http://www.gnu.org/software/emacs/manual/elisp.html
- (info "(elisp)Top")
-
-- http://www.gnu.org/software/emacs
-
-- http://www.emacswiki.org/
-
-There are many ways to contribute to Emacs:
-
-- implement a new feature, and submit a patch (see "Submitting
- Patches" below).
-
-- answer questions on the Emacs user mailing list
- https://lists.gnu.org/mailman/listinfo/help-gnu-emacs
-
-- write documentation, either on the wiki, or in the Emacs source
- repository (see "Submitting Patches" below)
-
-- find and report bugs; use M-x report-emacs-bug
-
-- check if existing bug reports are fixed in newer versions of Emacs
- http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs
-
-- develop a package that works with Emacs, and publish it on your own
- or in Gnu ELPA (see admin/notes/elpa).
-
-Here are some style and legal conventions for contributors to Emacs:
-
-
-* Coding Standards
-
-Contributed code should follow the GNU Coding Standards
-(http://www.gnu.org/prep/standards/ - may also be available in info on
-your system).
-
-If it doesn't, we'll need to find someone to fix the code before we
-can use it.
-
-Emacs has additional style and coding conventions:
-
-- the "Tips" Appendix in the Emacs Lisp Reference
- http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html
- (info "(elisp)Tips").
-
-- Avoid using `defadvice' or `eval-after-load' for Lisp code to be
- included in Emacs.
-
-- Remove all trailing whitespace in all source and text files.
-
-- Emacs has no convention on whether to use tabs in source code;
- please don't change whitespace in the files you edit.
-
-- Use ?\s instead of ? in Lisp code for a space character.
-
-* Copyright Assignment
-
-The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
-The FSF is a nonprofit with a worldwide mission to promote computer
-user freedom and to defend the rights of all free software users.
-For general information, see the website http://www.fsf.org/ .
-
-Generally speaking, for non-trivial contributions to GNU Emacs we
-require that the copyright be assigned to the FSF. For the reasons
-behind this, see: http://www.gnu.org/licenses/why-assign.html .
-
-Copyright assignment is a simple process. Residents of some countries
-can do it entirely electronically. We can help you get started, and
-answer any questions you may have (or point you to the people with the
-answers), at the emacs-devel@gnu.org mailing list.
-
-(Please note: general discussion about why some GNU projects ask
-for a copyright assignment is off-topic for emacs-devel.
-See gnu-misc-discuss instead.)
-
-A copyright disclaimer is also a possibility, but we prefer an assignment.
-Note that the disclaimer, like an assignment, involves you sending
-signed paperwork to the FSF (simply saying "this is in the public domain"
-is not enough). Also, a disclaimer cannot be applied to future work, it
-has to be repeated each time you want to send something new.
-
-We can accept small changes (roughly, fewer than 15 lines) without
-an assignment. This is a cumulative limit (e.g. three separate 5 line
-patches) over all your contributions.
-
-* Getting the Source Code
-
-The current working version of the Emacs source code is stored in a
-git repository on the Savannah web site
-(http://savannah.gnu.org/projects/emacs). It is important to write
-your patch based on the current working version. If you start from an
-older version, your patch may be outdated (so that maintainers will
-have a hard time applying it), or changes in Emacs may have made your
-patch unnecessary.
-
-After you have downloaded the repository source, you should read the file
-INSTALL.REPO for build instructions (they differ to some extent from a
-normal build).
-
-* Submitting Patches
-
-Every patch must have several pieces of information before we
-can properly evaluate it.
-
-When you have all these pieces, bundle them up in a mail message and
-send it to the developers. Sending it to bug-gnu-emacs@gnu.org
-(which is the bug/feature list) is recommended, because that list
-is coupled to a tracking system that makes it easier to locate patches.
-If your patch is not complete and you think it needs more discussion,
-you might want to send it to emacs-devel@gnu.org instead. If you
-revise your patch, send it as a followup to the initial topic.
-
-** Description
-
-For bug fixes, a description of the bug and how your patch fixes it.
-
-For new features, a description of the feature and your implementation.
-
-** ChangeLog
-
-A ChangeLog entry as plaintext (separate from the patch).
-
-See the existing ChangeLog files for format and content. Note that,
-unlike some other projects, we do require ChangeLogs for
-documentation, i.e. Texinfo files.
-
-Ref: "Change Log Concepts" node of the GNU Coding Standards Info
-Manual, for how to write good log entries.
-http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html
-
-When using git, commit messages should use ChangeLog format, with a
-single short line explaining the change, then an empty line, then
-unindented ChangeLog entries. (Essentially, a commit message should
-be a duplicate of what the patch adds to the ChangeLog files. We are
-planning to automate this better, to avoid the duplication.) You can
-use the Emacs functions log-edit-add-to-changelog or
-log-edit-insert-changelog to ease this process.
-
-** The patch itself.
-
-If you are accessing the Emacs repository, make sure your copy is
-up-to-date (e.g. with 'git pull'). You can commit your changes
-to a private branch and generate a patch from the master version
-by using
- git format-patch master
-Or you can leave your changes uncommitted and use
- git diff
-With no repository, you can use
- diff -u OLD NEW
-
-** Mail format.
-
-We prefer to get the patches as plain text, either inline (be careful
-your mail client does not change line breaks) or as MIME attachments.
-
-** Please reread your patch before submitting it.
-
-** Do not mix changes.
-
-If you send several unrelated changes together, we will ask you to
-separate them so we can consider each of the changes by itself.
-
-** Do not make formatting changes.
-
-Making cosmetic formatting changes (indentation, etc) makes it harder
-to see what you have really changed.
-
-
-* Supplemental information for Emacs Developers.
+* Information for Emacs Developers.
An "Emacs Developer" is someone who contributes a lot of code or
-documentation to the Emacs repository.
+documentation to the Emacs repository. Generally, they have write
+access to the Emacs git repository on Savannah
+https://savannah.gnu.org/git/?group=emacs.
** Write access to the Emacs repository.
and the committer; use the --author option on the commit command to
specify the actual author; the committer defaults to you.
+** commit messages
+
+When using git, commit messages should use ChangeLog format, with the
+following modifications:
+
+- Add a single short line explaining the change, then an empty line,
+ then unindented ChangeLog entries.
+
+ You can use various Emacs functions to ease this process; see (info
+ "(emacs)Change Log Commands") or
+ http://www.gnu.org/software/emacs/manual/html_node/emacs/Change-Log-Commands.html.
+
+- The summary line is limited to 72 characters (enforced by a commit
+ hook). If you have trouble making that a good summary, add a
+ paragraph below it, before the individual file descriptions.
+
+- If only a single file is changed, the summary line can be the normal
+ file first line (starting with the asterisk). Then there is no
+ individual files section.
+
+- Explaining the rationale for a design choice is best done in comments
+ in the source code. However, sometimes it is useful to describe just
+ the rationale for a change; that can be done in the commit message
+ between the summary line and the file entries.
+
** Changelog notes
- Emacs generally follows the GNU coding standards when it comes to
standards used to recommend) rather than 'like-this' (as they do
now), because `...' is so widely used elsewhere in Emacs.
+- Some of the rules in the GNU coding standards section 5.2
+ "Commenting Your Work" also apply to Changelog entries: they must be
+ in English, and be complete sentences starting with a capital and
+ ending with a period (except the summary line should not end in a
+ period).
+
+ It is tempting to relax this rule for commit messages, since they
+ are somewhat transient. However, they are preserved indefinitely,
+ and have a reasonable chance of being read in the future, so it's
+ better that they have good presentation.
+
- There are multiple ChangeLogs in the emacs source; roughly one per
high-level directory. The ChangeLog entry for a commit belongs in the
lowest ChangeLog that is higher than or at the same level as any file
changed by the commit.
+- Use the present tense; describe "what the change does", not "what
+ the change did".
+
- Preferred form for several entries with the same content:
* help.el (view-lossage):
(Rather than anything involving "ditto" and suchlike.)
-- In ChangeLog files, there is no standard or recommended way to
+- If the commit fixes a bug, add a separate line
+
+ Fixes: bug#NNNN
+
+ where NNNN is the bug number.
+
+- In ChangeLog entries, there is no standard or recommended way to
identify revisions.
One way to identify revisions is by quoting their summary line.
"2014-01-16T05:43:35Z!esr@thyrsus.com". Often, "my previous commit"
will suffice.
-- There is no need to make separate change log entries for files such
+- There is no need to make separate ChangeLog entries for files such
as NEWS, MAINTAINERS, and FOR-RELEASE, or to indicate regeneration
of files such as 'configure'. "There is no need" means you don't
have to, but you can if you want to.
Sometime before the release of a new major version of Emacs a "feature
freeze" is imposed on the trunk, to prepare for creating a release
branch. No new features may be added to the trunk after this point,
-until the release branch is created. This freeze is announced on the
-emacs-devel mailing list, and not anywhere else.
+until the release branch is created. Announcements about the freeze
+(and other important events) are made on the info-gnu-emacs mailing
+list, and not anywhere else.
The trunk branch is named "master" in git; release branches are named
"emacs-nn" where "nn" is the major version.
-You must follow emacs-devel to know exactly what kinds of changes are
-allowed on what branch at any time. Announcements about the freeze
-(and other important events) will contain "ANNOUNCE" in the subject.
-
If you are fixing a bug that exists in the current release, be sure to
commit it to the release branch; it will be merged to the master
branch later.
See all the files in admin/notes/* . In particular, see
admin/notes/newfile, see admin/notes/repo.
+*** git vs rename
+
+git does not explicitly represent a file renaming; it uses a percent
+changed heuristic to deduce that a file was renamed. So if you are
+planning to make extensive changes to a file after renaming it (or
+moving it to another directory), you should:
+
+- create a feature branch
+
+- commit the rename without any changes
+
+- make other changes
+
+- merge the feature branch to trunk, _not_ squashing the commits into
+ one. The commit message on this merge should summarize the renames
+ and all the changes.
+
** Emacs Mailing lists.
Discussion about Emacs development takes place on emacs-devel@gnu.org.
+2014-12-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ * .gitignore: Ignore /conftest*.
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * build-aux/git-hooks/commit-msg (at_sign): Bump up line-length limit
+ to 78.
+
+2014-12-25 Paul Eggert <eggert@cs.ucla.edu>
+
+ Prefer stpcpy to strcat
+ * admin/merge-gnulib (GNULIB_MODULES): Add stpcpy.
+ * lib/gnulib.mk, m4/gnulib-comp.m4: Regenerate.
+ * lib/stpcpy.c, m4/stpcpy.m4: New files, from gnulib.
+ * lib-src/ebrowse.c (sym_scope_1, operator_name, open_file):
+ * lib-src/emacsclient.c (get_server_config, set_local_socket)
+ (start_daemon_and_retry_set_socket):
+ * lib-src/etags.c (main, C_entries, relative_filename):
+ * lib-src/pop.c (sendline):
+ * lib-src/update-game-score.c (main):
+ * lwlib/xlwmenu.c (resource_widget_value):
+ * src/callproc.c (child_setup):
+ * src/dbusbind.c (xd_signature_cat):
+ * src/doc.c (get_doc_string, Fsnarf_documentation):
+ * src/editfns.c (Fuser_full_name):
+ * src/frame.c (xrdb_get_resource):
+ * src/gtkutil.c (xg_get_file_with_chooser):
+ * src/tparam.c (tparam1):
+ * src/xfns.c (xic_create_fontsetname):
+ * src/xrdb.c (gethomedir, get_user_db, get_environ_db):
+ * src/xsmfns.c (smc_save_yourself_CB):
+ Rewrite to avoid the need for strcat, typically by using stpcpy
+ and/or lispstpcpy. strcat tends to be part of O(N**2) algorithms.
+ * src/doc.c (sibling_etc):
+ * src/xrdb.c (xdefaults):
+ Now a top-level static constant.
+
+2014-12-24 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ * CONTRIBUTE: Move user-level information to doc/emacs/trouble.texi.
+ Add Savannah url, cleanup announcing freeze.
+ (commit messages): New, gathered from comments on emacs-devel.
+ (Changelog notes): Add reference to GNU coding standards section 5.2;
+ doc 'present tense', bug fix format.
+ (branches): Freeze announcements are made on info-gnu-emacs mailing
+ list.
+ (git vs rename): New.
+
2014-12-23 Paul Eggert <eggert@cs.ucla.edu>
Merge from gnulib
2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
- Spelling fixes
- All uses changed.
- * lib-src/etags.c (analyze_regex): Rename from analyse_regex.
- * lisp/cedet/semantic/lex-spp.el:
- (semantic-lex-spp-analyzer-do-replace):
- Rename from semantic-lex-spp-anlyzer-do-replace.
- * lisp/emacs-lisp/cconv.el (cconv--analyze-use):
- Rename from cconv--analyse-use.
- (cconv--analyze-function): Rename from cconv--analyse-function.
- (cconv-analyze-form): Rename from cconv-analyse-form.
+ Spelling fixes. All uses changed.
* src/regex.c (analyze_first): Rename from analyze_first.
2014-12-14 Glenn Morris <rgm@gnu.org>
2014-11-11 Eric S. Raymond <esr@thyrsus.com>
- * Makefile.in: git transition - set VCWITNESS appropriately for git.
+ Git transition.
+ * Makefile.in (src): Set VCSWITNESS appropriately for git.
All bzr revision IDS, and all CVS revision IDs for which a commit
could be identified, were changed to time-date!committer version
+2014-12-24 Glenn Morris <rgm@gnu.org>
+
+ * authors.el (authors-obsolete-files-regexps)
+ (authors-ignored-files, authors-valid-file-names)
+ (authors-renamed-files-alist, authors-renamed-files-regexps):
+ Additions.
+
2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
* notes/unicode: Track leim/quail file renames.
- Correct coding system
- of lisp/international/titdic-cnv.el.
+ Correct coding system of lisp/international/titdic-cnv.el.
2014-12-14 Glenn Morris <rgm@gnu.org>
(defvar authors-obsolete-files-regexps
'(".*loaddefs.el$" ; not obsolete, but auto-generated
- "\\.\\(cvs\\|git\\)ignore$" ; obsolete or uninteresting
+ "\\.\\(bzr\\|cvs\\|git\\)ignore$" ; obsolete or uninteresting
"\\.arch-inventory$"
"automated/data/" ; not interesting
;; TODO lib/? Matches other things?
"CODINGS" "CHARSETS"
"calc/INSTALL" "calc/Makefile" "calc/README.prev"
"vms-pp.trans" "_emacs" "batcomp.com" "notes/cpp" ; admin/
+ "notes/BRANCH" "notes/exit-value"
"emacsver.texi.in"
"vpath.sed"
"Cocoa/Emacs.base/Contents/Info.plist"
"images/page-down.xpm" "images/widen.pbm" "images/widen.xpm"
"images/gnus/bar.xbm" "images/gnus/bar.xpm"
"images/gnus/reverse-smile.xpm"
+ "notes/commits" "notes/changelogs"
"revdiff" ; admin/
"vcdiff" "rcs-checkin" "tindex.pl"
"mainmake" "sed1.inp" "sed2.inp" "sed3.inp" ; msdos/
"org-lparse.el"
"org-special-blocks.el" "org-taskjuggler.el"
"progmodes/cap-words.el"
+ "w32-common-fns.el"
;; gnus
"nnwfm.el" "nnlistserv.el" "nnkiboze.el" "nndb.el" "nnsoup.el"
"netrc.el" "password.el" "sasl-cram.el" "sasl-digest.el" "sasl-ntlm.el"
"etags-vmslib.c" "fakemail.c" "getdate.c" "getopt.h" "getopt1.c"
"getopt_.h" "getopt_int.h" "gettext.h" "leditcfns.c" "loadst.c"
"make-path.c" "qsort.c" "sorted-doc.c" "tcp.c" "timer.c" "wakeup.c"
- "yow.c" "grep-changelog"
+ "yow.c" "grep-changelog" "grep-changelog.1"
;; etc/
"emacsclient.c" "etags.c" "hexl.c" "make-docfile.c" "movemail.c"
"test-distrib.c" "testfile"
;; The one in lisp is eshell/eshell.el.
("eshell.el" . "automated/eshell.el")
("eshell/esh-test.el" . "automated/eshell.el")
+ ("automated/cl-lib.el" . "automated/cl-lib-tests.el")
("automated/package-x-test.el" . "automated/package-test.el")
;; INSTALL-CVS -> .CVS -> .BZR -> .REPO
("INSTALL-CVS" . "INSTALL.REPO")
("grammars/wisent-grammar.el" . "wisent/grammar.el")
;; Moved from admin/nt/ to nt/.
("nt/README.W32" . "README.W32")
+ ("notes/BRANCH" . "notes/repo")
+ ("notes/bzr" . "notes/repo")
)
"Alist of files which have been renamed during their lifetime.
Elements are (OLDNAME . NEWNAME).")
("comint-testsuite.el" "automated/\\&")
("\\`\\(bytecomp\\|font-parse\\|icalendar\\|occur\\|newsticker\\)\
-testsuite\\.el" "automated/\\1-tests.el")
+ ("automated/flymake/warnpred/\\(Makefile\\|test\\.\\(?:c\\|pl\\)\\)\\'"
+ "automated/data/flymake/\\1")
;; NB lax rules should come last.
("^m/m-\\(.*\\.h\\)$" "m/\\1" t)
("^m-\\(.*\\.h\\)$" "\\1" t)
manywarnings memrchr mkostemp mktime
pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat
sig2str socklen stat-time stdalign stddef stdio
- strftime strtoimax strtoumax symlink sys_stat
+ stpcpy strftime strtoimax strtoumax symlink sys_stat
sys_time time time_r timer-time timespec-add timespec-sub
unsetenv update-copyright utimens
vla warnings
status = 1
}
- 72 < length && $0 ~ space {
- print "Line longer than 72 characters in commit message"
+ 78 < length && $0 ~ space {
+ print "Line longer than 78 characters in commit message"
status = 1
}
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * buffers.texi (Kill Buffer): Improve indexing.
+
+2014-12-24 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ * trouble.texi: Move user-level information from CONTRIBUTE here.
+
2014-12-14 Alan Mackenzie <acm@muc.de>
* display.texi (Scrolling): fast-but-imprecise-scrolling.
@section Killing Buffers
@cindex killing buffers
+@cindex close buffer
+@cindex close file
If you continue an Emacs session for a while, you may accumulate a
large number of buffers. You may then find it convenient to @dfn{kill}
-the buffers you no longer need. On most operating systems, killing a
-buffer releases its space back to the operating system so that other
-programs can use it. Here are some commands for killing buffers:
+the buffers you no longer need. (Some other editors call this
+operation @dfn{close}, and talk about ``closing the buffer'' or
+``closing the file'' visited in the buffer.) On most operating
+systems, killing a buffer releases its space back to the operating
+system so that other programs can use it. Here are some commands for
+killing buffers:
@table @kbd
@item C-x k @var{bufname} @key{RET}
find a file matching that library name. If the library name is
@samp{@var{foo}}, it tries looking for files named
@file{@var{foo}.elc}, @file{@var{foo}.el}, and @file{@var{foo}}. The
-default behaviour is to load the first file found. This command
+default behavior is to load the first file found. This command
prefers @file{.elc} files over @file{.el} files because compiled files
load and run faster. If it finds that @file{@var{lib}.el} is newer
than @file{@var{lib}.elc}, it issues a warning, in case someone made
work in the best of circumstances, and we can't keep up unless you do
your best to help.
+Every patch must have several pieces of information before we
+can properly evaluate it.
+
+When you have all these pieces, bundle them up in a mail message and
+send it to the developers. Sending it to
+@email{bug-gnu-emacs@@gnu.org} (which is the bug/feature list) is
+recommended, because that list is coupled to a tracking system that
+makes it easier to locate patches. If your patch is not complete and
+you think it needs more discussion, you might want to send it to
+@email{emacs-devel@@gnu@@gnu.org} instead. If you revise your patch,
+send it as a followup to the initial topic.
+
+We prefer to get the patches as plain text, either inline (be careful
+your mail client does not change line breaks) or as MIME attachments.
+
@itemize @bullet
@item
-Send an explanation with your changes of what problem they fix or what
-improvement they bring about. For a fix for an existing bug, it is
+Include an explanation with your changes of what problem they fix or what
+improvement they bring about.
+
+@itemize
+@item
+For a fix for an existing bug, it is
best to reply to the relevant discussion on the @samp{bug-gnu-emacs}
list, or the bug entry in the GNU Bug Tracker at
@url{http://debbugs.gnu.org}. Explain why your change fixes the bug.
@item
-Always include a proper bug report for the problem you think you have
-fixed. We need to convince ourselves that the change is right before
-installing it. Even if it is correct, we might have trouble
-understanding it if we don't have a way to reproduce the problem.
+For a new feature, include a description of the feature and your
+implementation.
+
+@item
+For a new bug, include a proper bug report for the problem you think
+you have fixed. We need to convince ourselves that the change is
+right before installing it. Even if it is correct, we might have
+trouble understanding it if we don't have a way to reproduce the
+problem.
+@end itemize
@item
Include all the comments that are appropriate to help people reading the
is important.
@item
+The patch itself.
+
Use @samp{diff -c} to make your diffs. Diffs without context are hard
to install reliably. More than that, they are hard to study; we must
always study a patch to decide whether we want to install it. Unidiff
making diffs of C code. This shows the name of the function that each
change occurs in.
+If you are using the Emacs repository, make sure your copy is
+up-to-date (e.g. with @code{git pull}). You can commit your changes
+to a private branch and generate a patch from the master version by
+using @code{git format-patch master}. Or you can leave your changes
+uncommitted and use @code{git diff}.
+
@item
Avoid any ambiguity as to which is the old version and which is the new.
Please make the old version the first argument to diff, and the new
explanation in comments in the code. It will be more useful there.
Please look at the change log entries of recent commits to see what
-sorts of information to put in, and to learn the style that we use.
-@xref{Change Log}.
+sorts of information to put in, and to learn the style that we use. Note that,
+unlike some other projects, we do require change logs for
+documentation, i.e. Texinfo files.
+@xref{Change Log},
+@ifset WWW_GNU_ORG
+see
+@url{http://www.gnu.org/prep/standards/html_node/Change-Log-Concepts.html},
+@end ifset
+@xref{Change Log Concepts, Change Log Concepts,
+Change Log Concepts, gnu-coding-standards, GNU Coding Standards}.
@item
When you write the fix, keep in mind that we can't install a change that
form that is clearly safe to install.
@end itemize
-@c FIXME: Include the node above?
@node Contributing
@section Contributing to Emacs Development
@cindex contributing to Emacs
+Emacs is a collaborative project and we encourage contributions from
+anyone and everyone.
+
+There are many ways to contribute to Emacs:
+
+@itemize
+@item
+find and report bugs; @xref{Bugs}.
+
+@item
+answer questions on the Emacs user mailing list
+@url{https://lists.gnu.org/mailman/listinfo/help-gnu-emacs}.
+
+@item
+write documentation, either on the wiki, or in the Emacs source
+repository (@pxref{Sending Patches}).
+
+@item
+check if existing bug reports are fixed in newer versions of Emacs
+@url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
+
+@item
+fix existing bug reports
+@url{http://debbugs.gnu.org/cgi/pkgreport.cgi?which=pkg&data=emacs}.
+
+@item
+@c etc/TODO not in WWW_GNU_ORG
+implement a feature listed in the @file{etc/TODO} file in the Emacs
+distribution, and submit a patch.
+
+@item
+implement a new feature, and submit a patch.
+
+@item
+develop a package that works with Emacs, and publish it on your own
+or in Gnu ELPA (@url{https://elpa.gnu.org/}).
+
+@item
+port Emacs to a new platform, but that is not common nowadays.
+
+@end itemize
+
If you would like to work on improving Emacs, please contact the maintainers at
@ifnothtml
@email{emacs-devel@@gnu.org}.
before you start; it might be possible to suggest ways to make your
extension fit in better with the rest of Emacs.
+When implementing a feature, please follow the Emacs coding standards;
+@xref{Coding Standards}. In addition, non-trivial contributions
+require a copyright assignment to the FSF; @xref{Copyright Assignment}.
+
The development version of Emacs can be downloaded from the
repository where it is actively maintained by a group of developers.
See the Emacs project page
-@url{http://savannah.gnu.org/projects/emacs/} for details.
+@url{http://savannah.gnu.org/projects/emacs/} for access details.
+
+It is important to write your patch based on the current working
+version. If you start from an older version, your patch may be
+outdated (so that maintainers will have a hard time applying it), or
+changes in Emacs may have made your patch unnecessary. After you have
+downloaded the repository source, you should read the file
+@file{INSTALL.REPO} for build instructions (they differ to some extent
+from a normal build).
+
+If you would like to make more extensive contributions, see the
+@file{./CONTRIBUTE} file in the Emacs distribution for information on
+how to be an Emacs developer.
+
+For documentation on Emacs (to understand how to implement your
+desired change), refer to:
+
+@itemize
+@item
+@ifset WWW_GNU_ORG
+@ifhtml
+the Emacs Manual
+@url{http://www.gnu.org/software/emacs/manual/emacs.html}.
+@end ifhtml
+@ifnothtml
+@xref{Top, Emacs Manual,,emacs}.
+@end ifnothtml
+@end ifset
+@ifclear WWW_GNU_ORG
+@xref{Top, Emacs Manual,,emacs}.
+@end ifclear
+
+@item
+@ifset WWW_GNU_ORG
+@ifhtml
+the Emacs Lisp Reference Manual
+@url{http://www.gnu.org/software/emacs/manual/elisp.html}.
+@end ifhtml
+@ifnothtml
+@xref{Top, Emacs Lisp Reference Manual,,elisp}.
+@end ifnothtml
+@end ifset
+@ifclear WWW_GNU_ORG
+@xref{Top, Emacs Lisp Reference Manual,,elisp}.
+@end ifclear
+
+@item
+@url{http://www.gnu.org/software/emacs}
+
+@item
+@url{http://www.emacswiki.org/}
+@end itemize
+
+@menu
+* Coding Standards:: Gnu Emacs coding standards
+* Copyright Assignment:: assigning copyright to the FSF
+@end menu
-For more information on how to contribute, see the
+@node Coding Standards
+@subsection Coding Standards
+@cindex coding standards
+
+Contributed code should follow the GNU Coding Standards
+@url{http://www.gnu.org/prep/standards/}. This may also be available
+in info on your system.
+
+If it doesn't, we'll need to find someone to fix the code before we
+can use it.
+
+Emacs has additional style and coding conventions:
+
+@itemize
+@item
@ifset WWW_GNU_ORG
@ifhtml
-@url{http://gnu.org/software/emacs/CONTRIBUTE, etc/CONTRIBUTE}
+the "Tips" Appendix in the Emacs Lisp Reference
+@url{http://www.gnu.org/software/emacs/manual/html_node/elisp/Tips.html}.
@end ifhtml
@ifnothtml
-@file{etc/CONTRIBUTE}
+@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
+Appendix, elisp, Emacs Lisp Reference}.
@end ifnothtml
@end ifset
@ifclear WWW_GNU_ORG
-@file{etc/CONTRIBUTE}
+@xref{Tips, "Tips" Appendix in the Emacs Lisp Reference, Tips
+Appendix, elisp, Emacs Lisp Reference}.
@end ifclear
-file in the Emacs distribution.
+
+@item
+Avoid using @code{defadvice} or @code{eval-after-load} for Lisp code
+to be included in Emacs.
+
+@item
+Remove all trailing whitespace in all source and text files.
+
+@item
+Emacs has no convention on whether to use tabs in source code; please
+don't change whitespace in the files you edit.
+
+@item
+Use @code{?\s} instead of @code{? } in Lisp code for a space character.
+
+@end itemize
+
+@node Copyright Assignment
+@subsection Copyright Assignment
+@cindex copyright assignment
+
+The FSF (Free Software Foundation) is the copyright holder for GNU Emacs.
+The FSF is a nonprofit with a worldwide mission to promote computer
+user freedom and to defend the rights of all free software users.
+For general information, see the website @url{http://www.fsf.org/}.
+
+Generally speaking, for non-trivial contributions to GNU Emacs we
+require that the copyright be assigned to the FSF. For the reasons
+behind this, see @url{http://www.gnu.org/licenses/why-assign.html}.
+
+Copyright assignment is a simple process. Residents of some countries
+can do it entirely electronically. We can help you get started, and
+answer any questions you may have (or point you to the people with the
+answers), at the @email{emacs-devel@@gnu.org} mailing list.
+
+(Please note: general discussion about why some GNU projects ask
+for a copyright assignment is off-topic for emacs-devel.
+See gnu-misc-discuss instead.)
+
+A copyright disclaimer is also a possibility, but we prefer an assignment.
+Note that the disclaimer, like an assignment, involves you sending
+signed paperwork to the FSF (simply saying "this is in the public domain"
+is not enough). Also, a disclaimer cannot be applied to future work, it
+has to be repeated each time you want to send something new.
+
+We can accept small changes (roughly, fewer than 15 lines) without
+an assignment. This is a cumulative limit (e.g. three separate 5 line
+patches) over all your contributions.
@node Service
@section How To Get Help with GNU Emacs
@cindex help-gnu-emacs mailing list
@cindex gnu.emacs.help newsgroup
-If you need help installing, using or changing GNU Emacs, there are two
-ways to find it:
+If you need help installing, using or changing GNU Emacs, there are
+two ways to find it:
@itemize @bullet
@item
+2014-12-27 Glenn Morris <rgm@gnu.org>
+
+ * control.texi (Pattern matching case statement):
+ * os.texi (Desktop Notifications):
+ * modes.texi (Defining Minor Modes, SMIE Lexer): Markup fixes.
+
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * windows.texi (Recombining Windows): Index subject of sections.
+
+ * variables.texi (Variables with Restricted Values)
+ (Generalized Variables): Index subject of sections.
+
+ * text.texi (Buffer Contents, Examining Properties)
+ (Changing Properties, Property Search, Substitution): Index
+ subject of sections.
+
+ * syntax.texi (Motion and Syntax, Parsing Expressions)
+ (Motion via Parsing, Position Parse, Control Parsing): Index
+ subject of sections.
+
+ * strings.texi (Predicates for Strings, Creating Strings)
+ (Modifying Strings, Text Comparison): Index subject of sections.
+
+ * searching.texi (Syntax of Regexps, Regexp Special)
+ (Regexp Functions, Regexp Functions): Index subject of sections.
+
+ * processes.texi (Subprocess Creation, Process Information): Index
+ subject of sections.
+
+ * positions.texi (Screen Lines): Index subject of sections.
+
+ * nonascii.texi (Scanning Charsets, Specifying Coding Systems):
+ Index subject of sections.
+
+ * minibuf.texi (Text from Minibuffer, Object from Minibuffer)
+ (Multiple Queries, Minibuffer Contents): Index subject of
+ sections.
+
+ * markers.texi (Predicates on Markers, Creating Markers)
+ (Information from Markers, Moving Markers): Index subject of
+ sections.
+
+ * macros.texi (Defining Macros, Problems with Macros): Index
+ subject of sections.
+
+ * loading.texi (Loading Non-ASCII, Where Defined): Index subject
+ of sections.
+
+ * lists.texi (List-related Predicates, List Variables, Setcar)
+ (Setcdr, Plist Access): Index subject of sections.
+
+ * keymaps.texi (Controlling Active Maps, Scanning Keymaps)
+ (Modifying Menus): Index subject of sections.
+
+ * help.texi (Accessing Documentation, Help Functions): Index
+ subject of sections.
+
+ * hash.texi (Hash Access): Index subject of sections.
+
+ * functions.texi (Core Advising Primitives)
+ (Advising Named Functions, Porting old advices): Index subject of
+ sections.
+
+ * frames.texi (Creating Frames, Initial Parameters)
+ (Position Parameters, Buffer Parameters, Minibuffers and Frames)
+ (Pop-Up Menus, Drag and Drop): Index subject of sections.
+
+ * files.texi (Visiting Functions, Kinds of Files)
+ (Unique File Names): Index subject of sections.
+
+ * display.texi (Refresh Screen, Echo Area Customization)
+ (Warning Variables, Warning Options, Delayed Warnings)
+ (Temporary Displays, Managing Overlays, Overlay Properties)
+ (Finding Overlays, Size of Displayed Text, Defining Faces)
+ (Attribute Functions, Displaying Faces, Face Remapping)
+ (Basic Faces, Font Lookup, Fontsets, Replacing Specs)
+ (Defining Images, Showing Images): Index subject of sections.
+
+ * debugging.texi (Debugging, Explicit Debug)
+ (Invoking the Debugger, Excess Open, Excess Close): Index subject
+ of sections.
+
+ * customize.texi (Defining New Types, Applying Customizations)
+ (Custom Themes): Index subject of sections.
+
+ * control.texi (Sequencing, Combining Conditions)
+ (Processing of Errors, Cleanups): Index subject of sections.
+
+ * compile.texi (Eval During Compile): Index subject of sections.
+
+ * commands.texi (Using Interactive, Distinguish Interactive)
+ (Command Loop Info, Classifying Events, Event Mod)
+ (Invoking the Input Method): Index subject of sections.
+
+ * buffers.texi (Buffer List, Buffer Gap): Index subject of sections.
+
+ * backups.texi (Making Backups, Numbered Backups, Backup Names)
+ (Reverting): Index subject of sections.
+
+ * abbrevs.texi (Abbrev Tables, Defining Abbrevs, Abbrev Files)
+ (Abbrev Expansion, Standard Abbrev Tables, Abbrev Properties)
+ (Abbrev Table Properties): Index subject of sections.
+
+ * os.texi (Time of Day, Time Conversion, Time Parsing)
+ (Time Calculations, Idle Timers): Index subject of sections.
+
+2014-12-25 Martin Rudalics <rudalics@gmx.at>
+
+ * windows.texi (Windows): Resync @menu order with @node order.
+
+ * minibuf.texi (Minibuffer Windows): Add descriptions of
+ `resize-mini-windows' and `max-mini-window-height'.
+
+2014-12-25 Glenn Morris <rgm@gnu.org>
+
+ * windows.texi (Windows): Sync @menu order with @node order.
+
+ * sequences.texi (Sequence Functions): Copyedits.
+
+ * control.texi (Pattern matching case statement):
+ * positions.texi (List Motion):
+ * streams.texi (Output Functions):
+ * strings.texi (Text Comparison):
+ * text.texi (Document Object Model): Markup fixes.
+
2014-12-22 Paul Eggert <eggert@cs.ucla.edu>
Remove obsolete references to pre-C99 builds
* display.texi (Low-Level Font): Document font-info and query-font.
+2014-12-18 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * display.texi (Forcing Redisplay): Remove references to
+ redisplay-dont-pause and redisplay-preemption-period (which doesn't
+ even exist).
+
2014-12-16 Nicolas Petton <petton.nicolas@gmail.com>
* sequences.texi (Seq Library): Add documentation for seq.el.
@node Abbrev Tables
@section Abbrev Tables
+@cindex abbrev tables
This section describes how to create and manipulate abbrev tables.
@node Defining Abbrevs
@section Defining Abbrevs
+@cindex defining abbrevs
@code{define-abbrev} is the low-level basic function for defining an
abbrev in an abbrev table.
@node Abbrev Files
@section Saving Abbrevs in Files
+@cindex save abbrevs in files
A file of saved abbrev definitions is actually a file of Lisp code.
The abbrevs are saved in the form of a Lisp program to define the same
@node Abbrev Expansion
@section Looking Up and Expanding Abbreviations
+@cindex looking up abbrevs
+@cindex expanding abbrevs
+@cindex abbrevs, looking up and expanding
Abbrevs are usually expanded by certain interactive commands,
including @code{self-insert-command}. This section describes the
@node Standard Abbrev Tables
@section Standard Abbrev Tables
+@cindex standard abbrev tables
Here we list the variables that hold the abbrev tables for the
preloaded major modes of Emacs.
@node Abbrev Properties
@section Abbrev Properties
+@cindex abbrev properties
Abbrevs have properties, some of which influence the way they work.
You can provide them as arguments to @code{define-abbrev}, and
@node Abbrev Table Properties
@section Abbrev Table Properties
+@cindex abbrev table properties
Like abbrevs, abbrev tables have properties, some of which influence
the way they work. You can provide them as arguments to
@node Making Backups
@subsection Making Backup Files
+@cindex making backup files
@defun backup-buffer
This function makes a backup of the file visited by the current
@node Numbered Backups
@subsection Making and Deleting Numbered Backup Files
+@cindex numbered backups
If a file's name is @file{foo}, the names of its numbered backup
versions are @file{foo.~@var{v}~}, for various integers @var{v}, like
@node Backup Names
@subsection Naming Backup Files
+@cindex naming backup files
The functions in this section are documented mainly because you can
customize the naming conventions for backup files by redefining them.
@node Reverting
@section Reverting
+@cindex reverting buffers
If you have made extensive changes to a file and then change your mind
about them, you can get rid of them by reading in the previous version
@node Buffer List
@section The Buffer List
@cindex buffer list
+@cindex listing all buffers
The @dfn{buffer list} is a list of all live buffers. The order of the
buffers in this list is based primarily on how recently each buffer has
@node Buffer Gap
@section The Buffer Gap
+@cindex buffer gap
Emacs buffers are implemented using an invisible @dfn{gap} to make
insertion and deletion faster. Insertion works by filling in part of
@node Using Interactive
@subsection Using @code{interactive}
@cindex arguments, interactive entry
+@cindex interactive spec, using
This section describes how to write the @code{interactive} form that
makes a Lisp function an interactively-callable command, and how to
@node Distinguish Interactive
@section Distinguish Interactive Calls
+@cindex distinguish interactive calls
+@cindex is this call interactive
Sometimes a command should display additional visual feedback (such
as an informative message in the echo area) for interactive calls
@node Command Loop Info
@section Information from the Command Loop
+@cindex command loop variables
The editor command loop sets several Lisp variables to keep status
records for itself and for commands that are run. With the exception of
@node Classifying Events
@subsection Classifying Events
@cindex event type
+@cindex classifying events
Every event has an @dfn{event type}, which classifies the event for
key binding purposes. For a keyboard event, the event type equals the
@node Event Mod
@subsection Modifying and Translating Input Events
+@cindex modifiers of events
+@cindex translating input events
+@cindex event translation
Emacs modifies every event it reads according to
@code{extra-keyboard-modifiers}, then translates it through
@node Invoking the Input Method
@subsection Invoking the Input Method
+@cindex invoking input method
The event-reading functions invoke the current input method, if any
(@pxref{Input Methods}). If the value of @code{input-method-function}
@node Eval During Compile
@section Evaluation During Compilation
+@cindex eval during compilation
These features permit you to write code to be evaluated during
compilation of a program.
@node Sequencing
@section Sequencing
+@cindex sequencing
+@cindex sequential execution
Evaluating forms in the order they appear is the most common way
control passes from one form to another. In some contexts, such as in a
More specifically, a Q-pattern can take the following forms:
@table @code
@item (@var{qpattern1} . @var{qpattern2})
-This pattern matches any cons cell whose @code{car} matches @var{QPATTERN1} and
-whose @code{cdr} matches @var{PATTERN2}.
-@item [@var{qpattern1 qpattern2..qpatternm}]
-This pattern matches a vector of length @code{M} whose 0..(M-1)th
-elements match @var{QPATTERN1}, @var{QPATTERN2}..@var{QPATTERNm},
+This pattern matches any cons cell whose @code{car} matches @var{qpattern1} and
+whose @code{cdr} matches @var{pattern2}.
+@item [@var{qpattern1} @var{qpattern2} @dots{} @var{qpatternm}]
+This pattern matches a vector of length @var{M} whose 0..(@var{M}-1)th
+elements match @var{qpattern1}, @var{qpattern2} @dots{} @var{qpatternm},
respectively.
@item @var{atom}
This pattern matches any atom @code{equal} to @var{atom}.
@node Combining Conditions
@section Constructs for Combining Conditions
+@cindex combining conditions
This section describes three constructs that are often used together
with @code{if} and @code{cond} to express complicated conditions. The
@node Processing of Errors
@subsubsection How Emacs Processes Errors
+@cindex processing of errors
When an error is signaled, @code{signal} searches for an active
@dfn{handler} for the error. A handler is a sequence of Lisp
@node Cleanups
@subsection Cleaning Up from Nonlocal Exits
+@cindex nonlocal exits, cleaning up
The @code{unwind-protect} construct is essential whenever you
temporarily put a data structure in an inconsistent state; it permits
@node Defining New Types
@subsection Defining New Types
+@cindex customization types, define new
+@cindex define new customization types
In the previous sections we have described how to construct elaborate
type specifications for @code{defcustom}. In some cases you may want
@node Applying Customizations
@section Applying Customizations
+@cindex applying customizations
The following functions are responsible for installing the user's
customization settings for variables and faces, respectively. When
@node Custom Themes
@section Custom Themes
+@cindex custom themes
@dfn{Custom themes} are collections of settings that can be enabled
or disabled as a unit. @xref{Custom Themes,,, emacs, The GNU Emacs
Manual}. Each Custom theme is defined by an Emacs Lisp source file,
@c See the file elisp.texi for copying conditions.
@node Debugging
@chapter Debugging Lisp Programs
+@cindex debugging lisp programs
There are several ways to find and investigate problems in an Emacs
Lisp program.
@node Explicit Debug
@subsection Explicit Entry to the Debugger
+@cindex debugger, explicit entry
+@cindex force entry to debugger
You can cause the debugger to be called at a certain point in your
program by writing the expression @code{(debug)} at that point. To do
@node Invoking the Debugger
@subsection Invoking the Debugger
+@cindex invoking lisp debugger
Here we describe in full detail the function @code{debug} that is used
to invoke the debugger.
@node Excess Open
@subsection Excess Open Parentheses
+@cindex excess open parentheses
The first step is to find the defun that is unbalanced. If there is
an excess open parenthesis, the way to do this is to go to the end of
@node Excess Close
@subsection Excess Close Parentheses
+@cindex excess close parentheses
To deal with an excess close parenthesis, first go to the beginning
of the file, then type @kbd{C-u -1 C-M-u} to find the end of the first
@node Refresh Screen
@section Refreshing the Screen
+@cindex refresh the screen
+@cindex screen refresh
The function @code{redraw-frame} clears and redisplays the entire
contents of a given frame (@pxref{Frames}). This is useful if the
@node Echo Area Customization
@subsection Echo Area Customization
+@cindex echo area customization
These variables control details of how the echo area works.
@node Warning Variables
@subsection Warning Variables
+@cindex warning variables
Programs can customize how their warnings appear by binding
the variables described in this section.
@node Warning Options
@subsection Warning Options
+@cindex warning options
These variables are used by users to control what happens
when a Lisp program reports a warning.
@node Delayed Warnings
@subsection Delayed Warnings
+@cindex delayed warnings
Sometimes, you may wish to avoid showing a warning while a command is
running, and only show it only after the end of the command. You can
@node Temporary Displays
@section Temporary Displays
+@cindex temporary display
+@cindex temporary buffer display
Temporary displays are used by Lisp programs to put output into a
buffer and then present it to the user for perusal rather than for
@node Managing Overlays
@subsection Managing Overlays
+@cindex managing overlays
+@cindex overlays, managing
This section describes the functions to create, delete and move
overlays, and to examine their contents. Overlay changes are not
@node Overlay Properties
@subsection Overlay Properties
+@cindex overlay properties
Overlay properties are like text properties in that the properties that
alter how a character is displayed can come from either source. But in
@node Finding Overlays
@subsection Searching for Overlays
+@cindex searching for overlays
+@cindex overlays, searching for
@defun overlays-at pos &optional sorted
This function returns a list of all the overlays that cover the character at
@node Size of Displayed Text
@section Size of Displayed Text
+@cindex size of text on display
+@cindex character width on display
Since not all characters have the same width, these functions let you
check the width of a character. @xref{Primitive Indent}, and
@node Defining Faces
@subsection Defining Faces
+@cindex defining faces
@cindex face spec
The usual way to define a face is through the @code{defface} macro.
@node Attribute Functions
@subsection Face Attribute Functions
+@cindex face attributes, access and modification
This section describes functions for directly accessing and
modifying the attributes of a named face.
@node Displaying Faces
@subsection Displaying Faces
+@cindex displaying faces
+@cindex face merging
When Emacs displays a given piece of text, the visual appearance of
the text may be determined by faces drawn from different sources. If
@node Face Remapping
@subsection Face Remapping
+@cindex face remapping
The variable @code{face-remapping-alist} is used for buffer-local or
global changes in the appearance of a face. For instance, it is used
@node Basic Faces
@subsection Basic Faces
+@cindex basic faces
If your Emacs Lisp program needs to assign some faces to text, it is
often a good idea to use certain existing faces or inherit from them,
@node Font Lookup
@subsection Looking Up Fonts
+@cindex font lookup
+@cindex looking up fonts
@defun x-list-fonts name &optional reference-face frame maximum width
This function returns a list of available font names that match
@node Fontsets
@subsection Fontsets
+@cindex fontset
A @dfn{fontset} is a list of fonts, each assigned to a range of
character codes. An individual font cannot display the whole range of
@node Replacing Specs
@subsection Display Specs That Replace The Text
+@cindex replacing display specs
Some kinds of display specifications specify something to display
instead of the text that has the property. These are called
@node Defining Images
@subsection Defining Images
+@cindex define image
The functions @code{create-image}, @code{defimage} and
@code{find-image} provide convenient ways to create image descriptors.
@node Showing Images
@subsection Showing Images
+@cindex show image
You can use an image descriptor by setting up the @code{display}
property yourself, but it is easier to use the functions in this
@node Visiting Functions
@subsection Functions for Visiting Files
+@cindex visiting files, functions for
+@cindex how to visit files
This section describes the functions normally used to visit files.
For historical reasons, these functions have names starting with
@node Kinds of Files
@subsection Distinguishing Kinds of Files
+@cindex file classification
+@cindex classification of file types
This section describes how to distinguish various kinds of files, such
as directories, symbolic links, and ordinary files.
@node Unique File Names
@subsection Generating Unique File Names
+@cindex unique file names
+@cindex temporary files
Some programs need to write temporary files. Here is the usual way to
construct a name for such a file:
@node Creating Frames
@section Creating Frames
+@cindex frame creation
To create a new frame, call the function @code{make-frame}.
@node Initial Parameters
@subsection Initial Frame Parameters
+@cindex parameters of initial frame
You can specify the parameters for the initial startup frame by
setting @code{initial-frame-alist} in your init file (@pxref{Init
@node Position Parameters
@subsubsection Position Parameters
@cindex window position on display
+@cindex frame position
Position parameters' values are normally measured in pixels, but on
text terminals they count characters or lines instead.
@node Buffer Parameters
@subsubsection Buffer Parameters
+@cindex frame, which buffers to display
+@cindex buffers to display on frame
These frame parameters, meaningful on all kinds of terminals, deal
with which buffers have been, or should, be displayed in the frame.
you can get it with @code{minibuffer-window} (@pxref{Definition of
minibuffer-window}).
+@cindex frame without a minibuffer
However, you can also create a frame with no minibuffer. Such a frame
must use the minibuffer window of some other frame. When you create the
frame, you can explicitly specify the minibuffer window to use (in some
@node Pop-Up Menus
@section Pop-Up Menus
+@cindex menus, popup
A Lisp program can pop up a menu so that the user can choose an
alternative with the mouse. On a text terminal, if the mouse is not
@node Drag and Drop
@section Drag and Drop
+@cindex drag and drop
@vindex x-dnd-test-function
@vindex x-dnd-known-types
@end menu
@node Core Advising Primitives
-@subsection Primitives to manipulate advice
+@subsection Primitives to manipulate advices
+@cindex advice, add and remove
@defmac add-function where place function &optional props
This macro is the handy way to add the advice @var{function} to the function
@node Advising Named Functions
@subsection Advising Named Functions
+@cindex advising named functions
A common use of advice is for named functions and macros.
You could just use @code{add-function} as in:
@node Porting old advice
@subsection Adapting code using the old defadvice
+@cindex old advices, porting
A lot of code uses the old @code{defadvice} mechanism, which is largely made
obsolete by the new @code{advice-add}, whose implementation and semantics is
@node Hash Access
@section Hash Table Access
+@cindex accessing hash tables
+@cindex hash table access
This section describes the functions for accessing and storing
associations in a hash table. In general, any Lisp object can be used
@node Accessing Documentation
@section Access to Documentation Strings
+@cindex accessing documentation strings
@defun documentation-property symbol property &optional verbatim
This function returns the documentation string recorded in
@node Help Functions
@section Help Functions
+@cindex help functions
Emacs provides a variety of built-in help functions, all accessible to
the user as subcommands of the prefix @kbd{C-h}. For more information
@node Controlling Active Maps
@section Controlling the Active Keymaps
+@cindex active keymap, controlling
@defvar global-map
This variable contains the default global keymap that maps Emacs
@node Scanning Keymaps
@section Scanning Keymaps
+@cindex scanning keymaps
+@cindex keymaps, scanning
This section describes functions used to scan all the current keymaps
for the sake of printing help information.
@node Modifying Menus
@subsection Modifying Menus
+@cindex menu modification
When you insert a new item in an existing menu, you probably want to
put it in a particular place among the menu's existing items. If you
@node List-related Predicates
@section Predicates on Lists
+@cindex predicates for lists
+@cindex list predicates
The following predicates test whether a Lisp object is an atom,
whether it is a cons cell or is a list, or whether it is the
@node List Variables
@section Modifying List Variables
+@cindex modify a list
+@cindex list modification
These functions, and one macro, provide convenient ways
to modify a list which is stored in a variable.
@node Setcar
@subsection Altering List Elements with @code{setcar}
+@cindex replace list element
+@cindex list, replace element
Changing the @sc{car} of a cons cell is done with @code{setcar}. When
used on a list, @code{setcar} replaces one element of a list with a
@node Setcdr
@subsection Altering the CDR of a List
+@cindex replace part of list
The lowest-level primitive for modifying a @sc{cdr} is @code{setcdr}:
@node Plist Access
@subsection Property Lists Outside Symbols
+@cindex plist access
+@cindex accessing plist properties
The following functions can be used to manipulate property lists.
They all compare property names using @code{eq}.
@node Loading Non-ASCII
@section Loading Non-@acronym{ASCII} Characters
+@cindex loading, and non-ASCII characters
+@cindex non-ASCII characters in loaded files
When Emacs Lisp programs contain string constants with non-@acronym{ASCII}
characters, these can be represented within Emacs either as unibyte
@node Where Defined
@section Which File Defined a Certain Symbol
+@cindex symbol, where defined
+@cindex where was a symbol defined
@defun symbol-file symbol &optional type
This function returns the name of the file that defined @var{symbol}.
@node Defining Macros
@section Defining Macros
+@cindex defining macros
+@cindex macro, how to define
A Lisp macro object is a list whose @sc{car} is @code{macro}, and
whose @sc{cdr} is a function. Expansion of the macro works
@node Problems with Macros
@section Common Problems Using Macros
+@cindex macro caveats
Macro expansion can have counterintuitive consequences. This
section describes some important consequences that can lead to
@node Predicates on Markers
@section Predicates on Markers
+@cindex predicates for markers
+@cindex markers, predicates for
You can test an object to see whether it is a marker, or whether it is
either an integer or a marker. The latter test is useful in connection
@node Creating Markers
@section Functions that Create Markers
+@cindex creating markers
+@cindex marker creation
When you create a new marker, you can make it point nowhere, or point
to the present position of point, or to the beginning or end of the
@node Information from Markers
@section Information from Markers
+@cindex marker information
This section describes the functions for accessing the components of a
marker object.
@node Moving Markers
@section Moving Marker Positions
+@cindex moving markers
+@cindex marker, how to move position
This section describes how to change the position of an existing
marker. When you do this, be sure you know whether the marker is used
@node Text from Minibuffer
@section Reading Text Strings with the Minibuffer
+@cindex minibuffer input, reading text strings
The most basic primitive for minibuffer input is
@code{read-from-minibuffer}, which can be used to read either a string
@node Object from Minibuffer
@section Reading Lisp Objects with the Minibuffer
+@cindex minibuffer input, reading lisp objects
This section describes functions for reading Lisp objects with the
minibuffer.
@node Multiple Queries
@section Asking Multiple Y-or-N Questions
+@cindex multiple yes-or-no questions
When you have a series of similar questions to ask, such as ``Do you
want to save this buffer'' for each buffer in turn, you should use
@section Minibuffer Windows
@cindex minibuffer windows
- These functions access and select minibuffer windows
-and test whether they are active.
+These functions access and select minibuffer windows, test whether they
+are active and control how they get resized.
@defun active-minibuffer-window
This function returns the currently active minibuffer window, or
active minibuffer window.
@end defun
+The following two options control whether minibuffer windows are resized
+automatically and how large they can get in the process.
+
+@defopt resize-mini-windows
+This option specifies whether minibuffer windows are resized
+automatically. The default value is @code{grow-only}, which means that
+a minibuffer window by default expands automatically to accommodate the
+text it displays and shrinks back to one line as soon as the minibuffer
+gets empty. If the value is @code{t}, Emacs will always try to fit the
+height of a minibuffer window to the text it displays (with a minimum of
+one line). If the value is @code{nil}, a minibuffer window never
+changes size automatically. In that case the window resizing commands
+(@pxref{Resizing Windows}) can be used to adjust its height.
+@end defopt
+
+@defopt max-mini-window-height
+This option provides a maximum height for resizing minibuffer windows
+automatically. A floating-point number specifies a fraction of the
+frame's height; an integer specifies the maximum number of lines. The
+default value is 0.25.
+@end defopt
+
+
@node Minibuffer Contents
@section Minibuffer Contents
+@cindex access minibuffer contents
+@cindex minibuffer contents, accessing
These functions access the minibuffer prompt and contents.
disables it. From Lisp, an argument of @code{toggle} toggles the mode,
whereas an omitted or @code{nil} argument enables the mode.
This makes it easy to enable the minor mode in a major mode hook, for example.
-If @var{doc} is nil, the macro supplies a default documentation string
+If @var{doc} is @code{nil}, the macro supplies a default documentation string
explaining the above.
By default, it also defines a variable named @var{mode}, which is set to
Notice how those lexers return the empty string when in front of
parentheses. This is because SMIE automatically takes care of the
parentheses defined in the syntax table. More specifically if the lexer
-returns nil or an empty string, SMIE tries to handle the corresponding
+returns @code{nil} or an empty string, SMIE tries to handle the corresponding
text as a sexp according to syntax tables.
@node SMIE Tricks
@node Scanning Charsets
@section Scanning for Character Sets
+@cindex scanning for character sets
+@cindex character set, searching
Sometimes it is useful to find out which character set a particular
character belongs to. One use for this is in determining which coding
@node Specifying Coding Systems
@subsection Specifying a Coding System for One Operation
+@cindex specify coding system
+@cindex force coding system for operation
+@cindex coding system for operation
You can specify the coding system for a specific operation by binding
the variables @code{coding-system-for-read} and/or
@node Time of Day
@section Time of Day
+@cindex time of day
This section explains how to determine the current time and time
zone.
@node Time Conversion
@section Time Conversion
@cindex calendrical information
+@cindex time conversion
These functions convert time values (@pxref{Time of Day}) into
calendrical information and vice versa.
@node Time Parsing
@section Parsing and Formatting Times
+@cindex time parsing
+@cindex time formatting
+@cindex formatting time values
These functions convert time values to text in a string, and vice versa.
Time values are lists of two to four integers (@pxref{Time of Day}).
@node Time Calculations
@section Time Calculations
+@cindex time calculations
+@cindex comparing time values
+@cindex calendrical computations
These functions perform calendrical computations using time values
(@pxref{Time of Day}).
@node Idle Timers
@section Idle Timers
+@cindex idle timers
Here is how to set up a timer that runs when Emacs is idle for a
certain length of time. Aside from how to set them up, idle timers
The specification version the server is compliant with.
@end table
-If @var{SPEC_VERSION} is @code{nil}, the server supports a
+If @var{spec_version} is @code{nil}, the server supports a
specification prior to @samp{"1.0"}.
@end defun
@node Screen Lines
@subsection Motion by Screen Lines
+@cindex screen lines, moving by
The line functions in the previous section count text lines, delimited
only by newline characters. By contrast, these functions count screen
@deffn Command up-list &optional arg escape-strings no-syntax-crossing
This function moves forward out of @var{arg} (default 1) levels of
parentheses. A negative argument means move backward but still to a
-less deep spot. If @var{escape-strings} is non-nil (as it is
+less deep spot. If @var{escape-strings} is non-@code{nil} (as it is
interactively), move out of enclosing strings as well. If
-@var{no-syntax-crossing} is non-nil (as it is interactively), prefer
+@var{no-syntax-crossing} is non-@code{nil} (as it is interactively), prefer
to break out of any enclosing string instead of moving to the start of
a list broken across multiple strings. On error, location of point is
unspecified.
@node Subprocess Creation
@section Functions that Create Subprocesses
+@cindex create subprocess
+@cindex process creation
There are three primitives that create a new subprocess in which to run
a program. One of them, @code{start-process}, creates an asynchronous
@node Process Information
@section Process Information
+@cindex process information
Several functions return information about processes.
@node Syntax of Regexps
@subsection Syntax of Regular Expressions
+@cindex regexp syntax
+@cindex syntax of regular expressions
Regular expressions have a syntax in which a few characters are
special constructs and the rest are @dfn{ordinary}. An ordinary
@node Regexp Special
@subsubsection Special Characters in Regular Expressions
+@cindex regexp, special characters in
Here is a list of the characters that are special in a regular
expression.
These functions operate on regular expressions.
+@cindex quote special characters in regexp
@defun regexp-quote string
This function returns a regular expression whose only exact match is
@var{string}. Using this regular expression in @code{looking-at} will
@end example
@end defun
+@cindex optimize regexp
@defun regexp-opt strings &optional paren
This function returns an efficient regular expression that will match
any of the strings in the list @var{strings}. This is useful when you
@end example
@end defun
-@defun reverse seq
+@defun reverse sequence
@cindex string reverse
@cindex list reverse
@cindex vector reverse
@cindex sequence reverse
This function creates a new sequence whose elements are the elements
-of @var{seq}, but in reverse order. The original argument @var{seq}
-is @emph{not} altered. Note that char-table cannot be reversed.
+of @var{sequence}, but in reverse order. The original argument @var{sequence}
+is @emph{not} altered. Note that char-tables cannot be reversed.
@example
@group
@end example
@end defun
-@defun nreverse seq
+@defun nreverse sequence
@cindex reversing a string
@cindex reversing a list
@cindex reversing a vector
- This function reverses the order of the elements of @var{seq}.
-Unlike @code{reverse} the original @var{seq} may be modified.
+ This function reverses the order of the elements of @var{sequence}.
+Unlike @code{reverse} the original @var{sequence} may be modified.
For example:
@cindex sequence functions in seq
@cindex seq library
- The @file{seq} library provides the following additional sequence
+ The @file{seq.el} library provides the following additional sequence
manipulation macros and functions, prefixed with @code{seq-}. To use
-them, you need to load the @file{seq} library first.
+them, you must first load the @file{seq} library.
- All functions defined in the @code{seq} library are free of
-side-effects, meaning that sequence(s) passed as argument(s) to
-functions defined in @code{seq} are not modified.
+ All functions defined in this library are free of side-effects;
+i.e., they do not modify any sequence (list, vector, or string) that
+you pass as an argument. Unless otherwise stated, the result is a
+sequence of the same type as the input. For those functions that take
+a predicate, this should be a function of one argument.
-@defun seq-drop seq n
- This function returns a sequence of all but the first @var{n}
-elements of the sequence @var{seq}.
-
-@var{seq} may be a list, vector or string and @var{n} must be an
-integer. The result is the same type of sequence as @var{seq}.
-
-If @var{n} is a negative integer or zero, @var{seq} is returned.
+@defun seq-drop sequence n
+ This function returns all but the first @var{n} (an integer)
+elements of @var{sequence}. If @var{n} is negative or zero,
+the result is @var{sequence}.
@example
@group
@end example
@end defun
-@defun seq-take seq n
- This function returns a sequence of the first @var{n} elements of
-@var{seq}.
-
-@var{seq} may be a list, vector or string and @var{n} must be an
-integer. The result is the same type of sequence as @var{seq}.
-
-If @var{n} is a negative integer or zero, an empty sequence is returned.
+@defun seq-take sequence n
+ This function returns the first @var{n} (an integer) elements of
+@var{sequence}. If @var{n} is negative or zero, the result
+is @code{nil}.
@example
@group
@end example
@end defun
-@defun seq-take-while pred seq
- This function returns a sub-sequence of the successive elements of
-@var{seq} for which calling @code{pred} with that element returns
-non-nil.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string. The result is the same type of sequence as
-@var{seq}.
-
-If evaluating @var{pred} with the first element of @var{seq} as argument
-returns @code{nil}, an empty sequence is returned.
+@defun seq-take-while predicate sequence
+ This function returns the members of @var{sequence} in order,
+stopping before the first one for which @var{predicate} returns @code{nil}.
@example
@group
@end example
@end defun
-@defun seq-drop-while pred seq
- This function returns a sub-sequence of @var{seq} from the first
-element for which calling @var{pred} with that element returns
-@code{nil}.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string. The result is the same type of sequence as
-@var{seq}.
-
-If evaluating @var{pred} with every element of @var{seq} returns
-@code{nil}, @var{seq} is returned.
+@defun seq-drop-while predicate sequence
+ This function returns the members of @var{sequence} in order,
+starting from the first one for which @var{predicate} returns @code{nil}.
@example
@group
@end example
@end defun
-@defun seq-filter pred seq
+@defun seq-filter predicate sequence
@cindex filtering sequences
- This function returns a list of all the elements in @var{seq} for
-which calling @var{pred} with that element returns non-nil.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string.
+ This function returns a list of all the elements in @var{sequence}
+for which @var{predicate} returns non-@code{nil}.
@example
@group
@end example
@end defun
-@defun seq-remove pred seq
+@defun seq-remove predicate sequence
@cindex removing from sequences
- This function returns a list of all the elements in @var{seq} for
-which calling @var{pred} with that element returns @code{nil}.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string.
+ This function returns a list of all the elements in @var{sequence}
+for which @var{predicate} returns @code{nil}.
@example
@group
@end example
@end defun
-@defun seq-reduce function seq initial-value
+@defun seq-reduce function sequence initial-value
@cindex reducing sequences
This function returns the result of calling @var{function} with
-@var{initial-value} and the first element of @var{seq}, then calling
-@var{function} with that result and the second element of @var{seq},
-then with that result and the third element of @var{seq}, etc.
-
-@var{function} must be a two-arguments function and @var{seq} may be a
-list, vector or string.
-
-If @var{seq} is empty, @var{initial-value} is returned and
-@var{function} is not called.
+@var{initial-value} and the first element of @var{sequence}, then calling
+@var{function} with that result and the second element of @var{sequence},
+then with that result and the third element of @var{sequence}, etc.
+@var{function} should be a function of two arguments. If
+@var{sequence} is empty, this returns @var{initial-value} without
+calling @var{function}.
@example
@group
@end example
@end defun
-@defun seq-some-p pred seq
- This function returns any element in @var{seq} for which calling
-@var{pred} with that element returns non-nil. If successively calling
-@var{pred} with each element of @var{seq} always returns @code{nil},
-@code{nil} is returned.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string.
+@defun seq-some-p predicate sequence
+ This function returns the first member of sequence for which @var{predicate}
+returns non-@code{nil}.
@example
@group
@end example
@end defun
-@defun seq-every-p pred seq
- This function returns non-nil if successively calling @var{pred} with
-each element of @var{seq} always returns non-nil, @code{nil} otherwise.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string.
+@defun seq-every-p predicate sequence
+ This function returns non-@code{nil} if applying @var{predicate}
+to every element of @var{sequence} returns non-@code{nil}.
@example
@group
@end example
@end defun
-@defun seq-empty-p seq
- This function returns non-nil if the sequence @var{seq} is empty,
-@code{nil} otherwise.
-
-@var{seq} may be a list, vector or string.
+@defun seq-empty-p sequence
+ This function returns non-@code{nil} if @var{sequence} is empty.
@example
@group
@end example
@end defun
-@defun seq-count pred seq
- This function returns the number of elements in @var{seq} for which
-calling @var{pred} with that element returns non-nil.
-
-@var{pred} must be a one-argument function and @var{seq} may be a
-list, vector or string.
+@defun seq-count predicate sequence
+ This function returns the number of elements in @var{sequence} for which
+@var{predicate} returns non-@code{nil}.
@example
(seq-count (lambda (elt) (> elt 0)) [-1 2 0 3 -2])
@end example
@end defun
-@defun seq-sort pred seq
- This function returns a sorted sequence of the elements of
-@var{seq}, comparing its elements with @var{pred}. Called with two
-elements of @var{seq}, @var{pred} should return non-nil if the first
-element should sort before the second.
-
-@var{pred} must be a two-arguments function, @var{seq} may be a list,
-vector or string.
-
-The result is a sequence of the same type as SEQ.
@cindex sorting sequences
+@defun seq-sort function sequence
+ This function returns a copy of @var{sequence} that is sorted
+according to @var{function}, a function of two arguments that returns
+non-@code{nil} if the first argument should sort before the second.
@end defun
-@defun seq-contains-p seq elt testfn
- This function returns the first element in @var{seq} that equals to
-@var{elt}.
-
-Equality is defined by @var{testfn} if non-nil or by @code{equal} if
-@code{nil}.
-
-@var{seq} may be a list, vector or string.
+@defun seq-contains-p sequence elt &optional function
+ This function returns the first element in @var{sequence} that is equal to
+@var{elt}. If the optional argument @var{function} is non-@code{nil},
+it is a function of two arguments to use instead of the default @code{equal}.
@example
@group
@end defun
-@defun seq-uniq seq testfn
- This function returns a list of the elements of @var{seq} with
-duplicates removed. @var{testfn} is used to compare elements, or
-@code{equal} if @var{testfn} is @code{nil}.
-
-@var{testfn} must be a two-argument function or @code{nil} and
-@var{seq} may be a list, vector or string.
+@defun seq-uniq sequence &optional function
+ This function returns a list of the elements of @var{sequence} with
+duplicates removed. If the optional argument @var{function} is non-@code{nil},
+it is a function of two arguments to use instead of the default @code{equal}.
@example
@group
@end example
@end defun
-@defun seq-subseq seq start &optional end
- This function returns a sub-sequence of @var{seq} from @var{start}
-to @var{end}. If @var{end} is omitted, it default to the length of
-@var{seq}. If @var{start} or @var{end} is negative, it counts from
-the end of @var{seq}.
-
-@var{seq} may be a list, vector or string.
-The result is the same type of sequence as @var{seq}.
+@defun seq-subseq sequence start &optional end
+ This function returns a subset of @var{sequence} from @var{start}
+to @var{end}, both integers (@var{end} defaults to the last element).
+If @var{start} or @var{end} is negative, it counts from the end of
+@var{sequence}.
@example
@group
@end example
@end defun
-@defun seq-concatenate type &rest seqs
- This function returns a sequence made of the concatenation of
-@var{seqs}. The result is a sequence of type @var{type}. @var{type}
-may be one of the following symbols: @code{vector}, @code{list} or
-@code{string}.
+@defun seq-concatenate type &rest sequences
+ This function returns a sequence of type @var{type} made of the
+concatenation of @var{sequences}. @var{type} may be: @code{vector},
+@code{list} or @code{string}.
@example
@group
@end example
@end defun
-@defmac seq-doseq (var seq [result]) body@dots{}
+@defmac seq-doseq (var sequence [result]) body@dots{}
@cindex sequence iteration
-This macro is like @code{dolist}, except that @var{seq} can be a list,
+This macro is like @code{dolist}, except that @var{sequence} can be a list,
vector or string (@pxref{Iteration} for more information about the
-@code{dolist} macro).
-
-@var{seq-doseq} is primarily useful for side-effects.
-
-@example
-(seq-doseq (elt [1 2 3])
- (print (* 2 elt)))
- @print{}
- @print{} 2
- @print{}
- @print{} 4
- @print{}
- @print{} 6
- @result{} nil
-
-@end example
+@code{dolist} macro). This is primarily useful for side-effects.
@end defmac
@node Arrays
@defun terpri &optional stream ensure
@cindex newline in print
This function outputs a newline to @var{stream}. The name stands for
-``terminate print''. If @var{ensure} is non-nil no newline is printed
+``terminate print''. If @var{ensure} is non-@code{nil} no newline is printed
if @var{stream} is already at the beginning of a line. Note in this
case @var{stream} can not be a function and an error is signalled if
it is. This function returns @code{t} if a newline is printed.
@node Predicates for Strings
@section Predicates for Strings
+@cindex predicates for strings
+@cindex string predicates
For more information about general sequence and array predicates,
see @ref{Sequences Arrays Vectors}, and @ref{Arrays}.
@node Creating Strings
@section Creating Strings
+@cindex creating strings
+@cindex string creation
The following functions create strings, either from scratch, or by
putting strings together, or by taking them apart.
@node Modifying Strings
@section Modifying Strings
+@cindex modifying strings
+@cindex string modification
The most basic way to alter the contents of an existing string is with
@code{aset} (@pxref{Array Functions}). @code{(aset @var{string}
@node Text Comparison
@section Comparison of Characters and Strings
@cindex string equality
+@cindex text comparison
@defun char-equal character1 character2
This function returns @code{t} if the arguments represent the same
systems, while it would be, e.g., "enu_USA.1252" on MS-Windows
systems.
-If @var{IGNORE-CASE} is non-nil, characters are converted to lower-case
+If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
before comparing them.
To emulate Unicode-compliant collation on MS-Windows systems,
-bind @code{w32-collate-ignore-punctuation} to a non-nil value, since
+bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
the codeset part of the locale cannot be "UTF-8" on MS-Windows.
If your system does not support a locale environment, this function
behaves like @code{string-equal}.
-Do NOT use this function to compare file names for equality, only
+Do @emph{not} use this function to compare file names for equality, only
for sorting them.
@end defun
@end group
@end example
-If @var{IGNORE-CASE} is non-nil, characters are converted to lower-case
+If @var{ignore-case} is non-@code{nil}, characters are converted to lower-case
before comparing them.
To emulate Unicode-compliant collation on MS-Windows systems,
-bind @code{w32-collate-ignore-punctuation} to a non-nil value, since
+bind @code{w32-collate-ignore-punctuation} to a non-@code{nil} value, since
the codeset part of the locale cannot be "UTF-8" on MS-Windows.
If your system does not support a locale environment, this function
@node Motion and Syntax
@section Motion and Syntax
+@cindex moving across syntax classes
+@cindex skipping characters of certain syntax
This section describes functions for moving across characters that
have certain syntax classes.
@node Parsing Expressions
@section Parsing Expressions
+@cindex parsing expressions
+@cindex scanning expressions
This section describes functions for parsing and scanning balanced
expressions. We will refer to such expressions as @dfn{sexps},
@node Motion via Parsing
@subsection Motion Commands Based on Parsing
+@cindex motion based on parsing
This section describes simple point-motion functions that operate
based on parsing expressions.
@node Position Parse
@subsection Finding the Parse State for a Position
+@cindex parse state for a position
For syntactic analysis, such as in indentation, often the useful
thing is to compute the syntactic state corresponding to a given buffer
@node Control Parsing
@subsection Parameters to Control Parsing
+@cindex parsing, control parameters
@defvar multibyte-syntax-as-symbol
If this variable is non-@code{nil}, @code{scan-sexps} treats all
@node Buffer Contents
@section Examining Buffer Contents
+@cindex buffer portion as string
This section describes functions that allow a Lisp program to
convert any portion of the text in the buffer into a string.
@node Examining Properties
@subsection Examining Text Properties
+@cindex examining text properties
+@cindex text properties, examining
The simplest way to examine text properties is to ask for the value of
a particular property of a particular character. For that, use
@node Changing Properties
@subsection Changing Text Properties
+@cindex changing text properties
+@cindex text properties, changing
The primitives for changing properties apply to a specified range of
text in a buffer or string. The function @code{set-text-properties}
@node Property Search
@subsection Text Property Search Functions
+@cindex searching text properties
+@cindex text properties, searching
In typical use of text properties, most of the time several or many
consecutive characters have the same value for a property. Rather than
@node Substitution
@section Substituting for a Character Code
+@cindex replace characters in region
+@cindex substitute characters
The following functions replace characters within a specified region
based on their character codes.
@item dom-add-child-before @var{node} @var{child} @var{before}
Add @var{child} to @var{node}'s child list before the @var{before}
-node. If @var{before} is nil, make @var{child} the first child.
+node. If @var{before} is @code{nil}, make @var{child} the first child.
@item dom-set-attributes @var{node} @var{attributes}
Replace all the attributes of the node with a new key/value list.
@node Variables with Restricted Values
@section Variables with Restricted Values
+@cindex lisp variables defined in C, restrictions
Ordinary Lisp variables can be assigned any value that is a valid
Lisp object. However, certain Lisp variables are not defined in Lisp,
@node Generalized Variables
@section Generalized Variables
+@cindex generalized variable
+@cindex place form
A @dfn{generalized variable} or @dfn{place form} is one of the many places
in Lisp memory where values can be stored. The simplest place form is
a regular Lisp variable. But the @sc{car}s and @sc{cdr}s of lists, elements
@end deffn
+@node Preserving Window Sizes
+@section Preserving Window Sizes
+@cindex preserving window sizes
+
+A window can get resized explicitly by using one of the functions from
+the preceding section or implicitly, for example, when resizing an
+adjacent window, when splitting or deleting a window (@pxref{Splitting
+Windows}, @pxref{Deleting Windows}) or when resizing the window's frame
+(@pxref{Size and Position}).
+
+ It is possible to avoid implicit resizing of a specific window when
+there are one or more other resizable windows on the same frame. For
+this purpose, Emacs must be advised to @dfn{preserve} the size of that
+window. There are two basic ways to do that.
+
+@defvar window-size-fixed
+If this buffer-local variable is non-@code{nil}, the size of any window
+displaying the buffer cannot normally be changed. Deleting a window or
+changing the frame's size may still change the window's size, if there
+is no choice.
+
+If the value is @code{height}, then only the window's height is fixed;
+if the value is @code{width}, then only the window's width is fixed.
+Any other non-@code{nil} value fixes both the width and the height.
+
+If this variable is @code{nil}, this does not necessarily mean that any
+window showing the buffer can be resized in the desired direction. To
+determine that, use the function @code{window-resizable}.
+@xref{Resizing Windows}.
+@end defvar
+
+Often @code{window-size-fixed} is overly aggressive because it inhibits
+any attempt to explicitly resize or split an affected window as well.
+This may even happen after the window has been resized implicitly, for
+example, when deleting an adjacent window or resizing the window's
+frame. The following function tries hard to never disallow resizing
+such a window explicitly:
+
+@defun window-preserve-size &optional window horizontal preserve
+This function (un-)marks the height of window @var{window} as preserved
+for future resize operations. @var{window} must be a live window and
+defaults to the selected one. If the optional argument @var{horizontal}
+is non-@code{nil}, it (un-)marks the width of @var{window} as preserved.
+
+If the optional argument @var{preserve} is @code{t}, this means to
+preserve the current height/width of @var{window}'s body. The
+height/width of @var{window} will change only if Emacs has no better
+choice. Resizing a window whose height/width is preserved by this
+function never throws an error.
+
+If @var{preserve} is @code{nil}, this means to stop preserving the
+height/width of @var{window}, lifting any respective restraint induced
+by a previous call of this function for @var{window}. Calling
+@code{enlarge-window}, @code{shrink-window} or
+@code{fit-window-to-buffer} with @var{window} as argument may also
+remove the respective restraint.
+@end defun
+
+@code{window-preserve-size} is currently invoked by the following
+functions:
+
+@table @code
+@item fit-window-to-buffer
+If the optional argument @var{preserve-size} of that function
+(@pxref{Resizing Windows}) is non-@code{nil}, the size established by
+that function is preserved.
+
+@item display-buffer
+If the @var{alist} argument of that function (@pxref{Choosing Window})
+contains a @code{preserve-size} entry, the size of the window produced
+by that function is preserved.
+@end table
+
+ @code{window-preserve-size} installs a window parameter (@pxref{Window
+Parameters}) called @code{preserved-size} which is consulted by the
+window resizing functions. This parameter will not prevent resizing the
+window when the window shows another buffer than the one when
+@code{window-preserve-size} was invoked or if its size has changed since
+then.
+
+The following function can be used to check whether the height of a
+particular window is preserved:
+
+@defun window-preserved-size &optional window horizontal
+This function returns the preserved height of window @var{window} in
+pixels. @var{window} must be a live window and defaults to the selected
+one. If the optional argument @var{horizontal} is non-@code{nil}, it
+returns the preserved width of @var{window}. It returns @code{nil} if
+the size of @var{window} is not preserved.
+@end defun
+
+
@node Splitting Windows
@section Splitting Windows
@cindex splitting windows
@end defopt
-@node Preserving Window Sizes
-@section Preserving Window Sizes
-@cindex preserving window sizes
-
-A window can get resized explicitly by using one of the functions from
-the preceding section or implicitly, for example, when resizing an
-adjacent window, when splitting or deleting a window (@pxref{Splitting
-Windows}, @pxref{Deleting Windows}) or when resizing the window's frame
-(@pxref{Size and Position}).
-
- It is possible to avoid implicit resizing of a specific window when
-there are one or more other resizable windows on the same frame. For
-this purpose, Emacs must be advised to @dfn{preserve} the size of that
-window. There are two basic ways to do that.
-
-@defvar window-size-fixed
-If this buffer-local variable is non-@code{nil}, the size of any window
-displaying the buffer cannot normally be changed. Deleting a window or
-changing the frame's size may still change the window's size, if there
-is no choice.
-
-If the value is @code{height}, then only the window's height is fixed;
-if the value is @code{width}, then only the window's width is fixed.
-Any other non-@code{nil} value fixes both the width and the height.
-
-If this variable is @code{nil}, this does not necessarily mean that any
-window showing the buffer can be resized in the desired direction. To
-determine that, use the function @code{window-resizable}.
-@xref{Resizing Windows}.
-@end defvar
-
-Often @code{window-size-fixed} is overly aggressive because it inhibits
-any attempt to explicitly resize or split an affected window as well.
-This may even happen after the window has been resized implicitly, for
-example, when deleting an adjacent window or resizing the window's
-frame. The following function tries hard to never disallow resizing
-such a window explicitly:
-
-@defun window-preserve-size &optional window horizontal preserve
-This function (un-)marks the height of window @var{window} as preserved
-for future resize operations. @var{window} must be a live window and
-defaults to the selected one. If the optional argument @var{horizontal}
-is non-@code{nil}, it (un-)marks the width of @var{window} as preserved.
-
-If the optional argument @var{preserve} is @code{t}, this means to
-preserve the current height/width of @var{window}'s body. The
-height/width of @var{window} will change only if Emacs has no better
-choice. Resizing a window whose height/width is preserved by this
-function never throws an error.
-
-If @var{preserve} is @code{nil}, this means to stop preserving the
-height/width of @var{window}, lifting any respective restraint induced
-by a previous call of this function for @var{window}. Calling
-@code{enlarge-window}, @code{shrink-window} or
-@code{fit-window-to-buffer} with @var{window} as argument may also
-remove the respective restraint.
-@end defun
-
-@code{window-preserve-size} is currently invoked by the following
-functions:
-
-@table @code
-@item fit-window-to-buffer
-If the optional argument @var{preserve-size} of that function
-(@pxref{Resizing Windows}) is non-@code{nil}, the size established by
-that function is preserved.
-
-@item display-buffer
-If the @var{alist} argument of that function (@pxref{Choosing Window})
-contains a @code{preserve-size} entry, the size of the window produced
-by that function is preserved.
-@end table
-
- @code{window-preserve-size} installs a window parameter (@pxref{Window
-Parameters}) called @code{preserved-size} which is consulted by the
-window resizing functions. This parameter will not prevent resizing the
-window when the window shows another buffer than the one when
-@code{window-preserve-size} was invoked or if its size has changed since
-then.
-
-The following function can be used to check whether the height of a
-particular window is preserved:
-
-@defun window-preserved-size &optional window horizontal
-This function returns the preserved height of window @var{window} in
-pixels. @var{window} must be a live window and defaults to the selected
-one. If the optional argument @var{horizontal} is non-@code{nil}, it
-returns the preserved width of @var{window}. It returns @code{nil} if
-the size of @var{window} is not preserved.
-@end defun
-
-
@node Deleting Windows
@section Deleting Windows
@cindex deleting windows
@node Recombining Windows
@section Recombining Windows
+@cindex recombining windows
+@cindex windows, recombining
When deleting the last sibling of a window @var{W}, its parent window
is deleted too, with @var{W} replacing it in the window tree. This
2014-10-26 Eric S. Raymond <esr@thyrsus.com>
- * efaq-w32.texi: Neutralized language specific to a repository type.
+ * efaq-w32.texi: Neutralize language specific to a repository type.
2014-10-25 Eric S. Raymond <esr@thyrsus.com>
- * gnus-coding.txt: Neutralized language specific to a repository type.
+ * gnus-coding.texi: Neutralize language specific to a repository type.
2014-10-20 Glenn Morris <rgm@gnu.org>
+2014-12-27 Álvar Ibeas <ibeas@gmx.com> (tiny change)
+
+ * tutorials/TUTORIAL.es: Improve style consistency. Spelling fixes.
+
+2014-12-25 Karl Fogel <kfogel@red-bean.com>
+
+ * NEWS: Mention new buffer display behavior for `shell'.
+ This follows up to Sam Steingold's change of 2014-12-23
+ in ../lisp/shell.el, in git commit e55a467ec0f758c311d3.
+
2014-12-15 Artur Malabarba <bruce.connor.am@gmail.com>
* NEWS: Mention `let-alist.
\f
* Changes in Specialized Modes and Packages in Emacs 25.1
+** Shell
+
+When you invoke `shell' interactively, the *shell* buffer will now
+display in a new window. However, you can customize this behavior via
+the new `shell-display-buffer-actions' variable. For example, to get
+the old behavior -- *shell* buffer displays in current window -- use
+(setq shell-display-buffer-actions '(display-buffer-same-window)).
+
** ido
*** New command `ido-bury-buffer-at-head' bound to C-S-b
Bury the buffer at the head of `ido-matches', analogous to how C-k
the color range from `vc-annotate-color-map' is applied to the
background or to the foreground.
-*** compare-windows now compares text with the most recently used window
+*** `compare-windows' now compares text with the most recently used window
instead of the next window. The new option `compare-windows-get-window-function'
allows to customize this.
+*** Two new faces `compare-windows-removed' and `compare-windows-added'
+replace the obsolete face `compare-windows'.
+
** Calculator: decimal display mode uses "," groups, so it's more
fitting for use in money calculations; factorial works with
non-integer inputs.
`tildify-ignored-environments-alist' variables (as well as a few
helper functions) obsolete.
+** xref
+The new package provides generic framework and new commands to find
+and move to definitions, as well as pop back to the original location.
+
+*** New key bindings
+`xref-find-definitions' replaces `find-tag' and provides an interface
+to pick one destination among several. Hence, `tags-loop-continue' is
+unbound. `xref-pop-marker-stack' replaces `pop-tag-mark', but uses an
+easier binding, which is now unoccupied (`M-,').
+`xref-find-definitions-other-window' replaces `find-tag-other-window'.
+`xref-find-definitions-other-frame' replaces `find-tag-other-frame'.
+`xref-find-apropos' replaces `find-tag-regexp'.
+
+*** New variables
+`find-tag-marker-ring-length' is now an obsolete alias for
+`xref-marker-ring-length'. `find-tag-marker-ring' is now an obsolete
+alias for a private variable. `xref-push-marker-stack' and
+`xref-pop-marker-stack' should be used to mutate it instead.
+
** Obsolete packages
---
Nota importante: para terminar la sesión de Emacs teclee C-x C-c (dos
caracteres). Para cancelar un comando parcialmente introducido,
teclee C-g.
-Los caracteres ">>" en el margen izquierdo indican instrucciones para
+Los caracteres «>>» en el margen izquierdo indican instrucciones para
que usted trate de usar un comando. Por ejemplo:
<<Blank lines inserted around following line by help-with-tutorial>>
[Mitad de página en blanco para propósitos didácticos. El texto continúa abajo]
un lugar específico dentro del texto en la pantalla?
Puede hacerlo de diversas formas. Puede usar las teclas de flechas,
-pero es mas eficiente mantener las manos en la posición estándar y
+pero es más eficiente mantener las manos en la posición estándar y
usar los comandos C-p, C-b, C-f, y C-n. Estos caracteres son
equivalentes a las cuatro teclas de flechas, de esta manera:
- Línea anterior, C-P
+ Línea anterior, C-p
:
:
Atrás, C-b.... Posición actual del cursor .... Adelante, C-f
Cuando pase el tope o el final de la pantalla, se mostrará el texto
más allá del borde de la pantalla. Esto recibe el nombre de
-"desplazamiento". Esto le permite a Emacs mover el cursor al lugar
+«desplazamiento». Esto le permite a Emacs mover el cursor al lugar
especificado en el texto sin moverlo fuera de la pantalla.
>> Intente mover el cursor fuera del borde de la pantalla con C-n, y
Note el paralelo entre C-f y C-b de un lado y M-f y M-b del otro. Muy
frecuentemente los caracteres Meta se usan para operaciones
-relacionadas, con las unidades definidas por el lenguaje (palabras,
+relacionadas con las unidades definidas por el lenguaje (palabras,
oraciones y párrafos), mientras los caracteres Control operan sobre
unidades básicas que son independientes de lo que está editando
-(caracteres, líneas, etc).
+(caracteres, líneas, etc.).
Este paralelo se aplica entre líneas y oraciones: C-a y C-e para
moverse al comienzo o al final de la línea; y M-a y M-e para mover al
sigue moviendo una oración más. Aunque no son muy análogas, cada una
parece natural.
-La ubicación del cursor en el texto se llama también "punto". En
+La ubicación del cursor en el texto se llama también «punto». En
otras palabras, el cursor muestra sobre la pantalla donde está
situado el punto dentro del texto.
Menor que), el cual se mueve al comienzo del texto entero, y M-> (META
Mayor que), el cual se mueve al final del texto entero.
-En la mayoría de las terminales, el "<" está sobre la coma, por lo
+En la mayoría de las terminales, el «<» está sobre la coma, por lo
tanto tiene que usar la tecla shift para teclearlo. En estas
terminales tendrá que usar la tecla shift también al teclear M-<; sin
la tecla shift, usted estaría escribiendo M-coma.
ingresar un argumento numérico: teclear los dígitos mientras presiona
la tecla META. Recomendamos aprender el método C-u porque éste
funciona en cualquier terminal. El argumento numérico es también
-llamado un "argumento prefijo", porque usted teclea el argumento antes
+llamado un «argumento prefijo», porque usted teclea el argumento antes
del comando al que se aplica.
Por ejemplo, C-u 8 C-f mueve hacia adelante ocho caracteres.
>> Escriba C-u 100 para hacer un argumento numérico de 100, y luego
pruebe C-g.
- Ahora pruebe C-f. Esto deberá mover sólo un carácter, ya que
+ Ahora pruebe C-f. Esto deberá mover solo un carácter, ya que
canceló el argumento con C-g.
Si ha tecleado <ESC> por error, puede desecharlo con un C-g.
* COMANDOS DESACTIVADOS
-----------------------
-Algunos comandos de Emacs están "desactivados" de manera que los
+Algunos comandos de Emacs están «desactivados» de manera que los
usuarios principiantes no puedan usarlos accidentalmente.
Si teclea uno de los comandos desactivados, Emacs muestra un mensaje
Si realmente quiere intentar el comando, teclee Espacio como repuesta
a la pregunta. Normalmente, si no quiere ejecutar el comando
-desactivado, conteste la pregunta con "n".
+desactivado, conteste la pregunta con «n».
>> Escriba C-x C-l (que es un comando desactivado), a continuación
escriba n para responder la pregunta.
* VENTANAS
----------
-Emacs puede tener varias "ventanas", cada una mostrando su propio texto.
+Emacs puede tener varias «ventanas», cada una mostrando su propio texto.
Explicaremos después cómo usar múltiples ventanas. Ahora mismo
queremos explicar cómo deshacerse de ventanas adicionales y volver a
la edición básica en una ventana. Es sencillo:
Si quiere insertar un texto, basta con que lo teclee. Los caracteres
normales, como A, 7, *, etc. se insertan nada más teclearlos. Teclee
-<Return> (la tecla "Enter" o "Intro") para insertar un carácter de
+<Return> (la tecla «Enter» o «Intro») para insertar un carácter de
nueva línea.
Para borrar el carácter que precede al cursor, oprima <DEL>. Es una
-tecla alargada, normalmente etiquetada como "Backspace" o "Del", o con
+tecla alargada, normalmente etiquetada como «Backspace» o «Del», o con
una flecha apuntando a la izquierda; la misma que suele utilizar fuera
de Emacs para borrar el último carácter introducido.
-Puede haber otra tecla llamada "Del" o "Supr" en otra parte, pero ésa
+Puede haber otra tecla llamada «Del» o «Supr» en otra parte, pero ésa
no es <DEL>.
>> Haga esto ahora: teclee unos pocos caracteres, después bórrelos
personal de él.
Cuando una línea de texto se hace muy grande para una sola línea de la
-pantalla, la línea de texto "continúa" en una segunda línea en la
+pantalla, la línea de texto «continúa» en una segunda línea en la
pantalla. Si está usando un entorno gráfico, se mostrarán pequeñas
-flechas curvas en las estrechas franjas vacías (los "márgenes" derecho
+flechas curvas en las estrechas franjas vacías (los «márgenes» derecho
e izquierdo) a cada lado del área de texto, para indicar que la línea
continúa. Si está utilizando una terminal, la continuación se señala
mediante una barra invertida («\») en la última columna de la derecha.
de fin de línea, de forma que, al seguir tecleando en la línea recién
creada, el texto que tecleamos quede alineado con el de la línea
anterior. Este comportamiento (que la pulsación de una tecla no solo
-inserte el carácter correspondiente) se denomina "eléctrico".
+inserte el carácter correspondiente) se denomina «eléctrico».
->> Veamos un ejemplo de comportamiento "eléctrico" de <Return>
+>> Veamos un ejemplo de comportamiento «eléctrico» de <Return>
Teclee <Return> al final de esta línea.
Fíjese que, tras insertar el carácter de nueva línea, Emacs inserta
-también espacios para que el cursor se sitúe bajo la "T" de "Teclee".
+también espacios para que el cursor se sitúe bajo la «T» de «Teclee».
Recuerde que a la mayoría de los comandos de Emacs se les puede dar un
factor de repetición; esto incluye los caracteres de texto. Repetir
corregir errores. Puede borrar por palabras o por líneas. He aquí un
resumen de las operaciones de borrado:
- <DEL> borra el carácter justo antes que el cursor
+ <DEL> borra el carácter justo antes del cursor
C-d borra el siguiente carácter después del cursor
M-<DEL> Elimina la palabra inmediatamente antes del
paralelismo iniciado por C-f y M-f (bien, <DEL> no es realmente una
tecla de control, pero no nos preocuparemos de eso ahora). C-k y M-k,
en cierta forma, son como C-e y M-e, en que las líneas de unos
-corresponden a sentencias en los otros.
+corresponden a oraciones en los otros.
También puede eliminar un segmento contiguo de texto con un método
uniforme. Muévase a un extremo de ese segmento de texto, y teclee C-@
-o C-SPC (cualquiera de los dos). (SPC es la barra espaciadora.)
+o C-<SPC> (cualquiera de los dos). (<SPC> es la barra espaciadora.)
Luego, mueva el cursor al otro extremo del texto que desea eliminar.
Al hacerlo, Emacs resaltará el texto situado entre el cursor y la
-posición en la que tecleó C-SPC. Finalmente, teclee C-w. Eso elimina
+posición en la que tecleó C-<SPC>. Finalmente, teclee C-w. Eso elimina
todo el texto entre las dos posiciones.
>> Mueva el cursor a la letra T del inicio del párrafo anterior.
->> Teclee C-SPC. Emacs debe mostrar el mensaje "Mark set" en la parte
+>> Teclee C-<SPC>. Emacs debe mostrar el mensaje «Mark set» en la parte
de abajo de la pantalla.
->> Mueva el cursor a la x en "extremo", en la segunda línea del
+>> Mueva el cursor a la x en «extremo», en la segunda línea del
párrafo.
>> Teclee C-w. Esto eliminará el texto que comienza desde la T, y
termina justo antes de la x.
-La diferencia entre "eliminar" y "borrar" es que el texto "eliminado"
+La diferencia entre «eliminar» y «borrar» es que el texto «eliminado»
puede ser reinsertado (en cualquier posición), mientras que las cosas
-"borradas" no pueden ser reinsertadas (sin embargo, es posible
+«borradas» no pueden ser reinsertadas (sin embargo, es posible
deshacer el borrado; ver más abajo). La reinserción de texto
-eliminado se llama "yanking" o "pegar". Generalmente, los comandos
+eliminado se llama «yanking» o «pegar». Generalmente, los comandos
que pueden quitar mucho texto lo eliminan (para que pueda pegarlo de
nuevo) mientras que los comandos que quitan solo un carácter, o solo
líneas en blanco y espacios, borran (y por tanto no se puede pegar lo
Note que al teclear C-k una sola vez elimina el contenido de la línea,
y un segundo C-k elimina la línea misma, y hace que todas las otras
líneas se muevan hacia arriba. C-k trata un argumento numérico
-especialmente: Elimina ese número de líneas y TAMBIÉN sus
+especialmente: elimina ese número de líneas y TAMBIÉN sus
contenidos. Esto no es una simple repetición. C-u 2 C-k elimina dos
líneas y sus nuevas líneas, tecleando C-k dos veces no hace esto.
-Reinsertar texto eliminado se denomina "yanking" o "pegar". (Piense
+Reinsertar texto eliminado se denomina «yanking» o «pegar». (Piense
en ello como pegar de nuevo, o traer de vuelta, algún texto que le fue
quitado.) Puede pegar el texto eliminado, ya sea el lugar en que fue
eliminado, o en otra parte del buffer, o hasta en un archivo
diferente. Puede pegar el texto varias veces, lo que hace varias
copias de él. Algunos editores se refieren a eliminar y reinsertar
-como "cortar" y "pegar" (consulte el Glosario en el manual de Emacs).
+como «cortar» y «pegar» (consulte el Glosario en el manual de Emacs).
El comando para pegar es C-y. Reinserta el último texto eliminado, en
la posición actual del cursor.
reciente, tecleando M-y reemplaza el texto pegado con la eliminación
previa. Tecleando M-y una y otra vez traerá las eliminaciones
anteriores. Cuando haya encontrado el texto que buscaba, no tiene que
-hacer nada para conservarlo. Sólo siga con su edición, dejando el
+hacer nada para conservarlo. Solo siga con su edición, dejando el
texto pegado en donde está.
Si teclea M-y suficientes veces, regresa al punto inicial (la
Para que pueda hacer permanente el texto que edite, lo debe colocar en
un archivo. De otra manera, éste se perderá cuando cierre Emacs.
-Para poder poner su texto en un archivo, debe "encontrar" el archivo
-antes de ingresar el texto. (Esto se llama también "visitar" el
+Para poder poner su texto en un archivo, debe «encontrar» el archivo
+antes de ingresar el texto. (Esto se llama también «visitar» el
archivo.)
Encontrar un archivo significa que puede ver su contenido dentro de
Emacs. En cierta forma, es como si estuviera editando el archivo
mismo. Sin embargo los cambios que haga mediante Emacs no serán
-permanentes hasta que "guarde" el archivo. Esto es para evitar dejar
+permanentes hasta que «guarde» el archivo. Esto es para evitar dejar
un archivo a medio cambiar en el sistema cuando no quiera. Incluso
cuando guarde, Emacs dejará el archivo original bajo un nombre
cambiado en caso de que luego decida que sus cambios fueron un error.
Si mira cerca del final de la pantalla podrá ver una línea que
-comienza con guiones, y empieza con " -:--- TUTORIAL.es" o algo así.
+comienza con guiones, y empieza con « U:--- TUTORIAL.es» o algo así.
Esta parte de la pantalla normalmente muestra el nombre del archivo
que está visitando. En este momento está visitando su propia copia
-del tutorial de Emacs, que se llama "TUTORIAL.es". Cuando encuentre
+del tutorial de Emacs, que se llama «TUTORIAL.es». Cuando encuentre
un archivo con Emacs, el nombre de ese archivo aparecerá en ese mismo
punto.
-Una cosa especial acerca del comando para encontrar un archivo, es que
+Una cosa especial acerca del comando para encontrar un archivo es que
tendrá que decir qué nombre de archivo desea. Decimos que el comando
-"lee un argumento" (en este caso, el argumento es el nombre del
+«lee un argumento» (en este caso, el argumento es el nombre del
archivo). Después de teclear el comando:
C-x C-f Encontrar un archivo
Esto copia el texto dentro de Emacs al archivo. La primera vez que
haga esto, Emacs renombrará el archivo original con un nuevo nombre
-para que éste no se pierda. El nuevo nombre se hace agregando "~" al
+para que éste no se pierda. El nuevo nombre se hace agregando «~» al
final del nombre del archivo original. Cuando guardar haya terminado,
Emacs mostrará el nombre del archivo escrito.
>> Teclee C-x C-s TUTORIAL.es <Return>
Esto guardará el tutorial en un archivo llamado TUTORIAL.es, y
- mostrará "Wrote ...TUTORIAL.es" al final de la pantalla.
+ mostrará «Wrote ...TUTORIAL.es» al final de la pantalla.
Puede encontrar un archivo existente, para verlo o editarlo. También
puede hacerlo con un archivo que no exista. Ésta es la forma de crear
un archivo en Emacs: encuentre el archivo, que está inicialmente vacío,
luego comience a insertar el texto para ese archivo. Cuando invoque
-"guardar" el archivo, Emacs creará realmente el archivo con el texto
+«guardar» el archivo, Emacs creará realmente el archivo con el texto
que ha insertado. De ahí en adelante, puede considerar que está
editando un archivo existente.
de Emacs.
Emacs almacena cada texto del archivo dentro de un objeto llamado
-"buffer". Al encontrar un archivo se crea un nuevo buffer dentro de
+«buffer». Al encontrar un archivo se crea un nuevo buffer dentro de
Emacs. Para mirar la lista de los buffers que existen actualmente,
teclee:
>> Teclee C-x 1 para deshacerse de la lista de buffers.
-Cuando tenga varios buffers, solo uno de ellos es "actual" en algún
+Cuando tenga varios buffers, solo uno de ellos es «actual» en algún
momento. Ese buffer es el que actualmente edita. Si quiere editar
-otro buffer, necesita "cambiar" a él. Si quiere cambiar a un buffer
+otro buffer, necesita «cambiar» a él. Si quiere cambiar a un buffer
que corresponde a un archivo, puede hacerlo visitando el archivo de
nuevo con C-x C-f. Pero existe una manera más rápida: use el comando
C-x b. En ese comando, necesita teclear el nombre de buffer.
->> Cree un archivo llamado "foo" tecleando C-x C-f foo <Return>.
+>> Cree un archivo llamado «foo» tecleando C-x C-f foo <Return>.
Después teclee C-x b TUTORIAL.es <Return> para regresar a este
tutorial.
muestra el nombre de cada buffer y de su archivo correspondiente.
Algunos buffers no corresponden a un archivo. El buffer llamado
-"*Buffer List*", que contiene la lista de buffers que ha creado con
+«*Buffer List*», que contiene la lista de buffers que ha creado con
C-x C-b, no tiene archivo. Este buffer TUTORIAL.es al principio no
tenía archivo, pero ahora sí, porque en la sección anterior tecleó
C-x C-s y lo guardó en un archivo.
-El buffer llamado "*Messages*" tampoco tiene un archivo
+El buffer llamado «*Messages*» tampoco tiene un archivo
correspondiente. Este buffer contiene los mensajes que han aparecido
en la línea de abajo durante su sesión de Emacs.
>> Inserte una línea de texto, luego teclee C-x s.
Debería preguntarle si desea guardar el buffer llamado TUTORIAL.es.
- Conteste si a la pregunta tecleando "y".
+ Conteste «sí» a la pregunta tecleando «y».
* EXTENDER EL CONJUNTO DE COMANDOS
especial para cambiar de Emacs a otra aplicación. Puede hacerlo con
el ratón, o mediante el gestor de ventanas. Sin embargo, si está
usando una terminal que solo puede mostrar una aplicación a la vez,
-tendrá que "suspender" Emacs para poder acceder a otras aplicaciones.
+tendrá que «suspender» Emacs para poder acceder a otras aplicaciones.
C-z es el comando para salir de Emacs *temporalmente*: para que pueda
regresar a la misma sesión de Emacs después. Cuando Emacs está
-ejecutándose en una terminal, C-z "suspende" Emacs; esto es, se
+ejecutándose en una terminal, C-z «suspende» Emacs; esto es, se
regresa al intérprete de comandos pero no se destruye Emacs. En los
intérpretes de comandos más comunes, puede reanudar Emacs con el
-comando "fg" o con "%emacs".
+comando «fg» o con «%emacs».
El momento para usar C-x C-c es cuando está listo para salir del
sistema. Es además el paso correcto para salir de un Emacs invocado
comando replace-string, el cual substituye una cadena de caracteres
por otra en todo el buffer. Cuando teclea M-x, Emacs le pregunta al
final de la pantalla con M-x y debe escribir el nombre del comando; en
-este caso "replace-string". Solo teclee "repl s<TAB>" y Emacs
+este caso «replace-string». Solo teclee «repl s<TAB>» y Emacs
completará el nombre. (<TAB> es la tecla del tabulador, que
habitualmenté está situada sobre la tecla de bloquear mayúsculas o la
de shift, en el lado izquierdo del teclado.) Para aceptar el comando
M-x repl s<Return>cambiado<Return>alterado<Return>.
Note cómo ha cambiado la línea: ha substituido la palabra
- "cambiado" por "alterado" en cada ocurrencia, después de la
+ «cambiado» por «alterado» en cada ocurrencia, después de la
posición inicial del cursor.
Si ha hecho cambios en un archivo, pero no los ha guardado, éstos
podrían perderse si su computadora falla. Para protegerlo de esto,
-Emacs periódicamente escribe un archivo "auto guardado" para cada
+Emacs escribe periódicamente un archivo «auto guardado» para cada
archivo que está editando. El nombre del archivo auto guardado tiene
un # al principio y al final; por ejemplo, si su archivo se llama
-"hola.c", su archivo auto guardado es "#hola.c#". Cuando guarda por
+«hola.c», su archivo auto guardado es «#hola.c#». Cuando guarda por
la vía normal, Emacs borra su archivo de auto guardado.
Si la computadora falla, puede recuperar su edición de auto guardado
Si Emacs ve que usted está tecleando comandos de multicaracteres
lentamente, se los muestra al final de la pantalla en un área llamada
-"área de eco". El área de eco contiene la línea final de la pantalla.
+«área de eco». El área de eco contiene la línea final de la pantalla.
* LÍNEA DE MODO
---------------
La línea inmediatamente encima del área de eco recibe el nombre de
-"línea de modo" o "mode line". La línea de modo dice algo así:
+«línea de modo» o «mode line». La línea de modo dice algo así:
- -:**- TUTORIAL.es 63% L749 (Fundamental)
+ U:**- TUTORIAL.es 63% L749 (Fundamental)
Esta línea da información útil acerca del estado de Emacs y del texto
que está editando.
ha encontrado. NN% indica su posición actual en el texto; esto
significa que NN por ciento del texto está encima de la parte superior
de la pantalla. Si el principio del archivo está en la pantalla, éste
-dirá "Top" en vez de " 0%". Si el final del texto está en la
-pantalla, dirá "Bot". Si está mirando un texto tan pequeño que cabe
-entero en la pantalla, el modo de línea dirá "All".
+dirá «Top» en vez de « 0%». Si el final del texto está en la
+pantalla, dirá «Bot». Si está mirando un texto tan pequeño que cabe
+entero en la pantalla, el modo de línea dirá «All».
La L y los dígitos señalan la posición de otra forma: indican el
número de línea actual del punto.
La parte de la línea de modo dentro de los paréntesis es para
indicarle en qué modo de edición está. El modo por omisión es
Fundamental, el cual está usando ahora. Éste es un ejemplo de un
-"modo mayor".
+«modo mayor».
Emacs tiene diferentes modos mayores. Algunos están hechos para
editar diferentes lenguajes y/o clases de texto, tales como modo de
Lisp, modo de Texto, etc. En cualquier momento uno y solo un modo
mayor está activo, y su nombre siempre se puede encontrar en la línea
-de modo, justo en donde "Fundamental" está ahora.
+de modo, justo en donde «Fundamental» está ahora.
Cada modo mayor hace que algunos comandos actúen diferente. Por
ejemplo, hay comandos para crear comentarios en un programa, y como
de palabras.
Los modos mayores normalmente hacen cambios sutiles como el anterior:
-la mayoría de comandos hacen "el mismo trabajo" en cada modo mayor,
+la mayoría de comandos hacen «el mismo trabajo» en cada modo mayor,
pero funcionan de forma un poco diferente.
Para ver la documentación del modo mayor actual, teclee C-h m.
Cuando el modo esté activado, puede desactivarlo nuevamente usando M-x
auto-fill-mode <Return>. Si el modo está desactivado, este comando lo
activa, y si el modo está activado, este comando lo desactiva.
-Decimos que el comando "cambia el modo".
+Decimos que el comando «cambia el modo».
>> teclee M-x auto-fill-mode <Return> ahora. Luego inserte una línea
- de "asdf " repetidas veces hasta que la vea dividida en dos líneas.
- Debe intercalar espacios porque Auto Fill sólo rompe líneas en los
+ de «asdf » repetidas veces hasta que la vea dividida en dos líneas.
+ Debe intercalar espacios porque Auto Fill solo rompe líneas en los
espacios.
El margen está normalmente puesto en 70 caracteres, pero puede
* BUSCAR
--------
-Emacs puede hacer búsquedas de cadenas (una "cadena" es un grupo de
+Emacs puede hacer búsquedas de cadenas (una «cadena» es un grupo de
caracteres contiguos) hacia adelante a través del texto o hacia atrás
en el mismo. La búsqueda de una cadena es un comando de movimiento de
cursor; mueve el cursor al próximo lugar donde esa cadena aparece.
-El comando de búsqueda de Emacs es "incremental". Esto significa que
+El comando de búsqueda de Emacs es «incremental». Esto significa que
la búsqueda ocurre mientras teclea la cadena para buscarla.
El comando para iniciar una búsqueda es C-s para búsqueda hacia
adelante, y C-r para la búsqueda hacia atrás. ¡PERO ESPERE! No los
intente aún.
-Cuando teclee C-s verá que la cadena "I-search" aparece como una
+Cuando teclee C-s verá que la cadena «I-search» aparece como una
petición en el área de eco. Esto le indica que Emacs está en lo que
se conoce como búsqueda incremental, esperando que teclee lo que
quiere buscar. <Return> termina una búsqueda.
>> Ahora teclee C-s para comenzar la búsqueda. LENTAMENTE, una letra
- a la vez, teclee la palabra "cursor", haciendo pausa después de
+ a la vez, teclee la palabra «cursor», haciendo pausa después de
cada carácter para notar lo que pasa con el cursor.
- Ahora ha buscado "cursor", una vez.
+ Ahora ha buscado «cursor», una vez.
>> Teclee C-s de nuevo, para buscar la siguiente ocurrencia de
- "cursor".
+ «cursor».
>> Ahora teclee <DEL> cuatro veces y vea como se mueve el cursor.
>> Teclee <Return> para terminar la búsqueda.
-¿Vió lo que ocurrió? Emacs, en una búsqueda incremental, trata de ir
+¿Vio lo que ocurrió? Emacs, en una búsqueda incremental, trata de ir
a la ocurrencia de la cadena que ha tecleado hasta el momento. Para
-ir a la próxima ocurrencia de "cursor" solo teclee C-s de nuevo. Si
+ir a la próxima ocurrencia de «cursor» solo teclee C-s de nuevo. Si
tal ocurrencia no existe, Emacs pita y le dice que la búsqueda actual
-está fallando ("failing"). C-g también termina la búsqueda.
+está fallando («failing»). C-g también termina la búsqueda.
Si se encuentra en medio de una búsqueda incremental y teclea <DEL>,
-la búsqueda "vuelve" a un punto anterior. Si teclea <DEL> justo
+la búsqueda «vuelve» a un punto anterior. Si teclea <DEL> justo
después de teclear C-s para avanzar hasta la siguiente ocurrencia de
la cadena buscada, el cursor retrocede a una ocurrencia previa. Si no
hay ocurrencias previas, <DEL> borra el último carácter de la cadena
-buscada. Por ejemplo, suponga que ha tecleado "c", para buscar la
-primera ocurrencia de "c". Ahora, si teclea "u", el cursor se moverá
-a la primera ocurrencia de "cu". Ahora teclee <DEL>. Esto borra la
-"u" de la cadena buscada, y el cursor vuelve a la primera ocurrencia
-de "c".
+buscada. Por ejemplo, suponga que ha tecleado «c», para buscar la
+primera ocurrencia de «c». Ahora, si teclea «u», el cursor se moverá
+a la primera ocurrencia de «cu». Ahora teclee <DEL>. Esto borra la
+«u» de la cadena buscada, y el cursor vuelve a la primera ocurrencia
+de «c».
Si está en medio de una búsqueda y teclea un carácter control o meta
(con algunas pocas excepciones: los caracteres que son especiales en
Una de las características agradables de Emacs es que se puede mostrar
más de una ventana en la pantalla al mismo tiempo. (Note que Emacs
-usa el término "marcos", descrito en la siguiente sección, para
-referirse a lo que otras aplicaciones llaman "ventanas". El manual de
+usa el término «marcos», descrito en la siguiente sección, para
+referirse a lo que otras aplicaciones llaman «ventanas». El manual de
Emacs contiene un Glosario de términos.)
>> Mueva el cursor a esta línea y teclee C-l C-l.
>> Teclee C-M-v para desplazar la ventana inferior.
(Si no tiene una tecla META real, teclee ESC C-v.)
->> Teclee C-x o ("o" para "otro") para mover el cursor a la ventana
+>> Teclee C-x o («o» para «otro») para mover el cursor a la ventana
inferior.
>> Use C-v y M-v en la ventana inferior para desplazarla.
Siga leyendo estas direcciones en la ventana superior.
El cursor en la ventana superior está justo donde estaba antes.
Puede continuar usando C-x o para cambiar entre las ventanas. La
-"ventana seleccionada", donde tiene lugar casi toda la edición, es la
+«ventana seleccionada», donde tiene lugar casi toda la edición, es la
que tiene un cursor muy visible que parpadea cuando usted no está
tecleando. Las otras ventanas tienen su propia posición del cursor;
si está ejecutando Emacs en una pantalla gráfica, esos cursores se
C-M-v es un ejemplo de un carácter CONTROL-META. Si tiene una tecla
META (o Alt), puede teclear C-M-v pulsando a la vez CONTROL y META
-mientras teclea v. No importa qué tecla "vaya primero", CONTROL o
+mientras teclea v. No importa qué tecla «vaya primero», CONTROL o
META, porque las dos teclas actúan modificando los caracteres que
teclea.
ventana de abajo.
(Si hubiera tecleado C-x 1 en la ventana inferior, esto eliminaría la
-superior. Piense en este comando como "mantener sólo una
-ventana--aquella en la cual estoy.")
+superior. Piense en este comando como «mantener solo una
+ventana —aquella en la cual estoy—».)
No tiene por qué mostrarse el mismo buffer en ambas ventanas. Si usa
C-x C-f para encontrar un archivo en una ventana, la otra ventana no
* MÚLTIPLES MARCOS
------------------
-Emacs puede crear también múltiples "marcos". Marco es como
-denominamos a un grupo de ventanas, junto con sus menus, barras de
+Emacs puede crear también múltiples «marcos». Marco es como
+denominamos a un grupo de ventanas, junto con sus menús, barras de
desplazamiento, áreas de eco, etc. En entornos gráficos, lo que Emacs
-denomina "marco" es lo que otras aplicaciones llaman "ventana". En
+denomina «marco» es lo que otras aplicaciones llaman «ventana». En
entornos gráficos, es posible mostrar varios marcos al mismo tiempo.
En una terminal, solo se puede mostrar un marco a la vez.
También puede destruir un marco mediante el método normal que ofrezca
el entorno gráfico (a menudo, pinchando con el ratón en un botón
-etiquetado como "X" en alguna de las esquinas superiores del marco).
+etiquetado como «X» en alguna de las esquinas superiores del marco).
Si al hacer eso destruye el último marco de Emacs, la aplicación
termina.
* NIVELES RECURSIVOS DE EDICIÓN
--------------------------------
-Algunas veces entrará a lo que es llamado un "nivel recursivo de
-edición". Esto se indica en la línea de modo mediante corchetes en la
+Algunas veces entrará a lo que es llamado un «nivel recursivo de
+edición». Esto se indica en la línea de modo mediante corchetes en la
línea de modo, rodeando los paréntesis del nombre del modo mayor. Por
ejemplo, probablemente vea [(Fundamental)] en vez de (Fundamental).
Para salir de los niveles recursivos de edición, teclee ESC ESC ESC.
-Éste es un comando de "salida" para todo propósito. También lo puede
+Éste es un comando de «salida» para todo propósito. También lo puede
usar para eliminar ventanas extras, y salir del minibuffer.
>> Teclee M-x para entrar a un minibuffer; luego teclee ESC ESC ESC
para salir.
-No se puede usar C-g para salir de los "niveles recursivos de
-edición". Esto es porque C-g es usado para cancelar comandos y
+No se puede usar C-g para salir de los «niveles recursivos de
+edición». Esto es porque C-g es usado para cancelar comandos y
argumentos DENTRO del nivel recursivo de edición.
-* CONSEGUIR MAS AYUDA
+* CONSEGUIR MÁS AYUDA
---------------------
En este tutorial hemos tratado de ofrecer suficiente información para
imposible explicar todo aquí. Sin embargo, quizá desee aprender más
sobre Emacs, ya que tiene muchas otras características útiles. Emacs
provee comandos para leer documentación acerca de los comandos de
-Emacs. Todos estos comandos de "ayuda" comienzan con el carácter
-Control-h, que es llamado "el carácter de Ayuda (Help)".
+Emacs. Todos estos comandos de «ayuda» comienzan con el carácter
+Control-h, que es llamado «el carácter de Ayuda (Help)».
Para usar las funciones de ayuda, teclee el carácter C-h, y luego un
carácter que especifica qué tipo de ayuda quiere. Si está REALMENTE
C-p runs the command previous-line
-Esto le dice el "nombre de la función". Ya que los nombres de las
+Esto le dice el «nombre de la función». Ya que los nombres de las
funciones se eligen para indicar lo que hace el comando, pueden servir
como una breve documentación: suficiente para recordarle los comandos
que ha aprendido.
-Los comandos de múltiples caracteres tales como C-x C-s y (sí no tiene
+Los comandos de múltiples caracteres tales como C-x C-s y (si no tiene
las teclas META o EDIT o ALT) <ESC>v también están permitidos después
de C-h c.
>> Teclee C-h a file <Return>.
Esto muestra en otra ventana una lista de todos los comandos M-x con
-la palabra "file" en sus nombres. Verá los comandos de caracteres
+la palabra «file» en sus nombres. Verá los comandos de caracteres
listados junto a los nombres de los comandos correspondientes (por
ejemplo, C-x C-f junto a find-file).
>> Teclee C-x 1 para borrar la ventana de ayuda.
C-h i Leer los manuales incluidos (alias Info). Este comando
- lo pone en un buffer especial llamado "*info*" donde
+ lo pone en un buffer especial llamado «*info*» donde
puede leer manuales de los paquetes instalados en su
sistema. Teclee m emacs <Return> para leer el manual
de Emacs. Si nunca ha usado Info, teclee ? y Emacs y
---------------------
Puede aprender más acerca de Emacs leyendo su manual, ya sea como
-libro o en el propio Emacs (use el menú Ayuda, "Help", o teclee C-h
+libro o en el propio Emacs (use el menú Ayuda, «Help», o teclee C-h
r). Dos características que pueden gustarle son la completación, que
ahorra teclear, y dired, que simplifica el manejo de archivos.
La completación es una manera de ahorrar teclear innecesariamente.
-Por ejemplo, si quiere cambiarse al buffer "*Messages*", puede teclear
+Por ejemplo, si quiere cambiarse al buffer «*Messages*», puede teclear
C-x b *M<Tab> y Emacs encontrará el resto del nombre del buffer tan
lejos como pueda determinar de lo que ya haya tecleado. La
completación también funciona con nombres de comandos y de archivos.
La completación se describe en el Info del manual de Emacs en el nodo
-llamado "Completion".
+llamado «Completion».
Dired le permite listar los archivos en un directorio (y opcionalmente
sus subdirectorios), moverse alrededor de esa lista, visitar,
renombrar, borrar y aparte de eso operar en los archivos. Dired está
-descrito en el manual de Emacs en el nodo llamado "Dired".
+descrito en el manual de Emacs en el nodo llamado «Dired».
El manual también describe otras características de Emacs.
Este tutorial intenta ser comprensible para todos los usuarios nuevos,
así que si encuentra algo que no esté claro, no se quede parado
-culpándose a sí mismo: ¡Quéjese!
+culpándose a sí mismo: ¡quéjese!
* COPIA
Rafael Sepúlveda <drs@gnulinux.org.mx>
Juanma Barranquero <lekktu@gmail.com>
-Por favor, en caso de duda, sólo es válido el original en inglés de la
+Por favor, en caso de duda, solo es válido el original en inglés de la
siguiente nota de derechos de reproducción (que puede encontrar en el
archivo TUTORIAL).
Las condiciones para copiar Emacs mismo son más complejas, pero con el
mismo espíritu. Por favor lea el archivo COPYING y luego distribuya
copias de GNU Emacs a sus amigos. ¡Ayude a erradicar el
-obstruccionismo del software ("propietariedad") usando, escribiendo, y
+obstruccionismo del software («propietariedad») usando, escribiendo, y
compartiendo software libre!
--- end of TUTORIAL.es ---
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * Makefile.in (etags_libs, ebrowse${EXEEXT}, profile${EXEEXT})
+ (make-docfile${EXEEXT}, movemail${EXEEXT})
+ (update-game-score${EXEEXT}): Put $(NTLIB) before $(LOADLIBES),
+ since GCC sometimes calls stpcpy when it sees strcpy, under
+ optimization switches.
+
+2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * etags.c (analyze_regex): Rename from analyse_regex.
+
2014-12-14 Glenn Morris <rgm@gnu.org>
* grep-changelog: Remove file.
etags_deps = ${srcdir}/etags.c regex.o $(NTLIB) $(config_h)
etags_cflags = -DEMACS_NAME="\"GNU Emacs\"" -DVERSION="\"${version}\"" -o $@
-etags_libs = regex.o $(LOADLIBES) $(NTLIB)
+etags_libs = regex.o $(NTLIB) $(LOADLIBES)
etags${EXEEXT}: ${etags_deps}
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $(etags_cflags) $< $(etags_libs)
ebrowse${EXEEXT}: ${srcdir}/ebrowse.c ${srcdir}/../lib/min-max.h $(NTLIB) \
$(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} -DVERSION="\"${version}\"" \
- $< $(LOADLIBES) $(NTLIB) -o $@
+ $< $(NTLIB) $(LOADLIBES) -o $@
profile${EXEEXT}: ${srcdir}/profile.c $(NTLIB) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< \
- $(LOADLIBES) $(NTLIB) $(LIB_CLOCK_GETTIME) -o $@
+ $(NTLIB) $(LOADLIBES) $(LIB_CLOCK_GETTIME) -o $@
make-docfile${EXEEXT}: ${srcdir}/make-docfile.c $(NTLIB) $(config_h)
- $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< $(LOADLIBES) $(NTLIB) -o $@
+ $(AM_V_CCLD)$(CC) ${ALL_CFLAGS} $< $(NTLIB) $(LOADLIBES) -o $@
movemail${EXEEXT}: ${srcdir}/movemail.c pop.o $(NTLIB) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} ${MOVE_FLAGS} $< pop.o \
- $(LOADLIBES) $(NTLIB) $(LIBS_MOVE) -o $@
+ $(NTLIB) $(LOADLIBES) $(LIBS_MOVE) -o $@
pop.o: ${srcdir}/pop.c ${srcdir}/pop.h ${srcdir}/../lib/min-max.h $(config_h)
$(AM_V_CC)$(CC) -c ${CPP_CFLAGS} ${MOVE_FLAGS} $<
update-game-score${EXEEXT}: ${srcdir}/update-game-score.c $(NTLIB) $(config_h)
$(AM_V_CCLD)$(CC) ${ALL_CFLAGS} \
-DHAVE_SHARED_GAME_DIR="\"$(gamedir)\"" \
- $< $(LOADLIBES) $(NTLIB) -o $@
+ $< $(NTLIB) $(LOADLIBES) -o $@
emacsclient.res: ../nt/emacsclient.rc $(NTINC)/../icons/emacs.ico
$(WINDRES) -O coff --include-dir=$(NTINC)/.. -o $@ $<
if (*scope_buffer)
{
ensure_scope_buffer_room (3);
- strcat (scope_buffer, "::");
+ strcpy (scope_buffer + scope_buffer_len, "::");
scope_buffer_len += 2;
}
len = strlen (p->name);
ensure_scope_buffer_room (len + 1);
- strcat (scope_buffer, p->name);
+ strcpy (scope_buffer + scope_buffer_len, p->name);
scope_buffer_len += len;
if (HAS_FLAG (p->flags, F_TEMPLATE))
{
ensure_scope_buffer_room (3);
- strcat (scope_buffer, "<>");
+ strcpy (scope_buffer + scope_buffer_len, "<>");
scope_buffer_len += 2;
}
s = token_string (LA1);
MATCH ();
- len = strlen (s) + 10;
+ ptrdiff_t slen = strlen (s);
+ len = slen + 10;
if (len > id_size)
{
size_t new_size = max (len, 2 * id_size);
id = (char *) xrealloc (id, new_size);
id_size = new_size;
}
- strcpy (id, s);
+ char *z = stpcpy (id, s);
/* Vector new or delete? */
if (LOOKING_AT ('['))
{
- strcat (id, "[");
+ z = stpcpy (z, "[");
MATCH ();
if (LOOKING_AT (']'))
{
- strcat (id, "]");
+ strcpy (z, "]");
MATCH ();
}
}
id = (char *) xrealloc (id, new_size);
id_size = new_size;
}
- strcpy (id, "operator");
+ char *z = stpcpy (id, "operator");
/* Beware access declarations of the form "X::f;" Beware of
`operator () ()'. Yet another difficulty is found in
len += strlen (s) + 2;
if (len > id_size)
{
+ ptrdiff_t idlen = z - id;
size_t new_size = max (len, 2 * id_size);
id = (char *) xrealloc (id, new_size);
id_size = new_size;
+ z = id + idlen;
}
if (*s != ')' && *s != ']')
- strcat (id, " ");
- strcat (id, s);
+ *z++ = ' ';
+ z = stpcpy (z, s);
MATCH ();
/* If this is a simple operator like `+', stop now. */
buffer = (char *) xrealloc (buffer, buffer_size);
}
- strcpy (buffer, path->path);
- strcat (buffer, "/");
- strcat (buffer, file);
+ char *z = stpcpy (buffer, path->path);
+ *z++ = '/';
+ strcpy (z, file);
fp = fopen (buffer, "r");
}
{
char *path = xmalloc (strlen (home) + strlen (config_file)
+ EXTRA_SPACE);
- strcpy (path, home);
- strcat (path, "/.emacs.d/server/");
- strcat (path, config_file);
+ char *z = stpcpy (path, home);
+ z = stpcpy (z, "/.emacs.d/server/");
+ strcpy (z, config_file);
config = fopen (path, "rb");
free (path);
}
{
char *path = xmalloc (strlen (home) + strlen (config_file)
+ EXTRA_SPACE);
- strcpy (path, home);
- strcat (path, "/.emacs.d/server/");
- strcat (path, config_file);
+ char *z = stpcpy (path, home);
+ z = stpcpy (z, "/.emacs.d/server/");
+ strcpy (z, config_file);
config = fopen (path, "rb");
free (path);
}
{
/* socket_name is a file name component. */
long uid = geteuid ();
- ptrdiff_t tmpdirlen;
use_tmpdir = 1;
tmpdir = egetenv ("TMPDIR");
if (!tmpdir)
#endif
tmpdir = "/tmp";
}
- tmpdirlen = strlen (tmpdir);
socket_name_storage =
- xmalloc (tmpdirlen + strlen (server_name) + EXTRA_SPACE);
- strcpy (socket_name_storage, tmpdir);
- sprintf (socket_name_storage + tmpdirlen, "/emacs%ld/", uid);
- strcat (socket_name_storage + tmpdirlen, server_name);
+ xmalloc (strlen (tmpdir) + strlen (server_name) + EXTRA_SPACE);
+ char *z = stpcpy (socket_name_storage, tmpdir);
+ z += sprintf (z, "/emacs%ld/", uid);
+ strcpy (z, server_name);
local_socket_name = socket_name_storage;
}
{
/* We're running under su, apparently. */
long uid = pw->pw_uid;
- ptrdiff_t tmpdirlen = strlen (tmpdir);
char *user_socket_name
- = xmalloc (tmpdirlen + strlen (server_name) + EXTRA_SPACE);
- strcpy (user_socket_name, tmpdir);
- sprintf (user_socket_name + tmpdirlen, "/emacs%ld/", uid);
- strcat (user_socket_name + tmpdirlen, server_name);
+ = xmalloc (strlen (tmpdir) + strlen (server_name)
+ + EXTRA_SPACE);
+ char *z = stpcpy (user_socket_name, tmpdir);
+ z += sprintf (z, "/emacs%ld/", uid);
+ strcpy (z, server_name);
if (strlen (user_socket_name) < sizeof (server.sun_path))
strcpy (server.sun_path, user_socket_name);
const char *deq = "--daemon=";
char *daemon_arg = xmalloc (strlen (deq)
+ strlen (socket_name) + 1);
- strcpy (daemon_arg, deq);
- strcat (daemon_arg, socket_name);
+ strcpy (stpcpy (daemon_arg, deq), socket_name);
d_argv[1] = daemon_arg;
}
execvp ("emacs", d_argv);
default:
continue; /* the for loop */
}
- strcpy (cmd, "mv ");
- strcat (cmd, tagfile);
- strcat (cmd, " OTAGS;fgrep -v '\t");
- strcat (cmd, argbuffer[i].what);
- strcat (cmd, "\t' OTAGS >");
- strcat (cmd, tagfile);
- strcat (cmd, ";rm OTAGS");
+ char *z = stpcpy (cmd, "mv ");
+ z = stpcpy (z, tagfile);
+ z = stpcpy (z, " OTAGS;fgrep -v '\t");
+ z = stpcpy (z, argbuffer[i].what);
+ z = stpcpy (z, "\t' OTAGS >");
+ z = stpcpy (z, tagfile);
+ strcpy (z, ";rm OTAGS");
if (system (cmd) != EXIT_SUCCESS)
fatal ("failed to execute shell command", (char *)NULL);
}
/* Maybe these should be used:
setenv ("LC_COLLATE", "C", 1);
setenv ("LC_ALL", "C", 1); */
- strcpy (cmd, "sort -u -o ");
- strcat (cmd, tagfile);
- strcat (cmd, " ");
- strcat (cmd, tagfile);
+ char *z = stpcpy (cmd, "sort -u -o ");
+ z = stpcpy (z, tagfile);
+ *z++ = ' ';
+ strcpy (z, tagfile);
exit (system (cmd));
}
return EXIT_SUCCESS;
case omethodtag:
case omethodparm:
objdef = omethodcolon;
- linebuffer_setlen (&token_name, token_name.len + 1);
- strcat (token_name.buffer, ":");
+ int toklen = token_name.len;
+ linebuffer_setlen (&token_name, toklen + 1);
+ strcpy (token_name.buffer + toklen, ":");
break;
}
if (structdef == stagseen)
while ((dp = strchr (dp + 1, '/')) != NULL)
i += 1;
res = xnew (3*i + strlen (fp + 1) + 1, char);
- res[0] = '\0';
+ char *z = res;
while (i-- > 0)
- strcat (res, "../");
+ z = stpcpy (z, "../");
/* Add the file name relative to the common root of file and dir. */
- strcat (res, fp + 1);
+ strcpy (z, fp + 1);
free (afn);
return res;
over a few dozen messages, and is a big chunk of the time we
spend fetching mail from a server close by. */
buf = alloca (strlen (line) + 3);
- strcpy (buf, line);
- strcat (buf, "\r\n");
+ strcpy (stpcpy (buf, line), "\r\n");
ret = fullwrite (server->file, buf, strlen (buf));
if (ret < 0)
if (!scorefile)
lose_syserr ("Couldn't allocate score file");
- strcpy (scorefile, prefix);
- strcat (scorefile, "/");
- strcat (scorefile, argv[optind]);
+ char *z = stpcpy (scorefile, prefix);
+ *z++ = '/';
+ strcpy (z, argv[optind]);
newscore.score = normalize_integer (argv[optind + 1]);
if (! newscore.score)
char *tempfile = malloc (strlen (filename) + strlen (".tempXXXXXX") + 1);
if (!tempfile)
return -1;
- strcpy (tempfile, filename);
- strcat (tempfile, ".tempXXXXXX");
+ strcpy (stpcpy (tempfile, filename), ".tempXXXXXX");
fd = mkostemp (tempfile, 0);
if (fd < 0)
return -1;
char *lockpath = malloc (strlen (filename) + strlen (lockext) + 60);
if (!lockpath)
return -1;
- strcpy (lockpath, filename);
- strcat (lockpath, lockext);
+ strcpy (stpcpy (lockpath, filename), lockext);
*state = lockpath;
while ((fd = open (lockpath, O_CREAT | O_EXCL, 0600)) < 0)
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stddef stdio strftime strtoimax strtoumax symlink sys_stat sys_time time time_r timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
MOSTLYCLEANFILES += core *.stackdump
## end gnulib module stdlib
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libgnu_a_SOURCES += stpcpy.c
+
+## end gnulib module stpcpy
+
## begin gnulib module strftime
libgnu_a_SOURCES += strftime.c
--- /dev/null
+/* stpcpy.c -- copy a string and return pointer to end of new string
+ Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2014 Free Software
+ Foundation, Inc.
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program 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 3 of the License, or any
+ later version.
+
+ This program 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 this program. If not, see <http://www.gnu.org/licenses/>. */
+
+#include <config.h>
+
+#include <string.h>
+
+#undef __stpcpy
+#ifdef _LIBC
+# undef stpcpy
+#endif
+
+#ifndef weak_alias
+# define __stpcpy stpcpy
+#endif
+
+/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
+char *
+__stpcpy (char *dest, const char *src)
+{
+ register char *d = dest;
+ register const char *s = src;
+
+ do
+ *d++ = *s;
+ while (*s++ != '\0');
+
+ return d - 1;
+}
+#ifdef weak_alias
+weak_alias (__stpcpy, stpcpy)
+#endif
+2014-12-28 Juri Linkov <juri@linkov.net>
+
+ * vc/compare-w.el: Require diff-mode for diff faces.
+ (compare-windows-removed, compare-windows-added): New faces
+ inheriting from diff faces.
+ (compare-windows): Define obsolete face alias.
+ (compare-windows-highlight): Replace face `compare-windows' with
+ new faces `compare-windows-added' and `compare-windows-removed'
+ (bug#19451).
+ (compare-windows-get-recent-window): Signal an error when
+ no other window is found (bug#19170).
+
+2014-12-27 Dmitry Gutov <dgutov@yandex.ru>
+
+ * progmodes/elisp-mode.el (elisp--xref-identifier-file):
+ Skip features that have no sources.
+
+ * simple.el (execute-extended-command):
+ When `suggest-key-bindings' is nil, don't.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Native readline completion.
+
+ * progmodes/python.el (python-shell-completion-native-disabled-interpreters)
+ (python-shell-completion-native-enable)
+ (python-shell-completion-native-output-timeout): New defcustoms.
+ (python-shell-completion-native-interpreter-disabled-p)
+ (python-shell-completion-native-try)
+ (python-shell-completion-native-setup)
+ (python-shell-completion-native-turn-off)
+ (python-shell-completion-native-turn-on)
+ (python-shell-completion-native-turn-on-maybe)
+ (python-shell-completion-native-turn-on-maybe-with-msg)
+ (python-shell-completion-native-toggle): New functions.
+ (python-shell-completion-native-get-completions): New function.
+ (python-shell-completion-at-point): Use it.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Enhance shell user interaction and deprecate
+ python-shell-get-or-create-process.
+
+ * progmodes/python.el
+ (python-shell-get-process-or-error): New function.
+ (python-shell-with-shell-buffer): Use it.
+ (python-shell-send-string, python-shell-send-region)
+ (python-shell-send-buffer, python-shell-send-defun)
+ (python-shell-send-file, python-shell-switch-to-shell): Use it.
+ Add argument MSG to display user-friendly message when no process
+ is running.
+ (python-shell-switch-to-shell): Call pop-to-buffer with NORECORD.
+ (python-shell-make-comint): Rename argument SHOW from POP. Use
+ display-buffer instead of pop-to-buffer.
+ (run-python): Doc fix. Return process.
+ (python-shell-get-or-create-process): Make obsolete.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * progmodes/python.el (python-shell-buffer-substring): Handle
+ cornercase when region sent starts at point-min.
+
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * language/misc-lang.el (composition-function-table): Add Syriac
+ characters and also ZWJ/ZWNJ. See
+ http://lists.gnu.org/archive/html/help-gnu-emacs/2014-12/msg00248.html
+ for the details.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Fix message when sending region.
+
+ * progmodes/python.el (python-shell-send-region): Rename argument
+ send-main from nomain. Fix message.
+ (python-shell-send-buffer): Rename argument send-main from arg.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Cleanup temp files even with eval errors.
+
+ * progmodes/python.el (python-shell-send-file): Make file-name
+ mandatory. Fix temp file removal in the majority of cases.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Handle file encoding for shell.
+
+ * progmodes/python.el (python-rx-constituents): Add coding-cookie.
+ (python-shell--save-temp-file): Write file with proper encoding.
+ (python-shell-buffer-substring): Add coding cookie for detected
+ encoding to generated content. Fix blank lines when removing
+ if-name-main block.
+ (python-shell-send-file): Handle file encoding.
+ (python-info-encoding-from-cookie)
+ (python-info-encoding): New functions.
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band):
+ Use `tramp-rsh-end-of-line', it ought to be more robust.
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/js.el (js-syntax-propertize): "return" can't be divided
+ (bug#19397).
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-read-passwd): Ignore errors from `auth-source-*'.
+
+ * net/tramp-sh.el (tramp-do-copy-or-rename-file-out-of-band): Use "\n"
+ as end-of-line delimeter for passwords, when running on MS Windows.
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/sh-script.el (sh-set-shell): Don't change the global value
+ of indent-line-function (bug#19433).
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ Fix line numbers on Python shell.
+ * progmodes/python.el (python-shell--save-temp-file): Do not
+ append coding cookie.
+ (python-shell-send-string): Generalize for
+ python-shell-send-region.
+ (python--use-fake-loc): Delete var.
+ (python-shell-buffer-substring): Cleanup fake-loc logic.
+ (python-shell-send-region): Remove fake-loc logic, simplify.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * progmodes/python.el (python-indent-post-self-insert-function):
+ Make colon to re-indent only for dedenters, handling
+ multiline-statements gracefully.
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-handle-insert-file-contents):
+ Set `find-file-not-found-functions' in case of errors. (Bug#18623)
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp-sh.el (tramp-send-command-and-read): New optional
+ arg MARKER.
+ (tramp-get-remote-path): Use it.
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * lisp/subr.el (redisplay-dont-pause): Mark as obsolete.
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * net/tramp.el (tramp-error-with-buffer): Call `message' properly.
+ (tramp-accept-process-output): Use nil as argument for
+ `accept-process-output', when there is a gateway prepended.
+
+ * net/tramp-gw.el (tramp-gw-open-connection): Suppress traces in
+ wrong debug buffer.
+ (tramp-gw-open-connection): Set process coding system 'binary.
+ (tramp-gw-open-network-stream): Handle HTTP error 403.
+
+ * net/tramp-sh.el (tramp-compute-multi-hops): Suppress traces in
+ wrong debug buffer.
+ (tramp-maybe-open-connection): Set connection property "gateway".
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * subr.el (sit-for): Tweak docstring (bug#19381).
+
+2014-12-27 Dmitry Gutov <dgutov@yandex.ru>
+
+ * vc/vc-git.el (vc-git-after-dir-status-stage): Move `up-to-date'
+ stage to after `diff-index' (bug#19386).
+
+2014-12-27 João Távora <joaotavora@gmail.com>
+
+ * textmodes/tex-mode.el (tex-insert-quote): Consider and respect
+ `electric-pair-mode' (bug#19356).
+
+2014-12-27 Dmitry Gutov <dgutov@yandex.ru>
+
+ elisp-xref-find: Don't create buffers eagerly.
+
+ * progmodes/elisp-mode.el (elisp--identifier-location): Fold back
+ into `elisp--company-location'.
+ (elisp--identifier-completion-table): Rename to
+ `elisp--identifier-completion-table', and do not include just any
+ symbols with a property list.
+ (elisp-completion-at-point): Revert the 2014-12-25 change.
+ (elisp--xref-identifier-file): New function.
+ (elisp--xref-find-definitions): Use it.
+
+ * emacs-lisp/find-func.el (find-function-library): New function,
+ extracted from `find-function-noselect'.
+
+ * progmodes/xref.el (xref-elisp-location): New class.
+ (xref-make-elisp-location): New function.
+ (xref-location-marker): New implementation.
+
+2014-12-27 Juri Linkov <juri@linkov.net>
+
+ * minibuffer.el (minibuffer-completion-help):
+ Use shrink-window-if-larger-than-buffer in window-height
+ when temp-buffer-resize-mode is nil.
+
+ * window.el (with-displayed-buffer-window): Remove window-height
+ from the action alist in the temp-buffer-window-show call
+ when window-height is handled explicitly afterwards (bug#19355).
+
+2014-12-27 Juri Linkov <juri@linkov.net>
+
+ Support subdirectories when saving places in dired.
+ * saveplace.el (toggle-save-place, save-place-to-alist)
+ (save-places-to-alist, save-place-dired-hook):
+ Use dired-current-directory instead of dired-directory (bug#19436).
+ (save-place-dired-hook): Add check for alist to make the new
+ format future-proof to allow other possible formats.
+
+2014-12-26 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ python.el: Generate clearer shell buffer names.
+
+ * progmodes/python.el (python-shell-get-process-name)
+ (python-shell-internal-get-process-name): Use `buffer-name`.
+ (python-shell-internal-get-or-create-process): Simplify.
+
+2014-12-26 Dmitry Gutov <dgutov@yandex.ru>
+
+ Add basic xref apropos implementation to elisp-mode.
+
+ * progmodes/elisp-mode.el (elisp--xref-find-definitions):
+ Filter out nil results.
+ (elisp--xref-find-apropos): New function.
+ (elisp-xref-find): Use it.
+
+ * progmodes/xref.el (xref--show-xrefs): Use `user-error'.
+
+2014-12-25 Filipp Gunbin <fgunbin@fastmail.fm>
+
+ * dired-aux.el (dired-maybe-insert-subdir): Make
+ dired-maybe-insert-subdir always skip trivial files.
+
+2014-12-25 Helmut Eller <eller.helmut@gmail.com>
+ Dmitry Gutov <dgutov@yandex.ru>
+
+ Consolidate cross-referencing commands.
+
+ Move autoloaded bindings for `M-.', `M-,', `C-x 4 .' and
+ `C-x 5 .' from etags.el to xref.el.
+
+ * progmodes/xref.el: New file.
+
+ * progmodes/elisp-mode.el (elisp--identifier-types): New variable.
+ (elisp--identifier-location): New function, extracted from
+ `elisp--company-location'.
+ (elisp--company-location): Use it.
+ (elisp--identifier-completion-table): New variable.
+ (elisp-completion-at-point): Use it.
+ (emacs-lisp-mode): Set the local values of `xref-find-function'
+ and `xref-identifier-completion-table-function'.
+ (elisp-xref-find, elisp--xref-find-definitions)
+ (elisp--xref-identifier-completion-table): New functions.
+
+ * progmodes/etags.el (find-tag-marker-ring): Mark obsolete in
+ favor of `xref--marker-ring'.
+ (tags-lazy-completion-table): Autoload.
+ (tags-reset-tags-tables): Use `xref-clear-marker-stack'.
+ (find-tag-noselect): Use `xref-push-marker-stack'.
+ (pop-tag-mark): Make an alias for `xref-pop-marker-stack'.
+ (etags--xref-limit): New constant.
+ (etags-xref-find, etags--xref-find-definitions): New functions.
+
+2014-12-25 Martin Rudalics <rudalics@gmx.at>
+
+ * cus-start.el (resize-mini-windows): Make it customizable.
+
+2014-12-24 Stephen Leake <stephen_leake@stephe-leake.org>
+
+ * startup.el (fancy-about-text): Change buttons for etc/CONTRIBUTE
+ to (info "(emacs)Contributing"). (Bug#19299)
+
+2014-12-24 Martin Rudalics <rudalics@gmx.at>
+
+ * window.el (mouse-autoselect-window-position-1): New variable.
+ (mouse-autoselect-window-cancel)
+ (mouse-autoselect-window-select, handle-select-window): With
+ delayed autoselection select window only if mouse moves after
+ selecting its frame.
+
+2014-12-24 Michael Albinus <michael.albinus@gmx.de>
+
+ * eshell/esh-ext.el (eshell-find-interpreter): Expand relative
+ remote file names. (Bug#18782)
+
+2014-12-23 Sam Steingold <sds@gnu.org>
+
+ * shell.el (shell-display-buffer-actions): New user option.
+ (shell): Pass it to `pop-to-buffer' instead of hard-coding
+ `pop-to-buffer-same-window'.
+
+2014-12-23 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * progmodes/js.el (js--syntax-propertize-regexp-syntax-table): New var.
+ (js-syntax-propertize-regexp): Use it to recognize "slash in
+ a character class" (bug#19397).
+
2014-12-22 Stefan Monnier <monnier@iro.umontreal.ca>
* completion.el: Use post-self-insert-hook (bug#19400).
2014-12-19 Alan Mackenzie <acm@muc.de>
- Make C++11 uniform init syntax work. New keywords "final" and "override"
-
+ Make C++11 uniform init syntax work.
+ New keywords "final" and "override"
* progmodes/cc-engine.el (c-back-over-member-initializer-braces):
New function.
(c-guess-basic-syntax): Set `containing-sex' and `lim' using the
new function.
-
* progmodes/cc-fonts.el (c-font-lock-declarations): Check more
carefully for "are we at a declarator?" using
c-back-over-member-initializers.
-
- * progmodes/cc-langs.el (c-type-modifier-kwds): include "final"
+ * progmodes/cc-langs.el (c-type-modifier-kwds): Include "final"
and "override" in the C++ value.
2014-12-19 Martin Rudalics <rudalics@gmx.at>
- * textmodes/ispell.el (ispell-command-loop): Don't use
- `next-window'.
+ * textmodes/ispell.el (ispell-command-loop): Don't use `next-window'.
2014-12-21 Lars Ingebrigtsen <larsi@gnus.org>
do the window handling.
(ispell-adjusted-window-height, ispell-overlay-window): Remove.
(ispell-display-buffer): New function to reuse, create and fit
- window to ispell's buffers. (Bug#3413)
+ window to ispell's buffers. (Bug#3413)
2014-12-18 Dmitry Gutov <dgutov@yandex.ru>
* vc/vc-bzr.el (vc-bzr-diff):
* obsolete/vc-arch.el (vc-arch-diff): Move ASYNC argument to the end.
+2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * emacs-lisp/cconv.el (cconv--analyze-use):
+ Rename from cconv--analyse-use.
+ (cconv--analyze-function): Rename from cconv--analyse-function.
+ (cconv-analyze-form): Rename from cconv-analyse-form.
+
2014-12-13 Andreas Schwab <schwab@linux-m68k.org>
* net/shr.el (shr-next-link): Don't error out at eob.
2014-12-12 Eric S. Raymond <esr@snark.thyrsus.com>
- * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el,
- vc/vc.el: latest-on-branch-p is no longer a public method.
+ * vc/vc-dav.el, vc/vc-git.el, vc/vc-hg.el, vc/vc-src.el:
+ * vc/vc.el: latest-on-branch-p is no longer a public method.
- * vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el,
- vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el: Remove `rollback'
- method, to be replaced in the future by uncommit.
+ * vc/vc.el, vc/vc-hg.el, vc/vc-git.el, vc/vc-hooks.el:
+ * vc/vc-mtn.el, vc/vc-rcs.el, vc/vc-sccs.el, vc/vc-src.el:
+ Remove `rollback' method, to be replaced in the future by uncommit.
2014-12-11 Michael Albinus <michael.albinus@gmx.de>
2014-12-10 Eric S. Raymond <esr@snark.thyrsus.com>
- * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el,
- vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of
- vc-keep-workfiles, it's a shoot-self-in-foot archaism.
- Workfiles are always kept.
+ * vc/vc-dispatcher.el, vc/vc-hooks.el, vc/vc-rcs.el:
+ * vc/vc-sccs.el, vc/vc.el: Righteous featurectomy of vc-keep-workfiles,
+ it's a shoot-self-in-foot archaism. Workfiles are always kept.
2014-12-10 Rasmus Pank Roulund <emacs@pank.eu>
2014-12-09 Eric S. Raymond <esr@snark.thyrsus.com>
* vc/vc-src.el (vc-src-do-comand): Prepend -- to file argument
- list, avoids problems witth names containing hyphens.
+ list, avoids problems witt names containing hyphens.
2014-12-09 Wilson Snyder <wsnyder@wsnyder.org>
2014-12-08 Eric S. Raymond <esr@snark.thyrsus.com>
- * vc/vc-arch.el: Moved to obsolete directory so a test framework
+ * vc/vc-arch.el: Move to obsolete directory so a test framework
won't trip over bit-rot in it. There has been no Arch snapshot
for nine years.
2014-12-02 Eric S. Raymond <esr@snark.thyrsus.com>
- * subr.el (filter): New macro. Because it's just silly for a Lisp
+ * subr.el (filter): New macro. Because it's just silly for a Lisp
not to have this in 2014. And VC needs it.
- * vc.el, all backends: API simplification: Abolish dir-status.
+ * vc.el: All backends: API simplification: Abolish dir-status.
It's replaced by dir-status-files.
- * vc.el, all backends: API simplification: Remove 4th
+ * vc.el: All backends: API simplification: Remove 4th
'default-state' argument from vc-dir-status files and its backend
methods - no backend method ever set it. It was used only in the
fallback method to to set a default of 'up-to-date, though a
* vc.el (vc-expand-dirs): Now takes a second BACKEND argument,
improving behavior on directories using multiple file-oriented VCSes.
- * vc/vc.el and all backends: API simplification; clear-headers
+ * vc/vc.el: All backends: API simplification; clear-headers
is no longer a public method. It is now local to the one place
it's used, in the RCS steal-lock method.
2014-12-01 Eric S. Raymond <esr@snark.thyrsus.com>
- * vc/vc.el and all backends: API simplification; could-register
+ * vc/vc.el: In all backends: API simplification; could-register
is no longer a public method. (vc-cvs.el still has a private
implementation.)
- * vc/vc.el and all backends: API cleanup; the backend diff method
+ * vc/vc.el: In all backends: API cleanup; the backend diff method
takes an explicit async flag. This eliminates a particularly ugly
global.
the back ends; this fixes a layering violation that caused bad
behavior with SVN.
- * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+ * vc/vc.el, vc-hooks.el: All backends: API simplification;
vc-stay-local-p and repository-hostname are no longer public
methods. Only the CVS and SVN backends used these, and the SVN
support was conditioned out because svn status -v is too slow.
- The CVS back end retains this machibery and the vc-stay-local
+ The CVS back end retains this machinery and the vc-stay-local
configuration variable now only affects it.
2014-12-01 Stefan Monnier <monnier@iro.umontreal.ca>
2014-12-01 Eric S. Raymond <esr@snark.thyrsus.com>
- * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+ * vc/vc.el, vc-hooks.el: All backends: API simplification;
vc-state-heuristic is no longer a public method, having been
removed where it is redundant, unnecessary, or known buggy.
This eliminated all backends except CVS. Eliminates bug#7850.
* vc/vc-cvs.el, vc/vc-hooks.el, vc/vc-rcs.el, vc/vc-sccs.el:
Eliminate vc-mistrust-permissions. It was only relevant to the
- RCS and SCCS back ends and defaulted to t. Code now always
+ RCS and SCCS back ends and defaulted to t. Code now always
mistrusts permissions - by actual measurement the effect on
- performance is negligible. As a side effect bug#11490 is now
+ performance is negligible. As a side effect bug#11490 is now
irrelevant.
- * vc/vc.el, vc-hooks.el, and all backends: API simplification;
+ * vc/vc.el, vc-hooks.el: All backends: API simplification;
vc-workfile-unchanged-p is no longer a public method (but the RCS
and SCCS back ends retain it as a private method used in state
- computation). This method was redundant with vc-state and usually
- implemented as a trivial call to same. Fixes the failure mode
+ computation). This method was redundant with vc-state and usually
+ implemented as a trivial call to same. Fixes the failure mode
described in bug#694.
- * vc/vc.el and all backends: API simplification; init-revision is
+ * vc/vc.el: All backends: API simplification; init-revision is
gone, and vc-registered functions no longer take an
initial-revision argument.
string.
(newsticker--treeview-load): Change wording of the questions the
user is asked when `newsticker-groups-filename' is found to be
- used and we offer to read and remove the groups file. (bug#19165)
+ used and we offer to read and remove the groups file. (Bug#19165)
2014-11-27 Lars Magne Ingebrigtsen <larsi@gnus.org>
2014-11-22 Ulf Jasper <ulf.jasper@web.de>
* net/newst-backend.el (newsticker--sentinel-work):
- Tell `libxml-parse-xml-region' to discard comments. Fixes bug#18787.
+ Tell `libxml-parse-xml-region' to discard comments. Fixes bug#18787.
2014-11-22 Michael Albinus <michael.albinus@gmx.de>
live in vc.el and certainly not in vc-hooks.el.
* vc/vc-hooks.el, vc-rcs.el, vc-sccs.el: vc-name -> vc-master-name.
- This is preaparatory to isolating all the 'master' functions
+ This is preparatory to isolating all the 'master' functions
used only by the file-oriented back ends. With this done first,
the substantive diffs will be easier to read.
2014-11-16 Oscar Fuentes <ofv@wanadoo.es>
Add faces for the VC modeline state indicator.
- * lisp/vc/vc-hooks.el:
+ * vc/vc-hooks.el:
(vc-state-faces, vc-state-base-face)
(vc-up-to-date-state, vc-needs-update-state)
(vc-locked-state, vc-locally-added-state)
* ses.el (macroexp): Add require for this package, so that function
`ses--cell gets macroexp-quote.
(ses--cell): Makes formula a macroexp-quote of value when formula
- is nil. The rationale of this changr is to allow in the future
+ is nil. The rationale of this changr is to allow in the future
shorter SES files, e.g. we could have only `(ses-cell A1 1.0)'
- instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'. In such a case
+ instead of `(ses-cell A1 1.0 1.0 nil REFLIST)'. In such a case
reference list REFLIST would be re-computed after load --- thus
trading off load time against file size.
HTML code has become part of the xml parse tree.
(newsticker--parse-rss-1.0, newsticker--parse-rss-2.0): Take care
of possibly missing namespace prefixes.
- (newsticker--parse-generic-items): Code formatting. Typo.
+ (newsticker--parse-generic-items): Code formatting. Typo.
(newsticker--images-dir): Add trailing slash.
(newsticker--image-get): Fix error message.
* vc/add-log.el (change-log-next-buffer): Don't create an empty
buffer "ChangeLog" when the current buffer doesn't match ChangeLog.[0-9].
Return the current buffer if no files match the default pattern
- ChangeLog.[0-9]. Signal "end of multi" when file is nil. (Bug#18547)
+ ChangeLog.[0-9]. Signal "end of multi" when file is nil. (Bug#18547)
2014-09-25 Stefan Monnier <monnier@iro.umontreal.ca>
* textmodes/reftex-sel.el (reftex-select-label-mode)
(reftex-select-bib-mode, reftex-insert-docstruct): Derive modes
from special-mode (instead of fundamental-mode) and propertize
- with font-lock-face instead of just face. (Bug#18496)
+ with font-lock-face instead of just face. (Bug#18496)
* textmodes/reftex-toc.el (reftex-toc-mode, reftex-toc): Ditto.
of local overrides.
(ibuffer): Don't store previous windows configuration.
Let `quit-window' handle restoring.
- (ibuffer-quit): Remove function. Use `quit-window' instead.
+ (ibuffer-quit): Remove function. Use `quit-window' instead.
(ibuffer-restore-window-config-on-quit): Remove variable.
(ibuffer-prev-window-config): Remove variable.
2014-08-11 Ulf Jasper <ulf.jasper@web.de>
- Newsticker: introduce `newsticker-treeview-date-format'. (Bug#17227)
-
+ Newsticker: introduce `newsticker-treeview-date-format'. (Bug#17227)
* net/newst-treeview.el (newsticker-treeview-date-format): New.
- (newsticker--treeview-list-add-item): Use `newsticker-treeview-date-format'.
+ (newsticker--treeview-list-add-item):
+ Use `newsticker-treeview-date-format'.
2014-08-11 Glenn Morris <rgm@gnu.org>
2014-07-30 Christophe Deleuze <christophe.deleuze@free.fr> (tiny change)
* calendar/icalendar.el (icalendar--decode-isodatetime):
- Use actual current-time-zone when converting to local time. (Bug#15408)
+ Use actual current-time-zone when converting to local time. (Bug#15408)
2014-07-29 Martin Rudalics <rudalics@gmx.at>
string delimiter.
(python-mode): Use it.
-2014-07-28 Fabián Ezequiel Gallina <fgallina@gnu.org>
-
- Prevent Python process shell buffer to pop twice.
- * progmodes/python.el (python-shell-switch-to-shell): Do not call
- pop-to-buffer.
-
2014-07-28 Fabián Ezequiel Gallina <fgallina@gnu.org>
* progmodes/python.el
2014-07-12 Fabián Ezequiel Gallina <fgallina@gnu.org>
- Fix dedenters and electric colon handling. (Bug#15163)
+ Fix dedenters and electric colon handling. (Bug#15163)
* progmodes/python.el
(python-rx-constituents): Add dedenter and block-ender.
(python-indent-dedenters, python-indent-block-enders): Delete.
* progmodes/python.el (python-indent-post-self-insert-function):
Enhancements to electric indentation behavior inside
- parens. (Bug#17658)
+ parens. (Bug#17658)
2014-07-03 Stefan Monnier <monnier@iro.umontreal.ca>
* help.el (help--key-binding-keymap): New function.
(help--binding-locus): New function.
(describe-key): Mention the keymap in which the binding was
- found. (bug#13948)
+ found. (bug#13948)
2014-06-12 Stefan Monnier <monnier@iro.umontreal.ca>
2014-05-24 Daniel Colascione <dancol@dancol.org>
* progmodes/subword.el (subword-find-word-boundary): Move point to
- correct spot before search. (Bug#17580)
+ correct spot before search. (Bug#17580)
* emacs-lisp/nadvice.el (defun): Write in eval-and-compile to avoid
breaking the build.
mksh. Improve custom spec; allow regular expressions.
(sh-shell): Delegate name splitting to `sh-canonicalize-shell'.
(sh-after-hack-local-variables): New function.
- (sh-mode): Use it; respect file-local `sh-shell' variable. (bug#17333)
+ (sh-mode): Use it; respect file-local `sh-shell' variable. (Bug#17333)
(sh-set-shell): Use `sh-canonicalize-shell' instead of open-coding
the normalization.
(sh-canonicalize-shell): Rewrite to support regexes.
2014-04-07 João Távora <joaotavora@gmail.com>
Fix `electric-pair-delete-adjacent-pairs' in modes binding
- backspace. (bug#16981)
+ backspace. (Bug#16981)
* elec-pair.el (electric-pair-backward-delete-char): Delete.
(electric-pair-backward-delete-char-untabify): Delete.
(electric-pair-mode-map): Bind backspace to a menu item filtering
(semantic-analyze-nolongprefix-completion-at-point-function):
Do nothing if the current buffer is not using Semantic (bug#19077).
+2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * semantic/lex-spp.el (semantic-lex-spp-analyzer-do-replace):
+ Rename from semantic-lex-spp-anlyzer-do-replace.
+
2014-12-08 Matt Curtis <matt.r.curtis@gmail.com> (tiny change)
* pulse.el (pulse-momentary-highlight-one-line): Respect the POINT
(ede-project-autoload): Remove dirmatch entry - it is no longer
needed.
- * lisp/cedet/ede/proj.el (project-rescan): Replace direct
+ * ede/proj.el (project-rescan): Replace direct
manipulation of `ede-projects' with equivalent and better
functions.
(ede-proj-load): Replace call to test if dir has project to
2014-11-09 David Engster <dengste@eml.cc>
- * lisp/cedet/ede/proj-elisp.el
- (ede-proj-target-elisp::ede-proj-tweak-autoconf): Kill buffer
- after saving modified elisp-comp script, as to avoid "file has
- changed on disk; really edit the buffer" questions when script
- gets rewritten.
+ * ede/proj-elisp.el (ede-proj-target-elisp::ede-proj-tweak-autoconf):
+ Kill buffer after saving modified elisp-comp script, so as to avoid
+ "file has changed on disk; really edit the buffer" questions when
+ script gets rewritten.
2014-10-29 Paul Eggert <eggert@cs.ucla.edu>
(const :tag "Hourglass" :value hourglass)))
(display-hourglass cursor boolean)
(hourglass-delay cursor number)
-
+ (resize-mini-windows
+ windows (choice
+ (const :tag "Off (nil)" :value nil)
+ (const :tag "Fit (t)" :value t)
+ (const :tag "Grow only" :value grow-only))
+ "25.1")
;; xfaces.c
(scalable-fonts-allowed display boolean "22.1")
;; xfns.c
;; inserted *after* opoint.
(setq dirname (file-name-as-directory dirname))
(or (and (not switches)
- (dired-goto-subdir dirname))
+ (when (dired-goto-subdir dirname)
+ (unless (dired-subdir-hidden-p dirname)
+ (dired-initial-position dirname))
+ t))
(dired-insert-subdir dirname switches no-error-if-not-dir-p))
;; Push mark so that it's easy to find back. Do this after the
;; insert message so that the user sees the `Mark set' message.
\f
;;; Start of automatically extracted autoloads.
\f
-;;;### (autoloads nil "dired-aux" "dired-aux.el" "1448837b5f3e2b9ad63f723361f1e32e")
+;;;### (autoloads nil "dired-aux" "dired-aux.el" "73269f48e7fe2fd0ac580fd69252b33a")
;;; Generated autoloads from dired-aux.el
(autoload 'dired-diff "dired-aux" "\
(cons (current-buffer) (point)))
(cons (current-buffer) nil))))))))
+(defun find-function-library (function &optional lisp-only verbose)
+ "Return the library FUNCTION is defined in.
+
+If FUNCTION is a built-in function and LISP-ONLY is non-nil,
+signal an error.
+
+If VERBOSE is non-nil, and FUNCTION is an alias, display a
+message about the whole chain of aliases."
+ (let ((def (symbol-function (find-function-advised-original function)))
+ aliases)
+ ;; FIXME for completeness, it might be nice to print something like:
+ ;; foo (which is advised), which is an alias for bar (which is advised).
+ (while (symbolp def)
+ (or (eq def function)
+ (not verbose)
+ (if aliases
+ (setq aliases (concat aliases
+ (format ", which is an alias for `%s'"
+ (symbol-name def))))
+ (setq aliases (format "`%s' is an alias for `%s'"
+ function (symbol-name def)))))
+ (setq function (symbol-function (find-function-advised-original function))
+ def (symbol-function (find-function-advised-original function))))
+ (if aliases
+ (message "%s" aliases))
+ (cond
+ ((autoloadp def) (nth 1 def))
+ ((subrp def)
+ (if lisp-only
+ (error "%s is a built-in function" function))
+ (help-C-file-name def 'subr))
+ ((symbol-file function 'defun)))))
+
;;;###autoload
(defun find-function-noselect (function &optional lisp-only)
"Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
in `load-path'."
(if (not function)
(error "You didn't specify a function"))
- (let ((def (symbol-function (find-function-advised-original function)))
- aliases)
- ;; FIXME for completeness, it might be nice to print something like:
- ;; foo (which is advised), which is an alias for bar (which is advised).
- (while (symbolp def)
- (or (eq def function)
- (if aliases
- (setq aliases (concat aliases
- (format ", which is an alias for `%s'"
- (symbol-name def))))
- (setq aliases (format "`%s' is an alias for `%s'"
- function (symbol-name def)))))
- (setq function (symbol-function (find-function-advised-original function))
- def (symbol-function (find-function-advised-original function))))
- (if aliases
- (message "%s" aliases))
- (let ((library
- (cond ((autoloadp def) (nth 1 def))
- ((subrp def)
- (if lisp-only
- (error "%s is a built-in function" function))
- (help-C-file-name def 'subr))
- ((symbol-file function 'defun)))))
- (find-function-search-for-symbol function nil library))))
+ (let ((library (find-function-library function lisp-only t)))
+ (find-function-search-for-symbol function nil library)))
(defun find-function-read (&optional type)
"Read and return an interned symbol, defaulting to the one near point.
(let ((fullname (if (file-name-directory file) file
(eshell-search-path file)))
(suffixes eshell-binary-suffixes))
+ (if (and fullname
+ (not (file-remote-p fullname))
+ (file-remote-p default-directory))
+ (setq fullname (expand-file-name
+ (concat "./" fullname) default-directory)))
(if (and fullname (not (or eshell-force-execution
(file-executable-p fullname))))
(while suffixes
(set-char-table-range
composition-function-table
'(#x600 . #x6FF)
- (list ["[\u0600-\u06FF]+" 0 font-shape-gstring]))
+ (list ["\u200D?[\u0600-\u074F]+[\u200D\u200C]*[\u0600-\u074F]+\u200D?"
+ 0 font-shape-gstring]))
(provide 'misc-lang)
;;; Code:
\f
-;;;### (autoloads nil "5x5" "play/5x5.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "5x5" "play/5x5.el" (21604 48550 301934 225000))
;;; Generated autoloads from play/5x5.el
(autoload '5x5 "5x5" "\
;;;***
\f
-;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ada-mode" "progmodes/ada-mode.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/ada-mode.el
(autoload 'ada-add-extensions "ada-mode" "\
;;;***
\f
-;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ada-stmt" "progmodes/ada-stmt.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/ada-stmt.el
(autoload 'ada-header "ada-stmt" "\
;;;***
\f
-;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ada-xref" "progmodes/ada-xref.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/ada-xref.el
(autoload 'ada-find-file "ada-xref" "\
;;;***
\f
-;;;### (autoloads nil "add-log" "vc/add-log.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "add-log" "vc/add-log.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from vc/add-log.el
(put 'change-log-default-name 'safe-local-variable 'string-or-null-p)
;;;***
\f
-;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "advice" "emacs-lisp/advice.el" (21604 48550
+;;;;;; 1934 214000))
;;; Generated autoloads from emacs-lisp/advice.el
(defvar ad-redefinition-action 'warn "\
;;;***
\f
-;;;### (autoloads nil "align" "align.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "align" "align.el" (21604 48549 921934 211000))
;;; Generated autoloads from align.el
(autoload 'align "align" "\
;;;***
\f
-;;;### (autoloads nil "allout" "allout.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "allout" "allout.el" (21604 48549 925934 211000))
;;; Generated autoloads from allout.el
(push (purecopy '(allout 2 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21609
-;;;;;; 55608 852266 580000))
+;;;### (autoloads nil "allout-widgets" "allout-widgets.el" (21631
+;;;;;; 35966 795121 865000))
;;; Generated autoloads from allout-widgets.el
(push (purecopy '(allout-widgets 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "ange-ftp" "net/ange-ftp.el" (21640 32530 974334
+;;;;;; 457000))
;;; Generated autoloads from net/ange-ftp.el
(defalias 'ange-ftp-re-read-dir 'ange-ftp-reread-dir)
;;;***
\f
-;;;### (autoloads nil "animate" "play/animate.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "animate" "play/animate.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from play/animate.el
(autoload 'animate-string "animate" "\
;;;***
\f
-;;;### (autoloads nil "ansi-color" "ansi-color.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "ansi-color" "ansi-color.el" (21604 48549 925934
+;;;;;; 211000))
;;; Generated autoloads from ansi-color.el
(push (purecopy '(ansi-color 3 4 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "antlr-mode" "progmodes/antlr-mode.el" (21604
+;;;;;; 48550 313934 225000))
;;; Generated autoloads from progmodes/antlr-mode.el
(push (purecopy '(antlr-mode 2 2 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "appt" "calendar/appt.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "appt" "calendar/appt.el" (21604 48549 945934
+;;;;;; 212000))
;;; Generated autoloads from calendar/appt.el
(autoload 'appt-add "appt" "\
;;;***
\f
-;;;### (autoloads nil "apropos" "apropos.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "apropos" "apropos.el" (21604 48549 925934
+;;;;;; 211000))
;;; Generated autoloads from apropos.el
(autoload 'apropos-read-pattern "apropos" "\
;;;***
\f
-;;;### (autoloads nil "arc-mode" "arc-mode.el" (21621 7062 810116
-;;;;;; 332000))
+;;;### (autoloads nil "arc-mode" "arc-mode.el" (21631 35966 799121
+;;;;;; 866000))
;;; Generated autoloads from arc-mode.el
(autoload 'archive-mode "arc-mode" "\
;;;***
\f
-;;;### (autoloads nil "array" "array.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "array" "array.el" (21604 48549 925934 211000))
;;; Generated autoloads from array.el
(autoload 'array-mode "array" "\
;;;***
\f
-;;;### (autoloads nil "artist" "textmodes/artist.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "artist" "textmodes/artist.el" (21604 48550
+;;;;;; 393934 228000))
;;; Generated autoloads from textmodes/artist.el
(push (purecopy '(artist 1 2 6)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "asm-mode" "progmodes/asm-mode.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/asm-mode.el
(autoload 'asm-mode "asm-mode" "\
;;;***
\f
-;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21625
-;;;;;; 43838 483701 627000))
+;;;### (autoloads nil "auth-source" "gnus/auth-source.el" (21631
+;;;;;; 35966 847121 867000))
;;; Generated autoloads from gnus/auth-source.el
(defvar auth-source-cache-expiry 7200 "\
;;;***
\f
-;;;### (autoloads nil "autoarg" "autoarg.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "autoarg" "autoarg.el" (21604 48549 925934
+;;;;;; 211000))
;;; Generated autoloads from autoarg.el
(defvar autoarg-mode nil "\
;;;***
\f
-;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "autoconf" "progmodes/autoconf.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/autoconf.el
(autoload 'autoconf-mode "autoconf" "\
;;;***
\f
-;;;### (autoloads nil "autoinsert" "autoinsert.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "autoinsert" "autoinsert.el" (21637 50476 651217
+;;;;;; 120000))
;;; Generated autoloads from autoinsert.el
(autoload 'auto-insert "autoinsert" "\
;;;***
\f
-;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21628
-;;;;;; 43483 380149 771000))
+;;;### (autoloads nil "autoload" "emacs-lisp/autoload.el" (21631
+;;;;;; 35966 819121 866000))
;;; Generated autoloads from emacs-lisp/autoload.el
(put 'generated-autoload-file 'safe-local-variable 'stringp)
;;;***
\f
-;;;### (autoloads nil "autorevert" "autorevert.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "autorevert" "autorevert.el" (21604 48549 929934
+;;;;;; 211000))
;;; Generated autoloads from autorevert.el
(autoload 'auto-revert-mode "autorevert" "\
;;;***
\f
-;;;### (autoloads nil "avoid" "avoid.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "avoid" "avoid.el" (21604 48549 929934 211000))
;;; Generated autoloads from avoid.el
(defvar mouse-avoidance-mode nil "\
;;;***
\f
-;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "bat-mode" "progmodes/bat-mode.el" (21604 48550
+;;;;;; 313934 225000))
;;; Generated autoloads from progmodes/bat-mode.el
(add-to-list 'auto-mode-alist '("\\.\\(bat\\|cmd\\)\\'" . bat-mode))
;;;***
\f
-;;;### (autoloads nil "battery" "battery.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "battery" "battery.el" (21604 48549 929934
+;;;;;; 211000))
;;; Generated autoloads from battery.el
(put 'battery-mode-line-string 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "benchmark" "emacs-lisp/benchmark.el" (21604
+;;;;;; 48550 1934 214000))
;;; Generated autoloads from emacs-lisp/benchmark.el
(autoload 'benchmark-run "benchmark" "\
;;;***
\f
-;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "bibtex" "textmodes/bibtex.el" (21604 48550
+;;;;;; 393934 228000))
;;; Generated autoloads from textmodes/bibtex.el
(autoload 'bibtex-initialize "bibtex" "\
;;;***
\f
;;;### (autoloads nil "bibtex-style" "textmodes/bibtex-style.el"
-;;;;;; (21607 54478 800121 42000))
+;;;;;; (21604 48550 393934 228000))
;;; Generated autoloads from textmodes/bibtex-style.el
(autoload 'bibtex-style-mode "bibtex-style" "\
;;;***
\f
-;;;### (autoloads nil "binhex" "mail/binhex.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "binhex" "mail/binhex.el" (21604 48550 181934
+;;;;;; 220000))
;;; Generated autoloads from mail/binhex.el
(defconst binhex-begin-line "^:...............................................................$" "\
;;;***
\f
-;;;### (autoloads nil "blackbox" "play/blackbox.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "blackbox" "play/blackbox.el" (21604 48550
+;;;;;; 301934 225000))
;;; Generated autoloads from play/blackbox.el
(autoload 'blackbox "blackbox" "\
;;;***
\f
-;;;### (autoloads nil "bookmark" "bookmark.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "bookmark" "bookmark.el" (21604 48549 929934
+;;;;;; 211000))
;;; Generated autoloads from bookmark.el
(define-key ctl-x-r-map "b" 'bookmark-jump)
(define-key ctl-x-r-map "m" 'bookmark-set)
;;;***
\f
-;;;### (autoloads nil "browse-url" "net/browse-url.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "browse-url" "net/browse-url.el" (21604 48550
+;;;;;; 213934 222000))
;;; Generated autoloads from net/browse-url.el
(defvar browse-url-browser-function 'browse-url-default-browser "\
;;;***
\f
-;;;### (autoloads nil "bs" "bs.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "bs" "bs.el" (21604 48549 929934 211000))
;;; Generated autoloads from bs.el
(push (purecopy '(bs 1 17)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "bubbles" "play/bubbles.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "bubbles" "play/bubbles.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from play/bubbles.el
(autoload 'bubbles "bubbles" "\
;;;***
\f
;;;### (autoloads nil "bug-reference" "progmodes/bug-reference.el"
-;;;;;; (21607 54478 800121 42000))
+;;;;;; (21604 48550 313934 225000))
;;; Generated autoloads from progmodes/bug-reference.el
(put 'bug-reference-url-format 'safe-local-variable (lambda (s) (or (stringp s) (and (symbolp s) (get s 'bug-reference-url-format)))))
;;;***
\f
-;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "bytecomp" "emacs-lisp/bytecomp.el" (21645
+;;;;;; 25761 789186 828000))
;;; Generated autoloads from emacs-lisp/bytecomp.el
(put 'byte-compile-dynamic 'safe-local-variable 'booleanp)
(put 'byte-compile-disable-print-circle 'safe-local-variable 'booleanp)
;;;***
\f
-;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21617
-;;;;;; 49721 420132 227000))
+;;;### (autoloads nil "cal-china" "calendar/cal-china.el" (21631
+;;;;;; 35966 799121 866000))
;;; Generated autoloads from calendar/cal-china.el
(put 'calendar-chinese-time-zone 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21609 55608
-;;;;;; 852266 580000))
+;;;### (autoloads nil "cal-dst" "calendar/cal-dst.el" (21631 35966
+;;;;;; 799121 866000))
;;; Generated autoloads from calendar/cal-dst.el
(put 'calendar-daylight-savings-starts 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "cal-hebrew" "calendar/cal-hebrew.el" (21604
+;;;;;; 48549 949934 212000))
;;; Generated autoloads from calendar/cal-hebrew.el
(autoload 'calendar-hebrew-list-yahrzeits "cal-hebrew" "\
;;;***
\f
-;;;### (autoloads nil "calc" "calc/calc.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "calc" "calc/calc.el" (21604 48549 945934 212000))
;;; Generated autoloads from calc/calc.el
(define-key ctl-x-map "*" 'calc-dispatch)
;;;***
\f
-;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "calc-undo" "calc/calc-undo.el" (21604 48549
+;;;;;; 941934 211000))
;;; Generated autoloads from calc/calc-undo.el
(autoload 'calc-undo "calc-undo" "\
;;;***
\f
-;;;### (autoloads nil "calculator" "calculator.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "calculator" "calculator.el" (21604 48549 945934
+;;;;;; 212000))
;;; Generated autoloads from calculator.el
(autoload 'calculator "calculator" "\
;;;***
\f
-;;;### (autoloads nil "calendar" "calendar/calendar.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "calendar" "calendar/calendar.el" (21604 48549
+;;;;;; 953934 212000))
;;; Generated autoloads from calendar/calendar.el
(autoload 'calendar "calendar" "\
;;;***
\f
-;;;### (autoloads nil "canlock" "gnus/canlock.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "canlock" "gnus/canlock.el" (21604 48550 81934
+;;;;;; 217000))
;;; Generated autoloads from gnus/canlock.el
(autoload 'canlock-insert-header "canlock" "\
;;;***
\f
-;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21623
-;;;;;; 2108 292281 129000))
+;;;### (autoloads nil "cc-engine" "progmodes/cc-engine.el" (21659
+;;;;;; 61733 214949 164000))
;;; Generated autoloads from progmodes/cc-engine.el
(autoload 'c-guess-basic-syntax "cc-engine" "\
;;;***
\f
-;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cc-guess" "progmodes/cc-guess.el" (21631 35966
+;;;;;; 903121 869000))
;;; Generated autoloads from progmodes/cc-guess.el
(defvar c-guess-guessed-offsets-alist nil "\
;;;***
\f
-;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cc-mode" "progmodes/cc-mode.el" (21651 20707
+;;;;;; 184225 752000))
;;; Generated autoloads from progmodes/cc-mode.el
(autoload 'c-initialize-cc-mode "cc-mode" "\
;;;***
\f
-;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "cc-styles" "progmodes/cc-styles.el" (21631
+;;;;;; 35966 907121 870000))
;;; Generated autoloads from progmodes/cc-styles.el
(autoload 'c-set-style "cc-styles" "\
;;;***
\f
-;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cc-vars" "progmodes/cc-vars.el" (21631 35966
+;;;;;; 907121 870000))
;;; Generated autoloads from progmodes/cc-vars.el
(put 'c-basic-offset 'safe-local-variable 'integerp)
(put 'c-backslash-column 'safe-local-variable 'integerp)
;;;***
\f
-;;;### (autoloads nil "ccl" "international/ccl.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "ccl" "international/ccl.el" (21604 48550 133934
+;;;;;; 219000))
;;; Generated autoloads from international/ccl.el
(autoload 'ccl-compile "ccl" "\
;;;***
\f
-;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "cconv" "emacs-lisp/cconv.el" (21645 25761
+;;;;;; 789186 828000))
;;; Generated autoloads from emacs-lisp/cconv.el
(autoload 'cconv-closure-convert "cconv" "\
;;;***
\f
-;;;### (autoloads nil "cedet" "cedet/cedet.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "cedet" "cedet/cedet.el" (21604 48549 957934
+;;;;;; 212000))
;;; Generated autoloads from cedet/cedet.el
(push (purecopy '(cedet 2 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cfengine" "progmodes/cfengine.el" (21604 48550
+;;;;;; 321934 226000))
;;; Generated autoloads from progmodes/cfengine.el
(push (purecopy '(cfengine 1 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "chart" "emacs-lisp/chart.el" (21604 48550
+;;;;;; 5934 214000))
;;; Generated autoloads from emacs-lisp/chart.el
(push (purecopy '(chart 0 2)) package--builtin-versions)
;;;***
\f
;;;### (autoloads nil "check-declare" "emacs-lisp/check-declare.el"
-;;;;;; (21607 54477 800124 118000))
+;;;;;; (21604 48550 5934 214000))
;;; Generated autoloads from emacs-lisp/check-declare.el
(autoload 'check-declare-file "check-declare" "\
;;;***
\f
-;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "checkdoc" "emacs-lisp/checkdoc.el" (21604
+;;;;;; 48550 9934 214000))
;;; Generated autoloads from emacs-lisp/checkdoc.el
(push (purecopy '(checkdoc 0 6 2)) package--builtin-versions)
(put 'checkdoc-force-docstrings-flag 'safe-local-variable #'booleanp)
;;;***
\f
-;;;### (autoloads nil "china-util" "language/china-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "china-util" "language/china-util.el" (21604
+;;;;;; 48550 145934 219000))
;;; Generated autoloads from language/china-util.el
(autoload 'decode-hz-region "china-util" "\
;;;***
\f
-;;;### (autoloads nil "chistory" "chistory.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "chistory" "chistory.el" (21604 48549 985934
+;;;;;; 213000))
;;; Generated autoloads from chistory.el
(autoload 'repeat-matching-complex-command "chistory" "\
;;;***
\f
-;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "cl-indent" "emacs-lisp/cl-indent.el" (21604
+;;;;;; 48550 9934 214000))
;;; Generated autoloads from emacs-lisp/cl-indent.el
(autoload 'common-lisp-indent-function "cl-indent" "\
;;;***
\f
-;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21619 26501
-;;;;;; 970129 581000))
+;;;### (autoloads nil "cl-lib" "emacs-lisp/cl-lib.el" (21631 35966
+;;;;;; 823121 866000))
;;; Generated autoloads from emacs-lisp/cl-lib.el
(push (purecopy '(cl-lib 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cmacexp" "progmodes/cmacexp.el" (21604 48550
+;;;;;; 325934 226000))
;;; Generated autoloads from progmodes/cmacexp.el
(autoload 'c-macro-expand "cmacexp" "\
;;;***
\f
-;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "cmuscheme" "cmuscheme.el" (21604 48549 985934
+;;;;;; 213000))
;;; Generated autoloads from cmuscheme.el
(autoload 'run-scheme "cmuscheme" "\
;;;***
\f
-;;;### (autoloads nil "color" "color.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "color" "color.el" (21604 48549 985934 213000))
;;; Generated autoloads from color.el
(autoload 'color-name-to-rgb "color" "\
;;;***
\f
-;;;### (autoloads nil "comint" "comint.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "comint" "comint.el" (21637 50476 651217 120000))
;;; Generated autoloads from comint.el
(defvar comint-output-filter-functions '(ansi-color-process-output comint-postoutput-scroll-to-bottom comint-watch-for-password-prompt) "\
;;;***
\f
-;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "compare-w" "vc/compare-w.el" (21637 50476
+;;;;;; 683217 122000))
;;; Generated autoloads from vc/compare-w.el
(autoload 'compare-windows "compare-w" "\
-Compare text in current window with text in next window.
+Compare text in current window with text in another window.
+The option `compare-windows-get-window-function' defines how
+to get another window.
+
Compares the text starting at point in each window,
moving over text in each one as far as they match.
;;;***
\f
-;;;### (autoloads nil "compile" "progmodes/compile.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "compile" "progmodes/compile.el" (21604 48550
+;;;;;; 325934 226000))
;;; Generated autoloads from progmodes/compile.el
(defvar compilation-mode-hook nil "\
;;;***
\f
-;;;### (autoloads nil "completion" "completion.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "completion" "completion.el" (21659 61733 206949
+;;;;;; 164000))
;;; Generated autoloads from completion.el
(defvar dynamic-completion-mode nil "\
;;;***
\f
-;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "conf-mode" "textmodes/conf-mode.el" (21604
+;;;;;; 48550 393934 228000))
;;; Generated autoloads from textmodes/conf-mode.el
(autoload 'conf-mode "conf-mode" "\
;;;***
\f
-;;;### (autoloads nil "cookie1" "play/cookie1.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "cookie1" "play/cookie1.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from play/cookie1.el
(autoload 'cookie "cookie1" "\
;;;***
\f
-;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "copyright" "emacs-lisp/copyright.el" (21604
+;;;;;; 48550 9934 214000))
;;; Generated autoloads from emacs-lisp/copyright.el
(put 'copyright-at-end-flag 'safe-local-variable 'booleanp)
(put 'copyright-names-regexp 'safe-local-variable 'stringp)
;;;***
\f
-;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "cperl-mode" "progmodes/cperl-mode.el" (21604
+;;;;;; 48550 325934 226000))
;;; Generated autoloads from progmodes/cperl-mode.el
(put 'cperl-indent-level 'safe-local-variable 'integerp)
(put 'cperl-brace-offset 'safe-local-variable 'integerp)
;;;***
\f
-;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "cpp" "progmodes/cpp.el" (21604 48550 329934
+;;;;;; 226000))
;;; Generated autoloads from progmodes/cpp.el
(autoload 'cpp-highlight-buffer "cpp" "\
;;;***
\f
-;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "crm" "emacs-lisp/crm.el" (21604 48550 9934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/crm.el
(autoload 'completing-read-multiple "crm" "\
;;;***
\f
-;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "css-mode" "textmodes/css-mode.el" (21604 48550
+;;;;;; 393934 228000))
;;; Generated autoloads from textmodes/css-mode.el
(autoload 'css-mode "css-mode" "\
;;;***
\f
-;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "cua-base" "emulation/cua-base.el" (21604 48550
+;;;;;; 25934 215000))
;;; Generated autoloads from emulation/cua-base.el
(defvar cua-mode nil "\
;;;***
\f
-;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "cua-rect" "emulation/cua-rect.el" (21604 48550
+;;;;;; 29934 215000))
;;; Generated autoloads from emulation/cua-rect.el
(autoload 'cua-rectangle-mark-mode "cua-rect" "\
;;;***
\f
-;;;### (autoloads nil "cus-edit" "cus-edit.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "cus-edit" "cus-edit.el" (21645 38383 209524
+;;;;;; 819000))
;;; Generated autoloads from cus-edit.el
(defvar custom-browse-sort-alphabetically nil "\
\(fn REGEXP)" t nil)
+(autoload 'custom-prompt-customize-unsaved-options "cus-edit" "\
+Prompt user to customize any unsaved customization options.
+Return non-nil if user chooses to customize, for use in
+`kill-emacs-query-functions'.
+
+\(fn)" nil nil)
+
(autoload 'custom-buffer-create "cus-edit" "\
Create a buffer containing OPTIONS.
Optional NAME is the name of the buffer.
;;;***
\f
-;;;### (autoloads nil "cus-theme" "cus-theme.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "cus-theme" "cus-theme.el" (21604 48549 993934
+;;;;;; 213000))
;;; Generated autoloads from cus-theme.el
(autoload 'customize-create-theme "cus-theme" "\
;;;***
\f
-;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "cvs-status" "vc/cvs-status.el" (21604 48550
+;;;;;; 421934 229000))
;;; Generated autoloads from vc/cvs-status.el
(autoload 'cvs-status-mode "cvs-status" "\
;;;***
\f
-;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "cwarn" "progmodes/cwarn.el" (21604 48550 329934
+;;;;;; 226000))
;;; Generated autoloads from progmodes/cwarn.el
(push (purecopy '(cwarn 1 3 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "cyril-util" "language/cyril-util.el" (21604
+;;;;;; 48550 145934 219000))
;;; Generated autoloads from language/cyril-util.el
(autoload 'cyrillic-encode-koi8-r-char "cyril-util" "\
;;;***
\f
-;;;### (autoloads nil "dabbrev" "dabbrev.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "dabbrev" "dabbrev.el" (21604 48549 993934
+;;;;;; 213000))
;;; Generated autoloads from dabbrev.el
(put 'dabbrev-case-fold-search 'risky-local-variable t)
(put 'dabbrev-case-replace 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "data-debug" "cedet/data-debug.el" (21604 48549
+;;;;;; 961934 212000))
;;; Generated autoloads from cedet/data-debug.el
(autoload 'data-debug-new-buffer "data-debug" "\
;;;***
\f
-;;;### (autoloads nil "dbus" "net/dbus.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "dbus" "net/dbus.el" (21604 48550 213934 222000))
;;; Generated autoloads from net/dbus.el
(autoload 'dbus-handle-event "dbus" "\
;;;***
\f
-;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "dcl-mode" "progmodes/dcl-mode.el" (21604 48550
+;;;;;; 329934 226000))
;;; Generated autoloads from progmodes/dcl-mode.el
(autoload 'dcl-mode "dcl-mode" "\
;;;***
\f
-;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "debug" "emacs-lisp/debug.el" (21604 48550
+;;;;;; 9934 214000))
;;; Generated autoloads from emacs-lisp/debug.el
(setq debugger 'debug)
;;;***
\f
-;;;### (autoloads nil "decipher" "play/decipher.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "decipher" "play/decipher.el" (21604 48550
+;;;;;; 301934 225000))
;;; Generated autoloads from play/decipher.el
(autoload 'decipher "decipher" "\
;;;***
\f
-;;;### (autoloads nil "delim-col" "delim-col.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "delim-col" "delim-col.el" (21604 48549 993934
+;;;;;; 213000))
;;; Generated autoloads from delim-col.el
(push (purecopy '(delim-col 2 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "delsel" "delsel.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "delsel" "delsel.el" (21604 48549 993934 213000))
;;; Generated autoloads from delsel.el
(defalias 'pending-delete-mode 'delete-selection-mode)
;;;***
\f
-;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "derived" "emacs-lisp/derived.el" (21604 48550
+;;;;;; 9934 214000))
;;; Generated autoloads from emacs-lisp/derived.el
(autoload 'define-derived-mode "derived" "\
;;;***
\f
-;;;### (autoloads nil "descr-text" "descr-text.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "descr-text" "descr-text.el" (21604 48549 993934
+;;;;;; 213000))
;;; Generated autoloads from descr-text.el
(autoload 'describe-text-properties "descr-text" "\
;;;***
\f
-;;;### (autoloads nil "desktop" "desktop.el" (21616 28857 81577 239000))
+;;;### (autoloads nil "desktop" "desktop.el" (21631 35966 815121
+;;;;;; 866000))
;;; Generated autoloads from desktop.el
(defvar desktop-save-mode nil "\
;;;***
\f
-;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "deuglify" "gnus/deuglify.el" (21604 48550
+;;;;;; 81934 217000))
;;; Generated autoloads from gnus/deuglify.el
(autoload 'gnus-article-outlook-unwrap-lines "deuglify" "\
;;;***
\f
-;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21625
-;;;;;; 43838 483701 627000))
+;;;### (autoloads nil "diary-lib" "calendar/diary-lib.el" (21631
+;;;;;; 35966 803121 866000))
;;; Generated autoloads from calendar/diary-lib.el
(autoload 'diary "diary-lib" "\
;;;***
\f
-;;;### (autoloads nil "diff" "vc/diff.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "diff" "vc/diff.el" (21604 48550 421934 229000))
;;; Generated autoloads from vc/diff.el
(defvar diff-switches (purecopy "-c") "\
;;;***
\f
-;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21628 45530
-;;;;;; 160140 360000))
+;;;### (autoloads nil "diff-mode" "vc/diff-mode.el" (21631 35966
+;;;;;; 923121 870000))
;;; Generated autoloads from vc/diff-mode.el
(autoload 'diff-mode "diff-mode" "\
;;;***
\f
-;;;### (autoloads nil "dig" "net/dig.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "dig" "net/dig.el" (21604 48550 213934 222000))
;;; Generated autoloads from net/dig.el
(autoload 'dig "dig" "\
;;;***
\f
-;;;### (autoloads nil "dired" "dired.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "dired" "dired.el" (21651 20707 164225 751000))
;;; Generated autoloads from dired.el
(defvar dired-listing-switches (purecopy "-al") "\
;;;***
\f
-;;;### (autoloads nil "dirtrack" "dirtrack.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "dirtrack" "dirtrack.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from dirtrack.el
(autoload 'dirtrack-mode "dirtrack" "\
;;;***
\f
-;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "disass" "emacs-lisp/disass.el" (21604 48550
+;;;;;; 13934 214000))
;;; Generated autoloads from emacs-lisp/disass.el
(autoload 'disassemble "disass" "\
;;;***
\f
-;;;### (autoloads nil "disp-table" "disp-table.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "disp-table" "disp-table.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from disp-table.el
(autoload 'make-display-table "disp-table" "\
;;;***
\f
-;;;### (autoloads nil "dissociate" "play/dissociate.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "dissociate" "play/dissociate.el" (21604 48550
+;;;;;; 301934 225000))
;;; Generated autoloads from play/dissociate.el
(autoload 'dissociated-press "dissociate" "\
;;;***
\f
-;;;### (autoloads nil "dnd" "dnd.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "dnd" "dnd.el" (21604 48549 997934 214000))
;;; Generated autoloads from dnd.el
(defvar dnd-protocol-alist `((,(purecopy "^file:///") . dnd-open-local-file) (,(purecopy "^file://") . dnd-open-file) (,(purecopy "^file:") . dnd-open-local-file) (,(purecopy "^\\(https?\\|ftp\\|file\\|nfs\\)://") . dnd-open-file)) "\
;;;***
\f
-;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "dns-mode" "textmodes/dns-mode.el" (21604 48550
+;;;;;; 393934 228000))
;;; Generated autoloads from textmodes/dns-mode.el
(autoload 'dns-mode "dns-mode" "\
;;;***
\f
-;;;### (autoloads nil "doc-view" "doc-view.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "doc-view" "doc-view.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from doc-view.el
(autoload 'doc-view-mode-p "doc-view" "\
;;;***
\f
-;;;### (autoloads nil "doctor" "play/doctor.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "doctor" "play/doctor.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from play/doctor.el
(autoload 'doctor "doctor" "\
;;;***
\f
-;;;### (autoloads nil "double" "double.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "double" "double.el" (21604 48549 997934 214000))
;;; Generated autoloads from double.el
(autoload 'double-mode "double" "\
;;;***
\f
-;;;### (autoloads nil "dunnet" "play/dunnet.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "dunnet" "play/dunnet.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/dunnet.el
(push (purecopy '(dunnet 2 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "easy-mmode" "emacs-lisp/easy-mmode.el" (21604
+;;;;;; 48550 13934 214000))
;;; Generated autoloads from emacs-lisp/easy-mmode.el
(defalias 'easy-mmode-define-minor-mode 'define-minor-mode)
;;;***
\f
-;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "easymenu" "emacs-lisp/easymenu.el" (21604
+;;;;;; 48550 13934 214000))
;;; Generated autoloads from emacs-lisp/easymenu.el
(autoload 'easy-menu-define "easymenu" "\
;;;***
\f
-;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ebnf2ps" "progmodes/ebnf2ps.el" (21604 48550
+;;;;;; 329934 226000))
;;; Generated autoloads from progmodes/ebnf2ps.el
(push (purecopy '(ebnf2ps 4 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ebrowse" "progmodes/ebrowse.el" (21604 48550
+;;;;;; 333934 226000))
;;; Generated autoloads from progmodes/ebrowse.el
(autoload 'ebrowse-tree-mode "ebrowse" "\
;;;***
\f
-;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "ebuff-menu" "ebuff-menu.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from ebuff-menu.el
(autoload 'electric-buffer-list "ebuff-menu" "\
;;;***
\f
-;;;### (autoloads nil "echistory" "echistory.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "echistory" "echistory.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from echistory.el
(autoload 'Electric-command-history-redo-expression "echistory" "\
;;;***
\f
-;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "ecomplete" "gnus/ecomplete.el" (21604 48550
+;;;;;; 81934 217000))
;;; Generated autoloads from gnus/ecomplete.el
(autoload 'ecomplete-setup "ecomplete" "\
;;;***
\f
-;;;### (autoloads nil "ede" "cedet/ede.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "ede" "cedet/ede.el" (21604 48549 961934 212000))
;;; Generated autoloads from cedet/ede.el
(push (purecopy '(ede 1 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "edebug" "emacs-lisp/edebug.el" (21604 48550
+;;;;;; 13934 214000))
;;; Generated autoloads from emacs-lisp/edebug.el
(defvar edebug-all-defs nil "\
;;;***
\f
-;;;### (autoloads nil "ediff" "vc/ediff.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ediff" "vc/ediff.el" (21604 48550 429934 230000))
;;; Generated autoloads from vc/ediff.el
(push (purecopy '(ediff 2 81 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ediff-help" "vc/ediff-help.el" (21604 48550
+;;;;;; 425934 230000))
;;; Generated autoloads from vc/ediff-help.el
(autoload 'ediff-customize "ediff-help" "\
;;;***
\f
-;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ediff-mult" "vc/ediff-mult.el" (21604 48550
+;;;;;; 425934 230000))
;;; Generated autoloads from vc/ediff-mult.el
(autoload 'ediff-show-registry "ediff-mult" "\
;;;***
\f
-;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ediff-util" "vc/ediff-util.el" (21604 48550
+;;;;;; 425934 230000))
;;; Generated autoloads from vc/ediff-util.el
(autoload 'ediff-toggle-multiframe "ediff-util" "\
;;;***
\f
-;;;### (autoloads nil "edmacro" "edmacro.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "edmacro" "edmacro.el" (21604 48549 997934
+;;;;;; 214000))
;;; Generated autoloads from edmacro.el
(push (purecopy '(edmacro 2 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "edt" "emulation/edt.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "edt" "emulation/edt.el" (21604 48550 29934
+;;;;;; 215000))
;;; Generated autoloads from emulation/edt.el
(autoload 'edt-set-scroll-margins "edt" "\
;;;***
\f
-;;;### (autoloads nil "ehelp" "ehelp.el" (21607 54477 800124 118000))
+;;;### (autoloads nil "ehelp" "ehelp.el" (21604 48549 997934 214000))
;;; Generated autoloads from ehelp.el
(autoload 'with-electric-help "ehelp" "\
;;;***
\f
-;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "eieio" "emacs-lisp/eieio.el" (21604 48550
+;;;;;; 17934 214000))
;;; Generated autoloads from emacs-lisp/eieio.el
(push (purecopy '(eieio 1 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "eieio-core" "emacs-lisp/eieio-core.el" (21637
+;;;;;; 50476 655217 121000))
;;; Generated autoloads from emacs-lisp/eieio-core.el
(push (purecopy '(eieio-core 1 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "elec-pair" "elec-pair.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "elec-pair" "elec-pair.el" (21604 48550 1934
+;;;;;; 214000))
;;; Generated autoloads from elec-pair.el
(defvar electric-pair-text-pairs '((34 . 34)) "\
;;;***
\f
-;;;### (autoloads nil "elide-head" "elide-head.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "elide-head" "elide-head.el" (21604 48550 1934
+;;;;;; 214000))
;;; Generated autoloads from elide-head.el
(autoload 'elide-head "elide-head" "\
;;;***
\f
-;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "elint" "emacs-lisp/elint.el" (21604 48550
+;;;;;; 17934 214000))
;;; Generated autoloads from emacs-lisp/elint.el
(autoload 'elint-file "elint" "\
;;;***
\f
-;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "elp" "emacs-lisp/elp.el" (21604 48550 17934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/elp.el
(autoload 'elp-instrument-function "elp" "\
;;;***
\f
-;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "emacs-lock" "emacs-lock.el" (21604 48550 25934
+;;;;;; 215000))
;;; Generated autoloads from emacs-lock.el
(autoload 'emacs-lock-mode "emacs-lock" "\
;;;***
\f
-;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21608 34742
-;;;;;; 2253 811000))
+;;;### (autoloads nil "emacsbug" "mail/emacsbug.el" (21631 35966
+;;;;;; 875121 868000))
;;; Generated autoloads from mail/emacsbug.el
(autoload 'report-emacs-bug "emacsbug" "\
;;;***
\f
-;;;### (autoloads nil "emerge" "vc/emerge.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "emerge" "vc/emerge.el" (21604 48550 429934
+;;;;;; 230000))
;;; Generated autoloads from vc/emerge.el
(autoload 'emerge-files "emerge" "\
;;;***
\f
-;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "enriched" "textmodes/enriched.el" (21604 48550
+;;;;;; 393934 228000))
;;; Generated autoloads from textmodes/enriched.el
(autoload 'enriched-mode "enriched" "\
;;;***
\f
-;;;### (autoloads nil "epa" "epa.el" (21624 22971 140149 848000))
+;;;### (autoloads nil "epa" "epa.el" (21631 35966 827121 867000))
;;; Generated autoloads from epa.el
(autoload 'epa-list-keys "epa" "\
;;;***
\f
-;;;### (autoloads nil "epa-dired" "epa-dired.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "epa-dired" "epa-dired.el" (21604 48550 33934
+;;;;;; 215000))
;;; Generated autoloads from epa-dired.el
(autoload 'epa-dired-do-decrypt "epa-dired" "\
;;;***
\f
-;;;### (autoloads nil "epa-file" "epa-file.el" (21611 10937 700236
-;;;;;; 3000))
+;;;### (autoloads nil "epa-file" "epa-file.el" (21631 35966 827121
+;;;;;; 867000))
;;; Generated autoloads from epa-file.el
(autoload 'epa-file-handler "epa-file" "\
;;;***
\f
-;;;### (autoloads nil "epa-mail" "epa-mail.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "epa-mail" "epa-mail.el" (21604 48550 33934
+;;;;;; 215000))
;;; Generated autoloads from epa-mail.el
(autoload 'epa-mail-mode "epa-mail" "\
;;;***
\f
-;;;### (autoloads nil "epg" "epg.el" (21611 10937 700236 3000))
+;;;### (autoloads nil "epg" "epg.el" (21631 35966 827121 867000))
;;; Generated autoloads from epg.el
(push (purecopy '(epg 1 0 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "epg-config" "epg-config.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "epg-config" "epg-config.el" (21604 48550 33934
+;;;;;; 215000))
;;; Generated autoloads from epg-config.el
(autoload 'epg-configuration "epg-config" "\
;;;***
\f
-;;;### (autoloads nil "erc" "erc/erc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "erc" "erc/erc.el" (21604 48550 49934 215000))
;;; Generated autoloads from erc/erc.el
(autoload 'erc-select-read-args "erc" "\
`erc-compute-port', `erc-compute-nick' and `erc-compute-full-name' will
be invoked for the values of the other parameters.
-\(fn &key (server (erc-compute-server)) (port (erc-compute-port)) (nick (erc-compute-nick)) PASSWORD (full-name (erc-compute-full-name)))" t nil)
+\(fn &key (SERVER (erc-compute-server)) (PORT (erc-compute-port)) (NICK (erc-compute-nick)) PASSWORD (FULL-NAME (erc-compute-full-name)))" t nil)
(defalias 'erc-select 'erc)
;;;***
\f
-;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-autoaway" "erc/erc-autoaway.el" (21604
+;;;;;; 48550 37934 215000))
;;; Generated autoloads from erc/erc-autoaway.el
(autoload 'erc-autoaway-mode "erc-autoaway")
;;;***
\f
-;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-button" "erc/erc-button.el" (21604 48550
+;;;;;; 37934 215000))
;;; Generated autoloads from erc/erc-button.el
(autoload 'erc-button-mode "erc-button" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-capab" "erc/erc-capab.el" (21604 48550
+;;;;;; 41934 215000))
;;; Generated autoloads from erc/erc-capab.el
(autoload 'erc-capab-identify-mode "erc-capab" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-compat" "erc/erc-compat.el" (21604 48550
+;;;;;; 41934 215000))
;;; Generated autoloads from erc/erc-compat.el
(autoload 'erc-define-minor-mode "erc-compat")
;;;***
\f
-;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-dcc" "erc/erc-dcc.el" (21604 48550 41934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-dcc.el
(autoload 'erc-dcc-mode "erc-dcc")
;;;***
\f
;;;### (autoloads nil "erc-desktop-notifications" "erc/erc-desktop-notifications.el"
-;;;;;; (21617 49721 420132 227000))
+;;;;;; (21631 35966 831121 867000))
;;; Generated autoloads from erc/erc-desktop-notifications.el
(autoload 'erc-notifications-mode "erc-desktop-notifications" "" t)
;;;***
\f
-;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-ezbounce" "erc/erc-ezbounce.el" (21604
+;;;;;; 48550 41934 215000))
;;; Generated autoloads from erc/erc-ezbounce.el
(autoload 'erc-cmd-ezb "erc-ezbounce" "\
;;;***
\f
-;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-fill" "erc/erc-fill.el" (21604 48550 41934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-fill.el
(autoload 'erc-fill-mode "erc-fill" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-identd" "erc/erc-identd.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-identd.el
(autoload 'erc-identd-mode "erc-identd")
;;;***
\f
-;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-imenu" "erc/erc-imenu.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-imenu.el
(autoload 'erc-create-imenu-index "erc-imenu" "\
;;;***
\f
-;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-join" "erc/erc-join.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-join.el
(autoload 'erc-autojoin-mode "erc-join" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-list" "erc/erc-list.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-list.el
(autoload 'erc-list-mode "erc-list")
;;;***
\f
-;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-log" "erc/erc-log.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-log.el
(autoload 'erc-log-mode "erc-log" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-match" "erc/erc-match.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-match.el
(autoload 'erc-match-mode "erc-match")
;;;***
\f
-;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-menu" "erc/erc-menu.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-menu.el
(autoload 'erc-menu-mode "erc-menu" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-netsplit" "erc/erc-netsplit.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-netsplit.el
(autoload 'erc-netsplit-mode "erc-netsplit")
;;;***
\f
-;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-networks" "erc/erc-networks.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-networks.el
(autoload 'erc-determine-network "erc-networks" "\
;;;***
\f
-;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-notify" "erc/erc-notify.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-notify.el
(autoload 'erc-notify-mode "erc-notify" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-page" "erc/erc-page.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-page.el
(autoload 'erc-page-mode "erc-page")
;;;***
\f
-;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-pcomplete" "erc/erc-pcomplete.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-pcomplete.el
(autoload 'erc-completion-mode "erc-pcomplete" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-replace" "erc/erc-replace.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-replace.el
(autoload 'erc-replace-mode "erc-replace")
;;;***
\f
-;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-ring" "erc/erc-ring.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-ring.el
(autoload 'erc-ring-mode "erc-ring" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-services" "erc/erc-services.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-services.el
(autoload 'erc-services-mode "erc-services" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-sound" "erc/erc-sound.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-sound.el
(autoload 'erc-sound-mode "erc-sound")
;;;***
\f
-;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-speedbar" "erc/erc-speedbar.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-speedbar.el
(autoload 'erc-speedbar-browser "erc-speedbar" "\
;;;***
\f
-;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-spelling" "erc/erc-spelling.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-spelling.el
(autoload 'erc-spelling-mode "erc-spelling" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-stamp" "erc/erc-stamp.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-stamp.el
(autoload 'erc-timestamp-mode "erc-stamp" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "erc-track" "erc/erc-track.el" (21604 48550
+;;;;;; 45934 215000))
;;; Generated autoloads from erc/erc-track.el
(defvar erc-track-minor-mode nil "\
;;;***
\f
-;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "erc-truncate" "erc/erc-truncate.el" (21604
+;;;;;; 48550 45934 215000))
;;; Generated autoloads from erc/erc-truncate.el
(autoload 'erc-truncate-mode "erc-truncate" nil t)
;;;***
\f
-;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "erc-xdcc" "erc/erc-xdcc.el" (21604 48550 45934
+;;;;;; 215000))
;;; Generated autoloads from erc/erc-xdcc.el
(autoload 'erc-xdcc-mode "erc-xdcc")
;;;***
\f
-;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "ert" "emacs-lisp/ert.el" (21604 48550 17934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/ert.el
(autoload 'ert-deftest "ert" "\
using :expected-result. See `ert-test-result-type-p' for a
description of valid values for RESULT-TYPE.
-\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] BODY...)" nil (quote macro))
+\(fn NAME () [DOCSTRING] [:expected-result RESULT-TYPE] [:tags '(TAG...)] BODY...)" nil t)
+
+(function-put 'ert-deftest 'doc-string-elt '3)
+
+(function-put 'ert-deftest 'lisp-indent-function '2)
(put 'ert-deftest 'lisp-indent-function 2)
;;;***
\f
-;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "ert-x" "emacs-lisp/ert-x.el" (21604 48550
+;;;;;; 17934 214000))
;;; Generated autoloads from emacs-lisp/ert-x.el
(put 'ert-with-test-buffer 'lisp-indent-function 1)
;;;***
\f
-;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "esh-mode" "eshell/esh-mode.el" (21604 48550
+;;;;;; 53934 216000))
;;; Generated autoloads from eshell/esh-mode.el
(autoload 'eshell-mode "esh-mode" "\
;;;***
\f
-;;;### (autoloads nil "eshell" "eshell/eshell.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "eshell" "eshell/eshell.el" (21604 48550 53934
+;;;;;; 216000))
;;; Generated autoloads from eshell/eshell.el
(push (purecopy '(eshell 2 4 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "etags" "progmodes/etags.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "etags" "progmodes/etags.el" (21660 25453 16850
+;;;;;; 17000))
;;; Generated autoloads from progmodes/etags.el
(defvar tags-file-name nil "\
as they appeared in the `etags' command that created the table, usually
without directory names.
+\(fn)" nil nil)
+
+(autoload 'tags-lazy-completion-table "etags" "\
+
+
\(fn)" nil nil)
(defun tags-completion-at-point-function ()
(if (or tags-table-list tags-file-name)
See documentation of variable `tags-file-name'.
\(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
- (define-key esc-map "." 'find-tag)
(autoload 'find-tag-other-window "etags" "\
Find tag (in current tags table) whose name contains TAGNAME.
See documentation of variable `tags-file-name'.
\(fn TAGNAME &optional NEXT-P REGEXP-P)" t nil)
- (define-key ctl-x-4-map "." 'find-tag-other-window)
(autoload 'find-tag-other-frame "etags" "\
Find tag (in current tags table) whose name contains TAGNAME.
See documentation of variable `tags-file-name'.
\(fn TAGNAME &optional NEXT-P)" t nil)
- (define-key ctl-x-5-map "." 'find-tag-other-frame)
(autoload 'find-tag-regexp "etags" "\
Find tag (in current tags table) whose name matches REGEXP.
See documentation of variable `tags-file-name'.
\(fn REGEXP &optional NEXT-P OTHER-WINDOW)" t nil)
- (define-key esc-map [?\C-.] 'find-tag-regexp)
- (define-key esc-map "*" 'pop-tag-mark)
-(autoload 'pop-tag-mark "etags" "\
-Pop back to where \\[find-tag] was last invoked.
-
-This is distinct from invoking \\[find-tag] with a negative argument
-since that pops a stack of markers at which tags were found, not from
-where they were found.
-
-\(fn)" t nil)
+(defalias 'pop-tag-mark 'xref-pop-marker-stack)
(autoload 'next-file "etags" "\
Select next file among files in current tags table.
nil, we exit; otherwise we scan the next file.
\(fn &optional FIRST-TIME)" t nil)
- (define-key esc-map "," 'tags-loop-continue)
(autoload 'tags-search "etags" "\
Search through all files listed in tags table for match for REGEXP.
\(fn)" t nil)
+(autoload 'etags-xref-find "etags" "\
+
+
+\(fn ACTION ID)" nil nil)
+
;;;***
\f
-;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "ethio-util" "language/ethio-util.el" (21604
+;;;;;; 48550 145934 219000))
;;; Generated autoloads from language/ethio-util.el
(autoload 'setup-ethiopic-environment-internal "ethio-util" "\
;;;***
\f
-;;;### (autoloads nil "eudc" "net/eudc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "eudc" "net/eudc.el" (21604 48550 213934 222000))
;;; Generated autoloads from net/eudc.el
(autoload 'eudc-set-server "eudc" "\
;;;***
\f
-;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "eudc-bob" "net/eudc-bob.el" (21604 48550 213934
+;;;;;; 222000))
;;; Generated autoloads from net/eudc-bob.el
(autoload 'eudc-display-generic-binary "eudc-bob" "\
;;;***
\f
-;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "eudc-export" "net/eudc-export.el" (21604 48550
+;;;;;; 213934 222000))
;;; Generated autoloads from net/eudc-export.el
(autoload 'eudc-insert-record-at-point-into-bbdb "eudc-export" "\
;;;***
\f
-;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "eudc-hotlist" "net/eudc-hotlist.el" (21604
+;;;;;; 48550 213934 222000))
;;; Generated autoloads from net/eudc-hotlist.el
(autoload 'eudc-edit-hotlist "eudc-hotlist" "\
;;;***
\f
-;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "ewoc" "emacs-lisp/ewoc.el" (21604 48550 17934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/ewoc.el
(autoload 'ewoc-create "ewoc" "\
;;;***
\f
-;;;### (autoloads nil "eww" "net/eww.el" (21628 44513 720130 219000))
+;;;### (autoloads nil "eww" "net/eww.el" (21640 32530 974334 457000))
;;; Generated autoloads from net/eww.el
(autoload 'eww "eww" "\
;;;***
\f
-;;;### (autoloads nil "executable" "progmodes/executable.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "executable" "progmodes/executable.el" (21604
+;;;;;; 48550 333934 226000))
;;; Generated autoloads from progmodes/executable.el
(autoload 'executable-command-find-posix-p "executable" "\
;;;***
\f
-;;;### (autoloads nil "expand" "expand.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "expand" "expand.el" (21604 48550 53934 216000))
;;; Generated autoloads from expand.el
(autoload 'expand-add-abbrevs "expand" "\
;;;***
\f
-;;;### (autoloads nil "f90" "progmodes/f90.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "f90" "progmodes/f90.el" (21604 48550 333934
+;;;;;; 226000))
;;; Generated autoloads from progmodes/f90.el
(autoload 'f90-mode "f90" "\
;;;***
\f
-;;;### (autoloads nil "face-remap" "face-remap.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "face-remap" "face-remap.el" (21604 48550 53934
+;;;;;; 216000))
;;; Generated autoloads from face-remap.el
(autoload 'face-remap-add-relative "face-remap" "\
;;;***
\f
-;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "feedmail" "mail/feedmail.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/feedmail.el
(push (purecopy '(feedmail 11)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ffap" "ffap.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ffap" "ffap.el" (21604 48550 57934 216000))
;;; Generated autoloads from ffap.el
(autoload 'ffap-next "ffap" "\
;;;***
\f
-;;;### (autoloads nil "filecache" "filecache.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "filecache" "filecache.el" (21604 48550 57934
+;;;;;; 216000))
;;; Generated autoloads from filecache.el
(autoload 'file-cache-add-directory "filecache" "\
;;;***
\f
-;;;### (autoloads nil "filenotify" "filenotify.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "filenotify" "filenotify.el" (21604 48550 57934
+;;;;;; 216000))
;;; Generated autoloads from filenotify.el
(autoload 'file-notify-handle-event "filenotify" "\
;;;***
\f
-;;;### (autoloads nil "files-x" "files-x.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "files-x" "files-x.el" (21604 48550 57934 216000))
;;; Generated autoloads from files-x.el
(autoload 'add-file-local-variable "files-x" "\
;;;***
\f
-;;;### (autoloads nil "filesets" "filesets.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "filesets" "filesets.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from filesets.el
(autoload 'filesets-init "filesets" "\
;;;***
\f
-;;;### (autoloads nil "find-cmd" "find-cmd.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "find-cmd" "find-cmd.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from find-cmd.el
(push (purecopy '(find-cmd 0 6)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "find-dired" "find-dired.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "find-dired" "find-dired.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from find-dired.el
(autoload 'find-dired "find-dired" "\
;;;***
\f
-;;;### (autoloads nil "find-file" "find-file.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "find-file" "find-file.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from find-file.el
(defvar ff-special-constructs `((,(purecopy "^#\\s *\\(include\\|import\\)\\s +[<\"]\\(.*\\)[>\"]") lambda nil (buffer-substring (match-beginning 2) (match-end 2)))) "\
;;;***
\f
-;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "find-func" "emacs-lisp/find-func.el" (21640
+;;;;;; 60472 610520 813000))
;;; Generated autoloads from emacs-lisp/find-func.el
(autoload 'find-library "find-func" "\
;;;***
\f
-;;;### (autoloads nil "find-lisp" "find-lisp.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "find-lisp" "find-lisp.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from find-lisp.el
(autoload 'find-lisp-find-dired "find-lisp" "\
;;;***
\f
-;;;### (autoloads nil "finder" "finder.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "finder" "finder.el" (21604 48550 61934 216000))
;;; Generated autoloads from finder.el
(push (purecopy '(finder 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "flow-ctrl" "flow-ctrl.el" (21604 48550 61934
+;;;;;; 216000))
;;; Generated autoloads from flow-ctrl.el
(autoload 'enable-flow-control "flow-ctrl" "\
;;;***
\f
-;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "flow-fill" "gnus/flow-fill.el" (21604 48550
+;;;;;; 81934 217000))
;;; Generated autoloads from gnus/flow-fill.el
(autoload 'fill-flowed-encode "flow-fill" "\
;;;***
\f
-;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "flymake" "progmodes/flymake.el" (21604 48550
+;;;;;; 333934 226000))
;;; Generated autoloads from progmodes/flymake.el
(push (purecopy '(flymake 0 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "flyspell" "textmodes/flyspell.el" (21604 48550
+;;;;;; 397934 228000))
;;; Generated autoloads from textmodes/flyspell.el
(autoload 'flyspell-prog-mode "flyspell" "\
;;;***
\f
-;;;### (autoloads nil "foldout" "foldout.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "foldout" "foldout.el" (21604 48550 61934 216000))
;;; Generated autoloads from foldout.el
(push (purecopy '(foldout 1 10)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "follow" "follow.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "follow" "follow.el" (21604 48550 61934 216000))
;;; Generated autoloads from follow.el
(autoload 'turn-on-follow-mode "follow" "\
;;;***
\f
-;;;### (autoloads nil "footnote" "mail/footnote.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "footnote" "mail/footnote.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/footnote.el
(push (purecopy '(footnote 0 19)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "forms" "forms.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "forms" "forms.el" (21604 48550 65934 216000))
;;; Generated autoloads from forms.el
(autoload 'forms-mode "forms" "\
;;;***
\f
-;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "fortran" "progmodes/fortran.el" (21604 48550
+;;;;;; 337934 226000))
;;; Generated autoloads from progmodes/fortran.el
(autoload 'fortran-mode "fortran" "\
;;;***
\f
-;;;### (autoloads nil "fortune" "play/fortune.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "fortune" "play/fortune.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/fortune.el
(autoload 'fortune-add-fortune "fortune" "\
;;;***
\f
-;;;### (autoloads nil "frameset" "frameset.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "frameset" "frameset.el" (21604 48550 65934
+;;;;;; 216000))
;;; Generated autoloads from frameset.el
(defvar frameset-session-filter-alist '((name . :never) (left . frameset-filter-iconified) (minibuffer . frameset-filter-minibuffer) (top . frameset-filter-iconified)) "\
;;;***
\f
-;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "gamegrid" "play/gamegrid.el" (21604 48550
+;;;;;; 305934 225000))
;;; Generated autoloads from play/gamegrid.el
(push (purecopy '(gamegrid 1 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "gdb-mi" "progmodes/gdb-mi.el" (21604 48550
+;;;;;; 337934 226000))
;;; Generated autoloads from progmodes/gdb-mi.el
(defvar gdb-enable-debug nil "\
;;;***
\f
-;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "generic" "emacs-lisp/generic.el" (21604 48550
+;;;;;; 17934 214000))
;;; Generated autoloads from emacs-lisp/generic.el
(defvar generic-mode-list nil "\
;;;***
\f
-;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "glasses" "progmodes/glasses.el" (21604 48550
+;;;;;; 337934 226000))
;;; Generated autoloads from progmodes/glasses.el
(autoload 'glasses-mode "glasses" "\
;;;***
\f
-;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gmm-utils" "gnus/gmm-utils.el" (21604 48550
+;;;;;; 81934 217000))
;;; Generated autoloads from gnus/gmm-utils.el
(autoload 'gmm-regexp-concat "gmm-utils" "\
;;;***
\f
-;;;### (autoloads nil "gnus" "gnus/gnus.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "gnus" "gnus/gnus.el" (21604 48550 101934 217000))
;;; Generated autoloads from gnus/gnus.el
(push (purecopy '(gnus 5 13)) package--builtin-versions)
(when (fboundp 'custom-autoload)
;;;***
\f
-;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-agent" "gnus/gnus-agent.el" (21604 48550
+;;;;;; 85934 217000))
;;; Generated autoloads from gnus/gnus-agent.el
(autoload 'gnus-unplugged "gnus-agent" "\
;;;***
\f
-;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21623 2108 292281
-;;;;;; 129000))
+;;;### (autoloads nil "gnus-art" "gnus/gnus-art.el" (21651 20707
+;;;;;; 176225 752000))
;;; Generated autoloads from gnus/gnus-art.el
(autoload 'gnus-article-prepare-display "gnus-art" "\
;;;***
\f
-;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "gnus-bookmark" "gnus/gnus-bookmark.el" (21645
+;;;;;; 25761 793186 828000))
;;; Generated autoloads from gnus/gnus-bookmark.el
(autoload 'gnus-bookmark-set "gnus-bookmark" "\
;;;***
\f
-;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-cache" "gnus/gnus-cache.el" (21604 48550
+;;;;;; 85934 217000))
;;; Generated autoloads from gnus/gnus-cache.el
(autoload 'gnus-jog-cache "gnus-cache" "\
;;;***
\f
-;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-delay" "gnus/gnus-delay.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-delay.el
(autoload 'gnus-delay-article "gnus-delay" "\
;;;***
\f
-;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-diary" "gnus/gnus-diary.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-diary.el
(autoload 'gnus-user-format-function-d "gnus-diary" "\
;;;***
\f
-;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-dired" "gnus/gnus-dired.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-dired.el
(autoload 'turn-on-gnus-dired-mode "gnus-dired" "\
;;;***
\f
-;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-draft" "gnus/gnus-draft.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-draft.el
(autoload 'gnus-draft-reminder "gnus-draft" "\
;;;***
\f
-;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-fun" "gnus/gnus-fun.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-fun.el
(autoload 'gnus--random-face-with-type "gnus-fun" "\
;;;***
\f
-;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "gnus-gravatar" "gnus/gnus-gravatar.el" (21604
+;;;;;; 48550 89934 217000))
;;; Generated autoloads from gnus/gnus-gravatar.el
(autoload 'gnus-treat-from-gravatar "gnus-gravatar" "\
;;;***
\f
-;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-group" "gnus/gnus-group.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-group.el
(autoload 'gnus-fetch-group "gnus-group" "\
;;;***
\f
-;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-html" "gnus/gnus-html.el" (21604 48550
+;;;;;; 89934 217000))
;;; Generated autoloads from gnus/gnus-html.el
(autoload 'gnus-article-html "gnus-html" "\
;;;***
\f
-;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-kill" "gnus/gnus-kill.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-kill.el
(defalias 'gnus-batch-kill 'gnus-batch-score)
;;;***
\f
-;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "gnus-ml" "gnus/gnus-ml.el" (21604 48550 93934
+;;;;;; 217000))
;;; Generated autoloads from gnus/gnus-ml.el
(autoload 'turn-on-gnus-mailing-list-mode "gnus-ml" "\
;;;***
\f
-;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-mlspl" "gnus/gnus-mlspl.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-mlspl.el
(autoload 'gnus-group-split-setup "gnus-mlspl" "\
;;;***
\f
-;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-msg" "gnus/gnus-msg.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-msg.el
(autoload 'gnus-msg-mail "gnus-msg" "\
;;;***
\f
;;;### (autoloads nil "gnus-notifications" "gnus/gnus-notifications.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21631 35966 851121 868000))
;;; Generated autoloads from gnus/gnus-notifications.el
(autoload 'gnus-notifications "gnus-notifications" "\
;;;***
\f
-;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-picon" "gnus/gnus-picon.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-picon.el
(autoload 'gnus-treat-from-picon "gnus-picon" "\
;;;***
\f
-;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-range" "gnus/gnus-range.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-range.el
(autoload 'gnus-sorted-difference "gnus-range" "\
;;;***
\f
-;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "gnus-registry" "gnus/gnus-registry.el" (21650
+;;;;;; 56624 523745 975000))
;;; Generated autoloads from gnus/gnus-registry.el
(autoload 'gnus-registry-initialize "gnus-registry" "\
;;;***
\f
-;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-sieve" "gnus/gnus-sieve.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-sieve.el
(autoload 'gnus-sieve-update "gnus-sieve" "\
;;;***
\f
-;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-spec" "gnus/gnus-spec.el" (21604 48550
+;;;;;; 93934 217000))
;;; Generated autoloads from gnus/gnus-spec.el
(autoload 'gnus-update-format "gnus-spec" "\
;;;***
\f
-;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21620 25920
-;;;;;; 601566 783000))
+;;;### (autoloads nil "gnus-start" "gnus/gnus-start.el" (21631 35966
+;;;;;; 851121 868000))
;;; Generated autoloads from gnus/gnus-start.el
(autoload 'gnus-declare-backend "gnus-start" "\
;;;***
\f
-;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21623 2108 292281
-;;;;;; 129000))
+;;;### (autoloads nil "gnus-sum" "gnus/gnus-sum.el" (21631 35966
+;;;;;; 855121 868000))
;;; Generated autoloads from gnus/gnus-sum.el
(autoload 'gnus-summary-bookmark-jump "gnus-sum" "\
;;;***
\f
-;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-sync" "gnus/gnus-sync.el" (21604 48550
+;;;;;; 101934 217000))
;;; Generated autoloads from gnus/gnus-sync.el
(autoload 'gnus-sync-initialize "gnus-sync" "\
;;;***
\f
-;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gnus-win" "gnus/gnus-win.el" (21604 48550
+;;;;;; 101934 217000))
;;; Generated autoloads from gnus/gnus-win.el
(autoload 'gnus-add-configuration "gnus-win" "\
;;;***
\f
-;;;### (autoloads nil "gnutls" "net/gnutls.el" (21620 46140 530123
-;;;;;; 341000))
+;;;### (autoloads nil "gnutls" "net/gnutls.el" (21640 32530 974334
+;;;;;; 457000))
;;; Generated autoloads from net/gnutls.el
(defvar gnutls-min-prime-bits 256 "\
;;;***
\f
-;;;### (autoloads nil "gomoku" "play/gomoku.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "gomoku" "play/gomoku.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/gomoku.el
(autoload 'gomoku "gomoku" "\
;;;***
\f
-;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "goto-addr" "net/goto-addr.el" (21604 48550
+;;;;;; 217934 222000))
;;; Generated autoloads from net/goto-addr.el
(define-obsolete-function-alias 'goto-address-at-mouse 'goto-address-at-point "22.1")
;;;***
\f
-;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "gravatar" "gnus/gravatar.el" (21604 48550
+;;;;;; 101934 217000))
;;; Generated autoloads from gnus/gravatar.el
(autoload 'gravatar-retrieve "gravatar" "\
;;;***
\f
-;;;### (autoloads nil "grep" "progmodes/grep.el" (21612 31801 50825
-;;;;;; 711000))
+;;;### (autoloads nil "grep" "progmodes/grep.el" (21631 35966 907121
+;;;;;; 870000))
;;; Generated autoloads from progmodes/grep.el
(defvar grep-window-height nil "\
;;;***
\f
-;;;### (autoloads nil "gs" "gs.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "gs" "gs.el" (21604 48550 121934 218000))
;;; Generated autoloads from gs.el
(autoload 'gs-load-image "gs" "\
;;;***
\f
-;;;### (autoloads nil "gud" "progmodes/gud.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "gud" "progmodes/gud.el" (21640 32530 986334
+;;;;;; 458000))
;;; Generated autoloads from progmodes/gud.el
(autoload 'gud-gdb "gud" "\
;;;***
\f
-;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "gv" "emacs-lisp/gv.el" (21604 48550 17934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/gv.el
(autoload 'gv-get "gv" "\
;;;***
\f
-;;;### (autoloads nil "handwrite" "play/handwrite.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "handwrite" "play/handwrite.el" (21604 48550
+;;;;;; 305934 225000))
;;; Generated autoloads from play/handwrite.el
(autoload 'handwrite "handwrite" "\
;;;***
\f
-;;;### (autoloads nil "hanoi" "play/hanoi.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "hanoi" "play/hanoi.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/hanoi.el
(autoload 'hanoi "hanoi" "\
;;;***
\f
-;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "hashcash" "mail/hashcash.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/hashcash.el
(autoload 'hashcash-insert-payment "hashcash" "\
;;;***
\f
-;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "help-at-pt" "help-at-pt.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from help-at-pt.el
(autoload 'help-at-pt-string "help-at-pt" "\
;;;***
\f
-;;;### (autoloads nil "help-fns" "help-fns.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "help-fns" "help-fns.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from help-fns.el
(autoload 'describe-function "help-fns" "\
;;;***
\f
-;;;### (autoloads nil "help-macro" "help-macro.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "help-macro" "help-macro.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from help-macro.el
(defvar three-step-help nil "\
;;;***
\f
-;;;### (autoloads nil "help-mode" "help-mode.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "help-mode" "help-mode.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from help-mode.el
(autoload 'help-mode "help-mode" "\
;;;***
\f
-;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "helper" "emacs-lisp/helper.el" (21604 48550
+;;;;;; 17934 214000))
;;; Generated autoloads from emacs-lisp/helper.el
(autoload 'Helper-describe-bindings "helper" "\
;;;***
\f
-;;;### (autoloads nil "hexl" "hexl.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "hexl" "hexl.el" (21604 48550 125934 218000))
;;; Generated autoloads from hexl.el
(autoload 'hexl-mode "hexl" "\
;;;***
\f
-;;;### (autoloads nil "hi-lock" "hi-lock.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "hi-lock" "hi-lock.el" (21604 48550 125934
+;;;;;; 218000))
;;; Generated autoloads from hi-lock.el
(autoload 'hi-lock-mode "hi-lock" "\
;;;***
\f
-;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "hideif" "progmodes/hideif.el" (21604 48550
+;;;;;; 337934 226000))
;;; Generated autoloads from progmodes/hideif.el
(autoload 'hide-ifdef-mode "hideif" "\
;;;***
\f
-;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "hideshow" "progmodes/hideshow.el" (21604 48550
+;;;;;; 341934 226000))
;;; Generated autoloads from progmodes/hideshow.el
(defvar hs-special-modes-alist (mapcar 'purecopy '((c-mode "{" "}" "/[*/]" nil nil) (c++-mode "{" "}" "/[*/]" nil nil) (bibtex-mode ("@\\S(*\\(\\s(\\)" 1)) (java-mode "{" "}" "/[*/]" nil nil) (js-mode "{" "}" "/[*/]" nil))) "\
;;;***
\f
-;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "hilit-chg" "hilit-chg.el" (21604 48550 125934
+;;;;;; 218000))
;;; Generated autoloads from hilit-chg.el
(autoload 'highlight-changes-mode "hilit-chg" "\
;;;***
\f
-;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "hippie-exp" "hippie-exp.el" (21604 48550 125934
+;;;;;; 218000))
;;; Generated autoloads from hippie-exp.el
(push (purecopy '(hippie-exp 1 6)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "hl-line" "hl-line.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "hl-line" "hl-line.el" (21604 48550 125934
+;;;;;; 218000))
;;; Generated autoloads from hl-line.el
(autoload 'hl-line-mode "hl-line" "\
;;;***
\f
-;;;### (autoloads nil "holidays" "calendar/holidays.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "holidays" "calendar/holidays.el" (21604 48549
+;;;;;; 953934 212000))
;;; Generated autoloads from calendar/holidays.el
(defvar holiday-general-holidays (mapcar 'purecopy '((holiday-fixed 1 1 "New Year's Day") (holiday-float 1 1 3 "Martin Luther King Day") (holiday-fixed 2 2 "Groundhog Day") (holiday-fixed 2 14 "Valentine's Day") (holiday-float 2 1 3 "President's Day") (holiday-fixed 3 17 "St. Patrick's Day") (holiday-fixed 4 1 "April Fools' Day") (holiday-float 5 0 2 "Mother's Day") (holiday-float 5 1 -1 "Memorial Day") (holiday-fixed 6 14 "Flag Day") (holiday-float 6 0 3 "Father's Day") (holiday-fixed 7 4 "Independence Day") (holiday-float 9 1 1 "Labor Day") (holiday-float 10 1 2 "Columbus Day") (holiday-fixed 10 31 "Halloween") (holiday-fixed 11 11 "Veteran's Day") (holiday-float 11 4 4 "Thanksgiving"))) "\
;;;***
\f
-;;;### (autoloads nil "html2text" "gnus/html2text.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "html2text" "gnus/html2text.el" (21604 48550
+;;;;;; 101934 217000))
;;; Generated autoloads from gnus/html2text.el
(autoload 'html2text "html2text" "\
;;;***
\f
-;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "htmlfontify" "htmlfontify.el" (21604 48550
+;;;;;; 125934 218000))
;;; Generated autoloads from htmlfontify.el
(push (purecopy '(htmlfontify 0 21)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "ibuf-macs" "ibuf-macs.el" (21604 48550 125934
+;;;;;; 218000))
;;; Generated autoloads from ibuf-macs.el
(autoload 'define-ibuffer-column "ibuf-macs" "\
change its definition, you should explicitly call
`ibuffer-recompile-formats'.
-\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil (quote macro))
+\(fn SYMBOL (&key NAME INLINE PROPS SUMMARIZER) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-column 'lisp-indent-function 'defun)
(autoload 'define-ibuffer-sorter "ibuf-macs" "\
Define a method of sorting named NAME.
buffer object, and `b' bound to another. BODY should return a non-nil
value if and only if `a' is \"less than\" `b'.
-\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil (quote macro))
+\(fn NAME DOCUMENTATION (&key DESCRIPTION) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-sorter 'lisp-indent-function '1)
+
+(function-put 'define-ibuffer-sorter 'doc-string-elt '2)
(autoload 'define-ibuffer-op "ibuf-macs" "\
Generate a function which operates on a buffer.
COMPLEX means this function is special; see the source code of this
macro for exactly what it does.
-\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil (quote macro))
+\(fn OP ARGS DOCUMENTATION (&key INTERACTIVE MARK MODIFIER-P DANGEROUS OPSTRING ACTIVE-OPSTRING COMPLEX) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-op 'lisp-indent-function '2)
+
+(function-put 'define-ibuffer-op 'doc-string-elt '3)
(autoload 'define-ibuffer-filter "ibuf-macs" "\
Define a filter named NAME.
will be evaluated with BUF bound to the buffer object, and QUALIFIER
bound to the current value of the filter.
-\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil (quote macro))
+\(fn NAME DOCUMENTATION (&key READER DESCRIPTION) &rest BODY)" nil t)
+
+(function-put 'define-ibuffer-filter 'lisp-indent-function '2)
+
+(function-put 'define-ibuffer-filter 'doc-string-elt '2)
;;;***
\f
-;;;### (autoloads nil "ibuffer" "ibuffer.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "ibuffer" "ibuffer.el" (21604 48550 129934
+;;;;;; 218000))
;;; Generated autoloads from ibuffer.el
(autoload 'ibuffer-list-buffers "ibuffer" "\
;;;***
\f
-;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21611
-;;;;;; 10937 700236 3000))
+;;;### (autoloads nil "icalendar" "calendar/icalendar.el" (21631
+;;;;;; 35966 803121 866000))
;;; Generated autoloads from calendar/icalendar.el
(push (purecopy '(icalendar 0 19)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "icomplete" "icomplete.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "icomplete" "icomplete.el" (21604 48550 129934
+;;;;;; 218000))
;;; Generated autoloads from icomplete.el
(defvar icomplete-mode nil "\
;;;***
\f
-;;;### (autoloads nil "icon" "progmodes/icon.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "icon" "progmodes/icon.el" (21604 48550 341934
+;;;;;; 226000))
;;; Generated autoloads from progmodes/icon.el
(autoload 'icon-mode "icon" "\
;;;***
\f
-;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "idlw-shell" "progmodes/idlw-shell.el" (21604
+;;;;;; 48550 341934 226000))
;;; Generated autoloads from progmodes/idlw-shell.el
(autoload 'idlwave-shell "idlw-shell" "\
;;;***
\f
-;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "idlwave" "progmodes/idlwave.el" (21645 25761
+;;;;;; 805186 828000))
;;; Generated autoloads from progmodes/idlwave.el
(push (purecopy '(idlwave 6 1 22)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ido" "ido.el" (21612 31801 50825 711000))
+;;;### (autoloads nil "ido" "ido.el" (21631 35966 863121 868000))
;;; Generated autoloads from ido.el
(defvar ido-mode nil "\
;;;***
\f
-;;;### (autoloads nil "ielm" "ielm.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ielm" "ielm.el" (21604 48550 129934 218000))
;;; Generated autoloads from ielm.el
(autoload 'ielm "ielm" "\
;;;***
\f
-;;;### (autoloads nil "iimage" "iimage.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "iimage" "iimage.el" (21604 48550 129934 218000))
;;; Generated autoloads from iimage.el
(define-obsolete-function-alias 'turn-on-iimage-mode 'iimage-mode "24.1")
;;;***
\f
-;;;### (autoloads nil "image" "image.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "image" "image.el" (21604 48550 133934 219000))
;;; Generated autoloads from image.el
(autoload 'image-type-from-data "image" "\
;;;***
\f
-;;;### (autoloads nil "image-dired" "image-dired.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "image-dired" "image-dired.el" (21604 48550
+;;;;;; 129934 218000))
;;; Generated autoloads from image-dired.el
(push (purecopy '(image-dired 0 4 11)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "image-file" "image-file.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "image-file" "image-file.el" (21604 48550 129934
+;;;;;; 218000))
;;; Generated autoloads from image-file.el
(defvar image-file-name-extensions (purecopy '("png" "jpeg" "jpg" "gif" "tiff" "tif" "xbm" "xpm" "pbm" "pgm" "ppm" "pnm" "svg")) "\
;;;***
\f
-;;;### (autoloads nil "image-mode" "image-mode.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "image-mode" "image-mode.el" (21604 48550 129934
+;;;;;; 218000))
;;; Generated autoloads from image-mode.el
(autoload 'image-mode "image-mode" "\
;;;***
\f
-;;;### (autoloads nil "imenu" "imenu.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "imenu" "imenu.el" (21604 48550 133934 219000))
;;; Generated autoloads from imenu.el
(defvar imenu-sort-function nil "\
;;;***
\f
-;;;### (autoloads nil "ind-util" "language/ind-util.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "ind-util" "language/ind-util.el" (21604 48550
+;;;;;; 153934 219000))
;;; Generated autoloads from language/ind-util.el
(autoload 'indian-compose-region "ind-util" "\
;;;***
\f
-;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "inf-lisp" "progmodes/inf-lisp.el" (21604 48550
+;;;;;; 345934 227000))
;;; Generated autoloads from progmodes/inf-lisp.el
(autoload 'inferior-lisp "inf-lisp" "\
;;;***
\f
-;;;### (autoloads nil "info" "info.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "info" "info.el" (21640 32530 970334 457000))
;;; Generated autoloads from info.el
(defcustom Info-default-directory-list (let* ((config-dir (file-name-as-directory (or (and (featurep 'ns) (let ((dir (expand-file-name "../info" data-directory))) (if (file-directory-p dir) dir))) configure-info-directory))) (prefixes (prune-directory-list '("/usr/local/" "/usr/" "/opt/" "/"))) (suffixes '("share/" "" "gnu/" "gnu/lib/" "gnu/lib/emacs/" "emacs/" "lib/" "lib/emacs/")) (standard-info-dirs (apply #'nconc (mapcar (lambda (pfx) (let ((dirs (mapcar (lambda (sfx) (concat pfx sfx "info/")) suffixes))) (prune-directory-list dirs))) prefixes))) (dirs (if (member config-dir standard-info-dirs) (nconc standard-info-dirs (list config-dir)) (cons config-dir standard-info-dirs)))) (if (not (eq system-type 'windows-nt)) dirs (let* ((instdir (file-name-directory invocation-directory)) (dir1 (expand-file-name "../info/" instdir)) (dir2 (expand-file-name "../../../info/" instdir))) (cond ((file-exists-p dir1) (append dirs (list dir1))) ((file-exists-p dir2) (append dirs (list dir2))) (t dirs))))) "\
;;;***
\f
-;;;### (autoloads nil "info-look" "info-look.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "info-look" "info-look.el" (21604 48550 133934
+;;;;;; 219000))
;;; Generated autoloads from info-look.el
(autoload 'info-lookup-reset "info-look" "\
;;;***
\f
-;;;### (autoloads nil "info-xref" "info-xref.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "info-xref" "info-xref.el" (21604 48550 133934
+;;;;;; 219000))
;;; Generated autoloads from info-xref.el
(push (purecopy '(info-xref 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "informat" "informat.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "informat" "informat.el" (21604 48550 133934
+;;;;;; 219000))
;;; Generated autoloads from informat.el
(autoload 'Info-tagify "informat" "\
;;;***
\f
-;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21628 43483
-;;;;;; 380149 771000))
+;;;### (autoloads nil "inline" "emacs-lisp/inline.el" (21631 35966
+;;;;;; 827121 867000))
;;; Generated autoloads from emacs-lisp/inline.el
(autoload 'define-inline "inline" "\
;;;***
\f
-;;;### (autoloads nil "inversion" "cedet/inversion.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "inversion" "cedet/inversion.el" (21604 48549
+;;;;;; 965934 212000))
;;; Generated autoloads from cedet/inversion.el
(push (purecopy '(inversion 1 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "isearch-x" "international/isearch-x.el" (21604
+;;;;;; 48550 137934 219000))
;;; Generated autoloads from international/isearch-x.el
(autoload 'isearch-toggle-specified-input-method "isearch-x" "\
;;;***
\f
-;;;### (autoloads nil "isearchb" "isearchb.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "isearchb" "isearchb.el" (21604 48550 145934
+;;;;;; 219000))
;;; Generated autoloads from isearchb.el
(push (purecopy '(isearchb 1 5)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "iso-cvt" "international/iso-cvt.el" (21604
+;;;;;; 48550 137934 219000))
;;; Generated autoloads from international/iso-cvt.el
(autoload 'iso-spanish "iso-cvt" "\
;;;***
\f
;;;### (autoloads nil "iso-transl" "international/iso-transl.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 137934 219000))
;;; Generated autoloads from international/iso-transl.el
(define-key key-translation-map "\C-x8" 'iso-transl-ctl-x-8-map)
(autoload 'iso-transl-ctl-x-8-map "iso-transl" "Keymap for C-x 8 prefix." t 'keymap)
;;;***
\f
-;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ispell" "textmodes/ispell.el" (21659 61733
+;;;;;; 226949 164000))
;;; Generated autoloads from textmodes/ispell.el
(put 'ispell-check-comments 'safe-local-variable (lambda (a) (memq a '(nil t exclusive))))
;;;***
\f
-;;;### (autoloads nil "japan-util" "language/japan-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "japan-util" "language/japan-util.el" (21604
+;;;;;; 48550 153934 219000))
;;; Generated autoloads from language/japan-util.el
(autoload 'setup-japanese-environment-internal "japan-util" "\
;;;***
\f
-;;;### (autoloads nil "jka-compr" "jka-compr.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "jka-compr" "jka-compr.el" (21604 48550 145934
+;;;;;; 219000))
;;; Generated autoloads from jka-compr.el
(defvar jka-compr-inhibit nil "\
;;;***
\f
-;;;### (autoloads nil "js" "progmodes/js.el" (21623 2108 292281 129000))
+;;;### (autoloads nil "js" "progmodes/js.el" (21659 61733 222949
+;;;;;; 164000))
;;; Generated autoloads from progmodes/js.el
(push (purecopy '(js 9)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "json" "json.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "json" "json.el" (21604 48550 145934 219000))
;;; Generated autoloads from json.el
(push (purecopy '(json 1 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "keypad" "emulation/keypad.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "keypad" "emulation/keypad.el" (21604 48550
+;;;;;; 29934 215000))
;;; Generated autoloads from emulation/keypad.el
(defvar keypad-setup nil "\
;;;***
\f
-;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "kinsoku" "international/kinsoku.el" (21604
+;;;;;; 48550 137934 219000))
;;; Generated autoloads from international/kinsoku.el
(autoload 'kinsoku "kinsoku" "\
;;;***
\f
-;;;### (autoloads nil "kkc" "international/kkc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "kkc" "international/kkc.el" (21604 48550 137934
+;;;;;; 219000))
;;; Generated autoloads from international/kkc.el
(defvar kkc-after-update-conversion-functions nil "\
;;;***
\f
-;;;### (autoloads nil "kmacro" "kmacro.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "kmacro" "kmacro.el" (21604 48550 145934 219000))
;;; Generated autoloads from kmacro.el
(global-set-key "\C-x(" 'kmacro-start-macro)
(global-set-key "\C-x)" 'kmacro-end-macro)
;;;***
\f
-;;;### (autoloads nil "korea-util" "language/korea-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "korea-util" "language/korea-util.el" (21604
+;;;;;; 48550 153934 219000))
;;; Generated autoloads from language/korea-util.el
(defvar default-korean-keyboard (purecopy (if (string-match "3" (or (getenv "HANGUL_KEYBOARD_TYPE") "")) "3" "")) "\
;;;***
\f
-;;;### (autoloads nil "landmark" "play/landmark.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "landmark" "play/landmark.el" (21604 48550
+;;;;;; 305934 225000))
;;; Generated autoloads from play/landmark.el
(push (purecopy '(landmark 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "lao-util" "language/lao-util.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "lao-util" "language/lao-util.el" (21604 48550
+;;;;;; 153934 219000))
;;; Generated autoloads from language/lao-util.el
(autoload 'lao-compose-string "lao-util" "\
;;;***
\f
-;;;### (autoloads nil "latexenc" "international/latexenc.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "latexenc" "international/latexenc.el" (21604
+;;;;;; 48550 137934 219000))
;;; Generated autoloads from international/latexenc.el
(defvar latex-inputenc-coding-alist (purecopy '(("ansinew" . windows-1252) ("applemac" . mac-roman) ("ascii" . us-ascii) ("cp1250" . windows-1250) ("cp1252" . windows-1252) ("cp1257" . cp1257) ("cp437de" . cp437) ("cp437" . cp437) ("cp850" . cp850) ("cp852" . cp852) ("cp858" . cp858) ("cp865" . cp865) ("latin1" . iso-8859-1) ("latin2" . iso-8859-2) ("latin3" . iso-8859-3) ("latin4" . iso-8859-4) ("latin5" . iso-8859-5) ("latin9" . iso-8859-15) ("next" . next) ("utf8" . utf-8) ("utf8x" . utf-8))) "\
;;;***
\f
;;;### (autoloads nil "latin1-disp" "international/latin1-disp.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 137934 219000))
;;; Generated autoloads from international/latin1-disp.el
(defvar latin1-display nil "\
;;;***
\f
-;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "ld-script" "progmodes/ld-script.el" (21604
+;;;;;; 48550 345934 227000))
;;; Generated autoloads from progmodes/ld-script.el
(autoload 'ld-script-mode "ld-script" "\
;;;***
\f
-;;;### (autoloads nil "life" "play/life.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "let-alist" "let-alist.el" (21659 61733 206949
+;;;;;; 164000))
+;;; Generated autoloads from let-alist.el
+(push (purecopy '(let-alist 1 0 3)) package--builtin-versions)
+
+(autoload 'let-alist "let-alist" "\
+Let-bind dotted symbols to their cdrs in ALIST and execute BODY.
+Dotted symbol is any symbol starting with a `.'. Only those present
+in BODY are let-bound and this search is done at compile time.
+
+For instance, the following code
+
+ (let-alist alist
+ (if (and .title .body)
+ .body
+ .site
+ .site.contents))
+
+essentially expands to
+
+ (let ((.title (cdr (assq 'title alist)))
+ (.body (cdr (assq 'body alist)))
+ (.site (cdr (assq 'site alist)))
+ (.site.contents (cdr (assq 'contents (cdr (assq 'site alist))))))
+ (if (and .title .body)
+ .body
+ .site
+ .site.contents))
+
+If you nest `let-alist' invocations, the inner one can't access
+the variables of the outer one. You can, however, access alists
+inside the original alist by using dots inside the symbol, as
+displayed in the example above.
+
+\(fn ALIST &rest BODY)" nil t)
+
+(function-put 'let-alist 'lisp-indent-function '1)
+
+;;;***
+\f
+;;;### (autoloads nil "life" "play/life.el" (21604 48550 305934 225000))
;;; Generated autoloads from play/life.el
(autoload 'life "life" "\
;;;***
\f
-;;;### (autoloads nil "linum" "linum.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "linum" "linum.el" (21651 20707 180225 752000))
;;; Generated autoloads from linum.el
(push (purecopy '(linum 0 9 24)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "loadhist" "loadhist.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "loadhist" "loadhist.el" (21604 48550 177934
+;;;;;; 220000))
;;; Generated autoloads from loadhist.el
(autoload 'unload-feature "loadhist" "\
;;;***
\f
-;;;### (autoloads nil "locate" "locate.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "locate" "locate.el" (21604 48550 177934 220000))
;;; Generated autoloads from locate.el
(defvar locate-ls-subdir-switches (purecopy "-al") "\
;;;***
\f
-;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "log-edit" "vc/log-edit.el" (21604 48550 429934
+;;;;;; 230000))
;;; Generated autoloads from vc/log-edit.el
(autoload 'log-edit "log-edit" "\
;;;***
\f
-;;;### (autoloads nil "log-view" "vc/log-view.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "log-view" "vc/log-view.el" (21604 48550 429934
+;;;;;; 230000))
;;; Generated autoloads from vc/log-view.el
(autoload 'log-view-mode "log-view" "\
;;;***
\f
-;;;### (autoloads nil "lpr" "lpr.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "lpr" "lpr.el" (21604 48550 181934 220000))
;;; Generated autoloads from lpr.el
(defvar lpr-windows-system (memq system-type '(ms-dos windows-nt)) "\
;;;***
\f
-;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "ls-lisp" "ls-lisp.el" (21604 48550 181934
+;;;;;; 220000))
;;; Generated autoloads from ls-lisp.el
(defvar ls-lisp-support-shell-wildcards t "\
;;;***
\f
-;;;### (autoloads nil "lunar" "calendar/lunar.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "lunar" "calendar/lunar.el" (21604 48549 953934
+;;;;;; 212000))
;;; Generated autoloads from calendar/lunar.el
(autoload 'lunar-phases "lunar" "\
;;;***
\f
-;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "m4-mode" "progmodes/m4-mode.el" (21604 48550
+;;;;;; 345934 227000))
;;; Generated autoloads from progmodes/m4-mode.el
(autoload 'm4-mode "m4-mode" "\
;;;***
\f
-;;;### (autoloads nil "macros" "macros.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "macros" "macros.el" (21604 48550 181934 220000))
;;; Generated autoloads from macros.el
(autoload 'name-last-kbd-macro "macros" "\
;;;***
\f
-;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mail-extr" "mail/mail-extr.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/mail-extr.el
(autoload 'mail-extract-address-components "mail-extr" "\
;;;***
\f
-;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mail-hist" "mail/mail-hist.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/mail-hist.el
(autoload 'mail-hist-define-keys "mail-hist" "\
;;;***
\f
-;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mail-utils" "mail/mail-utils.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/mail-utils.el
(defvar mail-use-rfc822 nil "\
;;;***
\f
-;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mailabbrev" "mail/mailabbrev.el" (21604 48550
+;;;;;; 181934 220000))
;;; Generated autoloads from mail/mailabbrev.el
(defvar mail-abbrevs-mode nil "\
;;;***
\f
-;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mailalias" "mail/mailalias.el" (21604 48550
+;;;;;; 185934 221000))
;;; Generated autoloads from mail/mailalias.el
(defvar mail-complete-style 'angles "\
;;;***
\f
-;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mailclient" "mail/mailclient.el" (21604 48550
+;;;;;; 185934 221000))
;;; Generated autoloads from mail/mailclient.el
(autoload 'mailclient-send-it "mailclient" "\
;;;***
\f
-;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "make-mode" "progmodes/make-mode.el" (21604
+;;;;;; 48550 349934 227000))
;;; Generated autoloads from progmodes/make-mode.el
(autoload 'makefile-mode "make-mode" "\
;;;***
\f
-;;;### (autoloads nil "makesum" "makesum.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "makesum" "makesum.el" (21604 48550 189934
+;;;;;; 221000))
;;; Generated autoloads from makesum.el
(autoload 'make-command-summary "makesum" "\
;;;***
\f
-;;;### (autoloads nil "man" "man.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "man" "man.el" (21604 48550 189934 221000))
;;; Generated autoloads from man.el
(defalias 'manual-entry 'man)
;;;***
\f
-;;;### (autoloads nil "master" "master.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "master" "master.el" (21604 48550 193934 221000))
;;; Generated autoloads from master.el
(push (purecopy '(master 1 0 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "mb-depth" "mb-depth.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mb-depth" "mb-depth.el" (21604 48550 193934
+;;;;;; 221000))
;;; Generated autoloads from mb-depth.el
(defvar minibuffer-depth-indicate-mode nil "\
;;;***
\f
-;;;### (autoloads nil "md4" "md4.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "md4" "md4.el" (21604 48550 193934 221000))
;;; Generated autoloads from md4.el
(push (purecopy '(md4 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "message" "gnus/message.el" (21623 2108 292281
-;;;;;; 129000))
+;;;### (autoloads nil "message" "gnus/message.el" (21637 50476 671217
+;;;;;; 121000))
;;; Generated autoloads from gnus/message.el
(define-mail-user-agent 'message-user-agent 'message-mail 'message-send-and-exit 'message-kill-buffer 'message-send-hook)
;;;***
\f
-;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "meta-mode" "progmodes/meta-mode.el" (21604
+;;;;;; 48550 349934 227000))
;;; Generated autoloads from progmodes/meta-mode.el
(push (purecopy '(meta-mode 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "metamail" "mail/metamail.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "metamail" "mail/metamail.el" (21604 48550
+;;;;;; 185934 221000))
;;; Generated autoloads from mail/metamail.el
(autoload 'metamail-interpret-header "metamail" "\
;;;***
\f
-;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mh-comp" "mh-e/mh-comp.el" (21604 48550 197934
+;;;;;; 221000))
;;; Generated autoloads from mh-e/mh-comp.el
(autoload 'mh-smail "mh-comp" "\
;;;***
\f
-;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mh-e" "mh-e/mh-e.el" (21604 48550 197934 221000))
;;; Generated autoloads from mh-e/mh-e.el
(push (purecopy '(mh-e 8 6)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mh-folder" "mh-e/mh-folder.el" (21604 48550
+;;;;;; 201934 221000))
;;; Generated autoloads from mh-e/mh-folder.el
(autoload 'mh-rmail "mh-folder" "\
;;;***
\f
-;;;### (autoloads nil "midnight" "midnight.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "midnight" "midnight.el" (21604 48550 205934
+;;;;;; 221000))
;;; Generated autoloads from midnight.el
(autoload 'clean-buffer-list "midnight" "\
;;;***
\f
-;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "minibuf-eldef" "minibuf-eldef.el" (21604 48550
+;;;;;; 205934 221000))
;;; Generated autoloads from minibuf-eldef.el
(defvar minibuffer-electric-default-mode nil "\
;;;***
\f
-;;;### (autoloads nil "misc" "misc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "misc" "misc.el" (21604 48550 209934 221000))
;;; Generated autoloads from misc.el
(autoload 'butterfly "misc" "\
;;;***
\f
-;;;### (autoloads nil "misearch" "misearch.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "misearch" "misearch.el" (21604 48550 209934
+;;;;;; 221000))
;;; Generated autoloads from misearch.el
(add-hook 'isearch-mode-hook 'multi-isearch-setup)
;;;***
\f
-;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "mixal-mode" "progmodes/mixal-mode.el" (21604
+;;;;;; 48550 349934 227000))
;;; Generated autoloads from progmodes/mixal-mode.el
(push (purecopy '(mixal-mode 0 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mm-encode" "gnus/mm-encode.el" (21604 48550
+;;;;;; 105934 218000))
;;; Generated autoloads from gnus/mm-encode.el
(autoload 'mm-default-file-encoding "mm-encode" "\
;;;***
\f
-;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mm-extern" "gnus/mm-extern.el" (21604 48550
+;;;;;; 105934 218000))
;;; Generated autoloads from gnus/mm-extern.el
(autoload 'mm-extern-cache-contents "mm-extern" "\
;;;***
\f
-;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "mm-partial" "gnus/mm-partial.el" (21604 48550
+;;;;;; 105934 218000))
;;; Generated autoloads from gnus/mm-partial.el
(autoload 'mm-inline-partial "mm-partial" "\
;;;***
\f
-;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mm-url" "gnus/mm-url.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/mm-url.el
(autoload 'mm-url-insert-file-contents "mm-url" "\
;;;***
\f
-;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mm-uu" "gnus/mm-uu.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/mm-uu.el
(autoload 'mm-uu-dissect "mm-uu" "\
;;;***
\f
-;;;### (autoloads nil "mml" "gnus/mml.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mml" "gnus/mml.el" (21604 48550 109934 218000))
;;; Generated autoloads from gnus/mml.el
(autoload 'mml-to-mime "mml" "\
;;;***
\f
-;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mml1991" "gnus/mml1991.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/mml1991.el
(autoload 'mml1991-encrypt "mml1991" "\
;;;***
\f
-;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mml2015" "gnus/mml2015.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/mml2015.el
(autoload 'mml2015-decrypt "mml2015" "\
;;;***
\f
-;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "mode-local" "cedet/mode-local.el" (21604 48549
+;;;;;; 965934 212000))
;;; Generated autoloads from cedet/mode-local.el
(put 'define-overloadable-function 'doc-string-elt 3)
;;;***
\f
-;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "modula2" "progmodes/modula2.el" (21604 48550
+;;;;;; 349934 227000))
;;; Generated autoloads from progmodes/modula2.el
(defalias 'modula-2-mode 'm2-mode)
;;;***
\f
-;;;### (autoloads nil "morse" "play/morse.el" (21616 28857 81577
-;;;;;; 239000))
+;;;### (autoloads nil "morse" "play/morse.el" (21631 35966 895121
+;;;;;; 869000))
;;; Generated autoloads from play/morse.el
(autoload 'morse-region "morse" "\
;;;***
\f
-;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "mouse-drag" "mouse-drag.el" (21604 48550 209934
+;;;;;; 221000))
;;; Generated autoloads from mouse-drag.el
(autoload 'mouse-drag-throw "mouse-drag" "\
;;;***
\f
-;;;### (autoloads nil "mpc" "mpc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "mpc" "mpc.el" (21604 48550 209934 221000))
;;; Generated autoloads from mpc.el
(autoload 'mpc "mpc" "\
;;;***
\f
-;;;### (autoloads nil "mpuz" "play/mpuz.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "mpuz" "play/mpuz.el" (21604 48550 305934 225000))
;;; Generated autoloads from play/mpuz.el
(autoload 'mpuz "mpuz" "\
;;;***
\f
-;;;### (autoloads nil "msb" "msb.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "msb" "msb.el" (21604 48550 209934 221000))
;;; Generated autoloads from msb.el
(defvar msb-mode nil "\
;;;***
\f
-;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "mule-diag" "international/mule-diag.el" (21651
+;;;;;; 20707 180225 752000))
;;; Generated autoloads from international/mule-diag.el
(autoload 'list-character-sets "mule-diag" "\
;;;***
\f
-;;;### (autoloads nil "mule-util" "international/mule-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "mule-util" "international/mule-util.el" (21604
+;;;;;; 48550 141934 219000))
;;; Generated autoloads from international/mule-util.el
(defsubst string-to-list (string) "\
;;;***
\f
-;;;### (autoloads nil "net-utils" "net/net-utils.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "net-utils" "net/net-utils.el" (21604 48550
+;;;;;; 217934 222000))
;;; Generated autoloads from net/net-utils.el
(autoload 'ifconfig "net-utils" "\
;;;***
\f
-;;;### (autoloads nil "netrc" "net/netrc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "netrc" "net/netrc.el" (21604 48550 217934
+;;;;;; 222000))
;;; Generated autoloads from net/netrc.el
(autoload 'netrc-credentials "netrc" "\
;;;***
\f
-;;;### (autoloads nil "network-stream" "net/network-stream.el" (21619
-;;;;;; 5051 260148 536000))
+;;;### (autoloads nil "network-stream" "net/network-stream.el" (21645
+;;;;;; 25761 793186 828000))
;;; Generated autoloads from net/network-stream.el
(autoload 'open-network-stream "network-stream" "\
;;;***
\f
-;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21628
-;;;;;; 45530 160140 360000))
+;;;### (autoloads nil "newst-backend" "net/newst-backend.el" (21631
+;;;;;; 35966 879121 869000))
;;; Generated autoloads from net/newst-backend.el
(autoload 'newsticker-running-p "newst-backend" "\
;;;***
\f
;;;### (autoloads nil "newst-plainview" "net/newst-plainview.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 217934 222000))
;;; Generated autoloads from net/newst-plainview.el
(autoload 'newsticker-plainview "newst-plainview" "\
;;;***
\f
-;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "newst-reader" "net/newst-reader.el" (21604
+;;;;;; 48550 217934 222000))
;;; Generated autoloads from net/newst-reader.el
(autoload 'newsticker-show-news "newst-reader" "\
;;;***
\f
-;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "newst-ticker" "net/newst-ticker.el" (21604
+;;;;;; 48550 221934 222000))
;;; Generated autoloads from net/newst-ticker.el
(autoload 'newsticker-ticker-running-p "newst-ticker" "\
;;;***
\f
-;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21628
-;;;;;; 45530 160140 360000))
+;;;### (autoloads nil "newst-treeview" "net/newst-treeview.el" (21637
+;;;;;; 50476 675217 121000))
;;; Generated autoloads from net/newst-treeview.el
(autoload 'newsticker-treeview "newst-treeview" "\
;;;***
\f
-;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "nndiary" "gnus/nndiary.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/nndiary.el
(autoload 'nndiary-generate-nov-databases "nndiary" "\
;;;***
\f
-;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "nndoc" "gnus/nndoc.el" (21604 48550 109934
+;;;;;; 218000))
;;; Generated autoloads from gnus/nndoc.el
(autoload 'nndoc-add-type "nndoc" "\
;;;***
\f
-;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "nnfolder" "gnus/nnfolder.el" (21604 48550
+;;;;;; 113934 218000))
;;; Generated autoloads from gnus/nnfolder.el
(autoload 'nnfolder-generate-active-file "nnfolder" "\
;;;***
\f
-;;;### (autoloads nil "nnml" "gnus/nnml.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "nnml" "gnus/nnml.el" (21604 48550 117934 218000))
;;; Generated autoloads from gnus/nnml.el
(autoload 'nnml-generate-nov-databases "nnml" "\
;;;***
\f
-;;;### (autoloads nil "novice" "novice.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "novice" "novice.el" (21604 48550 237934 223000))
;;; Generated autoloads from novice.el
(define-obsolete-variable-alias 'disabled-command-hook 'disabled-command-function "22.1")
;;;***
\f
-;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "nroff-mode" "textmodes/nroff-mode.el" (21604
+;;;;;; 48550 397934 228000))
;;; Generated autoloads from textmodes/nroff-mode.el
(autoload 'nroff-mode "nroff-mode" "\
;;;***
\f
-;;;### (autoloads nil "ntlm" "net/ntlm.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "ntlm" "net/ntlm.el" (21604 48550 221934 222000))
;;; Generated autoloads from net/ntlm.el
(push (purecopy '(ntlm 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "nxml-glyph" "nxml/nxml-glyph.el" (21604 48550
+;;;;;; 237934 223000))
;;; Generated autoloads from nxml/nxml-glyph.el
(autoload 'nxml-glyph-display-string "nxml-glyph" "\
;;;***
\f
-;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21611 10937
-;;;;;; 700236 3000))
+;;;### (autoloads nil "nxml-mode" "nxml/nxml-mode.el" (21631 35966
+;;;;;; 887121 869000))
;;; Generated autoloads from nxml/nxml-mode.el
(autoload 'nxml-mode "nxml-mode" "\
;;;***
\f
-;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "nxml-uchnm" "nxml/nxml-uchnm.el" (21604 48550
+;;;;;; 237934 223000))
;;; Generated autoloads from nxml/nxml-uchnm.el
(autoload 'nxml-enable-unicode-char-name-sets "nxml-uchnm" "\
;;;***
\f
-;;;### (autoloads nil "octave" "progmodes/octave.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "octave" "progmodes/octave.el" (21631 35966
+;;;;;; 907121 870000))
;;; Generated autoloads from progmodes/octave.el
(autoload 'octave-mode "octave" "\
;;;***
\f
-;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "opascal" "progmodes/opascal.el" (21604 48550
+;;;;;; 349934 227000))
;;; Generated autoloads from progmodes/opascal.el
(define-obsolete-function-alias 'delphi-mode 'opascal-mode "24.4")
;;;***
\f
-;;;### (autoloads nil "org" "org/org.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "org" "org/org.el" (21645 25761 805186 828000))
;;; Generated autoloads from org/org.el
(autoload 'org-babel-do-load-languages "org" "\
;;;***
\f
-;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "org-agenda" "org/org-agenda.el" (21604 48550
+;;;;;; 269934 224000))
;;; Generated autoloads from org/org-agenda.el
(autoload 'org-toggle-sticky-agenda "org-agenda" "\
;;;***
\f
-;;;### (autoloads nil "org-capture" "org/org-capture.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "org-capture" "org/org-capture.el" (21604 48550
+;;;;;; 273934 224000))
;;; Generated autoloads from org/org-capture.el
(autoload 'org-capture-string "org-capture" "\
;;;***
\f
-;;;### (autoloads nil "org-colview" "org/org-colview.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "org-colview" "org/org-colview.el" (21604 48550
+;;;;;; 273934 224000))
;;; Generated autoloads from org/org-colview.el
(autoload 'org-columns-remove-overlays "org-colview" "\
;;;***
\f
-;;;### (autoloads nil "org-compat" "org/org-compat.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "org-compat" "org/org-compat.el" (21604 48550
+;;;;;; 273934 224000))
;;; Generated autoloads from org/org-compat.el
(autoload 'org-check-version "org-compat" "\
;;;***
\f
-;;;### (autoloads nil "org-macs" "org/org-macs.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "org-macs" "org/org-macs.el" (21604 48550 277934
+;;;;;; 224000))
;;; Generated autoloads from org/org-macs.el
(autoload 'org-load-noerror-mustsuffix "org-macs" "\
;;;***
\f
-;;;### (autoloads nil "org-version" "org/org-version.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "org-version" "org/org-version.el" (21604 48550
+;;;;;; 281934 224000))
;;; Generated autoloads from org/org-version.el
(autoload 'org-release "org-version" "\
;;;***
\f
-;;;### (autoloads nil "outline" "outline.el" (21626 64704 823711
-;;;;;; 579000))
+;;;### (autoloads nil "outline" "outline.el" (21631 35966 895121
+;;;;;; 869000))
;;; Generated autoloads from outline.el
(put 'outline-regexp 'safe-local-variable 'stringp)
(put 'outline-heading-end-regexp 'safe-local-variable 'stringp)
;;;***
\f
-;;;### (autoloads nil "package" "emacs-lisp/package.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "package" "emacs-lisp/package.el" (21651 20707
+;;;;;; 168225 752000))
;;; Generated autoloads from emacs-lisp/package.el
(push (purecopy '(package 1 0 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "paren" "paren.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "paren" "paren.el" (21604 48550 301934 225000))
;;; Generated autoloads from paren.el
(defvar show-paren-mode nil "\
;;;***
\f
-;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "parse-time" "calendar/parse-time.el" (21604
+;;;;;; 48549 953934 212000))
;;; Generated autoloads from calendar/parse-time.el
(put 'parse-time-rules 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "pascal" "progmodes/pascal.el" (21604 48550
+;;;;;; 349934 227000))
;;; Generated autoloads from progmodes/pascal.el
(autoload 'pascal-mode "pascal" "\
;;;***
\f
-;;;### (autoloads nil "password-cache" "password-cache.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "password-cache" "password-cache.el" (21604
+;;;;;; 48550 301934 225000))
;;; Generated autoloads from password-cache.el
(defvar password-cache t "\
;;;***
\f
-;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "pcase" "emacs-lisp/pcase.el" (21604 48550
+;;;;;; 21934 214000))
;;; Generated autoloads from emacs-lisp/pcase.el
(autoload 'pcase "pcase" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcmpl-cvs" "pcmpl-cvs.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from pcmpl-cvs.el
(autoload 'pcomplete/cvs "pcmpl-cvs" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcmpl-gnu" "pcmpl-gnu.el" (21631 35966 895121
+;;;;;; 869000))
;;; Generated autoloads from pcmpl-gnu.el
(autoload 'pcomplete/gzip "pcmpl-gnu" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "pcmpl-linux" "pcmpl-linux.el" (21604 48550
+;;;;;; 301934 225000))
;;; Generated autoloads from pcmpl-linux.el
(autoload 'pcomplete/kill "pcmpl-linux" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcmpl-rpm" "pcmpl-rpm.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from pcmpl-rpm.el
(autoload 'pcomplete/rpm "pcmpl-rpm" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcmpl-unix" "pcmpl-unix.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from pcmpl-unix.el
(autoload 'pcomplete/cd "pcmpl-unix" "\
;;;***
\f
-;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcmpl-x" "pcmpl-x.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from pcmpl-x.el
(autoload 'pcomplete/tlmgr "pcmpl-x" "\
;;;***
\f
-;;;### (autoloads nil "pcomplete" "pcomplete.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "pcomplete" "pcomplete.el" (21604 48550 301934
+;;;;;; 225000))
;;; Generated autoloads from pcomplete.el
(autoload 'pcomplete "pcomplete" "\
;;;***
\f
-;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "pcvs" "vc/pcvs.el" (21604 48550 429934 230000))
;;; Generated autoloads from vc/pcvs.el
(autoload 'cvs-checkout "pcvs" "\
;;;***
\f
-;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "pcvs-defs" "vc/pcvs-defs.el" (21604 48550
+;;;;;; 429934 230000))
;;; Generated autoloads from vc/pcvs-defs.el
(defvar cvs-global-menu (let ((m (make-sparse-keymap "PCL-CVS"))) (define-key m [status] `(menu-item ,(purecopy "Directory Status") cvs-status :help ,(purecopy "A more verbose status of a workarea"))) (define-key m [checkout] `(menu-item ,(purecopy "Checkout Module") cvs-checkout :help ,(purecopy "Check out a module from the repository"))) (define-key m [update] `(menu-item ,(purecopy "Update Directory") cvs-update :help ,(purecopy "Fetch updates from the repository"))) (define-key m [examine] `(menu-item ,(purecopy "Examine Directory") cvs-examine :help ,(purecopy "Examine the current state of a workarea"))) (fset 'cvs-global-menu m)) "\
;;;***
\f
-;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "perl-mode" "progmodes/perl-mode.el" (21604
+;;;;;; 48550 353934 227000))
;;; Generated autoloads from progmodes/perl-mode.el
(put 'perl-indent-level 'safe-local-variable 'integerp)
(put 'perl-continued-statement-offset 'safe-local-variable 'integerp)
;;;***
\f
-;;;### (autoloads nil "picture" "textmodes/picture.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "picture" "textmodes/picture.el" (21604 48550
+;;;;;; 397934 228000))
;;; Generated autoloads from textmodes/picture.el
(autoload 'picture-mode "picture" "\
;;;***
\f
-;;;### (autoloads nil "plstore" "gnus/plstore.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "plstore" "gnus/plstore.el" (21604 48550 117934
+;;;;;; 218000))
;;; Generated autoloads from gnus/plstore.el
(autoload 'plstore-open "plstore" "\
;;;***
\f
-;;;### (autoloads nil "po" "textmodes/po.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "po" "textmodes/po.el" (21604 48550 397934
+;;;;;; 228000))
;;; Generated autoloads from textmodes/po.el
(autoload 'po-find-file-coding-system "po" "\
;;;***
\f
-;;;### (autoloads nil "pong" "play/pong.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "pong" "play/pong.el" (21604 48550 305934 225000))
;;; Generated autoloads from play/pong.el
(autoload 'pong "pong" "\
;;;***
\f
-;;;### (autoloads nil "pop3" "gnus/pop3.el" (21619 5051 260148 536000))
+;;;### (autoloads nil "pop3" "gnus/pop3.el" (21631 35966 859121 868000))
;;; Generated autoloads from gnus/pop3.el
(autoload 'pop3-movemail "pop3" "\
;;;***
\f
-;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "pp" "emacs-lisp/pp.el" (21604 48550 21934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/pp.el
(autoload 'pp-to-string "pp" "\
;;;***
\f
-;;;### (autoloads nil "printing" "printing.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "printing" "printing.el" (21604 48550 309934
+;;;;;; 225000))
;;; Generated autoloads from printing.el
(push (purecopy '(printing 6 9 3)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "proced" "proced.el" (21609 55608 852266 580000))
+;;;### (autoloads nil "proced" "proced.el" (21631 35966 895121 869000))
;;; Generated autoloads from proced.el
(autoload 'proced "proced" "\
;;;***
\f
-;;;### (autoloads nil "profiler" "profiler.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "profiler" "profiler.el" (21604 48550 309934
+;;;;;; 225000))
;;; Generated autoloads from profiler.el
(autoload 'profiler-start "profiler" "\
;;;***
\f
-;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "prolog" "progmodes/prolog.el" (21604 48550
+;;;;;; 353934 227000))
;;; Generated autoloads from progmodes/prolog.el
(autoload 'prolog-mode "prolog" "\
;;;***
\f
-;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ps-bdf" "ps-bdf.el" (21604 48550 369934 227000))
;;; Generated autoloads from ps-bdf.el
(defvar bdf-directory-list (if (memq system-type '(ms-dos windows-nt)) (list (expand-file-name "fonts/bdf" installation-directory)) '("/usr/local/share/emacs/fonts/bdf")) "\
;;;***
\f
-;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "ps-mode" "progmodes/ps-mode.el" (21604 48550
+;;;;;; 353934 227000))
;;; Generated autoloads from progmodes/ps-mode.el
(push (purecopy '(ps-mode 1 1 9)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "ps-print" "ps-print.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "ps-print" "ps-print.el" (21604 48550 369934
+;;;;;; 227000))
;;; Generated autoloads from ps-print.el
(push (purecopy '(ps-print 7 3 5)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "pulse" "cedet/pulse.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "pulse" "cedet/pulse.el" (21640 32530 958334
+;;;;;; 457000))
;;; Generated autoloads from cedet/pulse.el
(push (purecopy '(pulse 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "python" "progmodes/python.el" (21625 43838
-;;;;;; 980113 968000))
+;;;### (autoloads nil "python" "progmodes/python.el" (21645 25761
+;;;;;; 809186 828000))
;;; Generated autoloads from progmodes/python.el
(push (purecopy '(python 0 24 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "qp" "gnus/qp.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "qp" "gnus/qp.el" (21604 48550 117934 218000))
;;; Generated autoloads from gnus/qp.el
(autoload 'quoted-printable-decode-region "qp" "\
;;;***
\f
-;;;### (autoloads nil "quail" "international/quail.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "quail" "international/quail.el" (21604 48550
+;;;;;; 141934 219000))
;;; Generated autoloads from international/quail.el
(autoload 'quail-title "quail" "\
;;;***
\f
-;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "quail/hangul" "leim/quail/hangul.el" (21604
+;;;;;; 48550 173934 220000))
;;; Generated autoloads from leim/quail/hangul.el
(autoload 'hangul-input-method-activate "quail/hangul" "\
;;;***
\f
;;;### (autoloads nil "quail/uni-input" "leim/quail/uni-input.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 177934 220000))
;;; Generated autoloads from leim/quail/uni-input.el
(autoload 'ucs-input-activate "quail/uni-input" "\
;;;***
\f
-;;;### (autoloads nil "quickurl" "net/quickurl.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "quickurl" "net/quickurl.el" (21604 48550 221934
+;;;;;; 222000))
;;; Generated autoloads from net/quickurl.el
(defconst quickurl-reread-hook-postfix "\n;; Local Variables:\n;; eval: (progn (require 'quickurl) (add-hook 'local-write-file-hooks (lambda () (quickurl-read) nil)))\n;; End:\n" "\
;;;***
\f
-;;;### (autoloads nil "rcirc" "net/rcirc.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "rcirc" "net/rcirc.el" (21604 48550 221934
+;;;;;; 222000))
;;; Generated autoloads from net/rcirc.el
(autoload 'rcirc "rcirc" "\
;;;***
\f
-;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "re-builder" "emacs-lisp/re-builder.el" (21604
+;;;;;; 48550 21934 214000))
;;; Generated autoloads from emacs-lisp/re-builder.el
(defalias 'regexp-builder 're-builder)
;;;***
\f
-;;;### (autoloads nil "recentf" "recentf.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "recentf" "recentf.el" (21604 48550 369934
+;;;;;; 227000))
;;; Generated autoloads from recentf.el
(defvar recentf-mode nil "\
;;;***
\f
-;;;### (autoloads nil "rect" "rect.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "rect" "rect.el" (21604 48550 369934 227000))
;;; Generated autoloads from rect.el
(autoload 'delete-rectangle "rect" "\
;;;***
\f
-;;;### (autoloads nil "refill" "textmodes/refill.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "refill" "textmodes/refill.el" (21604 48550
+;;;;;; 401934 229000))
;;; Generated autoloads from textmodes/refill.el
(autoload 'refill-mode "refill" "\
;;;***
\f
-;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "reftex" "textmodes/reftex.el" (21604 48550
+;;;;;; 405934 229000))
;;; Generated autoloads from textmodes/reftex.el
(autoload 'reftex-citation "reftex-cite" nil t)
(autoload 'reftex-all-document-files "reftex-parse")
;;;***
\f
-;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "reftex-vars" "textmodes/reftex-vars.el" (21604
+;;;;;; 48550 401934 229000))
;;; Generated autoloads from textmodes/reftex-vars.el
(put 'reftex-vref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
(put 'reftex-fref-is-default 'safe-local-variable (lambda (x) (or (stringp x) (symbolp x))))
;;;***
\f
-;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "regexp-opt" "emacs-lisp/regexp-opt.el" (21604
+;;;;;; 48550 21934 214000))
;;; Generated autoloads from emacs-lisp/regexp-opt.el
(autoload 'regexp-opt "regexp-opt" "\
;;;***
\f
-;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "regi" "emacs-lisp/regi.el" (21604 48550 21934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/regi.el
(push (purecopy '(regi 1 8)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "remember" "textmodes/remember.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "remember" "textmodes/remember.el" (21604 48550
+;;;;;; 405934 229000))
;;; Generated autoloads from textmodes/remember.el
(push (purecopy '(remember 2 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "repeat" "repeat.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "repeat" "repeat.el" (21604 48550 373934 228000))
;;; Generated autoloads from repeat.el
(push (purecopy '(repeat 0 51)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "reporter" "mail/reporter.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "reporter" "mail/reporter.el" (21604 48550
+;;;;;; 185934 221000))
;;; Generated autoloads from mail/reporter.el
(autoload 'reporter-submit-bug-report "reporter" "\
;;;***
\f
-;;;### (autoloads nil "reposition" "reposition.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "reposition" "reposition.el" (21604 48550 373934
+;;;;;; 228000))
;;; Generated autoloads from reposition.el
(autoload 'reposition-window "reposition" "\
;;;***
\f
-;;;### (autoloads nil "reveal" "reveal.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "reveal" "reveal.el" (21604 48550 373934 228000))
;;; Generated autoloads from reveal.el
(autoload 'reveal-mode "reveal" "\
;;;***
\f
-;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "ring" "emacs-lisp/ring.el" (21604 48550 21934
+;;;;;; 214000))
;;; Generated autoloads from emacs-lisp/ring.el
(autoload 'ring-p "ring" "\
;;;***
\f
-;;;### (autoloads nil "rlogin" "net/rlogin.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "rlogin" "net/rlogin.el" (21604 48550 221934
+;;;;;; 222000))
;;; Generated autoloads from net/rlogin.el
(autoload 'rlogin "rlogin" "\
;;;***
\f
-;;;### (autoloads nil "rmail" "mail/rmail.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "rmail" "mail/rmail.el" (21604 48550 185934
+;;;;;; 221000))
;;; Generated autoloads from mail/rmail.el
(defvar rmail-file-name (purecopy "~/RMAIL") "\
;;;***
\f
-;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "rmailout" "mail/rmailout.el" (21604 48550
+;;;;;; 185934 221000))
;;; Generated autoloads from mail/rmailout.el
(put 'rmail-output-file-alist 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "rng-cmpct" "nxml/rng-cmpct.el" (21604 48550
+;;;;;; 237934 223000))
;;; Generated autoloads from nxml/rng-cmpct.el
(autoload 'rng-c-load-schema "rng-cmpct" "\
;;;***
\f
-;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "rng-nxml" "nxml/rng-nxml.el" (21604 48550
+;;;;;; 241934 223000))
;;; Generated autoloads from nxml/rng-nxml.el
(autoload 'rng-nxml-mode-init "rng-nxml" "\
;;;***
\f
-;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "rng-valid" "nxml/rng-valid.el" (21604 48550
+;;;;;; 241934 223000))
;;; Generated autoloads from nxml/rng-valid.el
(autoload 'rng-validate-mode "rng-valid" "\
;;;***
\f
-;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "rng-xsd" "nxml/rng-xsd.el" (21604 48550 241934
+;;;;;; 223000))
;;; Generated autoloads from nxml/rng-xsd.el
(put 'http://www\.w3\.org/2001/XMLSchema-datatypes 'rng-dt-compile 'rng-xsd-compile)
;;;***
\f
-;;;### (autoloads nil "robin" "international/robin.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "robin" "international/robin.el" (21604 48550
+;;;;;; 141934 219000))
;;; Generated autoloads from international/robin.el
(autoload 'robin-define-package "robin" "\
;;;***
\f
-;;;### (autoloads nil "rot13" "rot13.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "rot13" "rot13.el" (21604 48550 373934 228000))
;;; Generated autoloads from rot13.el
(autoload 'rot13 "rot13" "\
;;;***
\f
-;;;### (autoloads nil "rst" "textmodes/rst.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "rst" "textmodes/rst.el" (21604 48550 405934
+;;;;;; 229000))
;;; Generated autoloads from textmodes/rst.el
(add-to-list 'auto-mode-alist (purecopy '("\\.re?st\\'" . rst-mode)))
;;;***
\f
-;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "ruby-mode" "progmodes/ruby-mode.el" (21659
+;;;;;; 61733 222949 164000))
;;; Generated autoloads from progmodes/ruby-mode.el
(push (purecopy '(ruby-mode 1 2)) package--builtin-versions)
\(fn)" t nil)
-(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." "rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|gemspec\\|podspec" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
+(add-to-list 'auto-mode-alist (cons (purecopy (concat "\\(?:\\." "rb\\|ru\\|rake\\|thor" "\\|jbuilder\\|rabl\\|gemspec\\|podspec" "\\|/" "\\(?:Gem\\|Rake\\|Cap\\|Thor" "\\|Puppet\\|Berks" "\\|Vagrant\\|Guard\\|Pod\\)file" "\\)\\'")) 'ruby-mode))
(dolist (name (list "ruby" "rbx" "jruby" "ruby1.9" "ruby1.8")) (add-to-list 'interpreter-mode-alist (cons (purecopy name) 'ruby-mode)))
;;;***
\f
-;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "ruler-mode" "ruler-mode.el" (21604 48550 373934
+;;;;;; 228000))
;;; Generated autoloads from ruler-mode.el
(push (purecopy '(ruler-mode 1 6)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "rx" "emacs-lisp/rx.el" (21604 48550 25934
+;;;;;; 215000))
;;; Generated autoloads from emacs-lisp/rx.el
(autoload 'rx-to-string "rx" "\
;;;***
\f
-;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "sasl-ntlm" "net/sasl-ntlm.el" (21604 48550
+;;;;;; 221934 222000))
;;; Generated autoloads from net/sasl-ntlm.el
(push (purecopy '(sasl 1 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "savehist" "savehist.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "savehist" "savehist.el" (21604 48550 373934
+;;;;;; 228000))
;;; Generated autoloads from savehist.el
(push (purecopy '(savehist 24)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "scheme" "progmodes/scheme.el" (21604 48550
+;;;;;; 353934 227000))
;;; Generated autoloads from progmodes/scheme.el
(autoload 'scheme-mode "scheme" "\
;;;***
\f
-;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "score-mode" "gnus/score-mode.el" (21604 48550
+;;;;;; 121934 218000))
;;; Generated autoloads from gnus/score-mode.el
(autoload 'gnus-score-mode "score-mode" "\
;;;***
\f
-;;;### (autoloads nil "scroll-all" "scroll-all.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "scroll-all" "scroll-all.el" (21604 48550 373934
+;;;;;; 228000))
;;; Generated autoloads from scroll-all.el
(defvar scroll-all-mode nil "\
;;;***
\f
-;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "scroll-lock" "scroll-lock.el" (21604 48550
+;;;;;; 373934 228000))
;;; Generated autoloads from scroll-lock.el
(autoload 'scroll-lock-mode "scroll-lock" "\
;;;***
\f
-;;;### (autoloads nil "secrets" "net/secrets.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "secrets" "net/secrets.el" (21604 48550 221934
+;;;;;; 222000))
;;; Generated autoloads from net/secrets.el
(when (featurep 'dbusbind)
(autoload 'secrets-show-secrets "secrets" nil t))
;;;***
\f
-;;;### (autoloads nil "semantic" "cedet/semantic.el" (21609 55608
-;;;;;; 852266 580000))
+;;;### (autoloads nil "semantic" "cedet/semantic.el" (21645 25875
+;;;;;; 821189 881000))
;;; Generated autoloads from cedet/semantic.el
(push (purecopy '(semantic 2 2)) package--builtin-versions)
;;;***
\f
;;;### (autoloads nil "semantic/bovine/grammar" "cedet/semantic/bovine/grammar.el"
-;;;;;; (21607 54477 800124 118000))
+;;;;;; (21604 48549 969934 213000))
;;; Generated autoloads from cedet/semantic/bovine/grammar.el
(autoload 'bovine-grammar-mode "semantic/bovine/grammar" "\
;;;***
\f
;;;### (autoloads nil "semantic/wisent/grammar" "cedet/semantic/wisent/grammar.el"
-;;;;;; (21607 54477 800124 118000))
+;;;;;; (21604 48549 981934 213000))
;;; Generated autoloads from cedet/semantic/wisent/grammar.el
(autoload 'wisent-grammar-mode "semantic/wisent/grammar" "\
;;;***
\f
-;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "sendmail" "mail/sendmail.el" (21604 48550
+;;;;;; 189934 221000))
;;; Generated autoloads from mail/sendmail.el
(defvar mail-from-style 'default "\
;;;***
\f
-;;;### (autoloads nil "server" "server.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "seq" "emacs-lisp/seq.el" (21648 55877 412874
+;;;;;; 916000))
+;;; Generated autoloads from emacs-lisp/seq.el
+(push (purecopy '(seq 1 0)) package--builtin-versions)
+
+;;;***
+\f
+;;;### (autoloads nil "server" "server.el" (21604 48550 373934 228000))
;;; Generated autoloads from server.el
(put 'server-host 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "ses" "ses.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "ses" "ses.el" (21604 48550 377934 228000))
;;; Generated autoloads from ses.el
(autoload 'ses-mode "ses" "\
;;;***
\f
-;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21623
-;;;;;; 2108 292281 129000))
+;;;### (autoloads nil "sgml-mode" "textmodes/sgml-mode.el" (21631
+;;;;;; 35966 915121 870000))
;;; Generated autoloads from textmodes/sgml-mode.el
(autoload 'sgml-mode "sgml-mode" "\
;;;***
\f
-;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "sh-script" "progmodes/sh-script.el" (21637
+;;;;;; 50476 679217 121000))
;;; Generated autoloads from progmodes/sh-script.el
(push (purecopy '(sh-script 2 0 6)) package--builtin-versions)
(put 'sh-shell 'safe-local-variable 'symbolp)
;;;***
\f
-;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "shadow" "emacs-lisp/shadow.el" (21604 48550
+;;;;;; 25934 215000))
;;; Generated autoloads from emacs-lisp/shadow.el
(autoload 'list-load-path-shadows "shadow" "\
;;;***
\f
-;;;### (autoloads nil "shadowfile" "shadowfile.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "shadowfile" "shadowfile.el" (21604 48550 377934
+;;;;;; 228000))
;;; Generated autoloads from shadowfile.el
(autoload 'shadow-define-cluster "shadowfile" "\
;;;***
\f
-;;;### (autoloads nil "shell" "shell.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "shell" "shell.el" (21659 61733 222949 164000))
;;; Generated autoloads from shell.el
(defvar shell-dumb-shell-regexp (purecopy "cmd\\(proxy\\)?\\.exe") "\
;;;***
\f
-;;;### (autoloads nil "shr" "net/shr.el" (21623 2108 292281 129000))
+;;;### (autoloads nil "shr" "net/shr.el" (21646 54881 267721 623000))
;;; Generated autoloads from net/shr.el
(autoload 'shr-render-region "shr" "\
;;;***
\f
-;;;### (autoloads nil "sieve" "gnus/sieve.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "sieve" "gnus/sieve.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from gnus/sieve.el
(autoload 'sieve-manage "sieve" "\
;;;***
\f
-;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "sieve-mode" "gnus/sieve-mode.el" (21604 48550
+;;;;;; 121934 218000))
;;; Generated autoloads from gnus/sieve-mode.el
(autoload 'sieve-mode "sieve-mode" "\
;;;***
\f
-;;;### (autoloads nil "simula" "progmodes/simula.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "simula" "progmodes/simula.el" (21604 48550
+;;;;;; 357934 227000))
;;; Generated autoloads from progmodes/simula.el
(autoload 'simula-mode "simula" "\
;;;***
\f
-;;;### (autoloads nil "skeleton" "skeleton.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "skeleton" "skeleton.el" (21604 48550 377934
+;;;;;; 228000))
;;; Generated autoloads from skeleton.el
(defvar skeleton-filter-function 'identity "\
;;;***
\f
-;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21628 45530
-;;;;;; 160140 360000))
+;;;### (autoloads nil "smerge-mode" "vc/smerge-mode.el" (21631 35966
+;;;;;; 923121 870000))
;;; Generated autoloads from vc/smerge-mode.el
(autoload 'smerge-ediff "smerge-mode" "\
;;;***
\f
-;;;### (autoloads nil "smiley" "gnus/smiley.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "smiley" "gnus/smiley.el" (21604 48550 121934
+;;;;;; 218000))
;;; Generated autoloads from gnus/smiley.el
(autoload 'smiley-region "smiley" "\
;;;***
\f
-;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21619 5051 260148
-;;;;;; 536000))
+;;;### (autoloads nil "smtpmail" "mail/smtpmail.el" (21631 35966
+;;;;;; 875121 868000))
;;; Generated autoloads from mail/smtpmail.el
(autoload 'smtpmail-send-it "smtpmail" "\
;;;***
\f
-;;;### (autoloads nil "snake" "play/snake.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "snake" "play/snake.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/snake.el
(autoload 'snake "snake" "\
;;;***
\f
-;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "snmp-mode" "net/snmp-mode.el" (21604 48550
+;;;;;; 225934 222000))
;;; Generated autoloads from net/snmp-mode.el
(autoload 'snmp-mode "snmp-mode" "\
;;;***
\f
-;;;### (autoloads nil "solar" "calendar/solar.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "solar" "calendar/solar.el" (21604 48549 953934
+;;;;;; 212000))
;;; Generated autoloads from calendar/solar.el
(autoload 'sunrise-sunset "solar" "\
;;;***
\f
-;;;### (autoloads nil "solitaire" "play/solitaire.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "solitaire" "play/solitaire.el" (21604 48550
+;;;;;; 305934 225000))
;;; Generated autoloads from play/solitaire.el
(autoload 'solitaire "solitaire" "\
;;;***
\f
-;;;### (autoloads nil "sort" "sort.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "sort" "sort.el" (21604 48550 377934 228000))
;;; Generated autoloads from sort.el
(put 'sort-fold-case 'safe-local-variable 'booleanp)
;;;***
\f
-;;;### (autoloads nil "spam" "gnus/spam.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "spam" "gnus/spam.el" (21604 48550 121934 218000))
;;; Generated autoloads from gnus/spam.el
(autoload 'spam-initialize "spam" "\
;;;***
\f
-;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "spam-report" "gnus/spam-report.el" (21604
+;;;;;; 48550 121934 218000))
;;; Generated autoloads from gnus/spam-report.el
(autoload 'spam-report-process-queue "spam-report" "\
;;;***
\f
-;;;### (autoloads nil "speedbar" "speedbar.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "speedbar" "speedbar.el" (21604 48550 381934
+;;;;;; 228000))
;;; Generated autoloads from speedbar.el
(defalias 'speedbar 'speedbar-frame-mode)
;;;***
\f
-;;;### (autoloads nil "spook" "play/spook.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "spook" "play/spook.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/spook.el
(autoload 'spook "spook" "\
;;;***
\f
-;;;### (autoloads nil "sql" "progmodes/sql.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "sql" "progmodes/sql.el" (21604 48550 357934
+;;;;;; 227000))
;;; Generated autoloads from progmodes/sql.el
(push (purecopy '(sql 3 4)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "srecode" "cedet/srecode.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "srecode" "cedet/srecode.el" (21604 48549 981934
+;;;;;; 213000))
;;; Generated autoloads from cedet/srecode.el
(push (purecopy '(srecode 1 2)) package--builtin-versions)
;;;***
\f
;;;### (autoloads nil "srecode/srt-mode" "cedet/srecode/srt-mode.el"
-;;;;;; (21607 54477 800124 118000))
+;;;;;; (21659 61733 202949 164000))
;;; Generated autoloads from cedet/srecode/srt-mode.el
(autoload 'srecode-template-mode "srecode/srt-mode" "\
;;;***
\f
-;;;### (autoloads nil "starttls" "gnus/starttls.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "starttls" "gnus/starttls.el" (21604 48550
+;;;;;; 121934 218000))
;;; Generated autoloads from gnus/starttls.el
(autoload 'starttls-open-stream "starttls" "\
;;;***
\f
-;;;### (autoloads nil "strokes" "strokes.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "strokes" "strokes.el" (21604 48550 381934
+;;;;;; 228000))
;;; Generated autoloads from strokes.el
(autoload 'strokes-global-set-stroke "strokes" "\
;;;***
\f
-;;;### (autoloads nil "studly" "play/studly.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "studly" "play/studly.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/studly.el
(autoload 'studlify-region "studly" "\
;;;***
\f
-;;;### (autoloads nil "subword" "progmodes/subword.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "subword" "progmodes/subword.el" (21604 48550
+;;;;;; 357934 227000))
;;; Generated autoloads from progmodes/subword.el
(define-obsolete-function-alias 'capitalized-words-mode 'subword-mode "25.1")
;;;***
\f
-;;;### (autoloads nil "supercite" "mail/supercite.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "supercite" "mail/supercite.el" (21604 48550
+;;;;;; 189934 221000))
;;; Generated autoloads from mail/supercite.el
(autoload 'sc-cite-original "supercite" "\
;;;***
\f
-;;;### (autoloads nil "t-mouse" "t-mouse.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "t-mouse" "t-mouse.el" (21604 48550 385934
+;;;;;; 228000))
;;; Generated autoloads from t-mouse.el
(define-obsolete-function-alias 't-mouse-mode 'gpm-mouse-mode "23.1")
;;;***
\f
-;;;### (autoloads nil "tabify" "tabify.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "tabify" "tabify.el" (21604 48550 385934 228000))
;;; Generated autoloads from tabify.el
(autoload 'untabify "tabify" "\
;;;***
\f
-;;;### (autoloads nil "table" "textmodes/table.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "table" "textmodes/table.el" (21604 48550 409934
+;;;;;; 229000))
;;; Generated autoloads from textmodes/table.el
(defvar table-cell-map-hook nil "\
;;;***
\f
-;;;### (autoloads nil "talk" "talk.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "talk" "talk.el" (21604 48550 385934 228000))
;;; Generated autoloads from talk.el
(autoload 'talk-connect "talk" "\
;;;***
\f
-;;;### (autoloads nil "tar-mode" "tar-mode.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "tar-mode" "tar-mode.el" (21604 48550 385934
+;;;;;; 228000))
;;; Generated autoloads from tar-mode.el
(autoload 'tar-mode "tar-mode" "\
;;;***
\f
-;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "tcl" "progmodes/tcl.el" (21604 48550 357934
+;;;;;; 227000))
;;; Generated autoloads from progmodes/tcl.el
(autoload 'tcl-mode "tcl" "\
;;;***
\f
-;;;### (autoloads nil "telnet" "net/telnet.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "telnet" "net/telnet.el" (21604 48550 225934
+;;;;;; 222000))
;;; Generated autoloads from net/telnet.el
(autoload 'telnet "telnet" "\
;;;***
\f
-;;;### (autoloads nil "term" "term.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "term" "term.el" (21604 48550 385934 228000))
;;; Generated autoloads from term.el
(autoload 'make-term "term" "\
;;;***
\f
-;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "testcover" "emacs-lisp/testcover.el" (21604
+;;;;;; 48550 25934 215000))
;;; Generated autoloads from emacs-lisp/testcover.el
(autoload 'testcover-this-defun "testcover" "\
;;;***
\f
-;;;### (autoloads nil "tetris" "play/tetris.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "tetris" "play/tetris.el" (21604 48550 305934
+;;;;;; 225000))
;;; Generated autoloads from play/tetris.el
(push (purecopy '(tetris 2 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21611 10938
-;;;;;; 204397 226000))
+;;;### (autoloads nil "tex-mode" "textmodes/tex-mode.el" (21647 39327
+;;;;;; 896553 751000))
;;; Generated autoloads from textmodes/tex-mode.el
(defvar tex-shell-file-name nil "\
;;;***
\f
-;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "texinfmt" "textmodes/texinfmt.el" (21604 48550
+;;;;;; 409934 229000))
;;; Generated autoloads from textmodes/texinfmt.el
(autoload 'texinfo-format-buffer "texinfmt" "\
;;;***
\f
-;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "texinfo" "textmodes/texinfo.el" (21604 48550
+;;;;;; 409934 229000))
;;; Generated autoloads from textmodes/texinfo.el
(defvar texinfo-open-quote (purecopy "``") "\
;;;***
\f
-;;;### (autoloads nil "thai-util" "language/thai-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "thai-util" "language/thai-util.el" (21604
+;;;;;; 48550 153934 219000))
;;; Generated autoloads from language/thai-util.el
(autoload 'thai-compose-region "thai-util" "\
;;;***
\f
-;;;### (autoloads nil "thingatpt" "thingatpt.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "thingatpt" "thingatpt.el" (21604 48550 413934
+;;;;;; 229000))
;;; Generated autoloads from thingatpt.el
(autoload 'forward-thing "thingatpt" "\
;;;***
\f
-;;;### (autoloads nil "thumbs" "thumbs.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "thumbs" "thumbs.el" (21604 48550 413934 229000))
;;; Generated autoloads from thumbs.el
(autoload 'thumbs-find-thumb "thumbs" "\
;;;***
\f
-;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "tibet-util" "language/tibet-util.el" (21604
+;;;;;; 48550 157934 220000))
;;; Generated autoloads from language/tibet-util.el
(autoload 'tibetan-char-p "tibet-util" "\
;;;***
\f
-;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21611 10938
-;;;;;; 204397 226000))
+;;;### (autoloads nil "tildify" "textmodes/tildify.el" (21631 35966
+;;;;;; 919121 870000))
;;; Generated autoloads from textmodes/tildify.el
(push (purecopy '(tildify 4 5 7)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "time" "time.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "time" "time.el" (21604 48550 413934 229000))
;;; Generated autoloads from time.el
(defvar display-time-day-and-date nil "\
;;;***
\f
-;;;### (autoloads nil "time-date" "calendar/time-date.el" (21611
-;;;;;; 10937 700236 3000))
+;;;### (autoloads nil "time-date" "calendar/time-date.el" (21631
+;;;;;; 35966 803121 866000))
;;; Generated autoloads from calendar/time-date.el
(autoload 'date-to-time "time-date" "\
;;;***
\f
-;;;### (autoloads nil "time-stamp" "time-stamp.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "time-stamp" "time-stamp.el" (21604 48550 413934
+;;;;;; 229000))
;;; Generated autoloads from time-stamp.el
(put 'time-stamp-format 'safe-local-variable 'stringp)
(put 'time-stamp-time-zone 'safe-local-variable 'string-or-null-p)
;;;***
\f
-;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "timeclock" "calendar/timeclock.el" (21604
+;;;;;; 48549 957934 212000))
;;; Generated autoloads from calendar/timeclock.el
(push (purecopy '(timeclock 2 6 1)) package--builtin-versions)
;;;***
\f
;;;### (autoloads nil "titdic-cnv" "international/titdic-cnv.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 141934 219000))
;;; Generated autoloads from international/titdic-cnv.el
(autoload 'titdic-convert "titdic-cnv" "\
;;;***
\f
-;;;### (autoloads nil "tmm" "tmm.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "tmm" "tmm.el" (21651 20707 188225 752000))
;;; Generated autoloads from tmm.el
(define-key global-map "\M-`" 'tmm-menubar)
(define-key global-map [menu-bar mouse-1] 'tmm-menubar-mouse)
;;;***
\f
-;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21625
-;;;;;; 43838 483701 627000))
+;;;### (autoloads nil "todo-mode" "calendar/todo-mode.el" (21631
+;;;;;; 35966 807121 866000))
;;; Generated autoloads from calendar/todo-mode.el
(autoload 'todo-show "todo-mode" "\
;;;***
\f
-;;;### (autoloads nil "tool-bar" "tool-bar.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "tool-bar" "tool-bar.el" (21604 48550 413934
+;;;;;; 229000))
;;; Generated autoloads from tool-bar.el
(autoload 'toggle-tool-bar-mode-from-frame "tool-bar" "\
;;;***
\f
-;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21607 54477 800124
-;;;;;; 118000))
+;;;### (autoloads nil "tq" "emacs-lisp/tq.el" (21604 48550 25934
+;;;;;; 215000))
;;; Generated autoloads from emacs-lisp/tq.el
(autoload 'tq-create "tq" "\
;;;***
\f
-;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "trace" "emacs-lisp/trace.el" (21604 48550
+;;;;;; 25934 215000))
;;; Generated autoloads from emacs-lisp/trace.el
(defvar trace-buffer "*trace-output*" "\
;;;***
\f
-;;;### (autoloads nil "tramp" "net/tramp.el" (21625 43838 483701
-;;;;;; 627000))
+;;;### (autoloads nil "tramp" "net/tramp.el" (21640 32530 974334
+;;;;;; 457000))
;;; Generated autoloads from net/tramp.el
(defvar tramp-mode t "\
;;;***
\f
-;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "tramp-ftp" "net/tramp-ftp.el" (21604 48550
+;;;;;; 225934 222000))
;;; Generated autoloads from net/tramp-ftp.el
(autoload 'tramp-ftp-enable-ange-ftp "tramp-ftp" "\
;;;***
\f
-;;;### (autoloads nil "tutorial" "tutorial.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "tutorial" "tutorial.el" (21604 48550 417934
+;;;;;; 229000))
;;; Generated autoloads from tutorial.el
(autoload 'help-with-tutorial "tutorial" "\
;;;***
\f
-;;;### (autoloads nil "tv-util" "language/tv-util.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "tv-util" "language/tv-util.el" (21604 48550
+;;;;;; 157934 220000))
;;; Generated autoloads from language/tv-util.el
(autoload 'tai-viet-composition-function "tv-util" "\
;;;***
\f
-;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "two-column" "textmodes/two-column.el" (21604
+;;;;;; 48550 413934 229000))
;;; Generated autoloads from textmodes/two-column.el
(autoload '2C-command "two-column" () t 'keymap)
(global-set-key "\C-x6" '2C-command)
;;;***
\f
-;;;### (autoloads nil "type-break" "type-break.el" (21609 55608 852266
-;;;;;; 580000))
+;;;### (autoloads nil "type-break" "type-break.el" (21631 35966 919121
+;;;;;; 870000))
;;; Generated autoloads from type-break.el
(defvar type-break-mode nil "\
;;;***
\f
-;;;### (autoloads nil "uce" "mail/uce.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "uce" "mail/uce.el" (21604 48550 189934 221000))
;;; Generated autoloads from mail/uce.el
(autoload 'uce-reply-to-uce "uce" "\
;;;***
\f
;;;### (autoloads nil "ucs-normalize" "international/ucs-normalize.el"
-;;;;;; (21607 54478 300138 641000))
+;;;;;; (21604 48550 141934 219000))
;;; Generated autoloads from international/ucs-normalize.el
(autoload 'ucs-normalize-NFD-region "ucs-normalize" "\
;;;***
\f
-;;;### (autoloads nil "underline" "textmodes/underline.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "underline" "textmodes/underline.el" (21604
+;;;;;; 48550 413934 229000))
;;; Generated autoloads from textmodes/underline.el
(autoload 'underline-region "underline" "\
;;;***
\f
-;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "unrmail" "mail/unrmail.el" (21604 48550 189934
+;;;;;; 221000))
;;; Generated autoloads from mail/unrmail.el
(autoload 'batch-unrmail "unrmail" "\
;;;***
\f
-;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21607 54477
-;;;;;; 800124 118000))
+;;;### (autoloads nil "unsafep" "emacs-lisp/unsafep.el" (21604 48550
+;;;;;; 25934 215000))
;;; Generated autoloads from emacs-lisp/unsafep.el
(autoload 'unsafep "unsafep" "\
;;;***
\f
-;;;### (autoloads nil "url" "url/url.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "url" "url/url.el" (21604 48550 421934 229000))
;;; Generated autoloads from url/url.el
(autoload 'url-retrieve "url" "\
;;;***
\f
-;;;### (autoloads nil "url-auth" "url/url-auth.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-auth" "url/url-auth.el" (21604 48550 417934
+;;;;;; 229000))
;;; Generated autoloads from url/url-auth.el
(autoload 'url-get-authentication "url-auth" "\
;;;***
\f
-;;;### (autoloads nil "url-cache" "url/url-cache.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "url-cache" "url/url-cache.el" (21604 48550
+;;;;;; 417934 229000))
;;; Generated autoloads from url/url-cache.el
(autoload 'url-store-in-cache "url-cache" "\
;;;***
\f
-;;;### (autoloads nil "url-cid" "url/url-cid.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-cid" "url/url-cid.el" (21604 48550 417934
+;;;;;; 229000))
;;; Generated autoloads from url/url-cid.el
(autoload 'url-cid "url-cid" "\
;;;***
\f
-;;;### (autoloads nil "url-dav" "url/url-dav.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-dav" "url/url-dav.el" (21637 50476 683217
+;;;;;; 122000))
;;; Generated autoloads from url/url-dav.el
(autoload 'url-dav-supported-p "url-dav" "\
;;;***
\f
-;;;### (autoloads nil "url-file" "url/url-file.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-file" "url/url-file.el" (21604 48550 417934
+;;;;;; 229000))
;;; Generated autoloads from url/url-file.el
(autoload 'url-file "url-file" "\
;;;***
\f
-;;;### (autoloads nil "url-gw" "url/url-gw.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-gw" "url/url-gw.el" (21604 48550 417934
+;;;;;; 229000))
;;; Generated autoloads from url/url-gw.el
(autoload 'url-gateway-nslookup-host "url-gw" "\
;;;***
\f
-;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "url-handlers" "url/url-handlers.el" (21604
+;;;;;; 48550 417934 229000))
;;; Generated autoloads from url/url-handlers.el
(defvar url-handler-mode nil "\
;;;***
\f
-;;;### (autoloads nil "url-http" "url/url-http.el" (21619 5051 260148
-;;;;;; 536000))
+;;;### (autoloads nil "url-http" "url/url-http.el" (21640 32530 998334
+;;;;;; 458000))
;;; Generated autoloads from url/url-http.el
(autoload 'url-default-expander "url-expand")
;;;***
\f
-;;;### (autoloads nil "url-irc" "url/url-irc.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-irc" "url/url-irc.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-irc.el
(autoload 'url-irc "url-irc" "\
;;;***
\f
-;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-ldap" "url/url-ldap.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-ldap.el
(autoload 'url-ldap "url-ldap" "\
;;;***
\f
-;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "url-mailto" "url/url-mailto.el" (21604 48550
+;;;;;; 421934 229000))
;;; Generated autoloads from url/url-mailto.el
(autoload 'url-mail "url-mailto" "\
;;;***
\f
-;;;### (autoloads nil "url-misc" "url/url-misc.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-misc" "url/url-misc.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-misc.el
(autoload 'url-man "url-misc" "\
;;;***
\f
-;;;### (autoloads nil "url-news" "url/url-news.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-news" "url/url-news.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-news.el
(autoload 'url-news "url-news" "\
;;;***
\f
-;;;### (autoloads nil "url-ns" "url/url-ns.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-ns" "url/url-ns.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-ns.el
(autoload 'isPlainHostName "url-ns" "\
;;;***
\f
-;;;### (autoloads nil "url-parse" "url/url-parse.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "url-parse" "url/url-parse.el" (21604 48550
+;;;;;; 421934 229000))
;;; Generated autoloads from url/url-parse.el
(autoload 'url-recreate-url "url-parse" "\
;;;***
\f
-;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "url-privacy" "url/url-privacy.el" (21604 48550
+;;;;;; 421934 229000))
;;; Generated autoloads from url/url-privacy.el
(autoload 'url-setup-privacy-info "url-privacy" "\
;;;***
\f
-;;;### (autoloads nil "url-queue" "url/url-queue.el" (21619 5051
-;;;;;; 260148 536000))
+;;;### (autoloads nil "url-queue" "url/url-queue.el" (21631 35966
+;;;;;; 919121 870000))
;;; Generated autoloads from url/url-queue.el
(autoload 'url-queue-retrieve "url-queue" "\
;;;***
\f
-;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "url-tramp" "url/url-tramp.el" (21604 48550
+;;;;;; 421934 229000))
;;; Generated autoloads from url/url-tramp.el
(defvar url-tramp-protocols '("ftp" "ssh" "scp" "rsync" "telnet") "\
;;;***
\f
-;;;### (autoloads nil "url-util" "url/url-util.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "url-util" "url/url-util.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from url/url-util.el
(defvar url-debug nil "\
;;;***
\f
-;;;### (autoloads nil "userlock" "userlock.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "userlock" "userlock.el" (21604 48550 421934
+;;;;;; 229000))
;;; Generated autoloads from userlock.el
(autoload 'ask-user-about-lock "userlock" "\
;;;***
\f
-;;;### (autoloads nil "utf-7" "international/utf-7.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "utf-7" "international/utf-7.el" (21604 48550
+;;;;;; 141934 219000))
;;; Generated autoloads from international/utf-7.el
(autoload 'utf-7-post-read-conversion "utf-7" "\
;;;***
\f
-;;;### (autoloads nil "utf7" "gnus/utf7.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "utf7" "gnus/utf7.el" (21604 48550 121934 218000))
;;; Generated autoloads from gnus/utf7.el
(autoload 'utf7-encode "utf7" "\
;;;***
\f
-;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21607 54478
-;;;;;; 300138 641000))
+;;;### (autoloads nil "uudecode" "mail/uudecode.el" (21604 48550
+;;;;;; 189934 221000))
;;; Generated autoloads from mail/uudecode.el
(autoload 'uudecode-decode-region-external "uudecode" "\
;;;***
\f
-;;;### (autoloads nil "vc" "vc/vc.el" (21628 45530 160140 360000))
+;;;### (autoloads nil "vc" "vc/vc.el" (21649 1806 157181 933000))
;;; Generated autoloads from vc/vc.el
(defvar vc-checkout-hook nil "\
If every file is registered and unlocked, check out (lock)
the file(s) for editing.
If every file is locked by you and has changes, pop up a
- *vc-log* buffer to check in the changes. If the variable
- `vc-keep-workfiles' is non-nil (the default), leave a
+ *vc-log* buffer to check in the changes. Leave a
read-only copy of each changed file after checking in.
If every file is locked by you and unchanged, unlock them.
If every file is locked by someone else, offer to steal the lock.
\(fn)" t nil)
-(autoload 'vc-rollback "vc" "\
-Roll back (remove) the most recent changeset committed to the repository.
-This may be either a file-level or a repository-level operation,
-depending on the underlying version-control system.
-
-\(fn)" t nil)
-
(define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
(autoload 'vc-pull "vc" "\
;;;***
\f
-;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21607 54478
-;;;;;; 800121 42000))
+;;;### (autoloads nil "vc-annotate" "vc/vc-annotate.el" (21604 48550
+;;;;;; 433934 230000))
;;; Generated autoloads from vc/vc-annotate.el
(autoload 'vc-annotate "vc-annotate" "\
;;;***
\f
-;;;### (autoloads nil "vc-arch" "vc/vc-arch.el" (21628 43483 380149
-;;;;;; 771000))
-;;; Generated autoloads from vc/vc-arch.el
- (defun vc-arch-registered (file)
- (if (vc-find-root file "{arch}/=tagging-method")
- (progn
- (load "vc-arch" nil t)
- (vc-arch-registered file))))
-
-;;;***
-\f
-;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-bzr" "vc/vc-bzr.el" (21645 25875 825189
+;;;;;; 881000))
;;; Generated autoloads from vc/vc-bzr.el
(defconst vc-bzr-admin-dirname ".bzr" "\
;;;***
\f
-;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-cvs" "vc/vc-cvs.el" (21645 25875 825189
+;;;;;; 881000))
;;; Generated autoloads from vc/vc-cvs.el
(defun vc-cvs-registered (f)
"Return non-nil if file F is registered with CVS."
;;;***
\f
-;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "vc-dir" "vc/vc-dir.el" (21645 25761 817186
+;;;;;; 828000))
;;; Generated autoloads from vc/vc-dir.el
(autoload 'vc-dir "vc-dir" "\
;;;***
\f
-;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "vc-dispatcher" "vc/vc-dispatcher.el" (21645
+;;;;;; 25761 817186 828000))
;;; Generated autoloads from vc/vc-dispatcher.el
(autoload 'vc-do-command "vc-dispatcher" "\
;;;***
\f
-;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21628 45530 160140
-;;;;;; 360000))
+;;;### (autoloads nil "vc-git" "vc/vc-git.el" (21649 1521 25174 297000))
;;; Generated autoloads from vc/vc-git.el
(defun vc-git-registered (file)
"Return non-nil if FILE is registered with git."
;;;***
\f
-;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21628 43483 380149 771000))
+;;;### (autoloads nil "vc-hg" "vc/vc-hg.el" (21645 25875 841189 882000))
;;; Generated autoloads from vc/vc-hg.el
(defun vc-hg-registered (file)
"Return non-nil if FILE is registered with hg."
;;;***
\f
-;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-mtn" "vc/vc-mtn.el" (21645 25875 841189
+;;;;;; 882000))
;;; Generated autoloads from vc/vc-mtn.el
(defconst vc-mtn-admin-dir "_MTN" "\
;;;***
\f
-;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-rcs" "vc/vc-rcs.el" (21645 25875 841189
+;;;;;; 882000))
;;; Generated autoloads from vc/vc-rcs.el
(defvar vc-rcs-master-templates (purecopy '("%sRCS/%s,v" "%s%s,v" "%sRCS/%s")) "\
;;;***
\f
-;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-sccs" "vc/vc-sccs.el" (21645 25875 837189
+;;;;;; 882000))
;;; Generated autoloads from vc/vc-sccs.el
(defvar vc-sccs-master-templates (purecopy '("%sSCCS/s.%s" "%ss.%s" vc-sccs-search-project-dir)) "\
;;;***
\f
-;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-src" "vc/vc-src.el" (21645 25875 837189
+;;;;;; 882000))
;;; Generated autoloads from vc/vc-src.el
(defvar vc-src-master-templates (purecopy '("%s.src/%s,v")) "\
;;;***
\f
-;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21628 43483 380149
-;;;;;; 771000))
+;;;### (autoloads nil "vc-svn" "vc/vc-svn.el" (21650 56624 523745
+;;;;;; 975000))
;;; Generated autoloads from vc/vc-svn.el
(defun vc-svn-registered (f)
(let ((admin-dir (cond ((and (eq system-type 'windows-nt)
;;;***
\f
-;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "vera-mode" "progmodes/vera-mode.el" (21604
+;;;;;; 48550 361934 227000))
;;; Generated autoloads from progmodes/vera-mode.el
(push (purecopy '(vera-mode 2 28)) package--builtin-versions)
(add-to-list 'auto-mode-alist (cons (purecopy "\\.vr[hi]?\\'") 'vera-mode))
;;;***
\f
;;;### (autoloads nil "verilog-mode" "progmodes/verilog-mode.el"
-;;;;;; (21607 54478 800121 42000))
+;;;;;; (21645 25761 813186 828000))
;;; Generated autoloads from progmodes/verilog-mode.el
(autoload 'verilog-mode "verilog-mode" "\
;;;***
\f
-;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "vhdl-mode" "progmodes/vhdl-mode.el" (21640
+;;;;;; 32530 994334 458000))
;;; Generated autoloads from progmodes/vhdl-mode.el
(autoload 'vhdl-mode "vhdl-mode" "\
;;;***
\f
-;;;### (autoloads nil "viet-util" "language/viet-util.el" (21607
-;;;;;; 54478 300138 641000))
+;;;### (autoloads nil "viet-util" "language/viet-util.el" (21604
+;;;;;; 48550 157934 220000))
;;; Generated autoloads from language/viet-util.el
(autoload 'viet-encode-viscii-char "viet-util" "\
;;;***
\f
-;;;### (autoloads nil "view" "view.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "view" "view.el" (21604 48550 437934 230000))
;;; Generated autoloads from view.el
(defvar view-remove-frame-by-deleting t "\
;;;***
\f
-;;;### (autoloads nil "viper" "emulation/viper.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "viper" "emulation/viper.el" (21604 48550 33934
+;;;;;; 215000))
;;; Generated autoloads from emulation/viper.el
(push (purecopy '(viper 3 14 1)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21607
-;;;;;; 54477 800124 118000))
+;;;### (autoloads nil "warnings" "emacs-lisp/warnings.el" (21604
+;;;;;; 48550 25934 215000))
;;; Generated autoloads from emacs-lisp/warnings.el
(defvar warning-prefix-function nil "\
;;;***
\f
-;;;### (autoloads nil "wdired" "wdired.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "wdired" "wdired.el" (21604 48550 441934 230000))
;;; Generated autoloads from wdired.el
(push (purecopy '(wdired 2 0)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "webjump" "net/webjump.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "webjump" "net/webjump.el" (21604 48550 233934
+;;;;;; 222000))
;;; Generated autoloads from net/webjump.el
(autoload 'webjump "webjump" "\
;;;***
\f
-;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21607
-;;;;;; 54478 800121 42000))
+;;;### (autoloads nil "which-func" "progmodes/which-func.el" (21604
+;;;;;; 48550 365934 227000))
;;; Generated autoloads from progmodes/which-func.el
(put 'which-func-format 'risky-local-variable t)
(put 'which-func-current 'risky-local-variable t)
;;;***
\f
-;;;### (autoloads nil "whitespace" "whitespace.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "whitespace" "whitespace.el" (21631 35966 927121
+;;;;;; 870000))
;;; Generated autoloads from whitespace.el
(push (purecopy '(whitespace 13 2 2)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "wid-browse" "wid-browse.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "wid-browse" "wid-browse.el" (21604 48550 441934
+;;;;;; 230000))
;;; Generated autoloads from wid-browse.el
(autoload 'widget-browse-at "wid-browse" "\
;;;***
\f
-;;;### (autoloads nil "wid-edit" "wid-edit.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "wid-edit" "wid-edit.el" (21637 50476 687217
+;;;;;; 122000))
;;; Generated autoloads from wid-edit.el
(autoload 'widgetp "wid-edit" "\
;;;***
\f
-;;;### (autoloads nil "windmove" "windmove.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "windmove" "windmove.el" (21604 48550 441934
+;;;;;; 230000))
;;; Generated autoloads from windmove.el
(autoload 'windmove-left "windmove" "\
;;;***
\f
-;;;### (autoloads nil "winner" "winner.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "winner" "winner.el" (21604 48550 445934 230000))
;;; Generated autoloads from winner.el
(defvar winner-mode nil "\
;;;***
\f
-;;;### (autoloads nil "woman" "woman.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "woman" "woman.el" (21604 48550 445934 230000))
;;; Generated autoloads from woman.el
(push (purecopy '(woman 0 551)) package--builtin-versions)
;;;***
\f
-;;;### (autoloads nil "xml" "xml.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "xml" "xml.el" (21604 48550 445934 230000))
;;; Generated autoloads from xml.el
(autoload 'xml-parse-file "xml" "\
;;;***
\f
-;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21607 54478 300138
-;;;;;; 641000))
+;;;### (autoloads nil "xmltok" "nxml/xmltok.el" (21604 48550 241934
+;;;;;; 223000))
;;; Generated autoloads from nxml/xmltok.el
(autoload 'xmltok-get-declared-encoding-position "xmltok" "\
;;;***
\f
-;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21607 54478 800121
-;;;;;; 42000))
+;;;### (autoloads nil "xref" "progmodes/xref.el" (21660 28432 372929
+;;;;;; 801000))
+;;; Generated autoloads from progmodes/xref.el
+
+(autoload 'xref-pop-marker-stack "xref" "\
+Pop back to where \\[xref-find-definitions] was last invoked.
+
+\(fn)" t nil)
+
+(autoload 'xref-find-definitions "xref" "\
+Find the definition of the identifier at point.
+With prefix argument, prompt for the identifier.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-definitions-other-window "xref" "\
+Like `xref-find-definitions' but switch to the other window.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-definitions-other-frame "xref" "\
+Like `xref-find-definitions' but switch to the other frame.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-references "xref" "\
+Find references to the identifier at point.
+With prefix argument, prompt for the identifier.
+
+\(fn IDENTIFIER)" t nil)
+
+(autoload 'xref-find-apropos "xref" "\
+Find all meaningful symbols that match PATTERN.
+The argument has the same meaning as in `apropos'.
+
+\(fn PATTERN)" t nil)
+ (define-key esc-map "." #'xref-find-definitions)
+ (define-key esc-map "," #'xref-pop-marker-stack)
+ (define-key esc-map [?\C-.] #'xref-find-apropos)
+ (define-key ctl-x-4-map "." #'xref-find-definitions-other-window)
+ (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
+
+;;;***
+\f
+;;;### (autoloads nil "xt-mouse" "xt-mouse.el" (21604 48550 445934
+;;;;;; 230000))
;;; Generated autoloads from xt-mouse.el
(defvar xterm-mouse-mode nil "\
;;;***
\f
-;;;### (autoloads nil "yenc" "gnus/yenc.el" (21607 54478 300138 641000))
+;;;### (autoloads nil "yenc" "gnus/yenc.el" (21604 48550 121934 218000))
;;; Generated autoloads from gnus/yenc.el
(autoload 'yenc-decode-region "yenc" "\
;;;***
\f
-;;;### (autoloads nil "zone" "play/zone.el" (21607 54478 800121 42000))
+;;;### (autoloads nil "zone" "play/zone.el" (21604 48550 309934 225000))
;;; Generated autoloads from play/zone.el
(autoload 'zone "zone" "\
;;;;;; "cedet/ede/system.el" "cedet/ede/util.el" "cedet/semantic/analyze.el"
;;;;;; "cedet/semantic/analyze/complete.el" "cedet/semantic/analyze/debug.el"
;;;;;; "cedet/semantic/analyze/fcn.el" "cedet/semantic/analyze/refs.el"
-;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
+;;;;;; "cedet/semantic/bovine.el" "cedet/semantic/bovine/c-by.el"
+;;;;;; "cedet/semantic/bovine/c.el" "cedet/semantic/bovine/debug.el"
;;;;;; "cedet/semantic/bovine/el.el" "cedet/semantic/bovine/gcc.el"
-;;;;;; "cedet/semantic/bovine/make.el" "cedet/semantic/bovine/scm.el"
+;;;;;; "cedet/semantic/bovine/make-by.el" "cedet/semantic/bovine/make.el"
+;;;;;; "cedet/semantic/bovine/scm-by.el" "cedet/semantic/bovine/scm.el"
;;;;;; "cedet/semantic/chart.el" "cedet/semantic/complete.el" "cedet/semantic/ctxt.el"
;;;;;; "cedet/semantic/db-debug.el" "cedet/semantic/db-ebrowse.el"
;;;;;; "cedet/semantic/db-el.el" "cedet/semantic/db-file.el" "cedet/semantic/db-find.el"
;;;;;; "cedet/semantic/tag.el" "cedet/semantic/texi.el" "cedet/semantic/util-modes.el"
;;;;;; "cedet/semantic/util.el" "cedet/semantic/wisent.el" "cedet/semantic/wisent/comp.el"
;;;;;; "cedet/semantic/wisent/java-tags.el" "cedet/semantic/wisent/javascript.el"
-;;;;;; "cedet/semantic/wisent/python.el" "cedet/semantic/wisent/wisent.el"
-;;;;;; "cedet/srecode/args.el" "cedet/srecode/compile.el" "cedet/srecode/cpp.el"
-;;;;;; "cedet/srecode/ctxt.el" "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
+;;;;;; "cedet/semantic/wisent/javat-wy.el" "cedet/semantic/wisent/js-wy.el"
+;;;;;; "cedet/semantic/wisent/python-wy.el" "cedet/semantic/wisent/python.el"
+;;;;;; "cedet/semantic/wisent/wisent.el" "cedet/srecode/args.el"
+;;;;;; "cedet/srecode/compile.el" "cedet/srecode/cpp.el" "cedet/srecode/ctxt.el"
+;;;;;; "cedet/srecode/dictionary.el" "cedet/srecode/document.el"
;;;;;; "cedet/srecode/el.el" "cedet/srecode/expandproto.el" "cedet/srecode/extract.el"
;;;;;; "cedet/srecode/fields.el" "cedet/srecode/filters.el" "cedet/srecode/find.el"
;;;;;; "cedet/srecode/getset.el" "cedet/srecode/insert.el" "cedet/srecode/java.el"
;;;;;; "cedet/srecode/loaddefs.el" "cedet/srecode/map.el" "cedet/srecode/mode.el"
-;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt.el" "cedet/srecode/table.el"
-;;;;;; "cedet/srecode/template.el" "cedet/srecode/texi.el" "cus-dep.el"
-;;;;;; "dframe.el" "dired-aux.el" "dired-x.el" "dom.el" "dos-fns.el"
-;;;;;; "dos-vars.el" "dos-w32.el" "dynamic-setting.el" "emacs-lisp/avl-tree.el"
-;;;;;; "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el" "emacs-lisp/cl-extra.el"
-;;;;;; "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el" "emacs-lisp/cl-seq.el"
-;;;;;; "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el" "emacs-lisp/eieio-custom.el"
-;;;;;; "emacs-lisp/eieio-datadebug.el" "emacs-lisp/eieio-opt.el"
-;;;;;; "emacs-lisp/eieio-speedbar.el" "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el"
-;;;;;; "emacs-lisp/smie.el" "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el"
-;;;;;; "emacs-lisp/tcover-unsafep.el" "emulation/cua-gmrk.el" "emulation/edt-lk201.el"
-;;;;;; "emulation/edt-mapper.el" "emulation/edt-pc.el" "emulation/edt-vt100.el"
-;;;;;; "emulation/viper-cmd.el" "emulation/viper-ex.el" "emulation/viper-init.el"
-;;;;;; "emulation/viper-keym.el" "emulation/viper-macs.el" "emulation/viper-mous.el"
-;;;;;; "emulation/viper-util.el" "erc/erc-backend.el" "erc/erc-goodies.el"
-;;;;;; "erc/erc-ibuffer.el" "erc/erc-lang.el" "eshell/em-alias.el"
-;;;;;; "eshell/em-banner.el" "eshell/em-basic.el" "eshell/em-cmpl.el"
-;;;;;; "eshell/em-dirs.el" "eshell/em-glob.el" "eshell/em-hist.el"
-;;;;;; "eshell/em-ls.el" "eshell/em-pred.el" "eshell/em-prompt.el"
-;;;;;; "eshell/em-rebind.el" "eshell/em-script.el" "eshell/em-smart.el"
-;;;;;; "eshell/em-term.el" "eshell/em-tramp.el" "eshell/em-unix.el"
-;;;;;; "eshell/em-xtra.el" "eshell/esh-arg.el" "eshell/esh-cmd.el"
-;;;;;; "eshell/esh-ext.el" "eshell/esh-groups.el" "eshell/esh-io.el"
-;;;;;; "eshell/esh-module.el" "eshell/esh-opt.el" "eshell/esh-proc.el"
-;;;;;; "eshell/esh-util.el" "eshell/esh-var.el" "ezimage.el" "format-spec.el"
+;;;;;; "cedet/srecode/semantic.el" "cedet/srecode/srt-wy.el" "cedet/srecode/srt.el"
+;;;;;; "cedet/srecode/table.el" "cedet/srecode/template.el" "cedet/srecode/texi.el"
+;;;;;; "cus-dep.el" "cus-load.el" "dframe.el" "dired-aux.el" "dired-x.el"
+;;;;;; "dom.el" "dos-fns.el" "dos-vars.el" "dos-w32.el" "dynamic-setting.el"
+;;;;;; "emacs-lisp/avl-tree.el" "emacs-lisp/bindat.el" "emacs-lisp/byte-opt.el"
+;;;;;; "emacs-lisp/cl-extra.el" "emacs-lisp/cl-loaddefs.el" "emacs-lisp/cl-macs.el"
+;;;;;; "emacs-lisp/cl-seq.el" "emacs-lisp/cl.el" "emacs-lisp/eieio-base.el"
+;;;;;; "emacs-lisp/eieio-custom.el" "emacs-lisp/eieio-datadebug.el"
+;;;;;; "emacs-lisp/eieio-opt.el" "emacs-lisp/eieio-speedbar.el"
+;;;;;; "emacs-lisp/lisp-mnt.el" "emacs-lisp/package-x.el" "emacs-lisp/smie.el"
+;;;;;; "emacs-lisp/subr-x.el" "emacs-lisp/tcover-ses.el" "emacs-lisp/tcover-unsafep.el"
+;;;;;; "emulation/cua-gmrk.el" "emulation/edt-lk201.el" "emulation/edt-mapper.el"
+;;;;;; "emulation/edt-pc.el" "emulation/edt-vt100.el" "emulation/viper-cmd.el"
+;;;;;; "emulation/viper-ex.el" "emulation/viper-init.el" "emulation/viper-keym.el"
+;;;;;; "emulation/viper-macs.el" "emulation/viper-mous.el" "emulation/viper-util.el"
+;;;;;; "erc/erc-backend.el" "erc/erc-goodies.el" "erc/erc-ibuffer.el"
+;;;;;; "erc/erc-lang.el" "eshell/em-alias.el" "eshell/em-banner.el"
+;;;;;; "eshell/em-basic.el" "eshell/em-cmpl.el" "eshell/em-dirs.el"
+;;;;;; "eshell/em-glob.el" "eshell/em-hist.el" "eshell/em-ls.el"
+;;;;;; "eshell/em-pred.el" "eshell/em-prompt.el" "eshell/em-rebind.el"
+;;;;;; "eshell/em-script.el" "eshell/em-smart.el" "eshell/em-term.el"
+;;;;;; "eshell/em-tramp.el" "eshell/em-unix.el" "eshell/em-xtra.el"
+;;;;;; "eshell/esh-arg.el" "eshell/esh-cmd.el" "eshell/esh-ext.el"
+;;;;;; "eshell/esh-groups.el" "eshell/esh-io.el" "eshell/esh-module.el"
+;;;;;; "eshell/esh-opt.el" "eshell/esh-proc.el" "eshell/esh-util.el"
+;;;;;; "eshell/esh-var.el" "ezimage.el" "finder-inf.el" "format-spec.el"
;;;;;; "fringe.el" "generic-x.el" "gnus/compface.el" "gnus/gnus-async.el"
;;;;;; "gnus/gnus-bcklg.el" "gnus/gnus-cite.el" "gnus/gnus-cloud.el"
;;;;;; "gnus/gnus-cus.el" "gnus/gnus-demon.el" "gnus/gnus-dup.el"
;;;;;; "gnus/smime.el" "gnus/spam-stat.el" "gnus/spam-wash.el" "hex-util.el"
;;;;;; "hfy-cmap.el" "ibuf-ext.el" "international/cp51932.el" "international/eucjp-ms.el"
;;;;;; "international/fontset.el" "international/iso-ascii.el" "international/ja-dic-cnv.el"
-;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "kermit.el"
-;;;;;; "language/hanja-util.el" "language/thai-word.el" "ldefs-boot.el"
-;;;;;; "leim/quail/arabic.el" "leim/quail/croatian.el" "leim/quail/cyril-jis.el"
-;;;;;; "leim/quail/cyrillic.el" "leim/quail/czech.el" "leim/quail/ethiopic.el"
-;;;;;; "leim/quail/georgian.el" "leim/quail/greek.el" "leim/quail/hanja-jis.el"
-;;;;;; "leim/quail/hanja.el" "leim/quail/hanja3.el" "leim/quail/hebrew.el"
-;;;;;; "leim/quail/indian.el" "leim/quail/ipa-praat.el" "leim/quail/ipa.el"
-;;;;;; "leim/quail/japanese.el" "leim/quail/lao.el" "leim/quail/latin-alt.el"
-;;;;;; "leim/quail/latin-ltx.el" "leim/quail/latin-post.el" "leim/quail/latin-pre.el"
-;;;;;; "leim/quail/lrt.el" "leim/quail/persian.el" "leim/quail/py-punct.el"
-;;;;;; "leim/quail/pypunct-b5.el" "leim/quail/rfc1345.el" "leim/quail/sgml-input.el"
+;;;;;; "international/ja-dic-utl.el" "international/ogonek.el" "international/uni-bidi.el"
+;;;;;; "international/uni-brackets.el" "international/uni-category.el"
+;;;;;; "international/uni-combining.el" "international/uni-comment.el"
+;;;;;; "international/uni-decimal.el" "international/uni-decomposition.el"
+;;;;;; "international/uni-digit.el" "international/uni-lowercase.el"
+;;;;;; "international/uni-mirrored.el" "international/uni-name.el"
+;;;;;; "international/uni-numeric.el" "international/uni-old-name.el"
+;;;;;; "international/uni-titlecase.el" "international/uni-uppercase.el"
+;;;;;; "kermit.el" "language/hanja-util.el" "language/thai-word.el"
+;;;;;; "ldefs-boot.el" "leim/ja-dic/ja-dic.el" "leim/quail/4Corner.el"
+;;;;;; "leim/quail/ARRAY30.el" "leim/quail/CCDOSPY.el" "leim/quail/CTLau-b5.el"
+;;;;;; "leim/quail/CTLau.el" "leim/quail/ECDICT.el" "leim/quail/ETZY.el"
+;;;;;; "leim/quail/PY-b5.el" "leim/quail/PY.el" "leim/quail/Punct-b5.el"
+;;;;;; "leim/quail/Punct.el" "leim/quail/QJ-b5.el" "leim/quail/QJ.el"
+;;;;;; "leim/quail/SW.el" "leim/quail/TONEPY.el" "leim/quail/ZIRANMA.el"
+;;;;;; "leim/quail/ZOZY.el" "leim/quail/arabic.el" "leim/quail/croatian.el"
+;;;;;; "leim/quail/cyril-jis.el" "leim/quail/cyrillic.el" "leim/quail/czech.el"
+;;;;;; "leim/quail/ethiopic.el" "leim/quail/georgian.el" "leim/quail/greek.el"
+;;;;;; "leim/quail/hanja-jis.el" "leim/quail/hanja.el" "leim/quail/hanja3.el"
+;;;;;; "leim/quail/hebrew.el" "leim/quail/indian.el" "leim/quail/ipa-praat.el"
+;;;;;; "leim/quail/ipa.el" "leim/quail/japanese.el" "leim/quail/lao.el"
+;;;;;; "leim/quail/latin-alt.el" "leim/quail/latin-ltx.el" "leim/quail/latin-post.el"
+;;;;;; "leim/quail/latin-pre.el" "leim/quail/lrt.el" "leim/quail/persian.el"
+;;;;;; "leim/quail/py-punct.el" "leim/quail/pypunct-b5.el" "leim/quail/quick-b5.el"
+;;;;;; "leim/quail/quick-cns.el" "leim/quail/rfc1345.el" "leim/quail/sgml-input.el"
;;;;;; "leim/quail/sisheng.el" "leim/quail/slovak.el" "leim/quail/symbol-ksc.el"
-;;;;;; "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/viqr.el"
-;;;;;; "leim/quail/vntelex.el" "leim/quail/vnvni.el" "leim/quail/welsh.el"
-;;;;;; "loadup.el" "mail/blessmail.el" "mail/mailheader.el" "mail/mspools.el"
-;;;;;; "mail/rfc2368.el" "mail/rfc822.el" "mail/rmail-spam-filter.el"
-;;;;;; "mail/rmailedit.el" "mail/rmailkwd.el" "mail/rmailmm.el"
-;;;;;; "mail/rmailmsc.el" "mail/rmailsort.el" "mail/rmailsum.el"
-;;;;;; "mail/undigest.el" "mh-e/mh-acros.el" "mh-e/mh-alias.el"
-;;;;;; "mh-e/mh-buffers.el" "mh-e/mh-compat.el" "mh-e/mh-funcs.el"
-;;;;;; "mh-e/mh-gnus.el" "mh-e/mh-identity.el" "mh-e/mh-inc.el"
-;;;;;; "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
+;;;;;; "leim/quail/thai.el" "leim/quail/tibetan.el" "leim/quail/tsang-b5.el"
+;;;;;; "leim/quail/tsang-cns.el" "leim/quail/viqr.el" "leim/quail/vntelex.el"
+;;;;;; "leim/quail/vnvni.el" "leim/quail/welsh.el" "loadup.el" "mail/blessmail.el"
+;;;;;; "mail/mailheader.el" "mail/mspools.el" "mail/rfc2368.el"
+;;;;;; "mail/rfc822.el" "mail/rmail-spam-filter.el" "mail/rmailedit.el"
+;;;;;; "mail/rmailkwd.el" "mail/rmailmm.el" "mail/rmailmsc.el" "mail/rmailsort.el"
+;;;;;; "mail/rmailsum.el" "mail/undigest.el" "mh-e/mh-acros.el"
+;;;;;; "mh-e/mh-alias.el" "mh-e/mh-buffers.el" "mh-e/mh-compat.el"
+;;;;;; "mh-e/mh-funcs.el" "mh-e/mh-gnus.el" "mh-e/mh-identity.el"
+;;;;;; "mh-e/mh-inc.el" "mh-e/mh-junk.el" "mh-e/mh-letter.el" "mh-e/mh-limit.el"
;;;;;; "mh-e/mh-loaddefs.el" "mh-e/mh-mime.el" "mh-e/mh-print.el"
;;;;;; "mh-e/mh-scan.el" "mh-e/mh-search.el" "mh-e/mh-seq.el" "mh-e/mh-show.el"
;;;;;; "mh-e/mh-speed.el" "mh-e/mh-thread.el" "mh-e/mh-tool-bar.el"
;;;;;; "vc/ediff-ptch.el" "vc/ediff-vers.el" "vc/ediff-wind.el"
;;;;;; "vc/pcvs-info.el" "vc/pcvs-parse.el" "vc/pcvs-util.el" "vc/vc-dav.el"
;;;;;; "vc/vc-filewise.el" "vcursor.el" "vt-control.el" "vt100-led.el"
-;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (21628 46363 926675
-;;;;;; 999000))
+;;;;;; "w32-fns.el" "w32-vars.el" "x-dnd.el") (21660 28703 181624
+;;;;;; 391000))
;;;***
\f
(mapcar #'let-alist--deep-dot-search data)))))
(defun let-alist--access-sexp (symbol variable)
- "Return a sexp used to acess SYMBOL inside VARIABLE."
+ "Return a sexp used to access SYMBOL inside VARIABLE."
(let* ((clean (let-alist--remove-dot symbol))
(name (symbol-name clean)))
(if (string-match "\\`\\." name)
,(if (eq (selected-window) (minibuffer-window))
'display-buffer-at-bottom
'display-buffer-below-selected))
- ,(when temp-buffer-resize-mode
- '(window-height . resize-temp-buffer-window))
+ ,(if temp-buffer-resize-mode
+ '(window-height . resize-temp-buffer-window)
+ '(window-height . shrink-window-if-larger-than-buffer))
,(when temp-buffer-resize-mode
'(preserve-size . (nil . t))))
nil
(setq tramp-gw-gw-proc
(funcall
socks-function
- (tramp-get-connection-name gw-vec)
- (tramp-get-connection-buffer gw-vec)
+ (let ((tramp-verbose 0)) (tramp-get-connection-name gw-vec))
+ (let ((tramp-verbose 0)) (tramp-get-connection-buffer gw-vec))
(tramp-file-name-real-host target-vec)
(tramp-file-name-port target-vec)))
(set-process-sentinel tramp-gw-gw-proc 'tramp-gw-gw-proc-sentinel)
+ (set-process-coding-system tramp-gw-gw-proc 'binary 'binary)
(tramp-compat-set-process-query-on-exit-flag tramp-gw-gw-proc nil)
(tramp-message
vec 4 "Opened %s process `%s'"
(200 (setq found t))
;; We need basic authentication.
(401 (setq authentication (tramp-gw-basic-authentication nil first)))
+ ;; Access forbidden.
+ (403 (tramp-error-with-buffer
+ (current-buffer) tramp-gw-vector 'file-error
+ "Connection to %s:%d forbidden." host service))
;; Target host not found.
(404 (tramp-error-with-buffer
(current-buffer) tramp-gw-vector 'file-error
(mapconcat 'identity (process-command p) " "))
(tramp-set-connection-property p "vector" orig-vec)
(tramp-compat-set-process-query-on-exit-flag p nil)
- (tramp-process-actions
- p v nil tramp-actions-copy-out-of-band)
+
+ ;; We must adapt `tramp-local-end-of-line' for
+ ;; sending the password.
+ (let ((tramp-local-end-of-line tramp-rsh-end-of-line))
+ (tramp-process-actions
+ p v nil tramp-actions-copy-out-of-band))
;; Check the return code.
(goto-char (point-max))
(name1 name)
(i 0)
;; We do not want to raise an error when
- ;; `start-file-process' has been started several time in
+ ;; `start-file-process' has been started several times in
;; `eshell' and friends.
(tramp-current-connection nil))
;; Therefore, we must remember the gateway vector. But we
;; cannot do it as connection property, because it shouldn't
;; be persistent. And we have no started process yet either.
- (tramp-set-file-property (car target-alist) "" "gateway" hop)))
+ (let ((tramp-verbose 0))
+ (tramp-set-file-property (car target-alist) "" "gateway" hop))))
;; Foreign and out-of-band methods are not supported for multi-hops.
(when (cdr target-alist)
l-method 'tramp-connection-timeout))
(gw-args
(tramp-get-method-parameter l-method 'tramp-gw-args))
- (gw (tramp-get-file-property hop "" "gateway" nil))
+ (gw (let ((tramp-verbose 0))
+ (tramp-get-file-property hop "" "gateway" nil)))
(g-method (and gw (tramp-file-name-method gw)))
(g-user (and gw (tramp-file-name-user gw)))
(g-host (and gw (tramp-file-name-real-host gw)))
(setq login-args (append async-args login-args)))
;; Add gateway arguments if necessary.
- (when (and gw gw-args)
- (setq login-args (append gw-args login-args)))
+ (when gw
+ (tramp-set-connection-property p "gateway" t)
+ (when gw-args
+ (setq login-args (append gw-args login-args))))
;; Check for port number. Until now, there's no
;; need for handling like method, user, host.
(or (tramp-send-command-and-check vec command)
(apply 'tramp-error vec 'file-error fmt args)))
-(defun tramp-send-command-and-read (vec command &optional noerror)
+(defun tramp-send-command-and-read (vec command &optional noerror marker)
"Run COMMAND and return the output, which must be a Lisp expression.
+If MARKER is a regexp, read the output after that string.
In case there is no valid Lisp expression and NOERROR is nil, it
raises an error."
(when (if noerror
(tramp-barf-unless-okay
vec command "`%s' returns with error" command))
(with-current-buffer (tramp-get-connection-buffer vec)
- ;; Read the expression.
(goto-char (point-min))
+ ;; Read the marker.
+ (when (stringp marker)
+ (condition-case nil
+ (re-search-forward marker)
+ (error (unless noerror
+ (tramp-error
+ vec 'file-error
+ "`%s' does not return the marker `%s': `%s'"
+ command marker (buffer-string))))))
+ ;; Read the expression.
(condition-case nil
(prog1 (read (current-buffer))
;; Error handling.
"/bin:/usr/bin")
"/bin:/usr/bin"))))
(own-remote-path
- ;; We cannot apply `tramp-send-command-and-read' because
- ;; the login shell could return more than just the $PATH
- ;; string. So we emulate that function.
+ ;; The login shell could return more than just the $PATH
+ ;; string. So we use `tramp-end-of-heredoc' as marker.
(when elt2
- (tramp-send-command
+ (tramp-send-command-and-read
vec
(format
- "%s -l %s 'echo \\\"$PATH\\\"'"
+ "%s -l %s 'echo %s \\\"$PATH\\\"'"
(tramp-get-method-parameter
(tramp-file-name-method vec) 'tramp-remote-shell)
(mapconcat
'identity
(tramp-get-method-parameter
(tramp-file-name-method vec) 'tramp-remote-shell-args)
- " ")))
- (with-current-buffer (tramp-get-connection-buffer vec)
- (goto-char (point-max))
- (forward-line -1)
- (read (current-buffer))))))
+ " ")
+ (tramp-shell-quote-argument tramp-end-of-heredoc))
+ nil (regexp-quote tramp-end-of-heredoc)))))
;; Replace place holder `tramp-default-remote-path'.
(when elt1
(let ((enable-recursive-minibuffers t))
;; `tramp-error' does not show messages. So we must do it
;; ourselves.
- (message fmt-string arguments)
+ (apply 'message fmt-string arguments)
;; Show buffer.
(pop-to-buffer buf)
(discard-input)
(setq filename (expand-file-name filename))
(let (result local-copy remote-copy)
(with-parsed-tramp-file-name filename nil
- (with-tramp-progress-reporter
- v 3 (format "Inserting `%s'" filename)
- (unwind-protect
- (if (not (file-exists-p filename))
- (progn
- ;; We don't raise a Tramp error, because it might be
- ;; suppressed, like in `find-file-noselect-1'.
- (tramp-message
- v 1 "File not `%s' found on remote host" filename)
- (signal 'file-error
- (list "File not found on remote host" filename)))
-
- (if (and (tramp-local-host-p v)
- (let (file-name-handler-alist)
- (file-readable-p localname)))
- ;; Short track: if we are on the local host, we can
- ;; run directly.
- (setq result
- (tramp-run-real-handler
- 'insert-file-contents
- (list localname visit beg end replace)))
-
- ;; When we shall insert only a part of the file, we
- ;; copy this part. This works only for the shell file
- ;; name handlers.
- (when (and (or beg end)
- (tramp-get-method-parameter
- (tramp-file-name-method v) 'tramp-login-program))
- (setq remote-copy (tramp-make-tramp-temp-file v))
- ;; This is defined in tramp-sh.el. Let's assume
- ;; this is loaded already.
- (tramp-compat-funcall
- 'tramp-send-command
- v
- (cond
- ((and beg end)
- (format "dd bs=1 skip=%d if=%s count=%d of=%s"
- beg (tramp-shell-quote-argument localname)
- (- end beg) remote-copy))
- (beg
- (format "dd bs=1 skip=%d if=%s of=%s"
- beg (tramp-shell-quote-argument localname)
- remote-copy))
- (end
- (format "dd bs=1 count=%d if=%s of=%s"
- end (tramp-shell-quote-argument localname)
- remote-copy))))
- (setq tramp-temp-buffer-file-name nil beg nil end nil))
-
- ;; `insert-file-contents-literally' takes care to
- ;; avoid calling jka-compr. By let-binding
- ;; `inhibit-file-name-operation', we propagate that
- ;; care to the `file-local-copy' operation.
- (setq local-copy
- (let ((inhibit-file-name-operation
- (when (eq inhibit-file-name-operation
- 'insert-file-contents)
- 'file-local-copy)))
- (cond
- ((stringp remote-copy)
- (file-local-copy
- (tramp-make-tramp-file-name
- method user host remote-copy)))
- ((stringp tramp-temp-buffer-file-name)
- (copy-file filename tramp-temp-buffer-file-name 'ok)
- tramp-temp-buffer-file-name)
- (t (file-local-copy filename)))))
-
- ;; When the file is not readable for the owner, it
- ;; cannot be inserted, even if it is readable for the
- ;; group or for everybody.
- (set-file-modes
- local-copy (tramp-compat-octal-to-decimal "0600"))
-
- (when (and (null remote-copy)
- (tramp-get-method-parameter
- method 'tramp-copy-keep-tmpfile))
- ;; We keep the local file for performance reasons,
- ;; useful for "rsync".
- (setq tramp-temp-buffer-file-name local-copy))
-
- ;; We must ensure that `file-coding-system-alist'
- ;; matches `local-copy'. We must also use `visit',
- ;; otherwise there might be an error in the
- ;; `revert-buffer' function under XEmacs.
- (let ((file-coding-system-alist
- (tramp-find-file-name-coding-system-alist
- filename local-copy)))
- (setq result
- (insert-file-contents
- local-copy visit beg end replace)))))
-
- ;; Save exit.
- (progn
- (when visit
- (setq buffer-file-name filename)
- (setq buffer-read-only (not (file-writable-p filename)))
- (set-visited-file-modtime)
- (set-buffer-modified-p nil))
- (when (and (stringp local-copy)
- (or remote-copy (null tramp-temp-buffer-file-name)))
- (delete-file local-copy))
- (when (stringp remote-copy)
- (delete-file
- (tramp-make-tramp-file-name method user host remote-copy)))))))
-
- ;; Result.
- (list (expand-file-name filename)
- (cadr result))))
+ (unwind-protect
+ (if (not (file-exists-p filename))
+ (tramp-error
+ v 'file-error "File `%s' not found on remote host" filename)
+
+ (with-tramp-progress-reporter
+ v 3 (format "Inserting `%s'" filename)
+ (condition-case err
+ (if (and (tramp-local-host-p v)
+ (let (file-name-handler-alist)
+ (file-readable-p localname)))
+ ;; Short track: if we are on the local host, we can
+ ;; run directly.
+ (setq result
+ (tramp-run-real-handler
+ 'insert-file-contents
+ (list localname visit beg end replace)))
+
+ ;; When we shall insert only a part of the file, we
+ ;; copy this part. This works only for the shell file
+ ;; name handlers.
+ (when (and (or beg end)
+ (tramp-get-method-parameter
+ (tramp-file-name-method v)
+ 'tramp-login-program))
+ (setq remote-copy (tramp-make-tramp-temp-file v))
+ ;; This is defined in tramp-sh.el. Let's assume
+ ;; this is loaded already.
+ (tramp-compat-funcall
+ 'tramp-send-command
+ v
+ (cond
+ ((and beg end)
+ (format "dd bs=1 skip=%d if=%s count=%d of=%s"
+ beg (tramp-shell-quote-argument localname)
+ (- end beg) remote-copy))
+ (beg
+ (format "dd bs=1 skip=%d if=%s of=%s"
+ beg (tramp-shell-quote-argument localname)
+ remote-copy))
+ (end
+ (format "dd bs=1 count=%d if=%s of=%s"
+ end (tramp-shell-quote-argument localname)
+ remote-copy))))
+ (setq tramp-temp-buffer-file-name nil beg nil end nil))
+
+ ;; `insert-file-contents-literally' takes care to
+ ;; avoid calling jka-compr. By let-binding
+ ;; `inhibit-file-name-operation', we propagate that
+ ;; care to the `file-local-copy' operation.
+ (setq local-copy
+ (let ((inhibit-file-name-operation
+ (when (eq inhibit-file-name-operation
+ 'insert-file-contents)
+ 'file-local-copy)))
+ (cond
+ ((stringp remote-copy)
+ (file-local-copy
+ (tramp-make-tramp-file-name
+ method user host remote-copy)))
+ ((stringp tramp-temp-buffer-file-name)
+ (copy-file
+ filename tramp-temp-buffer-file-name 'ok)
+ tramp-temp-buffer-file-name)
+ (t (file-local-copy filename)))))
+
+ ;; When the file is not readable for the owner, it
+ ;; cannot be inserted, even if it is readable for the
+ ;; group or for everybody.
+ (set-file-modes
+ local-copy (tramp-compat-octal-to-decimal "0600"))
+
+ (when (and (null remote-copy)
+ (tramp-get-method-parameter
+ method 'tramp-copy-keep-tmpfile))
+ ;; We keep the local file for performance reasons,
+ ;; useful for "rsync".
+ (setq tramp-temp-buffer-file-name local-copy))
+
+ ;; We must ensure that `file-coding-system-alist'
+ ;; matches `local-copy'. We must also use `visit',
+ ;; otherwise there might be an error in the
+ ;; `revert-buffer' function under XEmacs.
+ (let ((file-coding-system-alist
+ (tramp-find-file-name-coding-system-alist
+ filename local-copy)))
+ (setq result
+ (insert-file-contents
+ local-copy visit beg end replace))))
+ (error
+ (add-hook 'find-file-not-found-functions
+ `(lambda () (signal ',(car err) ',(cdr err)))
+ nil t)
+ (signal (car err) (cdr err))))))
+
+ ;; Save exit.
+ (progn
+ (when visit
+ (setq buffer-file-name filename)
+ (setq buffer-read-only (not (file-writable-p filename)))
+ (set-visited-file-modtime)
+ (set-buffer-modified-p nil))
+ (when (and (stringp local-copy)
+ (or remote-copy (null tramp-temp-buffer-file-name)))
+ (delete-file local-copy))
+ (when (stringp remote-copy)
+ (delete-file
+ (tramp-make-tramp-file-name method user host remote-copy)))))
+
+ ;; Result.
+ (list (expand-file-name filename)
+ (cadr result)))))
(defun tramp-handle-load (file &optional noerror nomessage nosuffix must-suffix)
"Like `load' for Tramp files."
This is needed in order to hide `last-coding-system-used', which is set
for process communication also."
(with-current-buffer (process-buffer proc)
- (tramp-message proc 10 "%s %s" proc (process-status proc))
- (let (buffer-read-only last-coding-system-used)
+ ;; FIXME: If there is a gateway process, we need communication
+ ;; between several processes. Too complicate to implement, so we
+ ;; read output from all processes.
+ (let ((p (if (tramp-get-connection-property proc "gateway" nil) nil proc))
+ buffer-read-only last-coding-system-used)
;; Under Windows XP, accept-process-output doesn't return
;; sometimes. So we add an additional timeout.
(with-timeout ((or timeout 1))
(if (featurep 'xemacs)
- (accept-process-output proc timeout timeout-msecs)
- (accept-process-output proc timeout timeout-msecs (and proc t)))))
- (tramp-message proc 10 "\n%s" (buffer-string))))
+ (accept-process-output p timeout timeout-msecs)
+ (accept-process-output p timeout timeout-msecs (and proc t))))
+ (tramp-message proc 10 "%s %s %s\n%s"
+ proc (process-status proc) p (buffer-string)))))
(defun tramp-check-for-regexp (proc regexp)
"Check, whether REGEXP is contained in process buffer of PROC.
;; it's bound. `auth-source-user-or-password' is an
;; obsoleted function, it has been replaced by
;; `auth-source-search'.
- (and (boundp 'auth-sources)
- (tramp-get-connection-property
- v "first-password-request" nil)
- ;; Try with Tramp's current method.
- (if (fboundp 'auth-source-search)
- (setq auth-info
- (tramp-compat-funcall
- 'auth-source-search
- :max 1
- :user (or tramp-current-user t)
- :host tramp-current-host
- :port tramp-current-method)
- auth-passwd (plist-get (nth 0 auth-info) :secret)
- auth-passwd (if (functionp auth-passwd)
- (funcall auth-passwd)
- auth-passwd))
- (tramp-compat-funcall
- 'auth-source-user-or-password
- "password" tramp-current-host tramp-current-method)))
+ (ignore-errors
+ (and (boundp 'auth-sources)
+ (tramp-get-connection-property
+ v "first-password-request" nil)
+ ;; Try with Tramp's current method.
+ (if (fboundp 'auth-source-search)
+ (setq auth-info
+ (tramp-compat-funcall
+ 'auth-source-search
+ :max 1
+ :user (or tramp-current-user t)
+ :host tramp-current-host
+ :port tramp-current-method)
+ auth-passwd (plist-get
+ (nth 0 auth-info) :secret)
+ auth-passwd (if (functionp auth-passwd)
+ (funcall auth-passwd)
+ auth-passwd))
+ (tramp-compat-funcall
+ 'auth-source-user-or-password
+ "password" tramp-current-host tramp-current-method))))
;; Try the password cache.
(when (functionp 'password-read)
(let ((password
;; with the same name as the link; then, if unsuccessful, ask the user if
;; he/she wants to rebuild the 'TAGS' database and try again; then ask if
;; the user wishes to append 'tag' as a new toplevel heading at the end of
-;; the buffer; and finally, defer to org's default behaviour which is to
+;; the buffer; and finally, defer to org's default behavior which is to
;; search the entire text of the current buffer for 'tag'.
;;
-;; This behaviour can be modified by changing the value of
+;; This behavior can be modified by changing the value of
;; ORG-CTAGS-OPEN-LINK-FUNCTIONS. For example I have the following in my
-;; .emacs, which describes the same behaviour as the above paragraph with
+;; .emacs, which describes the same behavior as the above paragraph with
;; one difference:
;;
;; (setq org-ctags-open-link-functions
;; '(org-ctags-find-tag
;; org-ctags-ask-rebuild-tags-file-then-find-tag
;; org-ctags-ask-append-topic
-;; org-ctags-fail-silently)) ; <-- prevents org default behaviour
+;; org-ctags-fail-silently)) ; <-- prevents org default behavior
;;
;;
;; Usage
The function should return the string to be exported.
For example, the variable could be set to the following function
-in order to mimic default behaviour:
+in order to mimic default behavior:
The default value simply returns the value of CONTENTS."
:group 'org-export-html
The function should return the string to be exported.
For example, the variable could be set to the following function
-in order to mimic default behaviour:
+in order to mimic default behavior:
\(defun org-latex-format-inlinetask \(todo type priority name tags contents\)
\"Format an inline task element for LaTeX export.\"
`:sitemap-sort-files'
The site map is normally sorted alphabetically. You can
- change this behaviour setting this to `anti-chronologically',
+ change this behavior setting this to `anti-chronologically',
`chronologically', or nil.
`:sitemap-ignore-case'
"The last level which is still exported as a headline.
Inferior levels will usually produce itemize or enumerate lists
-when exported, but back-end behaviour may differ.
+when exported, but back-end behavior may differ.
This option can also be set with the OPTIONS keyword,
e.g. \"H:2\"."
(t
;; Options in `org-export-options-alist'.
(dolist (property (funcall find-properties key))
- (let ((behaviour (nth 4 (assq property options))))
+ (let ((behavior (nth 4 (assq property options))))
(setq plist
(plist-put
plist property
;; Handle value depending on specified
;; BEHAVIOR.
- (case behaviour
+ (case behavior
(space
(if (not (plist-get plist property))
(org-trim val)
\\{emacs-lisp-mode-map}"
:group 'lisp
+ (defvar xref-find-function)
+ (defvar xref-identifier-completion-table-function)
(lisp-mode-variables nil nil 'elisp)
(setq imenu-case-fold-search nil)
(setq-local eldoc-documentation-function
#'elisp-eldoc-documentation-function)
+ (setq-local xref-find-function #'elisp-xref-find)
+ (setq-local xref-identifier-completion-table-function
+ #'elisp--xref-identifier-completion-table)
(add-hook 'completion-at-point-functions
#'elisp-completion-at-point nil 'local))
(match-string 0 doc))))
(declare-function find-library-name "find-func" (library))
+(declare-function find-function-library "find-func" (function &optional l-o v))
(defun elisp--company-location (str)
(let ((sym (intern-soft str)))
:company-location #'elisp--company-location))
((elisp--form-quoted-p beg)
(list nil obarray
- ;; Don't include all symbols
- ;; (bug#16646).
+ ;; Don't include all symbols (bug#16646).
:predicate (lambda (sym)
(or (boundp sym)
(fboundp sym)
+ (featurep sym)
(symbol-plist sym)))
:annotation-function
(lambda (str) (if (fboundp (intern-soft str)) " <f>"))
(define-obsolete-function-alias
'lisp-completion-at-point 'elisp-completion-at-point "25.1")
+;;; Xref backend
+
+(declare-function xref-make-elisp-location "xref" (symbol type file))
+(declare-function xref-make-bogus-location "xref" (message))
+(declare-function xref-make "xref" (description location))
+
+(defun elisp-xref-find (action id)
+ (require 'find-func)
+ (pcase action
+ (`definitions
+ (let ((sym (intern-soft id)))
+ (when sym
+ (elisp--xref-find-definitions sym))))
+ (`apropos
+ (elisp--xref-find-apropos id))))
+
+(defun elisp--xref-identifier-file (type sym)
+ (pcase type
+ (`defun (when (fboundp sym)
+ (find-function-library sym)))
+ (`defvar (when (boundp sym)
+ (or (symbol-file sym 'defvar)
+ (help-C-file-name sym 'var))))
+ (`feature (when (featurep sym)
+ (ignore-errors
+ (find-library-name (symbol-name sym)))))
+ (`defface (when (facep sym)
+ (symbol-file sym 'defface)))))
+
+(defun elisp--xref-find-definitions (symbol)
+ (save-excursion
+ (let (lst)
+ (dolist (type '(feature defface defvar defun))
+ (let ((loc
+ (condition-case err
+ (let ((file (elisp--xref-identifier-file type symbol)))
+ (when file
+ (when (string-match-p "\\.elc\\'" file)
+ (setq file (substring file 0 -1)))
+ (xref-make-elisp-location symbol type file)))
+ (error
+ (xref-make-bogus-location (error-message-string err))))))
+ (when loc
+ (push
+ (xref-make (format "(%s %s)" type symbol)
+ loc)
+ lst))))
+ lst)))
+
+(defun elisp--xref-find-apropos (regexp)
+ (apply #'nconc
+ (let (lst)
+ (dolist (sym (apropos-internal regexp))
+ (push (elisp--xref-find-definitions sym) lst))
+ (nreverse lst))))
+
+(defvar elisp--xref-identifier-completion-table
+ (apply-partially #'completion-table-with-predicate
+ obarray
+ (lambda (sym)
+ (or (boundp sym)
+ (fboundp sym)
+ (featurep sym)
+ (facep sym)))
+ 'strict))
+
+(defun elisp--xref-identifier-completion-table ()
+ elisp--xref-identifier-completion-table)
+
;;; Elisp Interaction mode
(defvar lisp-interaction-mode-map
(require 'ring)
(require 'button)
+(require 'xref)
;;;###autoload
(defvar tags-file-name nil
:group 'etags
:type '(choice (const nil) function))
-(defcustom find-tag-marker-ring-length 16
- "Length of marker rings `find-tag-marker-ring' and `tags-location-ring'."
- :group 'etags
- :type 'integer
- :version "20.3")
+(define-obsolete-variable-alias 'find-tag-marker-ring-length
+ 'xref-marker-ring-length "25.1")
(defcustom tags-tag-face 'default
"Face for tags in the output of `tags-apropos'."
(sexp :tag "Tags to search")))
:version "21.1")
-(defvar find-tag-marker-ring (make-ring find-tag-marker-ring-length)
- "Ring of markers which are locations from which \\[find-tag] was invoked.")
+(defvaralias 'find-tag-marker-ring 'xref--marker-ring)
+(make-obsolete-variable
+ 'find-tag-marker-ring
+ "use `xref-push-marker-stack' or `xref-pop-marker-stack' instead."
+ "25.1")
(defvar default-tags-table-function nil
"If non-nil, a function to choose a default tags file for a buffer.
This function receives no arguments and should return the default
tags table file to use for the current buffer.")
-(defvar tags-location-ring (make-ring find-tag-marker-ring-length)
+(defvar tags-location-ring (make-ring xref-marker-ring-length)
"Ring of markers which are locations visited by \\[find-tag].
Pop back to the last location with \\[negative-argument] \\[find-tag].")
\f
(interactive)
;; Clear out the markers we are throwing away.
(let ((i 0))
- (while (< i find-tag-marker-ring-length)
+ (while (< i xref-marker-ring-length)
(if (aref (cddr tags-location-ring) i)
(set-marker (aref (cddr tags-location-ring) i) nil))
- (if (aref (cddr find-tag-marker-ring) i)
- (set-marker (aref (cddr find-tag-marker-ring) i) nil))
(setq i (1+ i))))
+ (xref-clear-marker-stack)
(setq tags-file-name nil
- tags-location-ring (make-ring find-tag-marker-ring-length)
- find-tag-marker-ring (make-ring find-tag-marker-ring-length)
+ tags-location-ring (make-ring xref-marker-ring-length)
tags-table-list nil
tags-table-computed-list nil
tags-table-computed-list-for nil
(quit (message "Tags completion table construction aborted.")
(setq tags-completion-table nil)))))
+;;;###autoload
(defun tags-lazy-completion-table ()
(let ((buf (current-buffer)))
(lambda (string pred action)
;; Run the user's hook. Do we really want to do this for pop?
(run-hooks 'local-find-tag-hook))))
;; Record whence we came.
- (ring-insert find-tag-marker-ring (point-marker))
+ (xref-push-marker-stack)
(if (and next-p last-tag)
;; Find the same table we last used.
(visit-tags-table-buffer 'same)
(switch-to-buffer buf)
(error (pop-to-buffer buf)))
(goto-char pos)))
-;;;###autoload (define-key esc-map "." 'find-tag)
;;;###autoload
(defun find-tag-other-window (tagname &optional next-p regexp-p)
;; the window's point from the buffer.
(set-window-point (selected-window) tagpoint))
window-point)))
-;;;###autoload (define-key ctl-x-4-map "." 'find-tag-other-window)
;;;###autoload
(defun find-tag-other-frame (tagname &optional next-p)
(interactive (find-tag-interactive "Find tag other frame: "))
(let ((pop-up-frames t))
(find-tag-other-window tagname next-p)))
-;;;###autoload (define-key ctl-x-5-map "." 'find-tag-other-frame)
;;;###autoload
(defun find-tag-regexp (regexp &optional next-p other-window)
;; We go through find-tag-other-window to do all the display hair there.
(funcall (if other-window 'find-tag-other-window 'find-tag)
regexp next-p t))
-;;;###autoload (define-key esc-map [?\C-.] 'find-tag-regexp)
-
-;;;###autoload (define-key esc-map "*" 'pop-tag-mark)
;;;###autoload
-(defun pop-tag-mark ()
- "Pop back to where \\[find-tag] was last invoked.
+(defalias 'pop-tag-mark 'xref-pop-marker-stack)
-This is distinct from invoking \\[find-tag] with a negative argument
-since that pops a stack of markers at which tags were found, not from
-where they were found."
- (interactive)
- (if (ring-empty-p find-tag-marker-ring)
- (error "No previous locations for find-tag invocation"))
- (let ((marker (ring-remove find-tag-marker-ring 0)))
- (switch-to-buffer (or (marker-buffer marker)
- (error "The marked buffer has been deleted")))
- (goto-char (marker-position marker))
- (set-marker marker nil nil)))
\f
(defvar tag-lines-already-matched nil
"Matches remembered between calls.") ; Doc string: calls to what?
(and messaged
(null tags-loop-operate)
(message "Scanning file %s...found" buffer-file-name))))
-;;;###autoload (define-key esc-map "," 'tags-loop-continue)
;;;###autoload
(defun tags-search (regexp &optional file-list-form)
(completion-in-region (car comp-data) (cadr comp-data)
(nth 2 comp-data)
(plist-get (nthcdr 3 comp-data) :predicate)))))
+
+\f
+;;; Xref backend
+
+;; Stop searching if we find more than xref-limit matches, as the xref
+;; infrastructure is not designed to handle very long lists.
+;; Switching to some kind of lazy list might be better, but hopefully
+;; we hit the limit rarely.
+(defconst etags--xref-limit 1000)
+
+;;;###autoload
+(defun etags-xref-find (action id)
+ (pcase action
+ (`definitions (etags--xref-find-definitions id))
+ (`apropos (etags--xref-find-definitions id t))))
+
+(defun etags--xref-find-definitions (pattern &optional regexp?)
+ ;; This emulates the behaviour of `find-tag-in-order' but instead of
+ ;; returning one match at a time all matches are returned as list.
+ ;; NOTE: find-tag-tag-order is typically a buffer-local variable.
+ (let* ((xrefs '())
+ (first-time t)
+ (search-fun (if regexp? #'re-search-forward #'search-forward))
+ (marks (make-hash-table :test 'equal))
+ (case-fold-search (if (memq tags-case-fold-search '(nil t))
+ tags-case-fold-search
+ case-fold-search)))
+ (save-excursion
+ (while (visit-tags-table-buffer (not first-time))
+ (setq first-time nil)
+ (dolist (order-fun (cond (regexp? find-tag-regexp-tag-order)
+ (t find-tag-tag-order)))
+ (goto-char (point-min))
+ (while (and (funcall search-fun pattern nil t)
+ (< (hash-table-count marks) etags--xref-limit))
+ (when (funcall order-fun pattern)
+ (beginning-of-line)
+ (cl-destructuring-bind (hint line &rest pos) (etags-snarf-tag)
+ (unless (eq hint t) ; hint==t if we are in a filename line
+ (let* ((file (file-of-tag))
+ (mark-key (cons file line)))
+ (unless (gethash mark-key marks)
+ (let ((loc (xref-make-file-location
+ (expand-file-name file) line 0)))
+ (push (xref-make hint loc) xrefs)
+ (puthash mark-key t marks)))))))))))
+ (nreverse xrefs)))
+
\f
(provide 'etags)
js--font-lock-keywords-3)
"Font lock keywords for `js-mode'. See `font-lock-keywords'.")
+(defconst js--syntax-propertize-regexp-syntax-table
+ (let ((st (make-char-table 'syntax-table (string-to-syntax "."))))
+ (modify-syntax-entry ?\[ "(]" st)
+ (modify-syntax-entry ?\] ")[" st)
+ (modify-syntax-entry ?\\ "\\" st)
+ st))
+
(defun js-syntax-propertize-regexp (end)
- (when (eq (nth 3 (syntax-ppss)) ?/)
- ;; A /.../ regexp.
- (when (re-search-forward "\\(?:\\=\\|[^\\]\\)\\(?:\\\\\\\\\\)*/" end 'move)
- (put-text-property (1- (point)) (point)
- 'syntax-table (string-to-syntax "\"/")))))
+ (let ((ppss (syntax-ppss)))
+ (when (eq (nth 3 ppss) ?/)
+ ;; A /.../ regexp.
+ (while
+ (when (re-search-forward "\\(?:\\=\\|[^\\]\\)\\(?:\\\\\\\\\\)*/"
+ end 'move)
+ (if (nth 1 (with-syntax-table
+ js--syntax-propertize-regexp-syntax-table
+ (let ((parse-sexp-lookup-properties nil))
+ (parse-partial-sexp (nth 8 ppss) (point)))))
+ ;; A / within a character class is not the end of a regexp.
+ t
+ (put-text-property (1- (point)) (point)
+ 'syntax-table (string-to-syntax "\"/"))
+ nil))))))
(defun js-syntax-propertize (start end)
;; Javascript allows immediate regular expression objects, written /.../.
;; We can probably just add +, -, !, <, >, %, ^, ~, |, &, ?, : at which
;; point I think only * and / would be missing which could also be added,
;; but need care to avoid affecting the // and */ comment markers.
- ("\\(?:^\\|[=([{,:;]\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
+ ("\\(?:^\\|[=([{,:;]\\|\\_<return\\_>\\)\\(?:[ \t]\\)*\\(/\\)[^/*]"
(1 (ignore
(forward-char -1)
(when (or (not (memq (char-after (match-beginning 0)) '(?\s ?\t)))
;; Besides that only the standard CPython (2.x and 3.x) shell and
;; IPython are officially supported out of the box, the interaction
;; should support any other readline based Python shells as well
-;; (e.g. Jython and Pypy have been reported to work). You can change
+;; (e.g. Jython and PyPy have been reported to work). You can change
;; your default interpreter and commandline arguments by setting the
;; `python-shell-interpreter' and `python-shell-interpreter-args'
;; variables. This example enables IPython globally:
;; modify its behavior.
;; Shell completion: hitting tab will try to complete the current
-;; word. Shell completion is implemented in such way that if you
-;; change the `python-shell-interpreter' it should be possible to
-;; integrate custom logic to calculate completions. To achieve this
-;; you just need to set `python-shell-completion-setup-code' and
-;; `python-shell-completion-string-code'. The default provided code,
-;; enables autocompletion for both CPython and IPython (and ideally
-;; any readline based Python shell). This code depends on the
-;; readline module, so if you are using some Operating System that
-;; bundles Python without it (like Windows), installing pyreadline
-;; from URL `http://ipython.scipy.org/moin/PyReadline/Intro' should
-;; suffice. To troubleshoot why you are not getting any completions
-;; you can try the following in your Python shell:
+;; word. The two built-in mechanisms depend on Python's readline
+;; module: the "native" completion is tried first and is activated
+;; when `python-shell-completion-native-enable' is non-nil, the
+;; current `python-shell-interpreter' is not a member of the
+;; `python-shell-completion-native-disabled-interpreters' variable and
+;; `python-shell-completion-native-setup' succeeds; the "fallback" or
+;; "legacy" mechanism works by executing Python code in the background
+;; and enables auto-completion for shells that do not support
+;; receiving escape sequences (with some limitations, i.e. completion
+;; in blocks does not work). The code executed for the "fallback"
+;; completion can be found in `python-shell-completion-setup-code' and
+;; `python-shell-completion-string-code' variables. Their default
+;; values enable completion for both CPython and IPython, and probably
+;; any readline based shell (it's known to work with PyPy). If your
+;; Python installation lacks readline (like CPython for Windows),
+;; installing pyreadline (URL `http://ipython.org/pyreadline.html')
+;; should suffice. To troubleshoot why you are not getting any
+;; completions, you can try the following in your Python shell:
;; >>> import readline, rlcompleter
(defvar outline-heading-end-regexp)
(autoload 'comint-mode "comint")
+(autoload 'help-function-arglist "help-fns")
;;;###autoload
(add-to-list 'auto-mode-alist (cons (purecopy "\\.py\\'") 'python-mode))
(* ?\\ ?\\) (any ?\' ?\")))
(* ?\\ ?\\)
;; Match single or triple quotes of any kind.
- (group (or "\"" "\"\"\"" "'" "'''"))))))
+ (group (or "\"" "\"\"\"" "'" "'''")))))
+ (coding-cookie . ,(rx line-start ?# (* space)
+ (or
+ ;; # coding=<encoding name>
+ (: "coding" (or ?: ?=) (* space) (group-n 1 (+ (or word ?-))))
+ ;; # -*- coding: <encoding name> -*-
+ (: "-*-" (* space) "coding:" (* space)
+ (group-n 1 (+ (or word ?-))) (* space) "-*-")
+ ;; # vim: set fileencoding=<encoding name> :
+ (: "vim:" (* space) "set" (+ space)
+ "fileencoding" (* space) ?= (* space)
+ (group-n 1 (+ (or word ?-))) (* space) ":")))))
"Additional Python specific sexps for `python-rx'")
(defmacro python-rx (&rest regexps)
(eolp)
;; Avoid re-indenting on extra colon
(not (equal ?: (char-before (1- (point)))))
- (not (python-syntax-comment-or-string-p))
- ;; Never re-indent at beginning of defun
- (not (save-excursion
- (python-nav-beginning-of-statement)
- (python-info-looking-at-beginning-of-defun))))
- (python-indent-line)))))
+ (not (python-syntax-comment-or-string-p)))
+ ;; Just re-indent dedenters
+ (let ((dedenter-pos (python-info-dedenter-statement-p))
+ (current-pos (point)))
+ (when dedenter-pos
+ (save-excursion
+ (goto-char dedenter-pos)
+ (python-indent-line)
+ (unless (= (line-number-at-pos dedenter-pos)
+ (line-number-at-pos current-pos))
+ ;; Reindent region if this is a multiline statement
+ (python-indent-region dedenter-pos current-pos)))))))))
\f
;;; Navigation
(defun python-shell-get-process-name (dedicated)
"Calculate the appropriate process name for inferior Python process.
-If DEDICATED is t and the variable `buffer-file-name' is non-nil
-returns a string with the form
-`python-shell-buffer-name'[variable `buffer-file-name'] else
-returns the value of `python-shell-buffer-name'."
- (let ((process-name
- (if (and dedicated
- buffer-file-name)
- (format "%s[%s]" python-shell-buffer-name buffer-file-name)
- (format "%s" python-shell-buffer-name))))
- process-name))
+If DEDICATED is t returns a string with the form
+`python-shell-buffer-name'[`buffer-name'] else returns the value
+of `python-shell-buffer-name'."
+ (if dedicated
+ (format "%s[%s]" python-shell-buffer-name (buffer-name))
+ python-shell-buffer-name))
(defun python-shell-internal-get-process-name ()
"Calculate the appropriate process name for Internal Python process.
The name is calculated from `python-shell-global-buffer-name' and
-a hash of all relevant global shell settings in order to ensure
-uniqueness for different types of configurations."
- (format "%s [%s]"
- python-shell-internal-buffer-name
- (md5
- (concat
- python-shell-interpreter
- python-shell-interpreter-args
- python-shell--prompt-calculated-input-regexp
- python-shell--prompt-calculated-output-regexp
- (mapconcat #'symbol-value python-shell-setup-codes "")
- (mapconcat #'identity python-shell-process-environment "")
- (mapconcat #'identity python-shell-extra-pythonpaths "")
- (mapconcat #'identity python-shell-exec-path "")
- (or python-shell-virtualenv-root "")
- (mapconcat #'identity python-shell-exec-path "")))))
+the `buffer-name'."
+ (format "%s[%s]" python-shell-internal-buffer-name (buffer-name)))
(defun python-shell-calculate-command ()
"Calculate the string used to execute the inferior Python process."
"Execute the forms in BODY with the shell buffer temporarily current.
Signals an error if no shell buffer is available for current buffer."
(declare (indent 0) (debug t))
- (let ((shell-buffer (make-symbol "shell-buffer")))
- `(let ((,shell-buffer (python-shell-get-buffer)))
- (when (not ,shell-buffer)
- (error "No inferior Python buffer available."))
- (with-current-buffer ,shell-buffer
+ (let ((shell-process (make-symbol "shell-process")))
+ `(let ((,shell-process (python-shell-get-process-or-error)))
+ (with-current-buffer (process-buffer ,shell-process)
,@body))))
(defvar python-shell--font-lock-buffer nil)
(python-shell-accept-process-output
(get-buffer-process (current-buffer))))
-(defun python-shell-make-comint (cmd proc-name &optional pop internal)
+(defun python-shell-make-comint (cmd proc-name &optional show internal)
"Create a Python shell comint buffer.
CMD is the Python command to be executed and PROC-NAME is the
process name the comint buffer will get. After the comint buffer
is created the `inferior-python-mode' is activated. When
-optional argument POP is non-nil the buffer is shown. When
+optional argument SHOW is non-nil the buffer is shown. When
optional argument INTERNAL is non-nil this process is run on a
buffer with a name that starts with a space, following the Emacs
convention for temporary/internal buffers, and also makes sure
(mapconcat #'identity args " ")))
(with-current-buffer buffer
(inferior-python-mode))
- (and pop (pop-to-buffer buffer t))
+ (when show (display-buffer buffer))
(and internal (set-process-query-on-exit-flag process nil))))
proc-buffer-name)))
;;;###autoload
(defun run-python (&optional cmd dedicated show)
"Run an inferior Python process.
-Input and output via buffer named after
-`python-shell-buffer-name'. If there is a process already
-running in that buffer, just switch to it.
Argument CMD defaults to `python-shell-calculate-command' return
value. When called interactively with `prefix-arg', it allows
should be DEDICATED for the current buffer. When numeric prefix
arg is other than 0 or 4 do not SHOW.
+For a given buffer and same values of DEDICATED, if a process is
+already running for it, it will do nothing. This means that if
+the current buffer is using a global process, the user is still
+able to switch it to use a dedicated one.
+
Runs the hook `inferior-python-mode-hook' after
`comint-mode-hook' is run. (Type \\[describe-mode] in the
process buffer for a list of commands.)"
(y-or-n-p "Make dedicated process? ")
(= (prefix-numeric-value current-prefix-arg) 4))
(list (python-shell-calculate-command) nil t)))
- (python-shell-make-comint
- (or cmd (python-shell-calculate-command))
- (python-shell-get-process-name dedicated) show)
- dedicated)
+ (get-buffer-process
+ (python-shell-make-comint
+ (or cmd (python-shell-calculate-command))
+ (python-shell-get-process-name dedicated) show)))
(defun run-python-internal ()
"Run an inferior Internal Python process.
"Return inferior Python process for current buffer."
(get-buffer-process (python-shell-get-buffer)))
+(defun python-shell-get-process-or-error (&optional interactivep)
+ "Return inferior Python process for current buffer or signal error.
+When argument INTERACTIVEP is non-nil, use `user-error' instead
+of `error' with a user-friendly message."
+ (or (python-shell-get-process)
+ (if interactivep
+ (user-error
+ "Start a Python process first with `M-x run-python' or `%s'."
+ ;; Get the binding.
+ (key-description
+ (where-is-internal
+ #'run-python overriding-local-map t)))
+ (error
+ "No inferior Python process running."))))
+
(defun python-shell-get-or-create-process (&optional cmd dedicated show)
"Get or create an inferior Python process for current buffer and return it.
Arguments CMD, DEDICATED and SHOW are those of `run-python' and
(run-python cmd dedicated show)))
(or shell-process (python-shell-get-process))))
+(make-obsolete
+ #'python-shell-get-or-create-process
+ "Instead call `python-shell-get-process' and create one if returns nil."
+ "25.1")
+
(defvar python-shell-internal-buffer nil
"Current internal shell buffer for the current buffer.
This is really not necessary at all for the code to work but it's
(defun python-shell-internal-get-or-create-process ()
"Get or create an inferior Internal Python process."
- (let* ((proc-name (python-shell-internal-get-process-name))
- (proc-buffer-name (format " *%s*" proc-name)))
- (when (not (process-live-p proc-name))
- (run-python-internal)
- (setq python-shell-internal-buffer proc-buffer-name))
- (get-buffer-process proc-buffer-name)))
+ (let ((proc-name (python-shell-internal-get-process-name)))
+ (if (process-live-p proc-name)
+ (get-process proc-name)
+ (run-python-internal))))
(define-obsolete-function-alias
'python-proc 'python-shell-internal-get-or-create-process "24.3")
(concat (file-remote-p default-directory) "/tmp")
temporary-file-directory))
(temp-file-name (make-temp-file "py"))
- (coding-system-for-write 'utf-8))
+ (coding-system-for-write (python-info-encoding)))
(with-temp-file temp-file-name
- (insert "# -*- coding: utf-8 -*-\n") ;Not needed for Python-3.
(insert string)
(delete-trailing-whitespace))
temp-file-name))
-(defun python-shell-send-string (string &optional process)
- "Send STRING to inferior Python PROCESS."
- (interactive "sPython command: ")
- (let ((process (or process (python-shell-get-or-create-process))))
+(defun python-shell-send-string (string &optional process msg)
+ "Send STRING to inferior Python PROCESS.
+When optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+ (interactive
+ (list (read-string "Python command: ") nil t))
+ (let ((process (or process (python-shell-get-process-or-error msg))))
(if (string-match ".\n+." string) ;Multiline.
- (let* ((temp-file-name (python-shell--save-temp-file string)))
- (python-shell-send-file temp-file-name process temp-file-name t))
+ (let* ((temp-file-name (python-shell--save-temp-file string))
+ (file-name (or (buffer-file-name) temp-file-name)))
+ (python-shell-send-file file-name process temp-file-name t))
(comint-send-string process string)
(when (or (not (string-match "\n\\'" string))
(string-match "\n[ \t].*\n?\\'" string))
(defun python-shell-send-string-no-output (string &optional process)
"Send STRING to PROCESS and inhibit output.
Return the output."
- (let ((process (or process (python-shell-get-or-create-process)))
+ (let ((process (or process (python-shell-get-process-or-error)))
(comint-preoutput-filter-functions
'(python-shell-output-filter))
(python-shell-output-filter-in-progress t)
(define-obsolete-function-alias
'python-send-string 'python-shell-internal-send-string "24.3")
-(defvar python--use-fake-loc nil
- "If non-nil, use `compilation-fake-loc' to trace errors back to the buffer.
-If nil, regions of text are prepended by the corresponding number of empty
-lines and Python is told to output error messages referring to the whole
-source file.")
-
(defun python-shell-buffer-substring (start end &optional nomain)
"Send buffer substring from START to END formatted for shell.
This is a wrapper over `buffer-substring' that takes care of
\"if __name__ == '__main__'\" block will be removed.
2. When a subregion of the buffer is sent, it takes care of
appending extra empty lines so tracebacks are correct.
- 3. Wraps indented regions under an \"if True:\" block so the
+ 3. When the region sent is a substring of the current buffer, a
+ coding cookie is added.
+ 4. Wraps indented regions under an \"if True:\" block so the
interpreter evaluates them correctly."
- (let ((substring (buffer-substring-no-properties start end))
- (fillstr (unless python--use-fake-loc
- (make-string (1- (line-number-at-pos start)) ?\n)))
- (toplevel-block-p (save-excursion
- (goto-char start)
- (or (zerop (line-number-at-pos start))
- (progn
- (python-util-forward-comment 1)
- (zerop (current-indentation)))))))
+ (let* ((substring (buffer-substring-no-properties start end))
+ (starts-at-point-min-p (save-restriction
+ (widen)
+ (= (point-min) start)))
+ (encoding (python-info-encoding))
+ (fillstr (when (not starts-at-point-min-p)
+ (concat
+ (format "# -*- coding: %s -*-\n" encoding)
+ (make-string
+ ;; Substract 2 because of the coding cookie.
+ (- (line-number-at-pos start) 2) ?\n))))
+ (toplevel-block-p (save-excursion
+ (goto-char start)
+ (or (zerop (line-number-at-pos start))
+ (progn
+ (python-util-forward-comment 1)
+ (zerop (current-indentation)))))))
(with-temp-buffer
(python-mode)
(if fillstr (insert fillstr))
(insert substring)
(goto-char (point-min))
- (unless python--use-fake-loc
- ;; python-shell--save-temp-file adds an extra coding line, which would
- ;; throw off the line-counts, so let's try to compensate here.
- (if (looking-at "[ \t]*[#\n]")
- (delete-region (point) (line-beginning-position 2))))
(when (not toplevel-block-p)
(insert "if True:")
(delete-region (point) (line-end-position)))
(when (python-nav-if-name-main)
(cons (point)
(progn (python-nav-forward-sexp-safe)
+ ;; Include ending newline
+ (forward-line 1)
(point)))))))
;; Oh destructuring bind, how I miss you.
(if-name-main-start (car if-name-main-start-end))
- (if-name-main-end (cdr if-name-main-start-end)))
+ (if-name-main-end (cdr if-name-main-start-end))
+ (fillstr (make-string
+ (- (line-number-at-pos if-name-main-end)
+ (line-number-at-pos if-name-main-start)) ?\n)))
(when if-name-main-start-end
(goto-char if-name-main-start)
(delete-region if-name-main-start if-name-main-end)
- (insert
- (make-string
- (- (line-number-at-pos if-name-main-end)
- (line-number-at-pos if-name-main-start)) ?\n)))))
+ (insert fillstr))))
+ ;; Ensure there's only one coding cookie in the generated string.
+ (goto-char (point-min))
+ (when (looking-at-p (python-rx coding-cookie))
+ (forward-line 1)
+ (when (looking-at-p (python-rx coding-cookie))
+ (delete-region
+ (line-beginning-position) (line-end-position))))
(buffer-substring-no-properties (point-min) (point-max)))))
-(declare-function compilation-fake-loc "compile"
- (marker file &optional line col))
-
-(defun python-shell-send-region (start end &optional nomain)
- "Send the region delimited by START and END to inferior Python process."
- (interactive "r")
- (let* ((python--use-fake-loc
- (or python--use-fake-loc (not buffer-file-name)))
- (string (python-shell-buffer-substring start end nomain))
- (process (python-shell-get-or-create-process))
- (_ (string-match "\\`\n*\\(.*\\)" string)))
- (message "Sent: %s..." (match-string 1 string))
- (let* ((temp-file-name (python-shell--save-temp-file string))
- (file-name (or (buffer-file-name) temp-file-name)))
- (python-shell-send-file file-name process temp-file-name t)
- (unless python--use-fake-loc
- (with-current-buffer (process-buffer process)
- (compilation-fake-loc (copy-marker start) temp-file-name
- 2)) ;; Not 1, because of the added coding line.
- ))))
-
-(defun python-shell-send-buffer (&optional arg)
+(defun python-shell-send-region (start end &optional send-main msg)
+ "Send the region delimited by START and END to inferior Python process.
+When optional argument SEND-MAIN is non-nil, allow execution of
+code inside blocks delimited by \"if __name__== '__main__':\".
+When called interactively SEND-MAIN defaults to nil, unless it's
+called with prefix argument. When optional argument MSG is
+non-nil, forces display of a user-friendly message if there's no
+process running; defaults to t when called interactively."
+ (interactive
+ (list (region-beginning) (region-end) current-prefix-arg t))
+ (let* ((string (python-shell-buffer-substring start end (not send-main)))
+ (process (python-shell-get-process-or-error msg))
+ (original-string (buffer-substring-no-properties start end))
+ (_ (string-match "\\`\n*\\(.*\\)" original-string)))
+ (message "Sent: %s..." (match-string 1 original-string))
+ (python-shell-send-string string process)))
+
+(defun python-shell-send-buffer (&optional send-main msg)
"Send the entire buffer to inferior Python process.
-With prefix ARG allow execution of code inside blocks delimited
-by \"if __name__== '__main__':\"."
- (interactive "P")
+When optional argument SEND-MAIN is non-nil, allow execution of
+code inside blocks delimited by \"if __name__== '__main__':\".
+When called interactively SEND-MAIN defaults to nil, unless it's
+called with prefix argument. When optional argument MSG is
+non-nil, forces display of a user-friendly message if there's no
+process running; defaults to t when called interactively."
+ (interactive (list current-prefix-arg t))
(save-restriction
(widen)
- (python-shell-send-region (point-min) (point-max) (not arg))))
+ (python-shell-send-region (point-min) (point-max) send-main msg)))
-(defun python-shell-send-defun (arg)
+(defun python-shell-send-defun (&optional arg msg)
"Send the current defun to inferior Python process.
-When argument ARG is non-nil do not include decorators."
- (interactive "P")
+When argument ARG is non-nil do not include decorators. When
+optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+ (interactive (list current-prefix-arg t))
(save-excursion
(python-shell-send-region
(progn
(progn
(or (python-nav-end-of-defun)
(end-of-line 1))
- (point-marker)))))
+ (point-marker))
+ nil ;; noop
+ msg)))
(defun python-shell-send-file (file-name &optional process temp-file-name
- delete)
+ delete msg)
"Send FILE-NAME to inferior Python PROCESS.
If TEMP-FILE-NAME is passed then that file is used for processing
-instead, while internally the shell will continue to use FILE-NAME.
-If DELETE is non-nil, delete the file afterwards."
- (interactive "fFile to send: ")
- (let* ((process (or process (python-shell-get-or-create-process)))
+instead, while internally the shell will continue to use
+FILE-NAME. If TEMP-FILE-NAME and DELETE are non-nil, then
+TEMP-FILE-NAME is deleted after evaluation is performed. When
+optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+ (interactive
+ (list
+ (read-file-name "File to send: ") ; file-name
+ nil ; process
+ nil ; temp-file-name
+ nil ; delete
+ t)) ; msg
+ (let* ((process (or process (python-shell-get-process-or-error msg)))
+ (encoding (with-temp-buffer
+ (insert-file-contents
+ (or temp-file-name file-name))
+ (python-info-encoding)))
+ (file-name (expand-file-name
+ (or (file-remote-p file-name 'localname)
+ file-name)))
(temp-file-name (when temp-file-name
(expand-file-name
(or (file-remote-p temp-file-name 'localname)
- temp-file-name))))
- (file-name (or (when file-name
- (expand-file-name
- (or (file-remote-p file-name 'localname)
- file-name)))
- temp-file-name)))
- (when (not file-name)
- (error "If FILE-NAME is nil then TEMP-FILE-NAME must be non-nil"))
+ temp-file-name)))))
(python-shell-send-string
(format
- (concat "__pyfile = open('''%s''');"
- "exec(compile(__pyfile.read(), '''%s''', 'exec'));"
- "__pyfile.close()%s")
- (or temp-file-name file-name) file-name
- (if delete (format "; import os; os.remove('''%s''')"
- (or temp-file-name file-name))
- ""))
+ (concat
+ "import codecs, os;"
+ "__pyfile = codecs.open('''%s''', encoding='''%s''');"
+ "__code = __pyfile.read().encode('''%s''');"
+ "__pyfile.close();"
+ (when (and delete temp-file-name)
+ (format "os.remove('''%s''');" temp-file-name))
+ "exec(compile(__code, '''%s''', 'exec'));")
+ (or temp-file-name file-name) encoding encoding file-name)
process)))
-(defun python-shell-switch-to-shell ()
- "Switch to inferior Python process buffer."
- (interactive)
- (process-buffer (python-shell-get-or-create-process)) t)
+(defun python-shell-switch-to-shell (&optional msg)
+ "Switch to inferior Python process buffer.
+When optional argument MSG is non-nil, forces display of a
+user-friendly message if there's no process running; defaults to
+t when called interactively."
+ (interactive "p")
+ (pop-to-buffer
+ (process-buffer (python-shell-get-process-or-error msg)) nil t))
(defun python-shell-send-setup-code ()
"Send all setup code for shell.
"25.1"
"Completion string code must work for (i)pdb.")
+(defcustom python-shell-completion-native-disabled-interpreters
+ ;; PyPy's readline cannot handle some escape sequences yet.
+ (list "pypy")
+ "List of disabled interpreters.
+When a match is found, native completion is disabled."
+ :type '(repeat string))
+
+(defcustom python-shell-completion-native-enable t
+ "Enable readline based native completion."
+ :type 'boolean)
+
+(defcustom python-shell-completion-native-output-timeout 0.01
+ "Time in seconds to wait for completion output before giving up."
+ :type 'float)
+
+(defvar python-shell-completion-native-redirect-buffer
+ " *Python completions redirect*"
+ "Buffer to be used to redirect output of readline commands.")
+
+(defun python-shell-completion-native-interpreter-disabled-p ()
+ "Return non-nil if interpreter has native completion disabled."
+ (when python-shell-completion-native-disabled-interpreters
+ (string-match
+ (regexp-opt python-shell-completion-native-disabled-interpreters)
+ (file-name-nondirectory python-shell-interpreter))))
+
+(defun python-shell-completion-native-try ()
+ "Return non-nil if can trigger native completion."
+ (let ((python-shell-completion-native-enable t))
+ (python-shell-completion-native-get-completions
+ (get-buffer-process (current-buffer))
+ nil "int")))
+
+(defun python-shell-completion-native-setup ()
+ "Try to setup native completion, return non-nil on success."
+ (let ((process (python-shell-get-process)))
+ (python-shell-send-string
+ (funcall
+ 'mapconcat
+ #'identity
+ (list
+ "try:"
+ " import readline, rlcompleter"
+ ;; Remove parens on callables as it breaks completion on
+ ;; arguments (e.g. str(Ari<tab>)).
+ " class Completer(rlcompleter.Completer):"
+ " def _callable_postfix(self, val, word):"
+ " return word"
+ " readline.set_completer(Completer().complete)"
+ " if readline.__doc__ and 'libedit' in readline.__doc__:"
+ " readline.parse_and_bind('bind ^I rl_complete')"
+ " else:"
+ " readline.parse_and_bind('tab: complete')"
+ " print ('python.el: readline is available')"
+ "except:"
+ " print ('python.el: readline not available')")
+ "\n")
+ process)
+ (python-shell-accept-process-output process)
+ (when (save-excursion
+ (re-search-backward
+ (regexp-quote "python.el: readline is available") nil t 1))
+ (python-shell-completion-native-try))))
+
+(defun python-shell-completion-native-turn-off (&optional msg)
+ "Turn off shell native completions.
+With argument MSG show deactivation message."
+ (interactive "p")
+ (python-shell-with-shell-buffer
+ (set (make-local-variable 'python-shell-completion-native-enable) nil)
+ (when msg
+ (message "Shell native completion is disabled, using fallback"))))
+
+(defun python-shell-completion-native-turn-on (&optional msg)
+ "Turn on shell native completions.
+With argument MSG show deactivation message."
+ (interactive "p")
+ (python-shell-with-shell-buffer
+ (set (make-local-variable 'python-shell-completion-native-enable) t)
+ (python-shell-completion-native-turn-on-maybe msg)))
+
+(defun python-shell-completion-native-turn-on-maybe (&optional msg)
+ "Turn on native completions if enabled and available.
+With argument MSG show activation/deactivation message."
+ (interactive "p")
+ (python-shell-with-shell-buffer
+ (when python-shell-completion-native-enable
+ (cond
+ ((python-shell-completion-native-interpreter-disabled-p)
+ (python-shell-completion-native-turn-off msg))
+ ((python-shell-completion-native-setup)
+ (when msg
+ (message "Shell native completion is enabled.")))
+ (t (lwarn
+ '(python python-shell-completion-native-turn-on-maybe)
+ :warning
+ (concat
+ "Your `python-shell-interpreter' doesn't seem to "
+ "support readline, yet `python-shell-completion-native' "
+ (format "was `t' and %S is not part of the "
+ (file-name-nondirectory python-shell-interpreter))
+ "`python-shell-completion-native-disabled-interpreters' "
+ "list. Native completions have been disabled locally. "))
+ (python-shell-completion-native-turn-off msg))))))
+
+(defun python-shell-completion-native-turn-on-maybe-with-msg ()
+ "Like `python-shell-completion-native-turn-on-maybe' but force messages."
+ (python-shell-completion-native-turn-on-maybe t))
+
+(add-hook 'inferior-python-mode-hook
+ #'python-shell-completion-native-turn-on-maybe-with-msg)
+
+(defun python-shell-completion-native-toggle (&optional msg)
+ "Toggle shell native completion.
+With argument MSG show activation/deactivation message."
+ (interactive "p")
+ (python-shell-with-shell-buffer
+ (if python-shell-completion-native-enable
+ (python-shell-completion-native-turn-off msg)
+ (python-shell-completion-native-turn-on msg))
+ python-shell-completion-native-enable))
+
+(defun python-shell-completion-native-get-completions (process import input)
+ "Get completions using native readline for PROCESS.
+When IMPORT is non-nil takes precedence over INPUT for
+completion."
+ (when (and python-shell-completion-native-enable
+ (python-util-comint-last-prompt)
+ (>= (point) (cdr (python-util-comint-last-prompt))))
+ (let* ((input (or import input))
+ (original-filter-fn (process-filter process))
+ (redirect-buffer (get-buffer-create
+ python-shell-completion-native-redirect-buffer))
+ (separators (python-rx
+ (or whitespace open-paren close-paren)))
+ (trigger "\t\t\t")
+ (new-input (concat input trigger))
+ (input-length
+ (save-excursion
+ (+ (- (point-max) (comint-bol)) (length new-input))))
+ (delete-line-command (make-string input-length ?\b))
+ (input-to-send (concat new-input delete-line-command)))
+ ;; Ensure restoring the process filter, even if the user quits
+ ;; or there's some other error.
+ (unwind-protect
+ (with-current-buffer redirect-buffer
+ ;; Cleanup the redirect buffer
+ (delete-region (point-min) (point-max))
+ ;; Mimic `comint-redirect-send-command', unfortunately it
+ ;; can't be used here because it expects a newline in the
+ ;; command and that's exactly what we are trying to avoid.
+ (let ((comint-redirect-echo-input nil)
+ (comint-redirect-verbose nil)
+ (comint-redirect-perform-sanity-check nil)
+ (comint-redirect-insert-matching-regexp nil)
+ ;; Feed it some regex that will never match.
+ (comint-redirect-finished-regexp "^\\'$")
+ (comint-redirect-output-buffer redirect-buffer))
+ ;; Compatibility with Emacs 24.x. Comint changed and
+ ;; now `comint-redirect-filter' gets 3 args. This
+ ;; checks which version of `comint-redirect-filter' is
+ ;; in use based on its args and uses `apply-partially'
+ ;; to make it up for the 3 args case.
+ (if (= (length
+ (help-function-arglist 'comint-redirect-filter)) 3)
+ (set-process-filter
+ process (apply-partially
+ #'comint-redirect-filter original-filter-fn))
+ (set-process-filter process #'comint-redirect-filter))
+ (process-send-string process input-to-send)
+ (accept-process-output
+ process
+ python-shell-completion-native-output-timeout)
+ ;; XXX: can't use `python-shell-accept-process-output'
+ ;; here because there are no guarantees on how output
+ ;; ends. The workaround here is to call
+ ;; `accept-process-output' until we don't find anything
+ ;; else to accept.
+ (while (accept-process-output
+ process
+ python-shell-completion-native-output-timeout))
+ (cl-remove-duplicates
+ (split-string
+ (buffer-substring-no-properties
+ (point-min) (point-max))
+ separators t))))
+ (set-process-filter process original-filter-fn)))))
+
(defun python-shell-completion-get-completions (process import input)
"Do completion at point using PROCESS for IMPORT or INPUT.
When IMPORT is non-nil takes precedence over INPUT for
last-prompt-end
(forward-char (length (match-string-no-properties 0)))
(point))))
- (end (point)))
+ (end (point))
+ (completion-fn
+ (if python-shell-completion-native-enable
+ #'python-shell-completion-native-get-completions
+ #'python-shell-completion-get-completions)))
(list start end
(completion-table-dynamic
(apply-partially
- #'python-shell-completion-get-completions
+ completion-fn
process import-statement)))))
(define-obsolete-function-alias
(* whitespace) line-end))
(string-equal "" (match-string-no-properties 1))))
+(defun python-info-encoding-from-cookie ()
+ "Detect current buffer's encoding from its coding cookie.
+Returns the enconding as a symbol."
+ (let ((first-two-lines
+ (save-excursion
+ (save-restriction
+ (widen)
+ (goto-char (point-min))
+ (forward-line 2)
+ (buffer-substring-no-properties
+ (point)
+ (point-min))))))
+ (when (string-match (python-rx coding-cookie) first-two-lines)
+ (intern (match-string-no-properties 1 first-two-lines)))))
+
+(defun python-info-encoding ()
+ "Return encoding for file.
+Try `python-info-encoding-from-cookie', if none is found then
+default to utf-8."
+ ;; If no enconding is defined, then it's safe to use UTF-8: Python 2
+ ;; uses ASCII as default while Python 3 uses UTF-8. This means that
+ ;; in the worst case escenario python.el will make things work for
+ ;; Python 2 files with unicode data and no encoding defined.
+ (or (python-info-encoding-from-cookie)
+ 'utf-8))
+
\f
;;; Utility functions
(sh-make-vars-local))
(message "Indentation setup for shell type %s" sh-shell))
(message "No indentation for this shell type.")
- (setq indent-line-function 'sh-basic-indent-line))
+ (setq-local indent-line-function 'sh-basic-indent-line))
(when font-lock-mode
(setq font-lock-set-defaults nil)
(font-lock-set-defaults)
--- /dev/null
+;; xref.el --- Cross-referencing commands -*-lexical-binding:t-*-
+
+;; Copyright (C) 2014 Free Software Foundation, Inc.
+
+;; 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 3 of the License, 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. If not, see <http://www.gnu.org/licenses/>.
+
+;;; Commentary:
+
+;; This file provides a somewhat generic infrastructure for cross
+;; referencing commands, in particular "find-definition".
+;;
+;; Some part of the functionality must be implemented in a language
+;; dependent way and that's done by defining `xref-find-function',
+;; `xref-identifier-at-point-function' and
+;; `xref-identifier-completion-table-function', which see.
+;;
+;; A major mode should make these variables buffer-local first.
+;;
+;; `xref-find-function' can be called in several ways, see its
+;; description. It has to operate with "xref" and "location" values.
+;;
+;; One would usually call `make-xref' and `xref-make-file-location',
+;; `xref-make-buffer-location' or `xref-make-bogus-location' to create
+;; them.
+;;
+;; Each identifier must be represented as a string. Implementers can
+;; use string properties to store additional information about the
+;; identifier, but they should keep in mind that values returned from
+;; `xref-identifier-completion-table-function' should still be
+;; distinct, because the user can't see the properties when making the
+;; choice.
+;;
+;; See the functions `etags-xref-find' and `elisp-xref-find' for full
+;; examples.
+
+;;; Code:
+
+(require 'cl-lib)
+(require 'eieio)
+(require 'ring)
+
+(defgroup xref nil "Cross-referencing commands"
+ :group 'tools)
+
+\f
+;;; Locations
+
+(defclass xref-location () ()
+ :documentation "A location represents a position in a file or buffer.")
+
+;; If a backend decides to subclass xref-location it can provide
+;; methods for some of the following functions:
+(defgeneric xref-location-marker (location)
+ "Return the marker for LOCATION.")
+
+(defgeneric xref-location-group (location)
+ "Return a string used to group a set of locations.
+This is typically the filename.")
+
+;;;; Commonly needed location classes are defined here:
+
+;; FIXME: might be useful to have an optional "hint" i.e. a string to
+;; search for in case the line number is sightly out of date.
+(defclass xref-file-location (xref-location)
+ ((file :type string :initarg :file)
+ (line :type fixnum :initarg :line)
+ (column :type fixnum :initarg :column))
+ :documentation "A file location is a file/line/column triple.
+Line numbers start from 1 and columns from 0.")
+
+(defun xref-make-file-location (file line column)
+ "Create and return a new xref-file-location."
+ (make-instance 'xref-file-location :file file :line line :column column))
+
+(defmethod xref-location-marker ((l xref-file-location))
+ (with-slots (file line column) l
+ (with-current-buffer
+ (or (get-file-buffer file)
+ (let ((find-file-suppress-same-file-warnings t))
+ (find-file-noselect file)))
+ (save-restriction
+ (widen)
+ (save-excursion
+ (goto-char (point-min))
+ (beginning-of-line line)
+ (move-to-column column)
+ (point-marker))))))
+
+(defmethod xref-location-group ((l xref-file-location))
+ (oref l :file))
+
+(defclass xref-buffer-location (xref-location)
+ ((buffer :type buffer :initarg :buffer)
+ (position :type fixnum :initarg :position)))
+
+(defun xref-make-buffer-location (buffer position)
+ "Create and return a new xref-buffer-location."
+ (make-instance 'xref-buffer-location :buffer buffer :position position))
+
+(defmethod xref-location-marker ((l xref-buffer-location))
+ (with-slots (buffer position) l
+ (let ((m (make-marker)))
+ (move-marker m position buffer))))
+
+(defmethod xref-location-group ((l xref-buffer-location))
+ (with-slots (buffer) l
+ (or (buffer-file-name buffer)
+ (format "(buffer %s)" (buffer-name buffer)))))
+
+(defclass xref-bogus-location (xref-location)
+ ((message :type string :initarg :message
+ :reader xref-bogus-location-message))
+ :documentation "Bogus locations are sometimes useful to
+indicate errors, e.g. when we know that a function exists but the
+actual location is not known.")
+
+(defun xref-make-bogus-location (message)
+ "Create and return a new xref-bogus-location."
+ (make-instance 'xref-bogus-location :message message))
+
+(defmethod xref-location-marker ((l xref-bogus-location))
+ (user-error "%s" (oref l :message)))
+
+(defmethod xref-location-group ((_ xref-bogus-location)) "(No location)")
+
+;; This should be in elisp-mode.el, but it's preloaded, and we can't
+;; preload defclass and defmethod (at least, not yet).
+(defclass xref-elisp-location (xref-location)
+ ((symbol :type symbol :initarg :symbol)
+ (type :type symbol :initarg :type)
+ (file :type string :initarg :file
+ :reader xref-location-group))
+ :documentation "Location of an Emacs Lisp symbol definition.")
+
+(defun xref-make-elisp-location (symbol type file)
+ (make-instance 'xref-elisp-location :symbol symbol :type type :file file))
+
+(defmethod xref-location-marker ((l xref-elisp-location))
+ (with-slots (symbol type file) l
+ (let ((buffer-point
+ (pcase type
+ (`defun (find-function-search-for-symbol symbol nil file))
+ ((or `defvar `defface)
+ (find-function-search-for-symbol symbol type file))
+ (`feature
+ (cons (find-file-noselect file) 1)))))
+ (with-current-buffer (car buffer-point)
+ (goto-char (or (cdr buffer-point) (point-min)))
+ (point-marker)))))
+
+\f
+;;; Cross-reference
+
+(defclass xref--xref ()
+ ((description :type string :initarg :description
+ :reader xref--xref-description)
+ (location :type xref-location :initarg :location
+ :reader xref--xref-location))
+ :comment "An xref is used to display and locate constructs like
+variables or functions.")
+
+(defun xref-make (description location)
+ "Create and return a new xref.
+DESCRIPTION is a short string to describe the xref.
+LOCATION is an `xref-location'."
+ (make-instance 'xref--xref :description description :location location))
+
+\f
+;;; API
+
+(declare-function etags-xref-find "etags" (action id))
+(declare-function tags-lazy-completion-table "etags" ())
+
+;; For now, make the etags backend the default.
+(defvar xref-find-function #'etags-xref-find
+ "Function to look for cross-references.
+It can be called in several ways:
+
+ (definitions IDENTIFIER): Find definitions of IDENTIFIER. The
+result must be a list of xref objects. If no definitions can be
+found, return nil.
+
+ (references IDENTIFIER): Find references of IDENTIFIER. The
+result must be a list of xref objects. If no references can be
+found, return nil.
+
+ (apropos PATTERN): Find all symbols that match PATTERN. PATTERN
+is a regexp.
+
+IDENTIFIER can be any string returned by
+`xref-identifier-at-point-function', or from the table returned
+by `xref-identifier-completion-table-function'.
+
+To create an xref object, call `xref-make'.")
+
+(defvar xref-identifier-at-point-function #'xref-default-identifier-at-point
+ "Function to get the relevant identifier at point.
+
+The return value must be a string or nil. nil means no
+identifier at point found.
+
+If it's hard to determine the identifier precisely (e.g., because
+it's a method call on unknown type), the implementation can
+return a simple string (such as symbol at point) marked with a
+special text property which `xref-find-function' would recognize
+and then delegate the work to an external process.")
+
+(defvar xref-identifier-completion-table-function #'tags-lazy-completion-table
+ "Function that returns the completion table for identifiers.")
+
+(defun xref-default-identifier-at-point ()
+ (let ((thing (thing-at-point 'symbol)))
+ (and thing (substring-no-properties thing))))
+
+\f
+;;; misc utilities
+(defun xref--alistify (list key test)
+ "Partition the elements of LIST into an alist.
+KEY extracts the key from an element and TEST is used to compare
+keys."
+ (let ((alist '()))
+ (dolist (e list)
+ (let* ((k (funcall key e))
+ (probe (cl-assoc k alist :test test)))
+ (if probe
+ (setcdr probe (cons e (cdr probe)))
+ (push (cons k (list e)) alist))))
+ ;; Put them back in order.
+ (cl-loop for (key . value) in (reverse alist)
+ collect (cons key (reverse value)))))
+
+(defun xref--insert-propertized (props &rest strings)
+ "Insert STRINGS with text properties PROPS."
+ (let ((start (point)))
+ (apply #'insert strings)
+ (add-text-properties start (point) props)))
+
+(defun xref--search-property (property &optional backward)
+ "Search the next text range where text property PROPERTY is non-nil.
+Return the value of PROPERTY. If BACKWARD is non-nil, search
+backward."
+ (let ((next (if backward
+ #'previous-single-char-property-change
+ #'next-single-char-property-change))
+ (start (point))
+ (value nil))
+ (while (progn
+ (goto-char (funcall next (point) property))
+ (not (or (setq value (get-text-property (point) property))
+ (eobp)
+ (bobp)))))
+ (cond (value)
+ (t (goto-char start) nil))))
+
+\f
+;;; Marker stack (M-. pushes, M-, pops)
+
+(defcustom xref-marker-ring-length 16
+ "Length of the xref marker ring."
+ :type 'integer
+ :version "25.1")
+
+(defvar xref--marker-ring (make-ring xref-marker-ring-length)
+ "Ring of markers to implement the marker stack.")
+
+(defun xref-push-marker-stack ()
+ "Add point to the marker stack."
+ (ring-insert xref--marker-ring (point-marker)))
+
+;;;###autoload
+(defun xref-pop-marker-stack ()
+ "Pop back to where \\[xref-find-definitions] was last invoked."
+ (interactive)
+ (let ((ring xref--marker-ring))
+ (when (ring-empty-p ring)
+ (error "Marker stack is empty"))
+ (let ((marker (ring-remove ring 0)))
+ (switch-to-buffer (or (marker-buffer marker)
+ (error "The marked buffer has been deleted")))
+ (goto-char (marker-position marker))
+ (set-marker marker nil nil))))
+
+;; etags.el needs this
+(defun xref-clear-marker-stack ()
+ "Discard all markers from the marker stack."
+ (let ((ring xref--marker-ring))
+ (while (not (ring-empty-p ring))
+ (let ((marker (ring-remove ring)))
+ (set-marker marker nil nil)))))
+
+\f
+(defun xref--goto-location (location)
+ "Set buffer and point according to xref-location LOCATION."
+ (let ((marker (xref-location-marker location)))
+ (set-buffer (marker-buffer marker))
+ (cond ((and (<= (point-min) marker) (<= marker (point-max))))
+ (widen-automatically (widen))
+ (t (error "Location is outside accessible part of buffer")))
+ (goto-char marker)))
+
+(defun xref--pop-to-location (location &optional window)
+ "Goto xref-location LOCATION and display the buffer.
+WINDOW controls how the buffer is displayed:
+ nil -- switch-to-buffer
+ 'window -- pop-to-buffer (other window)
+ 'frame -- pop-to-buffer (other frame)"
+ (xref--goto-location location)
+ (cl-ecase window
+ ((nil) (switch-to-buffer (current-buffer)))
+ (window (pop-to-buffer (current-buffer) t))
+ (frame (let ((pop-up-frames t)) (pop-to-buffer (current-buffer) t)))))
+
+\f
+;;; XREF buffer (part of the UI)
+
+;; The xref buffer is used to display a set of xrefs.
+
+(defun xref--display-position (pos other-window recenter-arg)
+ ;; show the location, but don't hijack focus.
+ (with-selected-window (display-buffer (current-buffer) other-window)
+ (goto-char pos)
+ (recenter recenter-arg)))
+
+(defun xref--show-location (location)
+ (condition-case err
+ (progn
+ (xref--goto-location location)
+ (xref--display-position (point) t 1))
+ (user-error (message (error-message-string err)))))
+
+(defun xref--next-line (backward)
+ (let ((loc (xref--search-property 'xref-location backward)))
+ (when loc
+ (save-window-excursion
+ (xref--show-location loc)
+ (sit-for most-positive-fixnum)))))
+
+(defun xref-next-line ()
+ "Move to the next xref and display its source in the other window."
+ (interactive)
+ (xref--next-line nil))
+
+(defun xref-prev-line ()
+ "Move to the previous xref and display its source in the other window."
+ (interactive)
+ (xref--next-line t))
+
+(defun xref--location-at-point ()
+ (or (get-text-property (point) 'xref-location)
+ (error "No reference at point")))
+
+(defvar-local xref--window nil)
+
+(defun xref-goto-xref ()
+ "Jump to the xref at point and bury the xref buffer."
+ (interactive)
+ (let ((loc (xref--location-at-point))
+ (window xref--window))
+ (quit-window)
+ (xref--pop-to-location loc window)))
+
+(define-derived-mode xref--xref-buffer-mode fundamental-mode "XREF"
+ "Mode for displaying cross-references."
+ (setq buffer-read-only t))
+
+(let ((map xref--xref-buffer-mode-map))
+ (define-key map (kbd "q") #'quit-window)
+ (define-key map [remap next-line] #'xref-next-line)
+ (define-key map [remap previous-line] #'xref-prev-line)
+ (define-key map (kbd "RET") #'xref-goto-xref)
+
+ ;; suggested by Johan Claesson "to further reduce finger movement":
+ (define-key map (kbd ".") #'xref-next-line)
+ (define-key map (kbd ",") #'xref-prev-line))
+
+(defconst xref-buffer-name "*xref*"
+ "The name of the buffer to show xrefs.")
+
+(defun xref--insert-xrefs (xref-alist)
+ "Insert XREF-ALIST in the current-buffer.
+XREF-ALIST is of the form ((GROUP . (XREF ...)) ...). Where
+GROUP is a string for decoration purposes and XREF is an
+`xref--xref' object."
+ (cl-loop for ((group . xrefs) . more1) on xref-alist do
+ (xref--insert-propertized '(face bold) group "\n")
+ (cl-loop for (xref . more2) on xrefs do
+ (insert " ")
+ (with-slots (description location) xref
+ (xref--insert-propertized
+ (list 'xref-location location
+ 'face 'font-lock-keyword-face)
+ description))
+ (when (or more1 more2)
+ (insert "\n")))))
+
+(defun xref--analyze (xrefs)
+ "Find common filenames in XREFS.
+Return an alist of the form ((FILENAME . (XREF ...)) ...)."
+ (xref--alistify xrefs
+ (lambda (x)
+ (xref-location-group (xref--xref-location x)))
+ #'equal))
+
+(defun xref--show-xref-buffer (xrefs window)
+ (let ((xref-alist (xref--analyze xrefs)))
+ (with-current-buffer (get-buffer-create xref-buffer-name)
+ (let ((inhibit-read-only t))
+ (erase-buffer)
+ (xref--insert-xrefs xref-alist)
+ (xref--xref-buffer-mode)
+ (pop-to-buffer (current-buffer))
+ (goto-char (point-min))
+ (setq xref--window window)
+ (current-buffer)))))
+
+\f
+;; This part of the UI seems fairly uncontroversial: it reads the
+;; identifier and deals with the single definition case.
+;;
+;; The controversial multiple definitions case is handed off to
+;; xref-show-xrefs-function.
+
+(defvar xref-show-xrefs-function 'xref--show-xref-buffer
+ "Function to display a list of xrefs.")
+
+(defun xref--show-xrefs (id kind xrefs window)
+ (cond
+ ((null xrefs)
+ (user-error "No known %s for: %s" kind id))
+ ((not (cdr xrefs))
+ (xref-push-marker-stack)
+ (xref--pop-to-location (xref--xref-location (car xrefs)) window))
+ (t
+ (xref-push-marker-stack)
+ (funcall xref-show-xrefs-function xrefs window))))
+
+(defun xref--read-identifier (prompt)
+ "Return the identifier at point or read it from the minibuffer."
+ (let ((id (funcall xref-identifier-at-point-function)))
+ (cond ((or current-prefix-arg (not id))
+ (completing-read prompt
+ (funcall xref-identifier-completion-table-function)
+ nil t id))
+ (t id))))
+
+\f
+;;; Commands
+
+(defun xref--find-definitions (id window)
+ (xref--show-xrefs id "definitions"
+ (funcall xref-find-function 'definitions id)
+ window))
+
+;;;###autoload
+(defun xref-find-definitions (identifier)
+ "Find the definition of the identifier at point.
+With prefix argument, prompt for the identifier."
+ (interactive (list (xref--read-identifier "Find definitions of: ")))
+ (xref--find-definitions identifier nil))
+
+;;;###autoload
+(defun xref-find-definitions-other-window (identifier)
+ "Like `xref-find-definitions' but switch to the other window."
+ (interactive (list (xref--read-identifier "Find definitions of: ")))
+ (xref--find-definitions identifier 'window))
+
+;;;###autoload
+(defun xref-find-definitions-other-frame (identifier)
+ "Like `xref-find-definitions' but switch to the other frame."
+ (interactive (list (xref--read-identifier "Find definitions of: ")))
+ (xref--find-definitions identifier 'frame))
+
+;;;###autoload
+(defun xref-find-references (identifier)
+ "Find references to the identifier at point.
+With prefix argument, prompt for the identifier."
+ (interactive (list (xref--read-identifier "Find references of: ")))
+ (xref--show-xrefs identifier "references"
+ (funcall xref-find-function 'references identifier)
+ nil))
+
+;;;###autoload
+(defun xref-find-apropos (pattern)
+ "Find all meaningful symbols that match PATTERN.
+The argument has the same meaning as in `apropos'."
+ (interactive (list (read-from-minibuffer
+ "Search for pattern (word list or regexp): ")))
+ (require 'apropos)
+ (xref--show-xrefs pattern "apropos"
+ (funcall xref-find-function 'apropos
+ (apropos-parse-pattern
+ (if (string-equal (regexp-quote pattern) pattern)
+ ;; Split into words
+ (or (split-string pattern "[ \t]+" t)
+ (user-error "No word list given"))
+ pattern)))
+ nil))
+
+\f
+;;; Key bindings
+
+;;;###autoload (define-key esc-map "." #'xref-find-definitions)
+;;;###autoload (define-key esc-map "," #'xref-pop-marker-stack)
+;;;###autoload (define-key esc-map [?\C-.] #'xref-find-apropos)
+;;;###autoload (define-key ctl-x-4-map "." #'xref-find-definitions-other-window)
+;;;###autoload (define-key ctl-x-5-map "." #'xref-find-definitions-other-frame)
+
+\f
+(provide 'xref)
+
+;;; xref.el ends here
:version "24.1"
:type 'regexp :group 'save-place)
+(declare-function dired-current-directory "dired" (&optional localp))
+
(defun toggle-save-place (&optional parg)
"Toggle whether to save your place in this file between sessions.
If this mode is enabled, point is recorded when you kill the buffer
\(setq-default save-place t)"
(interactive "P")
(if (not (or buffer-file-name (and (derived-mode-p 'dired-mode)
- dired-directory)))
+ (dired-current-directory))))
(message "Buffer `%s' not visiting a file or directory" (buffer-name))
(setq save-place (if parg
(> (prefix-numeric-value parg) 0)
;; file. If not, do so, then feel free to modify the alist. It
;; will be saved again when Emacs is killed.
(or save-place-loaded (load-save-place-alist-from-file))
- (let ((item (or buffer-file-name
- (and (derived-mode-p 'dired-mode)
- dired-directory
- (expand-file-name (if (consp dired-directory)
- (car dired-directory)
- dired-directory))))))
+ (let* ((directory (and (derived-mode-p 'dired-mode)
+ (dired-current-directory)))
+ (item (or buffer-file-name
+ (and directory
+ (expand-file-name (if (consp directory)
+ (car directory)
+ directory))))))
(when (and item
(or (not save-place-ignore-files-regexp)
(not (string-match save-place-ignore-files-regexp
(position (cond ((eq major-mode 'hexl-mode)
(with-no-warnings
(1+ (hexl-current-address))))
- ((and (derived-mode-p 'dired-mode)
- dired-directory)
+ ((and (derived-mode-p 'dired-mode) directory)
(let ((filename (dired-get-filename nil t)))
(if filename
`((dired-filename . ,filename))
;; save-place checks buffer-file-name too, but we can avoid
;; overhead of function call by checking here too.
(and (or buffer-file-name (and (derived-mode-p 'dired-mode)
- dired-directory))
+ (dired-current-directory)))
(save-place-to-alist))
(setq buf-list (cdr buf-list))))))
(defun save-place-dired-hook ()
"Position the point in a Dired buffer."
(or save-place-loaded (load-save-place-alist-from-file))
- (let ((cell (assoc (and (derived-mode-p 'dired-mode)
- dired-directory
- (expand-file-name (if (consp dired-directory)
- (car dired-directory)
- dired-directory)))
- save-place-alist)))
+ (let* ((directory (and (derived-mode-p 'dired-mode)
+ (dired-current-directory)))
+ (cell (assoc (and directory
+ (expand-file-name (if (consp directory)
+ (car directory)
+ directory)))
+ save-place-alist)))
(if cell
(progn
(or revert-buffer-in-progress-p
- (if (integerp (cdr cell))
- (goto-char (cdr cell))
- (and (assq 'dired-filename (cdr cell))
- (dired-goto-file (cdr (assq 'dired-filename (cdr cell)))))))
+ (cond
+ ((integerp (cdr cell))
+ (goto-char (cdr cell)))
+ ((and (listp (cdr cell)) (assq 'dired-filename (cdr cell)))
+ (dired-goto-file (cdr (assq 'dired-filename (cdr cell)))))))
;; and make sure it will be saved again for later
(setq save-place t)))))
(const :tag "on" t))
:group 'shell)
+(defcustom shell-display-buffer-actions display-buffer-base-action
+ "The `display-buffer' actions for the `*shell*' buffer."
+ :type display-buffer--action-custom-type
+ :risky t
+ :version "25.1"
+ :group 'shell)
+
(defvar shell-dirstack nil
"List of directories saved by pushd in this buffer's shell.
Thus, this does not include the shell's current directory.")
;; The buffer's window must be correctly set when we call comint (so
;; that comint sets the COLUMNS env var properly).
- (pop-to-buffer-same-window buffer)
+ (pop-to-buffer buffer shell-display-buffer-actions)
(unless (comint-check-proc buffer)
(let* ((prog (or explicit-shell-file-name
(getenv "ESHELL") shell-file-name))
(let ((prefix-arg prefixarg))
(command-execute function 'record))
;; If enabled, show which key runs this command.
- ;; (when binding
;; But first wait, and skip the message if there is input.
(let* ((waited
;; If this command displayed something in the echo area;
;; FIXME: Wait *after* running post-command-hook!
;; FIXME: Don't wait if execute-extended-command--shorter won't
;; find a better answer anyway!
- (sit-for (cond
- ((zerop (length (current-message))) 0)
- ((numberp suggest-key-bindings) suggest-key-bindings)
- (t 2)))))
+ (when suggest-key-bindings
+ (sit-for (cond
+ ((zerop (length (current-message))) 0)
+ ((numberp suggest-key-bindings) suggest-key-bindings)
+ (t 2))))))
(when (and waited (not (consp unread-command-events)))
(unless (or binding executing-kbd-macro (not (symbolp function))
(<= (length (symbol-name function)) 2))
(goto-char (point-min))))
"\tMany people have contributed code included in GNU Emacs\n"
:link ("Contributing"
- ,(lambda (_button)
- (view-file (expand-file-name "CONTRIBUTE" data-directory))
- (goto-char (point-min))))
+ ,(lambda (_button) (info "(emacs)Contributing")))
"\tHow to contribute improvements to Emacs\n"
"\n"
:link ("GNU and Freedom" ,(lambda (_button) (describe-gnu-project)))
(insert-button "Contributing"
'action
- (lambda (_button)
- (view-file (expand-file-name "CONTRIBUTE" data-directory))
- (goto-char (point-min)))
+ (lambda (_button) (info "(emacs)Contributing"))
'follow-link t)
(insert "\tHow to contribute improvements to Emacs\n\n")
char))
(defun sit-for (seconds &optional nodisp obsolete)
- "Perform redisplay, then wait for SECONDS seconds or until input is available.
+ "Redisplay, then wait for SECONDS seconds. Stop when input is available.
SECONDS may be a floating-point value.
\(On operating systems that do not support waiting for fractions of a
second, floating-point values are rounded down to the nearest integer.)
(declare (advertised-calling-convention (seconds &optional nodisp) "22.1"))
;; This used to be implemented in C until the following discussion:
;; http://lists.gnu.org/archive/html/emacs-devel/2006-07/msg00401.html
- ;; Then it was moved to C using an implementation based on an idle timer,
+ ;; Then it was moved here using an implementation based on an idle timer,
;; which was then replaced by the use of read-event.
(if (numberp nodisp)
(setq seconds (+ seconds (* 1e-3 nodisp))
\(normally '') depending on the context. With prefix argument, always
inserts \" characters."
(interactive "*P")
+ ;; Discover if we'll be inserting normal double quotes.
+ ;;
(if (or arg (memq (char-syntax (preceding-char)) '(?/ ?\\))
- (eq (get-text-property (point) 'face) 'tex-verbatim)
- (save-excursion
- (backward-char (length tex-open-quote))
- (when (or (looking-at (regexp-quote tex-open-quote))
- (looking-at (regexp-quote tex-close-quote)))
- (delete-char (length tex-open-quote))
- t)))
+ (eq (get-text-property (point) 'face) 'tex-verbatim)
+ ;; Discover if a preceding occurrence of `tex-open-quote'
+ ;; should be morphed to a normal double quote.
+ ;;
+ (and (>= (point) (+ (point-min) (length tex-open-quote)))
+ (save-excursion
+ (backward-char (length tex-open-quote))
+ (when (or (looking-at (regexp-quote tex-open-quote))
+ (looking-at (regexp-quote tex-close-quote)))
+ (delete-char (length tex-open-quote))
+ (when (looking-at (regexp-quote tex-close-quote))
+ (delete-char (length tex-close-quote)))
+ t))))
+ ;; Insert the normal quote (eventually letting
+ ;; `electric-pair-mode' do its thing).
+ ;;
(self-insert-command (prefix-numeric-value arg))
- (insert (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
- (memq (preceding-char) '(?~)))
- tex-open-quote tex-close-quote))))
+ ;; We'll be inserting fancy TeX quotes, but consider and imitate
+ ;; `electric-pair-mode''s two behaviors: pair-insertion and
+ ;; region wrapping.
+ ;;
+ (if (and electric-pair-mode (use-region-p))
+ (let* ((saved (point-marker)))
+ (goto-char (mark))
+ (insert (if (> saved (mark)) tex-open-quote tex-close-quote))
+ (goto-char saved)
+ (insert (if (> saved (mark)) tex-close-quote tex-open-quote)))
+ (if (or (memq (char-syntax (preceding-char)) '(?\( ?> ?\s))
+ (memq (preceding-char) '(?~)))
+ (if electric-pair-mode
+ (if (looking-at (regexp-quote tex-close-quote))
+ (forward-char (length tex-close-quote))
+ (insert tex-open-quote)
+ (insert tex-close-quote)
+ (backward-char (length tex-close-quote)))
+ (insert tex-open-quote))
+ (if (looking-at (regexp-quote tex-close-quote))
+ (forward-char (length tex-close-quote))
+ (insert tex-close-quote))))))
(defun tex-validate-buffer ()
"Check current buffer for paragraphs containing mismatched braces or $s.
;;; Code:
+(require 'diff-mode) ; For diff faces.
+
(defgroup compare-windows nil
"Compare text between windows."
:prefix "compare-"
:group 'compare-windows
:version "22.1")
-(defface compare-windows
- '((t :inherit lazy-highlight))
- "Face for highlighting of compare-windows difference regions."
+(defface compare-windows-removed
+ '((t :inherit diff-removed))
+ "Face for highlighting of compare-windows removed regions."
:group 'compare-windows
- :version "22.1")
+ :version "25.1")
+
+(defface compare-windows-added
+ '((t :inherit diff-added))
+ "Face for highlighting of compare-windows added regions."
+ :group 'compare-windows
+ :version "25.1")
+
+(define-obsolete-face-alias 'compare-windows 'compare-windows-added "25.1")
(defvar compare-windows-overlay1 nil)
(defvar compare-windows-overlay2 nil)
consider all existing frames."
(or (get-mru-window 'visible t t)
(get-mru-window 0 t t)
- (get-mru-window t t t)))
+ (get-mru-window t t t)
+ (error "No other window")))
(defun compare-windows-get-next-window ()
"Return the window next in the cyclic ordering of windows.
(if compare-windows-overlay1
(move-overlay compare-windows-overlay1 beg1 end1 b1)
(setq compare-windows-overlay1 (make-overlay beg1 end1 b1))
- (overlay-put compare-windows-overlay1 'face 'compare-windows)
+ (overlay-put compare-windows-overlay1 'face 'compare-windows-added)
(overlay-put compare-windows-overlay1 'priority 1000))
(overlay-put compare-windows-overlay1 'window w1)
(if compare-windows-overlay2
(move-overlay compare-windows-overlay2 beg2 end2 b2)
(setq compare-windows-overlay2 (make-overlay beg2 end2 b2))
- (overlay-put compare-windows-overlay2 'face 'compare-windows)
+ (overlay-put compare-windows-overlay2 'face 'compare-windows-removed)
(overlay-put compare-windows-overlay2 'priority 1000))
(overlay-put compare-windows-overlay2 'window w2)
(if (not (eq compare-windows-highlight 'persistent))
(goto-char (point-min))
(pcase stage
(`update-index
- (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added
- (if files 'ls-files-up-to-date 'diff-index))))
+ (setq next-stage (if (vc-git--empty-db-p) 'ls-files-added 'diff-index)))
(`ls-files-added
(setq next-stage 'ls-files-unknown)
(while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
(push (list name 'added (vc-git-create-extra-fileinfo 0 new-perm))
result))))
(`ls-files-up-to-date
- (setq next-stage 'diff-index)
+ (setq next-stage 'ls-files-unknown)
(while (re-search-forward "\\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} 0\t\\([^\0]+\\)\0" nil t)
(let ((perm (string-to-number (match-string 1) 8))
(name (match-string 2)))
(vc-git-create-extra-fileinfo 0 0))
result)))
(`diff-index
- (setq next-stage 'ls-files-unknown)
+ (setq next-stage (if files 'ls-files-up-to-date 'ls-files-unknown))
(while (re-search-forward
":\\([0-7]\\{6\\}\\) \\([0-7]\\{6\\}\\) [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} \\(\\([ADMUT]\\)\0\\([^\0]+\\)\\|\\([CR]\\)[0-9]*\0\\([^\0]+\\)\0\\([^\0]+\\)\\)\0"
nil t 1)
(standard-output ,buffer)
,window ,value)
(with-current-buffer ,buffer
- (setq ,window (temp-buffer-window-show ,buffer ,vaction)))
+ (setq ,window (temp-buffer-window-show
+ ,buffer
+ ;; Remove window-height when it's handled below.
+ (if (functionp (cdr (assq 'window-height (cdr ,vaction))))
+ (assq-delete-all 'window-height (copy-sequence ,vaction))
+ ,vaction))))
(let ((inhibit-read-only t)
(inhibit-modification-hooks t))
(defvar mouse-autoselect-window-timer nil
"Timer used by delayed window autoselection.")
+(defvar mouse-autoselect-window-position-1 nil
+ "First mouse position recorded by delayed window autoselection.")
+
(defvar mouse-autoselect-window-position nil
"Last mouse position recorded by delayed window autoselection.")
(memq (nth 4 (event-end last-input-event))
'(handle end-scroll)))))
(setq mouse-autoselect-window-state nil)
+ (setq mouse-autoselect-window-position-1 nil)
(when (timerp mouse-autoselect-window-timer)
(cancel-timer mouse-autoselect-window-timer))
(remove-hook 'pre-command-hook 'mouse-autoselect-window-cancel)))
;; A menu / popup dialog is active or the mouse is not on the
;; text region of WINDOW: Suspend autoselection temporarily.
(mouse-autoselect-window-start mouse-position nil t))
- ((eq mouse-autoselect-window-state 'suspend)
+ ((or (eq mouse-autoselect-window-state 'suspend)
+ ;; When the mouse is at its first recorded position, restart
+ ;; delayed autoselection. This works around a scenario with
+ ;; two two-window frames with identical dimensions: select the
+ ;; first window of the first frame, switch to the second
+ ;; frame, move the mouse to its second window, minimize the
+ ;; second frame. Now the second window of the first frame
+ ;; gets selected although the mouse never really "moved" into
+ ;; that window.
+ (and (numberp mouse-autoselect-window)
+ (equal (mouse-position) mouse-autoselect-window-position-1)))
;; Delayed autoselection was temporarily suspended, reenable it.
(mouse-autoselect-window-start mouse-position))
((and window (not (eq window (selected-window)))
(or (not (numberp mouse-autoselect-window))
- (and (> mouse-autoselect-window 0)
- ;; If `mouse-autoselect-window' is positive, select
- ;; window if the window is the same as before.
+ (and (>= mouse-autoselect-window 0)
+ ;; If `mouse-autoselect-window' is non-negative,
+ ;; select window if it's the same as before.
(eq window mouse-autoselect-window-window))
- ;; Otherwise select window if the mouse is at the same
- ;; position as before. Observe that the first test after
- ;; starting autoselection usually fails since the value of
- ;; `mouse-autoselect-window-position' recorded there is the
- ;; position where the mouse has entered the new window and
- ;; not necessarily where the mouse has stopped moving.
+ ;; Otherwise select window iff the mouse is at the same
+ ;; position as before. Observe that the first test
+ ;; after starting autoselection usually fails since the
+ ;; value of `mouse-autoselect-window-position' recorded
+ ;; there is the position where the mouse has entered the
+ ;; new window and not necessarily where the mouse has
+ ;; stopped moving.
(equal mouse-position mouse-autoselect-window-position))
;; The minibuffer is a candidate window if it's active.
(or (not (window-minibuffer-p window))
(not (minibuffer-window-active-p window)))
;; Don't switch when autoselection shall be delayed.
(and (numberp mouse-autoselect-window)
- (not (zerop mouse-autoselect-window))
(not (eq mouse-autoselect-window-state 'select))
- (progn
+ (let ((position (mouse-position)))
;; Cancel any delayed autoselection.
(mouse-autoselect-window-cancel t)
;; Start delayed autoselection from current mouse
;; position and window.
- (mouse-autoselect-window-start (mouse-position) window)
+ (setq mouse-autoselect-window-position-1 position)
+ (mouse-autoselect-window-start position window)
;; Executing a command cancels delayed autoselection.
(add-hook
'pre-command-hook 'mouse-autoselect-window-cancel))))
int complete_length =
strlen (resourced_name) + strlen (val->value) + 2;
complete_name = XtMalloc (complete_length);
- *complete_name = 0;
- strcat (complete_name, resourced_name);
- strcat (complete_name, " ");
- strcat (complete_name, val->value);
+ char *z = stpcpy (complete_name, resourced_name);
+ *z++ = ' ';
+ strcpy (z, val->value);
}
val->toolkit_data = complete_name;
# Code from module stdint:
# Code from module stdio:
# Code from module stdlib:
+ # Code from module stpcpy:
# Code from module strftime:
# Code from module string:
# Code from module strtoimax:
gl_STDINT_H
gl_STDIO_H
gl_STDLIB_H
+ gl_FUNC_STPCPY
+ if test $HAVE_STPCPY = 0; then
+ AC_LIBOBJ([stpcpy])
+ gl_PREREQ_STPCPY
+ fi
+ gl_STRING_MODULE_INDICATOR([stpcpy])
gl_FUNC_GNU_STRFTIME
gl_HEADER_STRING_H
gl_FUNC_STRTOIMAX
lib/stdint.in.h
lib/stdio.in.h
lib/stdlib.in.h
+ lib/stpcpy.c
lib/strftime.c
lib/strftime.h
lib/string.in.h
m4/stdint.m4
m4/stdio_h.m4
m4/stdlib_h.m4
+ m4/stpcpy.m4
m4/strftime.m4
m4/string_h.m4
m4/strtoimax.m4
--- /dev/null
+# stpcpy.m4 serial 8
+dnl Copyright (C) 2002, 2007, 2009-2014 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+AC_DEFUN([gl_FUNC_STPCPY],
+[
+ dnl Persuade glibc <string.h> to declare stpcpy().
+ AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+ dnl The stpcpy() declaration in lib/string.in.h uses 'restrict'.
+ AC_REQUIRE([AC_C_RESTRICT])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_FUNCS([stpcpy])
+ if test $ac_cv_func_stpcpy = no; then
+ HAVE_STPCPY=0
+ fi
+])
+
+# Prerequisites of lib/stpcpy.c.
+AC_DEFUN([gl_PREREQ_STPCPY], [
+ :
+])
+2014-12-26 Eli Zaretskii <eliz@gnu.org>
+
+ * gnulib.mk (stpcpy, string): Sync with the latest change in
+ lib/gnulib.mk.
+
2014-12-13 Eli Zaretskii <eliz@gnu.org>
* gnulib.mk (stddef.h): Sync with the latest change in lib/gnulib.mk.
# the same distribution terms as the rest of that program.
#
# Generated by gnulib-tool.
-# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stdio strftime strtoimax strtoumax symlink sys_stat sys_time time timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
+# Reproduce by: gnulib-tool --import --dir=. --lib=libgnu --source-base=lib --m4-base=m4 --doc-base=doc --tests-base=tests --aux-dir=build-aux --avoid=close --avoid=dup --avoid=fchdir --avoid=fstat --avoid=malloc-posix --avoid=msvc-inval --avoid=msvc-nothrow --avoid=open --avoid=openat-die --avoid=opendir --avoid=raise --avoid=save-cwd --avoid=select --avoid=sigprocmask --avoid=stdarg --avoid=stdbool --avoid=threadlib --makefile-name=gnulib.mk --conditional-dependencies --no-libtool --macro-prefix=gl --no-vc-files alloca-opt binary-io byteswap c-ctype c-strcase careadlinkat close-stream count-one-bits count-trailing-zeros crypto/md5 crypto/sha1 crypto/sha256 crypto/sha512 dtoastr dtotimespec dup2 environ execinfo faccessat fcntl fcntl-h fdatasync fdopendir filemode fstatat fsync getloadavg getopt-gnu gettime gettimeofday intprops largefile lstat manywarnings memrchr mkostemp mktime pipe2 pselect pthread_sigmask putenv qacl readlink readlinkat sig2str socklen stat-time stdalign stddef stdio stpcpy strftime strtoimax strtoumax symlink sys_stat sys_time time time_r timer-time timespec-add timespec-sub unsetenv update-copyright utimens vla warnings
MOSTLYCLEANFILES += core *.stackdump
## end gnulib module stdint
+## begin gnulib module stpcpy
+
+
+EXTRA_DIST += stpcpy.c
+
+EXTRA_libgnu_a_SOURCES += stpcpy.c
+
+## end gnulib module stpcpy
+
## begin gnulib module strftime
libgnu_a_SOURCES += strftime.c
## end gnulib module strftime
+## begin gnulib module string
+
+BUILT_SOURCES += string.h
+
+# We need the following in order to create <string.h> when the system
+# doesn't have one that works with the given compiler.
+string.h: string.in.h $(top_builddir)/config.status $(CXXDEFS_H) $(ARG_NONNULL_H) $(WARN_ON_USE_H)
+ $(AM_V_GEN)rm -f $@-t $@ && \
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''GUARD_PREFIX''@|GL|g' \
+ -e 's|@''INCLUDE_NEXT''@|$(INCLUDE_NEXT)|g' \
+ -e 's|@''PRAGMA_SYSTEM_HEADER''@|@PRAGMA_SYSTEM_HEADER@|g' \
+ -e 's|@''PRAGMA_COLUMNS''@|@PRAGMA_COLUMNS@|g' \
+ -e 's|@''NEXT_STRING_H''@|$(NEXT_STRING_H)|g' \
+ -e 's/@''GNULIB_FFSL''@/$(GNULIB_FFSL)/g' \
+ -e 's/@''GNULIB_FFSLL''@/$(GNULIB_FFSLL)/g' \
+ -e 's/@''GNULIB_MBSLEN''@/$(GNULIB_MBSLEN)/g' \
+ -e 's/@''GNULIB_MBSNLEN''@/$(GNULIB_MBSNLEN)/g' \
+ -e 's/@''GNULIB_MBSCHR''@/$(GNULIB_MBSCHR)/g' \
+ -e 's/@''GNULIB_MBSRCHR''@/$(GNULIB_MBSRCHR)/g' \
+ -e 's/@''GNULIB_MBSSTR''@/$(GNULIB_MBSSTR)/g' \
+ -e 's/@''GNULIB_MBSCASECMP''@/$(GNULIB_MBSCASECMP)/g' \
+ -e 's/@''GNULIB_MBSNCASECMP''@/$(GNULIB_MBSNCASECMP)/g' \
+ -e 's/@''GNULIB_MBSPCASECMP''@/$(GNULIB_MBSPCASECMP)/g' \
+ -e 's/@''GNULIB_MBSCASESTR''@/$(GNULIB_MBSCASESTR)/g' \
+ -e 's/@''GNULIB_MBSCSPN''@/$(GNULIB_MBSCSPN)/g' \
+ -e 's/@''GNULIB_MBSPBRK''@/$(GNULIB_MBSPBRK)/g' \
+ -e 's/@''GNULIB_MBSSPN''@/$(GNULIB_MBSSPN)/g' \
+ -e 's/@''GNULIB_MBSSEP''@/$(GNULIB_MBSSEP)/g' \
+ -e 's/@''GNULIB_MBSTOK_R''@/$(GNULIB_MBSTOK_R)/g' \
+ -e 's/@''GNULIB_MEMCHR''@/$(GNULIB_MEMCHR)/g' \
+ -e 's/@''GNULIB_MEMMEM''@/$(GNULIB_MEMMEM)/g' \
+ -e 's/@''GNULIB_MEMPCPY''@/$(GNULIB_MEMPCPY)/g' \
+ -e 's/@''GNULIB_MEMRCHR''@/$(GNULIB_MEMRCHR)/g' \
+ -e 's/@''GNULIB_RAWMEMCHR''@/$(GNULIB_RAWMEMCHR)/g' \
+ -e 's/@''GNULIB_STPCPY''@/$(GNULIB_STPCPY)/g' \
+ -e 's/@''GNULIB_STPNCPY''@/$(GNULIB_STPNCPY)/g' \
+ -e 's/@''GNULIB_STRCHRNUL''@/$(GNULIB_STRCHRNUL)/g' \
+ -e 's/@''GNULIB_STRDUP''@/$(GNULIB_STRDUP)/g' \
+ -e 's/@''GNULIB_STRNCAT''@/$(GNULIB_STRNCAT)/g' \
+ -e 's/@''GNULIB_STRNDUP''@/$(GNULIB_STRNDUP)/g' \
+ -e 's/@''GNULIB_STRNLEN''@/$(GNULIB_STRNLEN)/g' \
+ -e 's/@''GNULIB_STRPBRK''@/$(GNULIB_STRPBRK)/g' \
+ -e 's/@''GNULIB_STRSEP''@/$(GNULIB_STRSEP)/g' \
+ -e 's/@''GNULIB_STRSTR''@/$(GNULIB_STRSTR)/g' \
+ -e 's/@''GNULIB_STRCASESTR''@/$(GNULIB_STRCASESTR)/g' \
+ -e 's/@''GNULIB_STRTOK_R''@/$(GNULIB_STRTOK_R)/g' \
+ -e 's/@''GNULIB_STRERROR''@/$(GNULIB_STRERROR)/g' \
+ -e 's/@''GNULIB_STRERROR_R''@/$(GNULIB_STRERROR_R)/g' \
+ -e 's/@''GNULIB_STRSIGNAL''@/$(GNULIB_STRSIGNAL)/g' \
+ -e 's/@''GNULIB_STRVERSCMP''@/$(GNULIB_STRVERSCMP)/g' \
+ < $(srcdir)/string.in.h | \
+ sed -e 's|@''HAVE_FFSL''@|$(HAVE_FFSL)|g' \
+ -e 's|@''HAVE_FFSLL''@|$(HAVE_FFSLL)|g' \
+ -e 's|@''HAVE_MBSLEN''@|$(HAVE_MBSLEN)|g' \
+ -e 's|@''HAVE_MEMCHR''@|$(HAVE_MEMCHR)|g' \
+ -e 's|@''HAVE_DECL_MEMMEM''@|$(HAVE_DECL_MEMMEM)|g' \
+ -e 's|@''HAVE_MEMPCPY''@|$(HAVE_MEMPCPY)|g' \
+ -e 's|@''HAVE_DECL_MEMRCHR''@|$(HAVE_DECL_MEMRCHR)|g' \
+ -e 's|@''HAVE_RAWMEMCHR''@|$(HAVE_RAWMEMCHR)|g' \
+ -e 's|@''HAVE_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNDUP''@|$(HAVE_DECL_STRNDUP)|g' \
+ -e 's|@''HAVE_DECL_STRNLEN''@|$(HAVE_DECL_STRNLEN)|g' \
+ -e 's|@''HAVE_STRPBRK''@|$(HAVE_STRPBRK)|g' \
+ -e 's|@''HAVE_STRSEP''@|$(HAVE_STRSEP)|g' \
+ -e 's|@''HAVE_STRCASESTR''@|$(HAVE_STRCASESTR)|g' \
+ -e 's|@''HAVE_DECL_STRTOK_R''@|$(HAVE_DECL_STRTOK_R)|g' \
+ -e 's|@''HAVE_DECL_STRERROR_R''@|$(HAVE_DECL_STRERROR_R)|g' \
+ -e 's|@''HAVE_DECL_STRSIGNAL''@|$(HAVE_DECL_STRSIGNAL)|g' \
+ -e 's|@''HAVE_STRVERSCMP''@|$(HAVE_STRVERSCMP)|g' \
+ -e 's|@''REPLACE_STPNCPY''@|$(REPLACE_STPNCPY)|g' \
+ -e 's|@''REPLACE_MEMCHR''@|$(REPLACE_MEMCHR)|g' \
+ -e 's|@''REPLACE_MEMMEM''@|$(REPLACE_MEMMEM)|g' \
+ -e 's|@''REPLACE_STRCASESTR''@|$(REPLACE_STRCASESTR)|g' \
+ -e 's|@''REPLACE_STRCHRNUL''@|$(REPLACE_STRCHRNUL)|g' \
+ -e 's|@''REPLACE_STRDUP''@|$(REPLACE_STRDUP)|g' \
+ -e 's|@''REPLACE_STRSTR''@|$(REPLACE_STRSTR)|g' \
+ -e 's|@''REPLACE_STRERROR''@|$(REPLACE_STRERROR)|g' \
+ -e 's|@''REPLACE_STRERROR_R''@|$(REPLACE_STRERROR_R)|g' \
+ -e 's|@''REPLACE_STRNCAT''@|$(REPLACE_STRNCAT)|g' \
+ -e 's|@''REPLACE_STRNDUP''@|$(REPLACE_STRNDUP)|g' \
+ -e 's|@''REPLACE_STRNLEN''@|$(REPLACE_STRNLEN)|g' \
+ -e 's|@''REPLACE_STRSIGNAL''@|$(REPLACE_STRSIGNAL)|g' \
+ -e 's|@''REPLACE_STRTOK_R''@|$(REPLACE_STRTOK_R)|g' \
+ -e 's|@''UNDEFINE_STRTOK_R''@|$(UNDEFINE_STRTOK_R)|g' \
+ -e '/definitions of _GL_FUNCDECL_RPL/r $(CXXDEFS_H)' \
+ -e '/definition of _GL_ARG_NONNULL/r $(ARG_NONNULL_H)' \
+ -e '/definition of _GL_WARN_ON_USE/r $(WARN_ON_USE_H)'; \
+ < $(srcdir)/string.in.h; \
+ } > $@-t && \
+ mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string.in.h
+
+## end gnulib module string
+
## begin gnulib module strtoimax
+2014-12-28 Paul Eggert <eggert@Penguin.CS.UCLA.EDU>
+
+ Wrap dll functions more simply
+ * decompress.c, gnutls.c, image.c, xml.c:
+ If WINDOWSNT, use '#define FOO fn_FOO' to wrap dll functions,
+ rather than the inverse when not WINDOWSNT. This isolates the
+ fn_* business into the WINDOWSNT-specific section of the code,
+ which makes it easier to maintain the generic code.
+ * decompress.c (DEF_ZLIB_FN, LOAD_ZLIB_FN):
+ * gnutls.c (DEF_GNUTLS_FN, LOAD_GNUTLS_FN):
+ * image.c (DEF_IMGLIB_FN, LOAD_IMGLIB_FN):
+ * xml.c (DEF_XML2_FN, LOAD_XML2_FN):
+ Remove. All uses replaced by DEF_DLL_FN.
+ * decompress.c (inflateInit2): Remove; no longer needed.
+ * w32.h (DEF_DLL_FN, LOAD_DLL_FN): New macros.
+
+ Port memory-full checking to GnuTLS 3.3
+ Instead of using gnutls_global_set_mem_functions, check every call
+ to a GnuTLS function that might return an indication of memory
+ exhaustion. Suggested by Dmitry Antipov in:
+ http://lists.gnu.org/archive/html/emacs-devel/2014-12/msg02056.html
+ * gnutls.c (gnutls_global_set_mem_functions) [WINDOWSNT]: Remove.
+ (init_gnutls_functions): Do not load gnutls_global_set_mem_functions.
+ (fn_gnutls_global_set_mem_functions) [!WINDOWSNT]: Remove.
+ All uses removed.
+ (check_memory_full): New function.
+ (emacs_gnutls_handshake, emacs_gnutls_handle_error)
+ (gnutls_make_error, gnutls_certificate_details, Fgnutls_peer_status)
+ (Fgnutls_boot): Use it.
+ (emacs_gnutls_global_init): Avoid gnutls_global_set_mem_functions.
+
+2014-12-27 Paul Eggert <eggert@cs.ucla.edu>
+
+ Fix parse_settings to match internal documentation
+ * xsettings.c (parse_settings): Return the number of settings seen.
+ Count the settings changes accurately.
+ (read_settings): Don't confuse number of settings changes with
+ the return code from XGetWindowProperty.
+
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * xdisp.c (set_iterator_to_next) <GET_FROM_STRING>: Limit search in
+ composition_compute_stop_pos to the number of characters in the
+ string. (Bug#19435)
+ <GET_FROM_BUFFER, GET_FROM_STRING>: Simplify code.
+
+ * composite.c (composition_compute_stop_pos): If no composition
+ was found in a string before ENDPOS, and ENDPOS is the string end,
+ no need to back up to a safe point.
+
+ * dispextern.h (struct it) <end_charpos>: Improve commentary.
+
+2014-12-27 Jan Djärv <jan.h.d@swipnet.se>
+
+ * nsimage.m (allocInitFromFile:): Initialize bmRep.
+ (dealloc): Release bmRep.
+ (setPixmapData): Make bmRep local so class member is not
+ set (Bug#19133).
+ (setPixmapData): Rename local variable bmRep to avoid compiler
+ warning.
+
+2014-12-27 Jan Djärv <jan.h.d@swipnet.se>
+
+ * xterm.c (do_ewmh_fullscreen): Don't remove maximized_horz/vert
+ when going to fullscreen (Bug#0x180004f).
+
+2014-12-27 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * buffer.c (syms_of_buffer) <Vafter_change_functions>: fix docstring.
+
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
+ * gnutls.c (gnutls_init): Fix deprecation warning from GCC.
+
+2014-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use bool for boolean in xselect.c, xsettings.c
+ * xselect.c (x_get_local_selection, struct selection_data)
+ (x_selection_request_lisp_error, struct prop_location)
+ (x_handle_selection_request, x_convert_selection)
+ (waiting_for_other_props_on_window, expect_property_change)
+ (wait_for_property_change, x_handle_property_notify)
+ (x_get_foreign_selection, x_get_window_property)
+ (receive_incremental_selection)
+ (x_get_window_property_as_lisp_data)
+ (lisp_data_to_selection_data, Fx_get_selection_internal)
+ (x_send_client_event):
+ * xselect.c, xterm.h (x_handle_dnd_message):
+ * xsettings.c (dpyinfo_valid, parse_settings, read_settings)
+ (apply_xft_settings, read_and_apply_settings)
+ (xft_settings_event, init_gsettings, init_xsettings)
+ (syms_of_xsettings):
+ Use bool for boolean.
+ * xselect.c (x_get_window_property): Omit last arg, which was an
+ unused boolean.
+ * xsettings.c (apply_xft_settings): Remove 2nd arg, which was
+ always true. All callers changed.
+
+2014-12-26 Eli Zaretskii <eliz@gnu.org>
+
+ * w32proc.c (sys_spawnve, get_lcid_callback): Use strcpy instead
+ of strcat.
+
+ * w32menu.c (add_menu_item): Use stpcpy instead of strcat.
+
+ * w32.c (sys_readdir, stat_worker, symlink): Use strcpy instead of
+ strcat.
+
+2014-12-26 Paul Eggert <eggert@cs.ucla.edu>
+
+ Use bool for boolean in xsmfns.c
+ * xsmfns.c, xterm.h (x_session_have_connection):
+ * xsmfns.c (doing_interact, smc_interact_CB, Fhandle_save_session):
+ Use bool for boolean.
+ (x_session_initialize, Fhandle_save_session):
+ Prefer NILP (x) to EQ (x, Qnil).
+
2014-12-23 Didier Verna <didier@didierverna.net> (tiny change).
* nsselect.m (Fns_selection_owner_p): Return a Lisp boolean, not a
Call gnutls_certificate_set_x509_system_trust. Log an error message if
it fails.
+2014-12-14 Paul Eggert <eggert@cs.ucla.edu>
+
+ * regex.c (analyze_first): Rename from analyze_first.
+
2014-12-13 Paul Eggert <eggert@cs.ucla.edu>
* alloc.c (XMALLOC_BASE_ALIGNMENT): Use max_align_t instead of
* fileio.c (Fexpand_file_name): Use make_unibyte_string, not
build_string, when importing a home directory. (Bug#18873)
+2014-12-27 Eli Zaretskii <eliz@gnu.org>
+
* dispnew.c (buffer_posn_from_coords):
Use WINDOW_WANTS_HEADER_LINE_P, not WINDOW_WANTS_MODELINE_P, to
account for the header-line height. (Bug#18839)
doc: /* List of functions to call after each text change.
Three arguments are passed to each function: the positions of
the beginning and end of the range of changed text,
-and the length in bytes of the pre-change text replaced by that range.
+and the length in chars of the pre-change text replaced by that range.
\(For an insertion, the pre-change length is zero;
-for a deletion, that length is the number of bytes deleted,
+for a deletion, that length is the number of chars deleted,
and the post-change beginning and end are at the same place.)
Buffer changes made while executing the `after-change-functions'
if (STRINGP (display))
{
- char *vdata;
-
if (MAX_ALLOCA - sizeof "DISPLAY=" < SBYTES (display))
exec_failed (new_argv[0], ENOMEM);
- vdata = alloca (sizeof "DISPLAY=" + SBYTES (display));
- strcpy (vdata, "DISPLAY=");
- strcat (vdata, SSDATA (display));
+ char *vdata = alloca (sizeof "DISPLAY=" + SBYTES (display));
+ lispstpcpy (stpcpy (vdata, "DISPLAY="), display);
new_env = add_env (env, new_env, vdata);
}
}
}
}
- if (charpos == endpos)
+ if (charpos == endpos
+ && !(STRINGP (string) && endpos == SCHARS (string)))
{
/* We couldn't find a composition point before ENDPOS. But,
some character after ENDPOS may be composed with
ptrdiff_t xlen = strlen (x);
if (DBUS_MAXIMUM_SIGNATURE_LENGTH - xlen <= siglen)
string_overflow ();
- strcat (signature, x);
+ strcpy (signature + siglen, x);
}
/* Compute SIGNATURE of OBJECT. It must have a form that it can be
static Lisp_Object Qzlib_dll;
#ifdef WINDOWSNT
-#include <windows.h>
-#include "w32.h"
+# include <windows.h>
+# include "w32.h"
-/* Macro for defining functions that will be loaded from the zlib DLL. */
-#define DEF_ZLIB_FN(rettype,func,args) static rettype (FAR CDECL *fn_##func)args
-
-/* Macro for loading zlib functions from the library. */
-#define LOAD_ZLIB_FN(lib,func) { \
- fn_##func = (void *) GetProcAddress (lib, #func); \
- if (!fn_##func) return false; \
- }
-
-DEF_ZLIB_FN (int, inflateInit2_,
- (z_streamp strm, int windowBits, const char *version, int stream_size));
-
-DEF_ZLIB_FN (int, inflate,
- (z_streamp strm, int flush));
-
-DEF_ZLIB_FN (int, inflateEnd,
- (z_streamp strm));
+DEF_DLL_FN (int, inflateInit2_,
+ (z_streamp strm, int windowBits, const char *version,
+ int stream_size));
+DEF_DLL_FN (int, inflate, (z_streamp strm, int flush));
+DEF_DLL_FN (int, inflateEnd, (z_streamp strm));
static bool zlib_initialized;
if (!library)
return false;
- LOAD_ZLIB_FN (library, inflateInit2_);
- LOAD_ZLIB_FN (library, inflate);
- LOAD_ZLIB_FN (library, inflateEnd);
+ LOAD_DLL_FN (library, inflateInit2_);
+ LOAD_DLL_FN (library, inflate);
+ LOAD_DLL_FN (library, inflateEnd);
return true;
}
-#define fn_inflateInit2(strm, windowBits) \
- fn_inflateInit2_((strm), (windowBits), ZLIB_VERSION, sizeof(z_stream))
-
-#else /* !WINDOWSNT */
+# undef inflate
+# undef inflateEnd
+# undef inflateInit2_
-#define fn_inflateInit2 inflateInit2
-#define fn_inflate inflate
-#define fn_inflateEnd inflateEnd
+# define inflate fn_inflate
+# define inflateEnd fn_inflateEnd
+# define inflateInit2_ fn_inflateInit2_
#endif /* WINDOWSNT */
unwind_decompress (void *ddata)
{
struct decompress_unwind_data *data = ddata;
- fn_inflateEnd (data->stream);
+ inflateEnd (data->stream);
/* Delete any uncompressed data already inserted on error. */
if (data->start)
/* The magic number 32 apparently means "autodetect both the gzip and
zlib formats" according to zlib.h. */
- if (fn_inflateInit2 (&stream, MAX_WBITS + 32) != Z_OK)
+ if (inflateInit2 (&stream, MAX_WBITS + 32) != Z_OK)
return Qnil;
unwind_data.start = iend;
stream.avail_in = avail_in;
stream.next_out = GPT_ADDR;
stream.avail_out = avail_out;
- inflate_status = fn_inflate (&stream, Z_NO_FLUSH);
+ inflate_status = inflate (&stream, Z_NO_FLUSH);
pos_byte += avail_in - stream.avail_in;
decompressed = avail_out - stream.avail_out;
insert_from_gap (decompressed, decompressed, 0);
ptrdiff_t base_level_stop;
/* Maximum string or buffer position + 1. ZV when iterating over
- current_buffer. */
+ current_buffer. When iterating over a string in display_string,
+ this can be smaller or greater than the number of string
+ characters, depending on the values of PRECISION and FIELD_WIDTH
+ with which display_string was called. */
ptrdiff_t end_charpos;
/* C string to iterate over. Non-null means get characters from
static unsigned char *read_bytecode_pointer;
+static char const sibling_etc[] = "../etc/";
+
/* `readchar' in lread.c calls back here to fetch the next byte.
If UNREADFLAG is 1, we unread a byte. */
{
char *from, *to, *name, *p, *p1;
int fd;
- ptrdiff_t minsize;
int offset;
EMACS_INT position;
Lisp_Object file, tem, pos;
tem = Ffile_name_absolute_p (file);
file = ENCODE_FILE (file);
- if (NILP (tem))
- {
- Lisp_Object docdir = ENCODE_FILE (Vdoc_directory);
- minsize = SCHARS (docdir);
- /* sizeof ("../etc/") == 8 */
- if (minsize < 8)
- minsize = 8;
- name = SAFE_ALLOCA (minsize + SCHARS (file) + 8);
- char *z = lispstpcpy (name, docdir);
- strcpy (z, SSDATA (file));
- }
- else
- {
- name = SSDATA (file);
- }
+ Lisp_Object docdir
+ = NILP (tem) ? ENCODE_FILE (Vdoc_directory) : empty_unibyte_string;
+ ptrdiff_t docdir_sizemax = SBYTES (docdir) + 1;
+#ifndef CANNOT_DUMP
+ docdir_sizemax = max (docdir_sizemax, sizeof sibling_etc);
+#endif
+ name = SAFE_ALLOCA (docdir_sizemax + SBYTES (file));
+ lispstpcpy (lispstpcpy (name, docdir), file);
fd = emacs_open (name, O_RDONLY, 0);
if (fd < 0)
{
/* Preparing to dump; DOC file is probably not installed.
So check in ../etc. */
- strcpy (name, "../etc/");
- strcat (name, SSDATA (file));
+ lispstpcpy (stpcpy (name, sibling_etc), file);
fd = emacs_open (name, O_RDONLY, 0);
}
(0)
#endif /* CANNOT_DUMP */
{
- static char const sibling_etc[] = "../etc/";
dirname = sibling_etc;
dirlen = sizeof sibling_etc - 1;
}
count = SPECPDL_INDEX ();
USE_SAFE_ALLOCA;
name = SAFE_ALLOCA (dirlen + SBYTES (filename) + 1);
- strcpy (name, dirname);
- strcat (name, SSDATA (filename)); /*** Add this line ***/
+ lispstpcpy (stpcpy (name, dirname), filename); /*** Add this line ***/
/* Vbuild_files is nil when temacs is run, and non-nil after that. */
if (NILP (Vbuild_files))
USE_SAFE_ALLOCA;
char *r = SAFE_ALLOCA (strlen (p) + SBYTES (login) + 1);
memcpy (r, p, q - p);
- r[q - p] = 0;
- strcat (r, SSDATA (login));
+ char *s = lispstpcpy (&r[q - p], login);
r[q - p] = upcase ((unsigned char) r[q - p]);
- strcat (r, q + 1);
+ strcpy (s, q + 1);
full = build_string (r);
SAFE_FREE ();
}
/* Start with emacs.FRAMENAME for the name (the specific one)
and with `Emacs' for the class key (the general one). */
- lispstpcpy (name_key, Vx_resource_name);
- lispstpcpy (class_key, Vx_resource_class);
+ char *nz = lispstpcpy (name_key, Vx_resource_name);
+ char *cz = lispstpcpy (class_key, Vx_resource_class);
- strcat (class_key, ".");
- strcat (class_key, SSDATA (class));
+ *cz++ = '.';
+ cz = lispstpcpy (cz, class);
if (!NILP (component))
{
- strcat (class_key, ".");
- strcat (class_key, SSDATA (subclass));
+ *cz++ = '.';
+ lispstpcpy (cz, subclass);
- strcat (name_key, ".");
- strcat (name_key, SSDATA (component));
+ *nz++ = '.';
+ nz = lispstpcpy (nz, component);
}
- strcat (name_key, ".");
- strcat (name_key, SSDATA (attribute));
+ *nz++ = '.';
+ lispstpcpy (nz, attribute);
char *value = x_get_string_resource (rdb, name_key, class_key);
SAFE_FREE();
\f
#ifdef WINDOWSNT
-/* Macro for defining functions that will be loaded from the GnuTLS DLL. */
-#define DEF_GNUTLS_FN(rettype,func,args) static rettype (FAR CDECL *fn_##func)args
-
-/* Macro for loading GnuTLS functions from the library. */
-#define LOAD_GNUTLS_FN(lib,func) { \
- fn_##func = (void *) GetProcAddress (lib, #func); \
- if (!fn_##func) return 0; \
- }
-
-DEF_GNUTLS_FN (gnutls_alert_description_t, gnutls_alert_get,
- (gnutls_session_t));
-DEF_GNUTLS_FN (const char *, gnutls_alert_get_name,
- (gnutls_alert_description_t));
-DEF_GNUTLS_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int));
-DEF_GNUTLS_FN (int, gnutls_anon_allocate_client_credentials,
- (gnutls_anon_client_credentials_t *));
-DEF_GNUTLS_FN (void, gnutls_anon_free_client_credentials,
- (gnutls_anon_client_credentials_t));
-DEF_GNUTLS_FN (int, gnutls_bye, (gnutls_session_t, gnutls_close_request_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_allocate_credentials,
- (gnutls_certificate_credentials_t *));
-DEF_GNUTLS_FN (void, gnutls_certificate_free_credentials,
- (gnutls_certificate_credentials_t));
-DEF_GNUTLS_FN (const gnutls_datum_t *, gnutls_certificate_get_peers,
- (gnutls_session_t, unsigned int *));
-DEF_GNUTLS_FN (void, gnutls_certificate_set_verify_flags,
- (gnutls_certificate_credentials_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_crl_file,
- (gnutls_certificate_credentials_t, const char *,
- gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_key_file,
- (gnutls_certificate_credentials_t, const char *, const char *,
- gnutls_x509_crt_fmt_t));
-#if GNUTLS_VERSION_MAJOR + \
- (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_system_trust,
- (gnutls_certificate_credentials_t));
-#endif
-DEF_GNUTLS_FN (int, gnutls_certificate_set_x509_trust_file,
- (gnutls_certificate_credentials_t, const char *,
- gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (gnutls_certificate_type_t, gnutls_certificate_type_get,
- (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_certificate_verify_peers2,
- (gnutls_session_t, unsigned int *));
-DEF_GNUTLS_FN (int, gnutls_credentials_set,
- (gnutls_session_t, gnutls_credentials_type_t, void *));
-DEF_GNUTLS_FN (void, gnutls_deinit, (gnutls_session_t));
-DEF_GNUTLS_FN (void, gnutls_dh_set_prime_bits,
- (gnutls_session_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_dh_get_prime_bits, (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_error_is_fatal, (int));
-DEF_GNUTLS_FN (int, gnutls_global_init, (void));
-DEF_GNUTLS_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
-#ifdef HAVE_GNUTLS3
-DEF_GNUTLS_FN (void, gnutls_global_set_audit_log_function, (gnutls_audit_log_func));
-#endif
-DEF_GNUTLS_FN (void, gnutls_global_set_log_level, (int));
-DEF_GNUTLS_FN (void, gnutls_global_set_mem_functions,
- (gnutls_alloc_function, gnutls_alloc_function,
- gnutls_is_secure_function, gnutls_realloc_function,
- gnutls_free_function));
-DEF_GNUTLS_FN (int, gnutls_handshake, (gnutls_session_t));
-DEF_GNUTLS_FN (int, gnutls_init, (gnutls_session_t *, gnutls_connection_end_t));
-DEF_GNUTLS_FN (int, gnutls_priority_set_direct,
- (gnutls_session_t, const char *, const char **));
-DEF_GNUTLS_FN (size_t, gnutls_record_check_pending, (gnutls_session_t));
-DEF_GNUTLS_FN (ssize_t, gnutls_record_recv, (gnutls_session_t, void *, size_t));
-DEF_GNUTLS_FN (ssize_t, gnutls_record_send,
- (gnutls_session_t, const void *, size_t));
-DEF_GNUTLS_FN (const char *, gnutls_strerror, (int));
-DEF_GNUTLS_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int));
-DEF_GNUTLS_FN (const char *, gnutls_check_version, (const char *));
-DEF_GNUTLS_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int));
-DEF_GNUTLS_FN (void, gnutls_transport_set_ptr2,
- (gnutls_session_t, gnutls_transport_ptr_t,
- gnutls_transport_ptr_t));
-DEF_GNUTLS_FN (void, gnutls_transport_set_pull_function,
- (gnutls_session_t, gnutls_pull_func));
-DEF_GNUTLS_FN (void, gnutls_transport_set_push_function,
- (gnutls_session_t, gnutls_push_func));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_check_hostname,
- (gnutls_x509_crt_t, const char *));
-DEF_GNUTLS_FN (void, gnutls_x509_crt_deinit, (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_import,
- (gnutls_x509_crt_t, const gnutls_datum_t *,
- gnutls_x509_crt_fmt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_init, (gnutls_x509_crt_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_fingerprint,
- (gnutls_x509_crt_t,
- gnutls_digest_algorithm_t, void *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_version,
- (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_serial,
- (gnutls_x509_crt_t, void *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_issuer_dn,
- (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (time_t, gnutls_x509_crt_get_activation_time,
- (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (time_t, gnutls_x509_crt_get_expiration_time,
- (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_dn,
- (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_pk_algorithm,
- (gnutls_x509_crt_t, unsigned int *));
-DEF_GNUTLS_FN (const char*, gnutls_pk_algorithm_get_name,
- (gnutls_pk_algorithm_t));
-DEF_GNUTLS_FN (int, gnutls_pk_bits_to_sec_param,
- (gnutls_pk_algorithm_t, unsigned int));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_issuer_unique_id,
- (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_subject_unique_id,
- (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_signature_algorithm,
- (gnutls_x509_crt_t));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_signature,
- (gnutls_x509_crt_t, char *, size_t *));
-DEF_GNUTLS_FN (int, gnutls_x509_crt_get_key_id,
- (gnutls_x509_crt_t, unsigned int,
- unsigned char *, size_t *_size));
-DEF_GNUTLS_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
-DEF_GNUTLS_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t));
-DEF_GNUTLS_FN (int, gnutls_server_name_set, (gnutls_session_t,
- gnutls_server_name_type_t,
- const void *, size_t));
-DEF_GNUTLS_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t));
-DEF_GNUTLS_FN (gnutls_protocol_t, gnutls_protocol_get_version,
- (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_protocol_get_name, (gnutls_protocol_t));
-DEF_GNUTLS_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get,
- (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_cipher_get_name,
- (gnutls_cipher_algorithm_t));
-DEF_GNUTLS_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
-DEF_GNUTLS_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
+DEF_DLL_FN (gnutls_alert_description_t, gnutls_alert_get,
+ (gnutls_session_t));
+DEF_DLL_FN (const char *, gnutls_alert_get_name,
+ (gnutls_alert_description_t));
+DEF_DLL_FN (int, gnutls_alert_send_appropriate, (gnutls_session_t, int));
+DEF_DLL_FN (int, gnutls_anon_allocate_client_credentials,
+ (gnutls_anon_client_credentials_t *));
+DEF_DLL_FN (void, gnutls_anon_free_client_credentials,
+ (gnutls_anon_client_credentials_t));
+DEF_DLL_FN (int, gnutls_bye, (gnutls_session_t, gnutls_close_request_t));
+DEF_DLL_FN (int, gnutls_certificate_allocate_credentials,
+ (gnutls_certificate_credentials_t *));
+DEF_DLL_FN (void, gnutls_certificate_free_credentials,
+ (gnutls_certificate_credentials_t));
+DEF_DLL_FN (const gnutls_datum_t *, gnutls_certificate_get_peers,
+ (gnutls_session_t, unsigned int *));
+DEF_DLL_FN (void, gnutls_certificate_set_verify_flags,
+ (gnutls_certificate_credentials_t, unsigned int));
+DEF_DLL_FN (int, gnutls_certificate_set_x509_crl_file,
+ (gnutls_certificate_credentials_t, const char *,
+ gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (int, gnutls_certificate_set_x509_key_file,
+ (gnutls_certificate_credentials_t, const char *, const char *,
+ gnutls_x509_crt_fmt_t));
+# if ((GNUTLS_VERSION_MAJOR \
+ + (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20)) \
+ > 3)
+DEF_DLL_FN (int, gnutls_certificate_set_x509_system_trust,
+ (gnutls_certificate_credentials_t));
+# endif
+DEF_DLL_FN (int, gnutls_certificate_set_x509_trust_file,
+ (gnutls_certificate_credentials_t, const char *,
+ gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (gnutls_certificate_type_t, gnutls_certificate_type_get,
+ (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_certificate_verify_peers2,
+ (gnutls_session_t, unsigned int *));
+DEF_DLL_FN (int, gnutls_credentials_set,
+ (gnutls_session_t, gnutls_credentials_type_t, void *));
+DEF_DLL_FN (void, gnutls_deinit, (gnutls_session_t));
+DEF_DLL_FN (void, gnutls_dh_set_prime_bits,
+ (gnutls_session_t, unsigned int));
+DEF_DLL_FN (int, gnutls_dh_get_prime_bits, (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_error_is_fatal, (int));
+DEF_DLL_FN (int, gnutls_global_init, (void));
+DEF_DLL_FN (void, gnutls_global_set_log_function, (gnutls_log_func));
+# ifdef HAVE_GNUTLS3
+DEF_DLL_FN (void, gnutls_global_set_audit_log_function, (gnutls_audit_log_func));
+# endif
+DEF_DLL_FN (void, gnutls_global_set_log_level, (int));
+DEF_DLL_FN (int, gnutls_handshake, (gnutls_session_t));
+DEF_DLL_FN (int, gnutls_init, (gnutls_session_t *, unsigned int));
+DEF_DLL_FN (int, gnutls_priority_set_direct,
+ (gnutls_session_t, const char *, const char **));
+DEF_DLL_FN (size_t, gnutls_record_check_pending, (gnutls_session_t));
+DEF_DLL_FN (ssize_t, gnutls_record_recv, (gnutls_session_t, void *, size_t));
+DEF_DLL_FN (ssize_t, gnutls_record_send,
+ (gnutls_session_t, const void *, size_t));
+DEF_DLL_FN (const char *, gnutls_strerror, (int));
+DEF_DLL_FN (void, gnutls_transport_set_errno, (gnutls_session_t, int));
+DEF_DLL_FN (const char *, gnutls_check_version, (const char *));
+DEF_DLL_FN (void, gnutls_transport_set_lowat, (gnutls_session_t, int));
+DEF_DLL_FN (void, gnutls_transport_set_ptr2,
+ (gnutls_session_t, gnutls_transport_ptr_t,
+ gnutls_transport_ptr_t));
+DEF_DLL_FN (void, gnutls_transport_set_pull_function,
+ (gnutls_session_t, gnutls_pull_func));
+DEF_DLL_FN (void, gnutls_transport_set_push_function,
+ (gnutls_session_t, gnutls_push_func));
+DEF_DLL_FN (int, gnutls_x509_crt_check_hostname,
+ (gnutls_x509_crt_t, const char *));
+DEF_DLL_FN (void, gnutls_x509_crt_deinit, (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_import,
+ (gnutls_x509_crt_t, const gnutls_datum_t *,
+ gnutls_x509_crt_fmt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_init, (gnutls_x509_crt_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_fingerprint,
+ (gnutls_x509_crt_t,
+ gnutls_digest_algorithm_t, void *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_version,
+ (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_serial,
+ (gnutls_x509_crt_t, void *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_issuer_dn,
+ (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (time_t, gnutls_x509_crt_get_activation_time,
+ (gnutls_x509_crt_t));
+DEF_DLL_FN (time_t, gnutls_x509_crt_get_expiration_time,
+ (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_dn,
+ (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_pk_algorithm,
+ (gnutls_x509_crt_t, unsigned int *));
+DEF_DLL_FN (const char*, gnutls_pk_algorithm_get_name,
+ (gnutls_pk_algorithm_t));
+DEF_DLL_FN (int, gnutls_pk_bits_to_sec_param,
+ (gnutls_pk_algorithm_t, unsigned int));
+DEF_DLL_FN (int, gnutls_x509_crt_get_issuer_unique_id,
+ (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_subject_unique_id,
+ (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_signature_algorithm,
+ (gnutls_x509_crt_t));
+DEF_DLL_FN (int, gnutls_x509_crt_get_signature,
+ (gnutls_x509_crt_t, char *, size_t *));
+DEF_DLL_FN (int, gnutls_x509_crt_get_key_id,
+ (gnutls_x509_crt_t, unsigned int, unsigned char *, size_t *_size));
+DEF_DLL_FN (const char*, gnutls_sec_param_get_name, (gnutls_sec_param_t));
+DEF_DLL_FN (const char*, gnutls_sign_get_name, (gnutls_sign_algorithm_t));
+DEF_DLL_FN (int, gnutls_server_name_set,
+ (gnutls_session_t, gnutls_server_name_type_t,
+ const void *, size_t));
+DEF_DLL_FN (gnutls_kx_algorithm_t, gnutls_kx_get, (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_kx_get_name, (gnutls_kx_algorithm_t));
+DEF_DLL_FN (gnutls_protocol_t, gnutls_protocol_get_version,
+ (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_protocol_get_name, (gnutls_protocol_t));
+DEF_DLL_FN (gnutls_cipher_algorithm_t, gnutls_cipher_get,
+ (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_cipher_get_name,
+ (gnutls_cipher_algorithm_t));
+DEF_DLL_FN (gnutls_mac_algorithm_t, gnutls_mac_get, (gnutls_session_t));
+DEF_DLL_FN (const char*, gnutls_mac_get_name, (gnutls_mac_algorithm_t));
static bool
return 0;
}
- LOAD_GNUTLS_FN (library, gnutls_alert_get);
- LOAD_GNUTLS_FN (library, gnutls_alert_get_name);
- LOAD_GNUTLS_FN (library, gnutls_alert_send_appropriate);
- LOAD_GNUTLS_FN (library, gnutls_anon_allocate_client_credentials);
- LOAD_GNUTLS_FN (library, gnutls_anon_free_client_credentials);
- LOAD_GNUTLS_FN (library, gnutls_bye);
- LOAD_GNUTLS_FN (library, gnutls_certificate_allocate_credentials);
- LOAD_GNUTLS_FN (library, gnutls_certificate_free_credentials);
- LOAD_GNUTLS_FN (library, gnutls_certificate_get_peers);
- LOAD_GNUTLS_FN (library, gnutls_certificate_set_verify_flags);
- LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_crl_file);
- LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_key_file);
-#if GNUTLS_VERSION_MAJOR + \
- (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
- LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_system_trust);
-#endif
- LOAD_GNUTLS_FN (library, gnutls_certificate_set_x509_trust_file);
- LOAD_GNUTLS_FN (library, gnutls_certificate_type_get);
- LOAD_GNUTLS_FN (library, gnutls_certificate_verify_peers2);
- LOAD_GNUTLS_FN (library, gnutls_credentials_set);
- LOAD_GNUTLS_FN (library, gnutls_deinit);
- LOAD_GNUTLS_FN (library, gnutls_dh_set_prime_bits);
- LOAD_GNUTLS_FN (library, gnutls_dh_get_prime_bits);
- LOAD_GNUTLS_FN (library, gnutls_error_is_fatal);
- LOAD_GNUTLS_FN (library, gnutls_global_init);
- LOAD_GNUTLS_FN (library, gnutls_global_set_log_function);
-#ifdef HAVE_GNUTLS3
- LOAD_GNUTLS_FN (library, gnutls_global_set_audit_log_function);
-#endif
- LOAD_GNUTLS_FN (library, gnutls_global_set_log_level);
- LOAD_GNUTLS_FN (library, gnutls_global_set_mem_functions);
- LOAD_GNUTLS_FN (library, gnutls_handshake);
- LOAD_GNUTLS_FN (library, gnutls_init);
- LOAD_GNUTLS_FN (library, gnutls_priority_set_direct);
- LOAD_GNUTLS_FN (library, gnutls_record_check_pending);
- LOAD_GNUTLS_FN (library, gnutls_record_recv);
- LOAD_GNUTLS_FN (library, gnutls_record_send);
- LOAD_GNUTLS_FN (library, gnutls_strerror);
- LOAD_GNUTLS_FN (library, gnutls_transport_set_errno);
- LOAD_GNUTLS_FN (library, gnutls_check_version);
+ LOAD_DLL_FN (library, gnutls_alert_get);
+ LOAD_DLL_FN (library, gnutls_alert_get_name);
+ LOAD_DLL_FN (library, gnutls_alert_send_appropriate);
+ LOAD_DLL_FN (library, gnutls_anon_allocate_client_credentials);
+ LOAD_DLL_FN (library, gnutls_anon_free_client_credentials);
+ LOAD_DLL_FN (library, gnutls_bye);
+ LOAD_DLL_FN (library, gnutls_certificate_allocate_credentials);
+ LOAD_DLL_FN (library, gnutls_certificate_free_credentials);
+ LOAD_DLL_FN (library, gnutls_certificate_get_peers);
+ LOAD_DLL_FN (library, gnutls_certificate_set_verify_flags);
+ LOAD_DLL_FN (library, gnutls_certificate_set_x509_crl_file);
+ LOAD_DLL_FN (library, gnutls_certificate_set_x509_key_file);
+# if ((GNUTLS_VERSION_MAJOR \
+ + (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20)) \
+ > 3)
+ LOAD_DLL_FN (library, gnutls_certificate_set_x509_system_trust);
+# endif
+ LOAD_DLL_FN (library, gnutls_certificate_set_x509_trust_file);
+ LOAD_DLL_FN (library, gnutls_certificate_type_get);
+ LOAD_DLL_FN (library, gnutls_certificate_verify_peers2);
+ LOAD_DLL_FN (library, gnutls_credentials_set);
+ LOAD_DLL_FN (library, gnutls_deinit);
+ LOAD_DLL_FN (library, gnutls_dh_set_prime_bits);
+ LOAD_DLL_FN (library, gnutls_dh_get_prime_bits);
+ LOAD_DLL_FN (library, gnutls_error_is_fatal);
+ LOAD_DLL_FN (library, gnutls_global_init);
+ LOAD_DLL_FN (library, gnutls_global_set_log_function);
+# ifdef HAVE_GNUTLS3
+ LOAD_DLL_FN (library, gnutls_global_set_audit_log_function);
+# endif
+ LOAD_DLL_FN (library, gnutls_global_set_log_level);
+ LOAD_DLL_FN (library, gnutls_handshake);
+ LOAD_DLL_FN (library, gnutls_init);
+ LOAD_DLL_FN (library, gnutls_priority_set_direct);
+ LOAD_DLL_FN (library, gnutls_record_check_pending);
+ LOAD_DLL_FN (library, gnutls_record_recv);
+ LOAD_DLL_FN (library, gnutls_record_send);
+ LOAD_DLL_FN (library, gnutls_strerror);
+ LOAD_DLL_FN (library, gnutls_transport_set_errno);
+ LOAD_DLL_FN (library, gnutls_check_version);
/* We don't need to call gnutls_transport_set_lowat in GnuTLS 2.11.1
and later, and the function was removed entirely in 3.0.0. */
if (!fn_gnutls_check_version ("2.11.1"))
- LOAD_GNUTLS_FN (library, gnutls_transport_set_lowat);
- LOAD_GNUTLS_FN (library, gnutls_transport_set_ptr2);
- LOAD_GNUTLS_FN (library, gnutls_transport_set_pull_function);
- LOAD_GNUTLS_FN (library, gnutls_transport_set_push_function);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_check_hostname);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_deinit);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_import);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_init);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_fingerprint);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_version);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_serial);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_issuer_dn);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_activation_time);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_expiration_time);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_dn);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_pk_algorithm);
- LOAD_GNUTLS_FN (library, gnutls_pk_algorithm_get_name);
- LOAD_GNUTLS_FN (library, gnutls_pk_bits_to_sec_param);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_issuer_unique_id);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_subject_unique_id);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_signature_algorithm);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_signature);
- LOAD_GNUTLS_FN (library, gnutls_x509_crt_get_key_id);
- LOAD_GNUTLS_FN (library, gnutls_sec_param_get_name);
- LOAD_GNUTLS_FN (library, gnutls_sign_get_name);
- LOAD_GNUTLS_FN (library, gnutls_server_name_set);
- LOAD_GNUTLS_FN (library, gnutls_kx_get);
- LOAD_GNUTLS_FN (library, gnutls_kx_get_name);
- LOAD_GNUTLS_FN (library, gnutls_protocol_get_version);
- LOAD_GNUTLS_FN (library, gnutls_protocol_get_name);
- LOAD_GNUTLS_FN (library, gnutls_cipher_get);
- LOAD_GNUTLS_FN (library, gnutls_cipher_get_name);
- LOAD_GNUTLS_FN (library, gnutls_mac_get);
- LOAD_GNUTLS_FN (library, gnutls_mac_get_name);
+ LOAD_DLL_FN (library, gnutls_transport_set_lowat);
+ LOAD_DLL_FN (library, gnutls_transport_set_ptr2);
+ LOAD_DLL_FN (library, gnutls_transport_set_pull_function);
+ LOAD_DLL_FN (library, gnutls_transport_set_push_function);
+ LOAD_DLL_FN (library, gnutls_x509_crt_check_hostname);
+ LOAD_DLL_FN (library, gnutls_x509_crt_deinit);
+ LOAD_DLL_FN (library, gnutls_x509_crt_import);
+ LOAD_DLL_FN (library, gnutls_x509_crt_init);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_fingerprint);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_version);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_serial);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_issuer_dn);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_activation_time);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_expiration_time);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_dn);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_pk_algorithm);
+ LOAD_DLL_FN (library, gnutls_pk_algorithm_get_name);
+ LOAD_DLL_FN (library, gnutls_pk_bits_to_sec_param);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_issuer_unique_id);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_subject_unique_id);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_signature_algorithm);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_signature);
+ LOAD_DLL_FN (library, gnutls_x509_crt_get_key_id);
+ LOAD_DLL_FN (library, gnutls_sec_param_get_name);
+ LOAD_DLL_FN (library, gnutls_sign_get_name);
+ LOAD_DLL_FN (library, gnutls_server_name_set);
+ LOAD_DLL_FN (library, gnutls_kx_get);
+ LOAD_DLL_FN (library, gnutls_kx_get_name);
+ LOAD_DLL_FN (library, gnutls_protocol_get_version);
+ LOAD_DLL_FN (library, gnutls_protocol_get_name);
+ LOAD_DLL_FN (library, gnutls_cipher_get);
+ LOAD_DLL_FN (library, gnutls_cipher_get_name);
+ LOAD_DLL_FN (library, gnutls_mac_get);
+ LOAD_DLL_FN (library, gnutls_mac_get_name);
max_log_level = global_gnutls_log_level;
return 1;
}
-#else /* !WINDOWSNT */
-
-#define fn_gnutls_alert_get gnutls_alert_get
-#define fn_gnutls_alert_get_name gnutls_alert_get_name
-#define fn_gnutls_alert_send_appropriate gnutls_alert_send_appropriate
-#define fn_gnutls_anon_allocate_client_credentials gnutls_anon_allocate_client_credentials
-#define fn_gnutls_anon_free_client_credentials gnutls_anon_free_client_credentials
-#define fn_gnutls_bye gnutls_bye
-#define fn_gnutls_certificate_allocate_credentials gnutls_certificate_allocate_credentials
-#define fn_gnutls_certificate_free_credentials gnutls_certificate_free_credentials
-#define fn_gnutls_certificate_get_peers gnutls_certificate_get_peers
-#define fn_gnutls_certificate_set_verify_flags gnutls_certificate_set_verify_flags
-#define fn_gnutls_certificate_set_x509_crl_file gnutls_certificate_set_x509_crl_file
-#define fn_gnutls_certificate_set_x509_key_file gnutls_certificate_set_x509_key_file
-#if GNUTLS_VERSION_MAJOR + \
- (GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
-#define fn_gnutls_certificate_set_x509_system_trust gnutls_certificate_set_x509_system_trust
-#endif
-#define fn_gnutls_certificate_set_x509_trust_file gnutls_certificate_set_x509_trust_file
-#define fn_gnutls_certificate_type_get gnutls_certificate_type_get
-#define fn_gnutls_certificate_verify_peers2 gnutls_certificate_verify_peers2
-#define fn_gnutls_cipher_get gnutls_cipher_get
-#define fn_gnutls_cipher_get_name gnutls_cipher_get_name
-#define fn_gnutls_credentials_set gnutls_credentials_set
-#define fn_gnutls_deinit gnutls_deinit
-#define fn_gnutls_dh_get_prime_bits gnutls_dh_get_prime_bits
-#define fn_gnutls_dh_set_prime_bits gnutls_dh_set_prime_bits
-#define fn_gnutls_error_is_fatal gnutls_error_is_fatal
-#define fn_gnutls_global_init gnutls_global_init
-#ifdef HAVE_GNUTLS3
-#define fn_gnutls_global_set_audit_log_function gnutls_global_set_audit_log_function
+# define gnutls_alert_get fn_gnutls_alert_get
+# define gnutls_alert_get_name fn_gnutls_alert_get_name
+# define gnutls_alert_send_appropriate fn_gnutls_alert_send_appropriate
+# define gnutls_anon_allocate_client_credentials fn_gnutls_anon_allocate_client_credentials
+# define gnutls_anon_free_client_credentials fn_gnutls_anon_free_client_credentials
+# define gnutls_bye fn_gnutls_bye
+# define gnutls_certificate_allocate_credentials fn_gnutls_certificate_allocate_credentials
+# define gnutls_certificate_free_credentials fn_gnutls_certificate_free_credentials
+# define gnutls_certificate_get_peers fn_gnutls_certificate_get_peers
+# define gnutls_certificate_set_verify_flags fn_gnutls_certificate_set_verify_flags
+# define gnutls_certificate_set_x509_crl_file fn_gnutls_certificate_set_x509_crl_file
+# define gnutls_certificate_set_x509_key_file fn_gnutls_certificate_set_x509_key_file
+# define gnutls_certificate_set_x509_system_trust fn_gnutls_certificate_set_x509_system_trust
+# define gnutls_certificate_set_x509_trust_file fn_gnutls_certificate_set_x509_trust_file
+# define gnutls_certificate_type_get fn_gnutls_certificate_type_get
+# define gnutls_certificate_verify_peers2 fn_gnutls_certificate_verify_peers2
+# define gnutls_check_version fn_gnutls_check_version
+# define gnutls_cipher_get fn_gnutls_cipher_get
+# define gnutls_cipher_get_name fn_gnutls_cipher_get_name
+# define gnutls_credentials_set fn_gnutls_credentials_set
+# define gnutls_deinit fn_gnutls_deinit
+# define gnutls_dh_get_prime_bits fn_gnutls_dh_get_prime_bits
+# define gnutls_dh_set_prime_bits fn_gnutls_dh_set_prime_bits
+# define gnutls_error_is_fatal fn_gnutls_error_is_fatal
+# define gnutls_global_init fn_gnutls_global_init
+# define gnutls_global_set_audit_log_function fn_gnutls_global_set_audit_log_function
+# define gnutls_global_set_log_function fn_gnutls_global_set_log_function
+# define gnutls_global_set_log_level fn_gnutls_global_set_log_level
+# define gnutls_handshake fn_gnutls_handshake
+# define gnutls_init fn_gnutls_init
+# define gnutls_kx_get fn_gnutls_kx_get
+# define gnutls_kx_get_name fn_gnutls_kx_get_name
+# define gnutls_mac_get fn_gnutls_mac_get
+# define gnutls_mac_get_name fn_gnutls_mac_get_name
+# define gnutls_pk_algorithm_get_name fn_gnutls_pk_algorithm_get_name
+# define gnutls_pk_bits_to_sec_param fn_gnutls_pk_bits_to_sec_param
+# define gnutls_priority_set_direct fn_gnutls_priority_set_direct
+# define gnutls_protocol_get_name fn_gnutls_protocol_get_name
+# define gnutls_protocol_get_version fn_gnutls_protocol_get_version
+# define gnutls_record_check_pending fn_gnutls_record_check_pending
+# define gnutls_record_recv fn_gnutls_record_recv
+# define gnutls_record_send fn_gnutls_record_send
+# define gnutls_sec_param_get_name fn_gnutls_sec_param_get_name
+# define gnutls_server_name_set fn_gnutls_server_name_set
+# define gnutls_sign_get_name fn_gnutls_sign_get_name
+# define gnutls_strerror fn_gnutls_strerror
+# define gnutls_transport_set_errno fn_gnutls_transport_set_errno
+# define gnutls_transport_set_lowat fn_gnutls_transport_set_lowat
+# define gnutls_transport_set_ptr2 fn_gnutls_transport_set_ptr2
+# define gnutls_transport_set_pull_function fn_gnutls_transport_set_pull_function
+# define gnutls_transport_set_push_function fn_gnutls_transport_set_push_function
+# define gnutls_x509_crt_check_hostname fn_gnutls_x509_crt_check_hostname
+# define gnutls_x509_crt_deinit fn_gnutls_x509_crt_deinit
+# define gnutls_x509_crt_get_activation_time fn_gnutls_x509_crt_get_activation_time
+# define gnutls_x509_crt_get_dn fn_gnutls_x509_crt_get_dn
+# define gnutls_x509_crt_get_expiration_time fn_gnutls_x509_crt_get_expiration_time
+# define gnutls_x509_crt_get_fingerprint fn_gnutls_x509_crt_get_fingerprint
+# define gnutls_x509_crt_get_issuer_dn fn_gnutls_x509_crt_get_issuer_dn
+# define gnutls_x509_crt_get_issuer_unique_id fn_gnutls_x509_crt_get_issuer_unique_id
+# define gnutls_x509_crt_get_key_id fn_gnutls_x509_crt_get_key_id
+# define gnutls_x509_crt_get_pk_algorithm fn_gnutls_x509_crt_get_pk_algorithm
+# define gnutls_x509_crt_get_serial fn_gnutls_x509_crt_get_serial
+# define gnutls_x509_crt_get_signature fn_gnutls_x509_crt_get_signature
+# define gnutls_x509_crt_get_signature_algorithm fn_gnutls_x509_crt_get_signature_algorithm
+# define gnutls_x509_crt_get_subject_unique_id fn_gnutls_x509_crt_get_subject_unique_id
+# define gnutls_x509_crt_get_version fn_gnutls_x509_crt_get_version
+# define gnutls_x509_crt_import fn_gnutls_x509_crt_import
+# define gnutls_x509_crt_init fn_gnutls_x509_crt_init
+
#endif
-#define fn_gnutls_global_set_log_function gnutls_global_set_log_function
-#define fn_gnutls_global_set_log_level gnutls_global_set_log_level
-#define fn_gnutls_global_set_mem_functions gnutls_global_set_mem_functions
-#define fn_gnutls_handshake gnutls_handshake
-#define fn_gnutls_init gnutls_init
-#define fn_gnutls_kx_get gnutls_kx_get
-#define fn_gnutls_kx_get_name gnutls_kx_get_name
-#define fn_gnutls_mac_get gnutls_mac_get
-#define fn_gnutls_mac_get_name gnutls_mac_get_name
-#define fn_gnutls_pk_algorithm_get_name gnutls_pk_algorithm_get_name
-#define fn_gnutls_pk_bits_to_sec_param gnutls_pk_bits_to_sec_param
-#define fn_gnutls_priority_set_direct gnutls_priority_set_direct
-#define fn_gnutls_protocol_get_name gnutls_protocol_get_name
-#define fn_gnutls_protocol_get_version gnutls_protocol_get_version
-#define fn_gnutls_record_check_pending gnutls_record_check_pending
-#define fn_gnutls_record_recv gnutls_record_recv
-#define fn_gnutls_record_send gnutls_record_send
-#define fn_gnutls_sec_param_get_name gnutls_sec_param_get_name
-#define fn_gnutls_server_name_set gnutls_server_name_set
-#define fn_gnutls_sign_get_name gnutls_sign_get_name
-#define fn_gnutls_strerror gnutls_strerror
-#define fn_gnutls_transport_set_ptr2 gnutls_transport_set_ptr2
-#define fn_gnutls_x509_crt_check_hostname gnutls_x509_crt_check_hostname
-#define fn_gnutls_x509_crt_deinit gnutls_x509_crt_deinit
-#define fn_gnutls_x509_crt_get_activation_time gnutls_x509_crt_get_activation_time
-#define fn_gnutls_x509_crt_get_dn gnutls_x509_crt_get_dn
-#define fn_gnutls_x509_crt_get_expiration_time gnutls_x509_crt_get_expiration_time
-#define fn_gnutls_x509_crt_get_fingerprint gnutls_x509_crt_get_fingerprint
-#define fn_gnutls_x509_crt_get_issuer_dn gnutls_x509_crt_get_issuer_dn
-#define fn_gnutls_x509_crt_get_issuer_unique_id gnutls_x509_crt_get_issuer_unique_id
-#define fn_gnutls_x509_crt_get_key_id gnutls_x509_crt_get_key_id
-#define fn_gnutls_x509_crt_get_pk_algorithm gnutls_x509_crt_get_pk_algorithm
-#define fn_gnutls_x509_crt_get_serial gnutls_x509_crt_get_serial
-#define fn_gnutls_x509_crt_get_signature_algorithm gnutls_x509_crt_get_signature_algorithm
-#define fn_gnutls_x509_crt_get_subject_unique_id gnutls_x509_crt_get_subject_unique_id
-#define fn_gnutls_x509_crt_get_version gnutls_x509_crt_get_version
-#define fn_gnutls_x509_crt_import gnutls_x509_crt_import
-#define fn_gnutls_x509_crt_init gnutls_x509_crt_init
-
-#endif /* !WINDOWSNT */
\f
+/* Report memory exhaustion if ERR is an out-of-memory indication. */
+static void
+check_memory_full (int err)
+{
+ /* When GnuTLS exhausts memory, it doesn't say how much memory it
+ asked for, so tell the Emacs allocator that GnuTLS asked for no
+ bytes. This isn't accurate, but it's good enough. */
+ if (err == GNUTLS_E_MEMORY_ERROR)
+ memory_full (0);
+}
+
#ifdef HAVE_GNUTLS3
/* Log a simple audit message. */
static void
/* On W32 we cannot transfer socket handles between different runtime
libraries, so we tell GnuTLS to use our special push/pull
functions. */
- fn_gnutls_transport_set_ptr2 (state,
- (gnutls_transport_ptr_t) proc,
- (gnutls_transport_ptr_t) proc);
- fn_gnutls_transport_set_push_function (state, &emacs_gnutls_push);
- fn_gnutls_transport_set_pull_function (state, &emacs_gnutls_pull);
+ gnutls_transport_set_ptr2 (state,
+ (gnutls_transport_ptr_t) proc,
+ (gnutls_transport_ptr_t) proc);
+ gnutls_transport_set_push_function (state, &emacs_gnutls_push);
+ gnutls_transport_set_pull_function (state, &emacs_gnutls_pull);
/* For non blocking sockets or other custom made pull/push
functions the gnutls_transport_set_lowat must be called, with
zero by default in version 2.11.1, and the function
gnutls_transport_set_lowat was removed from the library in
version 2.99.0. */
- if (!fn_gnutls_check_version ("2.11.1"))
- fn_gnutls_transport_set_lowat (state, 0);
+ if (!gnutls_check_version ("2.11.1"))
+ gnutls_transport_set_lowat (state, 0);
#else
/* This is how GnuTLS takes sockets: as file descriptors passed
in. For an Emacs process socket, infd and outfd are the
same but we use this two-argument version for clarity. */
- fn_gnutls_transport_set_ptr2 (state,
- (void *) (intptr_t) proc->infd,
- (void *) (intptr_t) proc->outfd);
+ gnutls_transport_set_ptr2 (state,
+ (void *) (intptr_t) proc->infd,
+ (void *) (intptr_t) proc->outfd);
#endif
proc->gnutls_initstage = GNUTLS_STAGE_TRANSPORT_POINTERS_SET;
do
{
- ret = fn_gnutls_handshake (state);
+ ret = gnutls_handshake (state);
emacs_gnutls_handle_error (state, ret);
QUIT;
}
- while (ret < 0 && fn_gnutls_error_is_fatal (ret) == 0);
+ while (ret < 0 && gnutls_error_is_fatal (ret) == 0);
proc->gnutls_initstage = GNUTLS_STAGE_HANDSHAKE_TRIED;
}
else
{
- fn_gnutls_alert_send_appropriate (state, ret);
+ check_memory_full (gnutls_alert_send_appropriate (state, ret));
}
return ret;
}
ptrdiff_t
emacs_gnutls_record_check_pending (gnutls_session_t state)
{
- return fn_gnutls_record_check_pending (state);
+ return gnutls_record_check_pending (state);
}
#ifdef WINDOWSNT
void
emacs_gnutls_transport_set_errno (gnutls_session_t state, int err)
{
- fn_gnutls_transport_set_errno (state, err);
+ gnutls_transport_set_errno (state, err);
}
#endif
while (nbyte > 0)
{
- rtnval = fn_gnutls_record_send (state, buf, nbyte);
+ rtnval = gnutls_record_send (state, buf, nbyte);
if (rtnval < 0)
{
proc->gnutls_handshakes_tried = 0;
return 0;
}
- rtnval = fn_gnutls_record_recv (state, buf, nbyte);
+ rtnval = gnutls_record_recv (state, buf, nbyte);
if (rtnval >= 0)
return rtnval;
else if (rtnval == GNUTLS_E_UNEXPECTED_PACKET_LENGTH)
if (err >= 0)
return 1;
+ check_memory_full (err);
+
max_log_level = global_gnutls_log_level;
/* TODO: use gnutls-error-fatalp and gnutls-error-string. */
- str = fn_gnutls_strerror (err);
+ str = gnutls_strerror (err);
if (!str)
str = "unknown";
- if (fn_gnutls_error_is_fatal (err))
+ if (gnutls_error_is_fatal (err))
{
ret = 0;
GNUTLS_LOG2 (1, max_log_level, "fatal error:", str);
if (err == GNUTLS_E_WARNING_ALERT_RECEIVED
|| err == GNUTLS_E_FATAL_ALERT_RECEIVED)
{
- int alert = fn_gnutls_alert_get (session);
+ int alert = gnutls_alert_get (session);
int level = (err == GNUTLS_E_FATAL_ALERT_RECEIVED) ? 0 : 1;
- str = fn_gnutls_alert_get_name (alert);
+ str = gnutls_alert_get_name (alert);
if (!str)
str = "unknown";
return Qgnutls_e_invalid_session;
}
+ check_memory_full (err);
return make_number (err);
}
if (XPROCESS (proc)->gnutls_x509_cred)
{
GNUTLS_LOG (2, log_level, "Deallocating x509 credentials");
- fn_gnutls_certificate_free_credentials (XPROCESS (proc)->gnutls_x509_cred);
+ gnutls_certificate_free_credentials (XPROCESS (proc)->gnutls_x509_cred);
XPROCESS (proc)->gnutls_x509_cred = NULL;
}
if (XPROCESS (proc)->gnutls_anon_cred)
{
GNUTLS_LOG (2, log_level, "Deallocating anon credentials");
- fn_gnutls_anon_free_client_credentials (XPROCESS (proc)->gnutls_anon_cred);
+ gnutls_anon_free_client_credentials (XPROCESS (proc)->gnutls_anon_cred);
XPROCESS (proc)->gnutls_anon_cred = NULL;
}
if (XPROCESS (proc)->gnutls_state)
{
- fn_gnutls_deinit (XPROCESS (proc)->gnutls_state);
+ gnutls_deinit (XPROCESS (proc)->gnutls_state);
XPROCESS (proc)->gnutls_state = NULL;
if (GNUTLS_INITSTAGE (proc) >= GNUTLS_STAGE_INIT)
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_INIT - 1;
if (! TYPE_RANGED_INTEGERP (int, err))
error ("Not an error symbol or code");
- if (0 == fn_gnutls_error_is_fatal (XINT (err)))
+ if (0 == gnutls_error_is_fatal (XINT (err)))
return Qnil;
return Qt;
if (! TYPE_RANGED_INTEGERP (int, err))
return build_string ("Not an error symbol or code");
- return build_string (fn_gnutls_strerror (XINT (err)));
+ return build_string (gnutls_strerror (XINT (err)));
}
DEFUN ("gnutls-deinit", Fgnutls_deinit, Sgnutls_deinit, 1, 1, 0,
/* Version. */
{
- int version = fn_gnutls_x509_crt_get_version (cert);
+ int version = gnutls_x509_crt_get_version (cert);
+ check_memory_full (version);
if (version >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":version"),
make_number (version)));
/* Serial. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_serial (cert, NULL, &buf_size);
+ err = gnutls_x509_crt_get_serial (cert, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
void *serial = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_serial (cert, serial, &buf_size);
+ err = gnutls_x509_crt_get_serial (cert, serial, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":serial-number"),
gnutls_hex_string (serial, buf_size, "")));
/* Issuer. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size);
+ err = gnutls_x509_crt_get_issuer_dn (cert, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
char *dn = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size);
+ err = gnutls_x509_crt_get_issuer_dn (cert, dn, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":issuer"),
make_string (dn, buf_size)));
that might add 1 to the year length. */
char buf[INT_STRLEN_BOUND (int) + 1 + sizeof "-12-31"];
struct tm t;
- time_t tim = fn_gnutls_x509_crt_get_activation_time (cert);
+ time_t tim = gnutls_x509_crt_get_activation_time (cert);
if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
res = nconc2 (res, list2 (intern (":valid-from"), build_string (buf)));
- tim = fn_gnutls_x509_crt_get_expiration_time (cert);
+ tim = gnutls_x509_crt_get_expiration_time (cert);
if (gmtime_r (&tim, &t) && strftime (buf, sizeof buf, "%Y-%m-%d", &t))
res = nconc2 (res, list2 (intern (":valid-to"), build_string (buf)));
}
/* Subject. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_dn (cert, NULL, &buf_size);
+ err = gnutls_x509_crt_get_dn (cert, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
char *dn = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_dn (cert, dn, &buf_size);
+ err = gnutls_x509_crt_get_dn (cert, dn, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":subject"),
make_string (dn, buf_size)));
{
unsigned int bits;
- err = fn_gnutls_x509_crt_get_pk_algorithm (cert, &bits);
+ err = gnutls_x509_crt_get_pk_algorithm (cert, &bits);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
{
- const char *name = fn_gnutls_pk_algorithm_get_name (err);
+ const char *name = gnutls_pk_algorithm_get_name (err);
if (name)
res = nconc2 (res, list2 (intern (":public-key-algorithm"),
build_string (name)));
- name = fn_gnutls_sec_param_get_name (fn_gnutls_pk_bits_to_sec_param
- (err, bits));
+ name = gnutls_sec_param_get_name (gnutls_pk_bits_to_sec_param
+ (err, bits));
res = nconc2 (res, list2 (intern (":certificate-security-level"),
build_string (name)));
}
/* Unique IDs. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size);
+ err = gnutls_x509_crt_get_issuer_unique_id (cert, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
char *buf = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size);
+ err = gnutls_x509_crt_get_issuer_unique_id (cert, buf, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":issuer-unique-id"),
make_string (buf, buf_size)));
}
buf_size = 0;
- err = fn_gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size);
+ err = gnutls_x509_crt_get_subject_unique_id (cert, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
char *buf = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size);
+ err = gnutls_x509_crt_get_subject_unique_id (cert, buf, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":subject-unique-id"),
make_string (buf, buf_size)));
#endif
/* Signature. */
- err = fn_gnutls_x509_crt_get_signature_algorithm (cert);
+ err = gnutls_x509_crt_get_signature_algorithm (cert);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
{
- const char *name = fn_gnutls_sign_get_name (err);
+ const char *name = gnutls_sign_get_name (err);
if (name)
res = nconc2 (res, list2 (intern (":signature-algorithm"),
build_string (name)));
/* Public key ID. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size);
+ err = gnutls_x509_crt_get_key_id (cert, 0, NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
void *buf = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size);
+ err = gnutls_x509_crt_get_key_id (cert, 0, buf, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":public-key-id"),
gnutls_hex_string (buf, buf_size, "sha1:")));
/* Certificate fingerprint. */
buf_size = 0;
- err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
- NULL, &buf_size);
+ err = gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
+ NULL, &buf_size);
+ check_memory_full (err);
if (err == GNUTLS_E_SHORT_MEMORY_BUFFER)
{
void *buf = xmalloc (buf_size);
- err = fn_gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
- buf, &buf_size);
+ err = gnutls_x509_crt_get_fingerprint (cert, GNUTLS_DIG_SHA1,
+ buf, &buf_size);
+ check_memory_full (err);
if (err >= GNUTLS_E_SUCCESS)
res = nconc2 (res, list2 (intern (":certificate-id"),
gnutls_hex_string (buf, buf_size, "sha1:")));
/* Diffie-Hellman prime bits. */
{
- int bits = fn_gnutls_dh_get_prime_bits (state);
+ int bits = gnutls_dh_get_prime_bits (state);
+ check_memory_full (bits);
if (bits > 0)
result = nconc2 (result, list2 (intern (":diffie-hellman-prime-bits"),
make_number (bits)));
/* Key exchange. */
result = nconc2
(result, list2 (intern (":key-exchange"),
- build_string (fn_gnutls_kx_get_name
- (fn_gnutls_kx_get (state)))));
+ build_string (gnutls_kx_get_name
+ (gnutls_kx_get (state)))));
/* Protocol name. */
result = nconc2
(result, list2 (intern (":protocol"),
- build_string (fn_gnutls_protocol_get_name
- (fn_gnutls_protocol_get_version (state)))));
+ build_string (gnutls_protocol_get_name
+ (gnutls_protocol_get_version (state)))));
/* Cipher name. */
result = nconc2
(result, list2 (intern (":cipher"),
- build_string (fn_gnutls_cipher_get_name
- (fn_gnutls_cipher_get (state)))));
+ build_string (gnutls_cipher_get_name
+ (gnutls_cipher_get (state)))));
/* MAC name. */
result = nconc2
(result, list2 (intern (":mac"),
- build_string (fn_gnutls_mac_get_name
- (fn_gnutls_mac_get (state)))));
+ build_string (gnutls_mac_get_name
+ (gnutls_mac_get (state)))));
return result;
int ret = GNUTLS_E_SUCCESS;
if (!gnutls_global_initialized)
- {
- fn_gnutls_global_set_mem_functions (xmalloc, xmalloc, NULL,
- xrealloc, xfree);
- ret = fn_gnutls_global_init ();
- }
+ ret = gnutls_global_init ();
+
gnutls_global_initialized = 1;
return gnutls_make_error (ret);
if (TYPE_RANGED_INTEGERP (int, loglevel))
{
- fn_gnutls_global_set_log_function (gnutls_log_function);
+ gnutls_global_set_log_function (gnutls_log_function);
#ifdef HAVE_GNUTLS3
- fn_gnutls_global_set_audit_log_function (gnutls_audit_log_function);
+ gnutls_global_set_audit_log_function (gnutls_audit_log_function);
#endif
- fn_gnutls_global_set_log_level (XINT (loglevel));
+ gnutls_global_set_log_level (XINT (loglevel));
max_log_level = XINT (loglevel);
XPROCESS (proc)->gnutls_log_level = max_log_level;
}
unsigned int gnutls_verify_flags = GNUTLS_VERIFY_ALLOW_X509_V1_CA_CRT;
GNUTLS_LOG (2, max_log_level, "allocating x509 credentials");
- fn_gnutls_certificate_allocate_credentials (&x509_cred);
+ check_memory_full (gnutls_certificate_allocate_credentials (&x509_cred));
XPROCESS (proc)->gnutls_x509_cred = x509_cred;
verify_flags = Fplist_get (proplist, QCgnutls_bootprop_verify_flags);
else
GNUTLS_LOG (2, max_log_level, "ignoring invalid verify-flags");
- fn_gnutls_certificate_set_verify_flags (x509_cred, gnutls_verify_flags);
+ gnutls_certificate_set_verify_flags (x509_cred, gnutls_verify_flags);
}
else /* Qgnutls_anon: */
{
GNUTLS_LOG (2, max_log_level, "allocating anon credentials");
- fn_gnutls_anon_allocate_client_credentials (&anon_cred);
+ check_memory_full (gnutls_anon_allocate_client_credentials (&anon_cred));
XPROCESS (proc)->gnutls_anon_cred = anon_cred;
}
#if GNUTLS_VERSION_MAJOR + \
(GNUTLS_VERSION_MINOR > 0 || GNUTLS_VERSION_PATCH >= 20) > 3
- ret = fn_gnutls_certificate_set_x509_system_trust (x509_cred);
+ ret = gnutls_certificate_set_x509_system_trust (x509_cred);
if (ret < GNUTLS_E_SUCCESS)
- GNUTLS_LOG2i (4, max_log_level,
- "setting system trust failed with code ", ret);
+ {
+ check_memory_full (ret);
+ GNUTLS_LOG2i (4, max_log_level,
+ "setting system trust failed with code ", ret);
+ }
#endif
for (tail = trustfiles; CONSP (tail); tail = XCDR (tail))
name using the current ANSI codepage. */
trustfile = ansi_encode_filename (trustfile);
#endif
- ret = fn_gnutls_certificate_set_x509_trust_file
+ ret = gnutls_certificate_set_x509_trust_file
(x509_cred,
SSDATA (trustfile),
file_format);
#ifdef WINDOWSNT
crlfile = ansi_encode_filename (crlfile);
#endif
- ret = fn_gnutls_certificate_set_x509_crl_file
+ ret = gnutls_certificate_set_x509_crl_file
(x509_cred, SSDATA (crlfile), file_format);
if (ret < GNUTLS_E_SUCCESS)
keyfile = ansi_encode_filename (keyfile);
certfile = ansi_encode_filename (certfile);
#endif
- ret = fn_gnutls_certificate_set_x509_key_file
+ ret = gnutls_certificate_set_x509_key_file
(x509_cred, SSDATA (certfile), SSDATA (keyfile), file_format);
if (ret < GNUTLS_E_SUCCESS)
/* Call gnutls_init here: */
GNUTLS_LOG (1, max_log_level, "gnutls_init");
- ret = fn_gnutls_init (&state, GNUTLS_CLIENT);
+ ret = gnutls_init (&state, GNUTLS_CLIENT);
XPROCESS (proc)->gnutls_state = state;
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
}
GNUTLS_LOG (1, max_log_level, "setting the priority string");
- ret = fn_gnutls_priority_set_direct (state,
- priority_string_ptr,
- NULL);
+ ret = gnutls_priority_set_direct (state, priority_string_ptr, NULL);
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
GNUTLS_INITSTAGE (proc) = GNUTLS_STAGE_PRIORITY;
if (INTEGERP (prime_bits))
- fn_gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
+ gnutls_dh_set_prime_bits (state, XUINT (prime_bits));
ret = EQ (type, Qgnutls_x509pki)
- ? fn_gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred)
- : fn_gnutls_credentials_set (state, GNUTLS_CRD_ANON, anon_cred);
+ ? gnutls_credentials_set (state, GNUTLS_CRD_CERTIFICATE, x509_cred)
+ : gnutls_credentials_set (state, GNUTLS_CRD_ANON, anon_cred);
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
if (!gnutls_ip_address_p (c_hostname))
{
- ret = fn_gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname,
- strlen (c_hostname));
+ ret = gnutls_server_name_set (state, GNUTLS_NAME_DNS, c_hostname,
+ strlen (c_hostname));
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
}
check of the certificate's hostname with
gnutls_x509_crt_check_hostname against :hostname. */
- ret = fn_gnutls_certificate_verify_peers2 (state, &peer_verification);
+ ret = gnutls_certificate_verify_peers2 (state, &peer_verification);
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
/* Up to here the process is the same for X.509 certificates and
OpenPGP keys. From now on X.509 certificates are assumed. This
can be easily extended to work with openpgp keys as well. */
- if (fn_gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
+ if (gnutls_certificate_type_get (state) == GNUTLS_CRT_X509)
{
gnutls_x509_crt_t gnutls_verify_cert;
const gnutls_datum_t *gnutls_verify_cert_list;
unsigned int gnutls_verify_cert_list_size;
- ret = fn_gnutls_x509_crt_init (&gnutls_verify_cert);
+ ret = gnutls_x509_crt_init (&gnutls_verify_cert);
if (ret < GNUTLS_E_SUCCESS)
return gnutls_make_error (ret);
gnutls_verify_cert_list =
- fn_gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
+ gnutls_certificate_get_peers (state, &gnutls_verify_cert_list_size);
if (gnutls_verify_cert_list == NULL)
{
- fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
emacs_gnutls_deinit (proc);
error ("No x509 certificate was found\n");
}
/* We only check the first certificate in the given chain. */
- ret = fn_gnutls_x509_crt_import (gnutls_verify_cert,
+ ret = gnutls_x509_crt_import (gnutls_verify_cert,
&gnutls_verify_cert_list[0],
GNUTLS_X509_FMT_DER);
if (ret < GNUTLS_E_SUCCESS)
{
- fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
return gnutls_make_error (ret);
}
XPROCESS (proc)->gnutls_certificate = gnutls_verify_cert;
- if (!fn_gnutls_x509_crt_check_hostname (gnutls_verify_cert, c_hostname))
+ int err = gnutls_x509_crt_check_hostname (gnutls_verify_cert,
+ c_hostname);
+ check_memory_full (err);
+ if (!err)
{
XPROCESS (proc)->gnutls_extra_peer_verification |=
CERTIFICATE_NOT_MATCHING;
if (verify_error_all
|| !NILP (Fmember (QCgnutls_bootprop_hostname, verify_error)))
{
- fn_gnutls_x509_crt_deinit (gnutls_verify_cert);
+ gnutls_x509_crt_deinit (gnutls_verify_cert);
emacs_gnutls_deinit (proc);
error ("The x509 certificate does not match \"%s\"", c_hostname);
}
state = XPROCESS (proc)->gnutls_state;
- fn_gnutls_x509_crt_deinit (XPROCESS (proc)->gnutls_certificate);
+ gnutls_x509_crt_deinit (XPROCESS (proc)->gnutls_certificate);
- ret = fn_gnutls_bye (state,
- NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR);
+ ret = gnutls_bye (state, NILP (cont) ? GNUTLS_SHUT_RDWR : GNUTLS_SHUT_WR);
return gnutls_make_error (ret);
}
if (x_gtk_file_dialog_help_text)
{
- msgbuf[0] = '\0';
+ char *z = msgbuf;
/* Gtk+ 2.10 has the file name text entry box integrated in the dialog.
Show the C-l help text only for versions < 2.10. */
if (gtk_check_version (2, 10, 0) && action != GTK_FILE_CHOOSER_ACTION_SAVE)
- strcat (msgbuf, "\nType C-l to display a file name text entry box.\n");
- strcat (msgbuf, "\nIf you don't like this file selector, use the "
+ z = stpcpy (z, "\nType C-l to display a file name text entry box.\n");
+ strcpy (z, "\nIf you don't like this file selector, use the "
"corresponding\nkey binding or customize "
"use-file-dialog to turn it off.");
X / NS / W32 support code
***********************************************************************/
-#ifdef WINDOWSNT
-
-/* Macro for defining functions that will be loaded from image DLLs. */
-#define DEF_IMGLIB_FN(rettype,func,args) static rettype (FAR CDECL *fn_##func)args
-
-/* Macro for loading those image functions from the library. */
-#define LOAD_IMGLIB_FN(lib,func) { \
- fn_##func = (void *) GetProcAddress (lib, #func); \
- if (!fn_##func) return 0; \
- }
-
-#endif /* WINDOWSNT */
-
/* Return true if XIMG's size WIDTH x HEIGHT doesn't break the
windowing system.
WIDTH and HEIGHT must both be positive.
/* XPM library details. */
-DEF_IMGLIB_FN (void, XpmFreeAttributes, (XpmAttributes *));
-DEF_IMGLIB_FN (int, XpmCreateImageFromBuffer, (Display *, char *, xpm_XImage **,
- xpm_XImage **, XpmAttributes *));
-DEF_IMGLIB_FN (int, XpmReadFileToImage, (Display *, char *, xpm_XImage **,
- xpm_XImage **, XpmAttributes *));
-DEF_IMGLIB_FN (void, XImageFree, (xpm_XImage *));
+DEF_DLL_FN (void, XpmFreeAttributes, (XpmAttributes *));
+DEF_DLL_FN (int, XpmCreateImageFromBuffer,
+ (Display *, char *, xpm_XImage **,
+ xpm_XImage **, XpmAttributes *));
+DEF_DLL_FN (int, XpmReadFileToImage,
+ (Display *, char *, xpm_XImage **,
+ xpm_XImage **, XpmAttributes *));
+DEF_DLL_FN (void, XImageFree, (xpm_XImage *));
static bool
init_xpm_functions (void)
if (!(library = w32_delayed_load (Qxpm)))
return 0;
- LOAD_IMGLIB_FN (library, XpmFreeAttributes);
- LOAD_IMGLIB_FN (library, XpmCreateImageFromBuffer);
- LOAD_IMGLIB_FN (library, XpmReadFileToImage);
- LOAD_IMGLIB_FN (library, XImageFree);
+ LOAD_DLL_FN (library, XpmFreeAttributes);
+ LOAD_DLL_FN (library, XpmCreateImageFromBuffer);
+ LOAD_DLL_FN (library, XpmReadFileToImage);
+ LOAD_DLL_FN (library, XImageFree);
return 1;
}
-#endif /* WINDOWSNT */
+# undef XImageFree
+# undef XpmCreateImageFromBuffer
+# undef XpmFreeAttributes
+# undef XpmReadFileToImage
-#if defined HAVE_NTGUI && !defined WINDOWSNT
-/* Glue for code below */
-#define fn_XpmReadFileToImage XpmReadFileToImage
-#define fn_XpmCreateImageFromBuffer XpmCreateImageFromBuffer
-#define fn_XImageFree XImageFree
-#define fn_XpmFreeAttributes XpmFreeAttributes
-#endif /* HAVE_NTGUI && !WINDOWSNT */
+# define XImageFree fn_XImageFree
+# define XpmCreateImageFromBuffer fn_XpmCreateImageFromBuffer
+# define XpmFreeAttributes fn_XpmFreeAttributes
+# define XpmReadFileToImage fn_XpmReadFileToImage
+
+#endif /* WINDOWSNT */
/* Value is true if COLOR_SYMBOLS is a valid color symbols list
for XPM images. Such a list must consist of conses whose car and
#endif
/* XpmReadFileToPixmap is not available in the Windows port of
libxpm. But XpmReadFileToImage almost does what we want. */
- rc = fn_XpmReadFileToImage (&hdc, SDATA (file),
- &xpm_image, &xpm_mask,
- &attrs);
+ rc = XpmReadFileToImage (&hdc, SDATA (file),
+ &xpm_image, &xpm_mask,
+ &attrs);
#else
rc = XpmReadFileToImage (FRAME_X_DISPLAY (f), SSDATA (file),
&img->ximg, &img->mask_img,
#ifdef HAVE_NTGUI
/* XpmCreatePixmapFromBuffer is not available in the Windows port
of libxpm. But XpmCreateImageFromBuffer almost does what we want. */
- rc = fn_XpmCreateImageFromBuffer (&hdc, SDATA (buffer),
- &xpm_image, &xpm_mask,
- &attrs);
+ rc = XpmCreateImageFromBuffer (&hdc, SDATA (buffer),
+ &xpm_image, &xpm_mask,
+ &attrs);
#else
rc = XpmCreateImageFromBuffer (FRAME_X_DISPLAY (f), SSDATA (buffer),
&img->ximg, &img->mask_img,
img->pixmap = xpm_image->bitmap;
/* XImageFree in libXpm frees XImage struct without destroying
the bitmap, which is what we want. */
- fn_XImageFree (xpm_image);
+ XImageFree (xpm_image);
}
if (xpm_mask && xpm_mask->bitmap)
{
SelectObject (hdc, old_obj);
img->mask = xpm_mask->bitmap;
- fn_XImageFree (xpm_mask);
+ XImageFree (xpm_mask);
DeleteDC (hdc);
}
eassert (img->width > 0 && img->height > 0);
/* The call to XpmFreeAttributes below frees attrs.alloc_pixels. */
-#ifdef HAVE_NTGUI
- fn_XpmFreeAttributes (&attrs);
-#else
XpmFreeAttributes (&attrs);
-#endif /* HAVE_NTGUI */
#ifdef HAVE_X_WINDOWS
/* Maybe fill in the background field while we have ximg handy. */
#if defined HAVE_PNG && !defined HAVE_NS
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
/* PNG library details. */
-DEF_IMGLIB_FN (png_voidp, png_get_io_ptr, (png_structp));
-DEF_IMGLIB_FN (int, png_sig_cmp, (png_bytep, png_size_t, png_size_t));
-DEF_IMGLIB_FN (png_structp, png_create_read_struct, (png_const_charp, png_voidp,
- png_error_ptr, png_error_ptr));
-DEF_IMGLIB_FN (png_infop, png_create_info_struct, (png_structp));
-DEF_IMGLIB_FN (void, png_destroy_read_struct, (png_structpp, png_infopp, png_infopp));
-DEF_IMGLIB_FN (void, png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
-DEF_IMGLIB_FN (void, png_set_sig_bytes, (png_structp, int));
-DEF_IMGLIB_FN (void, png_read_info, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_uint_32, png_get_IHDR, (png_structp, png_infop,
- png_uint_32 *, png_uint_32 *,
- int *, int *, int *, int *, int *));
-DEF_IMGLIB_FN (png_uint_32, png_get_valid, (png_structp, png_infop, png_uint_32));
-DEF_IMGLIB_FN (void, png_set_strip_16, (png_structp));
-DEF_IMGLIB_FN (void, png_set_expand, (png_structp));
-DEF_IMGLIB_FN (void, png_set_gray_to_rgb, (png_structp));
-DEF_IMGLIB_FN (void, png_set_background, (png_structp, png_color_16p,
- int, int, double));
-DEF_IMGLIB_FN (png_uint_32, png_get_bKGD, (png_structp, png_infop, png_color_16p *));
-DEF_IMGLIB_FN (void, png_read_update_info, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_byte, png_get_channels, (png_structp, png_infop));
-DEF_IMGLIB_FN (png_size_t, png_get_rowbytes, (png_structp, png_infop));
-DEF_IMGLIB_FN (void, png_read_image, (png_structp, png_bytepp));
-DEF_IMGLIB_FN (void, png_read_end, (png_structp, png_infop));
-DEF_IMGLIB_FN (void, png_error, (png_structp, png_const_charp));
-
-#if (PNG_LIBPNG_VER >= 10500)
-DEF_IMGLIB_FN (void, png_longjmp, (png_structp, int)) PNG_NORETURN;
-DEF_IMGLIB_FN (jmp_buf *, png_set_longjmp_fn, (png_structp, png_longjmp_ptr, size_t));
-#endif /* libpng version >= 1.5 */
+DEF_DLL_FN (png_voidp, png_get_io_ptr, (png_structp));
+DEF_DLL_FN (int, png_sig_cmp, (png_bytep, png_size_t, png_size_t));
+DEF_DLL_FN (png_structp, png_create_read_struct,
+ (png_const_charp, png_voidp, png_error_ptr, png_error_ptr));
+DEF_DLL_FN (png_infop, png_create_info_struct, (png_structp));
+DEF_DLL_FN (void, png_destroy_read_struct,
+ (png_structpp, png_infopp, png_infopp));
+DEF_DLL_FN (void, png_set_read_fn, (png_structp, png_voidp, png_rw_ptr));
+DEF_DLL_FN (void, png_set_sig_bytes, (png_structp, int));
+DEF_DLL_FN (void, png_read_info, (png_structp, png_infop));
+DEF_DLL_FN (png_uint_32, png_get_IHDR,
+ (png_structp, png_infop, png_uint_32 *, png_uint_32 *,
+ int *, int *, int *, int *, int *));
+DEF_DLL_FN (png_uint_32, png_get_valid, (png_structp, png_infop, png_uint_32));
+DEF_DLL_FN (void, png_set_strip_16, (png_structp));
+DEF_DLL_FN (void, png_set_expand, (png_structp));
+DEF_DLL_FN (void, png_set_gray_to_rgb, (png_structp));
+DEF_DLL_FN (void, png_set_background,
+ (png_structp, png_color_16p, int, int, double));
+DEF_DLL_FN (png_uint_32, png_get_bKGD,
+ (png_structp, png_infop, png_color_16p *));
+DEF_DLL_FN (void, png_read_update_info, (png_structp, png_infop));
+DEF_DLL_FN (png_byte, png_get_channels, (png_structp, png_infop));
+DEF_DLL_FN (png_size_t, png_get_rowbytes, (png_structp, png_infop));
+DEF_DLL_FN (void, png_read_image, (png_structp, png_bytepp));
+DEF_DLL_FN (void, png_read_end, (png_structp, png_infop));
+DEF_DLL_FN (void, png_error, (png_structp, png_const_charp));
+
+# if (PNG_LIBPNG_VER >= 10500)
+DEF_DLL_FN (void, png_longjmp, (png_structp, int)) PNG_NORETURN;
+DEF_DLL_FN (jmp_buf *, png_set_longjmp_fn,
+ (png_structp, png_longjmp_ptr, size_t));
+# endif /* libpng version >= 1.5 */
static bool
init_png_functions (void)
if (!(library = w32_delayed_load (Qpng)))
return 0;
- LOAD_IMGLIB_FN (library, png_get_io_ptr);
- LOAD_IMGLIB_FN (library, png_sig_cmp);
- LOAD_IMGLIB_FN (library, png_create_read_struct);
- LOAD_IMGLIB_FN (library, png_create_info_struct);
- LOAD_IMGLIB_FN (library, png_destroy_read_struct);
- LOAD_IMGLIB_FN (library, png_set_read_fn);
- LOAD_IMGLIB_FN (library, png_set_sig_bytes);
- LOAD_IMGLIB_FN (library, png_read_info);
- LOAD_IMGLIB_FN (library, png_get_IHDR);
- LOAD_IMGLIB_FN (library, png_get_valid);
- LOAD_IMGLIB_FN (library, png_set_strip_16);
- LOAD_IMGLIB_FN (library, png_set_expand);
- LOAD_IMGLIB_FN (library, png_set_gray_to_rgb);
- LOAD_IMGLIB_FN (library, png_set_background);
- LOAD_IMGLIB_FN (library, png_get_bKGD);
- LOAD_IMGLIB_FN (library, png_read_update_info);
- LOAD_IMGLIB_FN (library, png_get_channels);
- LOAD_IMGLIB_FN (library, png_get_rowbytes);
- LOAD_IMGLIB_FN (library, png_read_image);
- LOAD_IMGLIB_FN (library, png_read_end);
- LOAD_IMGLIB_FN (library, png_error);
-
-#if (PNG_LIBPNG_VER >= 10500)
- LOAD_IMGLIB_FN (library, png_longjmp);
- LOAD_IMGLIB_FN (library, png_set_longjmp_fn);
-#endif /* libpng version >= 1.5 */
+ LOAD_DLL_FN (library, png_get_io_ptr);
+ LOAD_DLL_FN (library, png_sig_cmp);
+ LOAD_DLL_FN (library, png_create_read_struct);
+ LOAD_DLL_FN (library, png_create_info_struct);
+ LOAD_DLL_FN (library, png_destroy_read_struct);
+ LOAD_DLL_FN (library, png_set_read_fn);
+ LOAD_DLL_FN (library, png_set_sig_bytes);
+ LOAD_DLL_FN (library, png_read_info);
+ LOAD_DLL_FN (library, png_get_IHDR);
+ LOAD_DLL_FN (library, png_get_valid);
+ LOAD_DLL_FN (library, png_set_strip_16);
+ LOAD_DLL_FN (library, png_set_expand);
+ LOAD_DLL_FN (library, png_set_gray_to_rgb);
+ LOAD_DLL_FN (library, png_set_background);
+ LOAD_DLL_FN (library, png_get_bKGD);
+ LOAD_DLL_FN (library, png_read_update_info);
+ LOAD_DLL_FN (library, png_get_channels);
+ LOAD_DLL_FN (library, png_get_rowbytes);
+ LOAD_DLL_FN (library, png_read_image);
+ LOAD_DLL_FN (library, png_read_end);
+ LOAD_DLL_FN (library, png_error);
+
+# if (PNG_LIBPNG_VER >= 10500)
+ LOAD_DLL_FN (library, png_longjmp);
+ LOAD_DLL_FN (library, png_set_longjmp_fn);
+# endif /* libpng version >= 1.5 */
return 1;
}
-#else
-
-#define fn_png_get_io_ptr png_get_io_ptr
-#define fn_png_sig_cmp png_sig_cmp
-#define fn_png_create_read_struct png_create_read_struct
-#define fn_png_create_info_struct png_create_info_struct
-#define fn_png_destroy_read_struct png_destroy_read_struct
-#define fn_png_set_read_fn png_set_read_fn
-#define fn_png_set_sig_bytes png_set_sig_bytes
-#define fn_png_read_info png_read_info
-#define fn_png_get_IHDR png_get_IHDR
-#define fn_png_get_valid png_get_valid
-#define fn_png_set_strip_16 png_set_strip_16
-#define fn_png_set_expand png_set_expand
-#define fn_png_set_gray_to_rgb png_set_gray_to_rgb
-#define fn_png_set_background png_set_background
-#define fn_png_get_bKGD png_get_bKGD
-#define fn_png_read_update_info png_read_update_info
-#define fn_png_get_channels png_get_channels
-#define fn_png_get_rowbytes png_get_rowbytes
-#define fn_png_read_image png_read_image
-#define fn_png_read_end png_read_end
-#define fn_png_error png_error
-
-#if (PNG_LIBPNG_VER >= 10500)
-#define fn_png_longjmp png_longjmp
-#define fn_png_set_longjmp_fn png_set_longjmp_fn
-#endif /* libpng version >= 1.5 */
-#endif /* WINDOWSNT */
+# undef png_create_info_struct
+# undef png_create_read_struct
+# undef png_destroy_read_struct
+# undef png_error
+# undef png_get_bKGD
+# undef png_get_channels
+# undef png_get_IHDR
+# undef png_get_io_ptr
+# undef png_get_rowbytes
+# undef png_get_valid
+# undef png_longjmp
+# undef png_read_end
+# undef png_read_image
+# undef png_read_info
+# undef png_read_update_info
+# undef png_set_background
+# undef png_set_expand
+# undef png_set_gray_to_rgb
+# undef png_set_longjmp_fn
+# undef png_set_read_fn
+# undef png_set_sig_bytes
+# undef png_set_strip_16
+# undef png_sig_cmp
+
+# define png_create_info_struct fn_png_create_info_struct
+# define png_create_read_struct fn_png_create_read_struct
+# define png_destroy_read_struct fn_png_destroy_read_struct
+# define png_error fn_png_error
+# define png_get_bKGD fn_png_get_bKGD
+# define png_get_channels fn_png_get_channels
+# define png_get_IHDR fn_png_get_IHDR
+# define png_get_io_ptr fn_png_get_io_ptr
+# define png_get_rowbytes fn_png_get_rowbytes
+# define png_get_valid fn_png_get_valid
+# define png_longjmp fn_png_longjmp
+# define png_read_end fn_png_read_end
+# define png_read_image fn_png_read_image
+# define png_read_info fn_png_read_info
+# define png_read_update_info fn_png_read_update_info
+# define png_set_background fn_png_set_background
+# define png_set_expand fn_png_set_expand
+# define png_set_gray_to_rgb fn_png_set_gray_to_rgb
+# define png_set_longjmp_fn fn_png_set_longjmp_fn
+# define png_set_read_fn fn_png_set_read_fn
+# define png_set_sig_bytes fn_png_set_sig_bytes
+# define png_set_strip_16 fn_png_set_strip_16
+# define png_sig_cmp fn_png_sig_cmp
+
+# endif /* WINDOWSNT */
/* Fast implementations of setjmp and longjmp. Although setjmp and longjmp
will do, POSIX _setjmp and _longjmp (if available) are often faster.
Do not use sys_setjmp, as PNG supports only jmp_buf.
It's OK if the longjmp substitute restores the signal mask. */
-#ifdef HAVE__SETJMP
-# define FAST_SETJMP(j) _setjmp (j)
-# define FAST_LONGJMP _longjmp
-#else
-# define FAST_SETJMP(j) setjmp (j)
-# define FAST_LONGJMP longjmp
-#endif
-
-#if PNG_LIBPNG_VER < 10500
-#define PNG_LONGJMP(ptr) FAST_LONGJMP ((ptr)->jmpbuf, 1)
-#define PNG_JMPBUF(ptr) ((ptr)->jmpbuf)
-#else
+# ifdef HAVE__SETJMP
+# define FAST_SETJMP(j) _setjmp (j)
+# define FAST_LONGJMP _longjmp
+# else
+# define FAST_SETJMP(j) setjmp (j)
+# define FAST_LONGJMP longjmp
+# endif
+
+# if PNG_LIBPNG_VER < 10500
+# define PNG_LONGJMP(ptr) FAST_LONGJMP ((ptr)->jmpbuf, 1)
+# define PNG_JMPBUF(ptr) ((ptr)->jmpbuf)
+# else
/* In libpng version 1.5, the jmpbuf member is hidden. (Bug#7908) */
-#define PNG_LONGJMP(ptr) fn_png_longjmp (ptr, 1)
-#define PNG_JMPBUF(ptr) \
- (*fn_png_set_longjmp_fn (ptr, FAST_LONGJMP, sizeof (jmp_buf)))
-#endif
+# define PNG_LONGJMP(ptr) png_longjmp (ptr, 1)
+# define PNG_JMPBUF(ptr) \
+ (*png_set_longjmp_fn (ptr, FAST_LONGJMP, sizeof (jmp_buf)))
+# endif
/* Error and warning handlers installed when the PNG library
is initialized. */
static void
png_read_from_memory (png_structp png_ptr, png_bytep data, png_size_t length)
{
- struct png_memory_storage *tbr = fn_png_get_io_ptr (png_ptr);
+ struct png_memory_storage *tbr = png_get_io_ptr (png_ptr);
if (length > tbr->len - tbr->index)
- fn_png_error (png_ptr, "Read error");
+ png_error (png_ptr, "Read error");
memcpy (data, tbr->bytes + tbr->index, length);
tbr->index = tbr->index + length;
static void
png_read_from_file (png_structp png_ptr, png_bytep data, png_size_t length)
{
- FILE *fp = fn_png_get_io_ptr (png_ptr);
+ FILE *fp = png_get_io_ptr (png_ptr);
if (fread (data, 1, length, fp) < length)
- fn_png_error (png_ptr, "Read error");
+ png_error (png_ptr, "Read error");
}
/* Check PNG signature. */
if (fread (sig, 1, sizeof sig, fp) != sizeof sig
- || fn_png_sig_cmp (sig, 0, sizeof sig))
+ || png_sig_cmp (sig, 0, sizeof sig))
{
fclose (fp);
image_error ("Not a PNG file: `%s'", file, Qnil);
/* Check PNG signature. */
if (tbr.len < sizeof sig
- || fn_png_sig_cmp (tbr.bytes, 0, sizeof sig))
+ || png_sig_cmp (tbr.bytes, 0, sizeof sig))
{
image_error ("Not a PNG image: `%s'", img->spec, Qnil);
return 0;
}
/* Initialize read and info structs for PNG lib. */
- png_ptr = fn_png_create_read_struct (PNG_LIBPNG_VER_STRING,
+ png_ptr = png_create_read_struct (PNG_LIBPNG_VER_STRING,
NULL, my_png_error,
my_png_warning);
if (png_ptr)
{
- info_ptr = fn_png_create_info_struct (png_ptr);
- end_info = fn_png_create_info_struct (png_ptr);
+ info_ptr = png_create_info_struct (png_ptr);
+ end_info = png_create_info_struct (png_ptr);
}
c->png_ptr = png_ptr;
if (! (info_ptr && end_info))
{
- fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+ png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
png_ptr = 0;
}
if (! png_ptr)
{
error:
if (c->png_ptr)
- fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+ png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
xfree (c->pixels);
xfree (c->rows);
if (c->fp)
/* Read image info. */
if (!NILP (specified_data))
- fn_png_set_read_fn (png_ptr, &tbr, png_read_from_memory);
+ png_set_read_fn (png_ptr, &tbr, png_read_from_memory);
else
- fn_png_set_read_fn (png_ptr, fp, png_read_from_file);
+ png_set_read_fn (png_ptr, fp, png_read_from_file);
- fn_png_set_sig_bytes (png_ptr, sizeof sig);
- fn_png_read_info (png_ptr, info_ptr);
- fn_png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
- &interlace_type, NULL, NULL);
+ png_set_sig_bytes (png_ptr, sizeof sig);
+ png_read_info (png_ptr, info_ptr);
+ png_get_IHDR (png_ptr, info_ptr, &width, &height, &bit_depth, &color_type,
+ &interlace_type, NULL, NULL);
if (! (width <= INT_MAX && height <= INT_MAX
&& check_image_size (f, width, height)))
/* If image contains simply transparency data, we prefer to
construct a clipping mask. */
- if (fn_png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
+ if (png_get_valid (png_ptr, info_ptr, PNG_INFO_tRNS))
transparent_p = 1;
else
transparent_p = 0;
/* Strip more than 8 bits per channel. */
if (bit_depth == 16)
- fn_png_set_strip_16 (png_ptr);
+ png_set_strip_16 (png_ptr);
/* Expand data to 24 bit RGB, or 8 bit grayscale, with alpha channel
if available. */
- fn_png_set_expand (png_ptr);
+ png_set_expand (png_ptr);
/* Convert grayscale images to RGB. */
if (color_type == PNG_COLOR_TYPE_GRAY
|| color_type == PNG_COLOR_TYPE_GRAY_ALPHA)
- fn_png_set_gray_to_rgb (png_ptr);
+ png_set_gray_to_rgb (png_ptr);
/* Handle alpha channel by combining the image with a background
color. Do this only if a real alpha channel is supplied. For
bg.green = color.green >> shift;
bg.blue = color.blue >> shift;
- fn_png_set_background (png_ptr, &bg,
- PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
+ png_set_background (png_ptr, &bg,
+ PNG_BACKGROUND_GAMMA_SCREEN, 0, 1.0);
}
}
/* Update info structure. */
- fn_png_read_update_info (png_ptr, info_ptr);
+ png_read_update_info (png_ptr, info_ptr);
/* Get number of channels. Valid values are 1 for grayscale images
and images with a palette, 2 for grayscale images with transparency
information (alpha channel), 3 for RGB images, and 4 for RGB
images with alpha channel, i.e. RGBA. If conversions above were
sufficient we should only have 3 or 4 channels here. */
- channels = fn_png_get_channels (png_ptr, info_ptr);
+ channels = png_get_channels (png_ptr, info_ptr);
eassert (channels == 3 || channels == 4);
/* Number of bytes needed for one row of the image. */
- row_bytes = fn_png_get_rowbytes (png_ptr, info_ptr);
+ row_bytes = png_get_rowbytes (png_ptr, info_ptr);
/* Allocate memory for the image. */
if (min (PTRDIFF_MAX, SIZE_MAX) / sizeof *rows < height
rows[i] = pixels + i * row_bytes;
/* Read the entire image. */
- fn_png_read_image (png_ptr, rows);
- fn_png_read_end (png_ptr, info_ptr);
+ png_read_image (png_ptr, rows);
+ png_read_end (png_ptr, info_ptr);
if (fp)
{
fclose (fp);
overrode it. */
{
png_color_16 *bg;
- if (fn_png_get_bKGD (png_ptr, info_ptr, &bg))
+ if (png_get_bKGD (png_ptr, info_ptr, &bg))
{
img->background = lookup_rgb_color (f, bg->red, bg->green, bg->blue);
img->background_valid = 1;
}
}
-#ifdef COLOR_TABLE_SUPPORT
+# ifdef COLOR_TABLE_SUPPORT
/* Remember colors allocated for this image. */
img->colors = colors_in_color_table (&img->ncolors);
free_color_table ();
-#endif /* COLOR_TABLE_SUPPORT */
+# endif /* COLOR_TABLE_SUPPORT */
/* Clean up. */
- fn_png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
+ png_destroy_read_struct (&c->png_ptr, &c->info_ptr, &c->end_info);
xfree (rows);
xfree (pixels);
/* Work around a warning about HAVE_STDLIB_H being redefined in
jconfig.h. */
-#ifdef HAVE_STDLIB_H
-#undef HAVE_STDLIB_H
-#endif /* HAVE_STLIB_H */
+# ifdef HAVE_STDLIB_H
+# undef HAVE_STDLIB_H
+# endif
-#if defined (HAVE_NTGUI) && !defined (__WIN32__)
+# if defined (HAVE_NTGUI) && !defined (__WIN32__)
/* In older releases of the jpeg library, jpeglib.h will define boolean
differently depending on __WIN32__, so make sure it is defined. */
-#define __WIN32__ 1
-#endif
+# define __WIN32__ 1
+# endif
/* rpcndr.h (via windows.h) and jpeglib.h both define boolean types.
Some versions of jpeglib try to detect whether rpcndr.h is loaded,
different name. This name, jpeg_boolean, remains in effect through
the rest of image.c.
*/
-#if defined CYGWIN && defined HAVE_NTGUI
-#define boolean jpeg_boolean
-#endif
-#include <jpeglib.h>
-#include <jerror.h>
+# if defined CYGWIN && defined HAVE_NTGUI
+# define boolean jpeg_boolean
+# endif
+# include <jpeglib.h>
+# include <jerror.h>
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
/* JPEG library details. */
-DEF_IMGLIB_FN (void, jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
-DEF_IMGLIB_FN (boolean, jpeg_start_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (boolean, jpeg_finish_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (void, jpeg_destroy_decompress, (j_decompress_ptr));
-DEF_IMGLIB_FN (int, jpeg_read_header, (j_decompress_ptr, boolean));
-DEF_IMGLIB_FN (JDIMENSION, jpeg_read_scanlines, (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
-DEF_IMGLIB_FN (struct jpeg_error_mgr *, jpeg_std_error, (struct jpeg_error_mgr *));
-DEF_IMGLIB_FN (boolean, jpeg_resync_to_restart, (j_decompress_ptr, int));
+DEF_DLL_FN (void, jpeg_CreateDecompress, (j_decompress_ptr, int, size_t));
+DEF_DLL_FN (boolean, jpeg_start_decompress, (j_decompress_ptr));
+DEF_DLL_FN (boolean, jpeg_finish_decompress, (j_decompress_ptr));
+DEF_DLL_FN (void, jpeg_destroy_decompress, (j_decompress_ptr));
+DEF_DLL_FN (int, jpeg_read_header, (j_decompress_ptr, boolean));
+DEF_DLL_FN (JDIMENSION, jpeg_read_scanlines,
+ (j_decompress_ptr, JSAMPARRAY, JDIMENSION));
+DEF_DLL_FN (struct jpeg_error_mgr *, jpeg_std_error,
+ (struct jpeg_error_mgr *));
+DEF_DLL_FN (boolean, jpeg_resync_to_restart, (j_decompress_ptr, int));
static bool
init_jpeg_functions (void)
if (!(library = w32_delayed_load (Qjpeg)))
return 0;
- LOAD_IMGLIB_FN (library, jpeg_finish_decompress);
- LOAD_IMGLIB_FN (library, jpeg_read_scanlines);
- LOAD_IMGLIB_FN (library, jpeg_start_decompress);
- LOAD_IMGLIB_FN (library, jpeg_read_header);
- LOAD_IMGLIB_FN (library, jpeg_CreateDecompress);
- LOAD_IMGLIB_FN (library, jpeg_destroy_decompress);
- LOAD_IMGLIB_FN (library, jpeg_std_error);
- LOAD_IMGLIB_FN (library, jpeg_resync_to_restart);
+ LOAD_DLL_FN (library, jpeg_finish_decompress);
+ LOAD_DLL_FN (library, jpeg_read_scanlines);
+ LOAD_DLL_FN (library, jpeg_start_decompress);
+ LOAD_DLL_FN (library, jpeg_read_header);
+ LOAD_DLL_FN (library, jpeg_CreateDecompress);
+ LOAD_DLL_FN (library, jpeg_destroy_decompress);
+ LOAD_DLL_FN (library, jpeg_std_error);
+ LOAD_DLL_FN (library, jpeg_resync_to_restart);
return 1;
}
+# undef jpeg_CreateDecompress
+# undef jpeg_destroy_decompress
+# undef jpeg_finish_decompress
+# undef jpeg_read_header
+# undef jpeg_read_scanlines
+# undef jpeg_resync_to_restart
+# undef jpeg_start_decompress
+# undef jpeg_std_error
+
+# define jpeg_CreateDecompress fn_jpeg_CreateDecompress
+# define jpeg_destroy_decompress fn_jpeg_destroy_decompress
+# define jpeg_finish_decompress fn_jpeg_finish_decompress
+# define jpeg_read_header fn_jpeg_read_header
+# define jpeg_read_scanlines fn_jpeg_read_scanlines
+# define jpeg_resync_to_restart fn_jpeg_resync_to_restart
+# define jpeg_start_decompress fn_jpeg_start_decompress
+# define jpeg_std_error fn_jpeg_std_error
+
/* Wrapper since we can't directly assign the function pointer
to another function pointer that was declared more completely easily. */
static boolean
jpeg_resync_to_restart_wrapper (j_decompress_ptr cinfo, int desired)
{
- return fn_jpeg_resync_to_restart (cinfo, desired);
+ return jpeg_resync_to_restart (cinfo, desired);
}
+# undef jpeg_resync_to_restart
+# define jpeg_resync_to_restart jpeg_resync_to_restart_wrapper
-#else
-
-#define fn_jpeg_CreateDecompress(a,b,c) jpeg_create_decompress (a)
-#define fn_jpeg_start_decompress jpeg_start_decompress
-#define fn_jpeg_finish_decompress jpeg_finish_decompress
-#define fn_jpeg_destroy_decompress jpeg_destroy_decompress
-#define fn_jpeg_read_header jpeg_read_header
-#define fn_jpeg_read_scanlines jpeg_read_scanlines
-#define fn_jpeg_std_error jpeg_std_error
-#define jpeg_resync_to_restart_wrapper jpeg_resync_to_restart
-
-#endif /* WINDOWSNT */
+# endif /* WINDOWSNT */
struct my_jpeg_error_mgr
{
src->init_source = our_common_init_source;
src->fill_input_buffer = our_memory_fill_input_buffer;
src->skip_input_data = our_memory_skip_input_data;
- src->resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */
+ src->resync_to_restart = jpeg_resync_to_restart; /* Use default method. */
src->term_source = our_common_term_source;
src->bytes_in_buffer = len;
src->next_input_byte = data;
src->mgr.init_source = our_common_init_source;
src->mgr.fill_input_buffer = our_stdio_fill_input_buffer;
src->mgr.skip_input_data = our_stdio_skip_input_data;
- src->mgr.resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */
+ src->mgr.resync_to_restart = jpeg_resync_to_restart; /* Use default. */
src->mgr.term_source = our_common_term_source;
src->mgr.bytes_in_buffer = 0;
src->mgr.next_input_byte = NULL;
/* Customize libjpeg's error handling to call my_error_exit when an
error is detected. This function will perform a longjmp. */
- mgr->cinfo.err = fn_jpeg_std_error (&mgr->pub);
+ mgr->cinfo.err = jpeg_std_error (&mgr->pub);
mgr->pub.error_exit = my_error_exit;
if (sys_setjmp (mgr->setjmp_buffer))
{
/* Close the input file and destroy the JPEG object. */
if (fp)
fclose (fp);
- fn_jpeg_destroy_decompress (&mgr->cinfo);
+ jpeg_destroy_decompress (&mgr->cinfo);
/* If we already have an XImage, free that. */
x_destroy_x_image (ximg);
/* Create the JPEG decompression object. Let it read from fp.
Read the JPEG image header. */
- fn_jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof *&mgr->cinfo);
+ jpeg_CreateDecompress (&mgr->cinfo, JPEG_LIB_VERSION, sizeof *&mgr->cinfo);
if (NILP (specified_data))
jpeg_file_src (&mgr->cinfo, fp);
jpeg_memory_src (&mgr->cinfo, SDATA (specified_data),
SBYTES (specified_data));
- fn_jpeg_read_header (&mgr->cinfo, 1);
+ jpeg_read_header (&mgr->cinfo, 1);
/* Customize decompression so that color quantization will be used.
Start decompression. */
mgr->cinfo.quantize_colors = 1;
- fn_jpeg_start_decompress (&mgr->cinfo);
+ jpeg_start_decompress (&mgr->cinfo);
width = img->width = mgr->cinfo.output_width;
height = img->height = mgr->cinfo.output_height;
JPOOL_IMAGE, row_stride, 1);
for (y = 0; y < height; ++y)
{
- fn_jpeg_read_scanlines (&mgr->cinfo, buffer, 1);
+ jpeg_read_scanlines (&mgr->cinfo, buffer, 1);
for (x = 0; x < mgr->cinfo.output_width; ++x)
XPutPixel (ximg, x, y, colors[buffer[0][x]]);
}
/* Clean up. */
- fn_jpeg_finish_decompress (&mgr->cinfo);
- fn_jpeg_destroy_decompress (&mgr->cinfo);
+ jpeg_finish_decompress (&mgr->cinfo);
+ jpeg_destroy_decompress (&mgr->cinfo);
if (fp)
fclose (fp);
#ifdef HAVE_TIFF
-#include <tiffio.h>
+# include <tiffio.h>
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
/* TIFF library details. */
-DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetErrorHandler, (TIFFErrorHandler));
-DEF_IMGLIB_FN (TIFFErrorHandler, TIFFSetWarningHandler, (TIFFErrorHandler));
-DEF_IMGLIB_FN (TIFF *, TIFFOpen, (const char *, const char *));
-DEF_IMGLIB_FN (TIFF *, TIFFClientOpen, (const char *, const char *, thandle_t,
- TIFFReadWriteProc, TIFFReadWriteProc,
- TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
- TIFFMapFileProc, TIFFUnmapFileProc));
-DEF_IMGLIB_FN (int, TIFFGetField, (TIFF *, ttag_t, ...));
-DEF_IMGLIB_FN (int, TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
-DEF_IMGLIB_FN (void, TIFFClose, (TIFF *));
-DEF_IMGLIB_FN (int, TIFFSetDirectory, (TIFF *, tdir_t));
+DEF_DLL_FN (TIFFErrorHandler, TIFFSetErrorHandler, (TIFFErrorHandler));
+DEF_DLL_FN (TIFFErrorHandler, TIFFSetWarningHandler, (TIFFErrorHandler));
+DEF_DLL_FN (TIFF *, TIFFOpen, (const char *, const char *));
+DEF_DLL_FN (TIFF *, TIFFClientOpen,
+ (const char *, const char *, thandle_t, TIFFReadWriteProc,
+ TIFFReadWriteProc, TIFFSeekProc, TIFFCloseProc, TIFFSizeProc,
+ TIFFMapFileProc, TIFFUnmapFileProc));
+DEF_DLL_FN (int, TIFFGetField, (TIFF *, ttag_t, ...));
+DEF_DLL_FN (int, TIFFReadRGBAImage, (TIFF *, uint32, uint32, uint32 *, int));
+DEF_DLL_FN (void, TIFFClose, (TIFF *));
+DEF_DLL_FN (int, TIFFSetDirectory, (TIFF *, tdir_t));
static bool
init_tiff_functions (void)
if (!(library = w32_delayed_load (Qtiff)))
return 0;
- LOAD_IMGLIB_FN (library, TIFFSetErrorHandler);
- LOAD_IMGLIB_FN (library, TIFFSetWarningHandler);
- LOAD_IMGLIB_FN (library, TIFFOpen);
- LOAD_IMGLIB_FN (library, TIFFClientOpen);
- LOAD_IMGLIB_FN (library, TIFFGetField);
- LOAD_IMGLIB_FN (library, TIFFReadRGBAImage);
- LOAD_IMGLIB_FN (library, TIFFClose);
- LOAD_IMGLIB_FN (library, TIFFSetDirectory);
+ LOAD_DLL_FN (library, TIFFSetErrorHandler);
+ LOAD_DLL_FN (library, TIFFSetWarningHandler);
+ LOAD_DLL_FN (library, TIFFOpen);
+ LOAD_DLL_FN (library, TIFFClientOpen);
+ LOAD_DLL_FN (library, TIFFGetField);
+ LOAD_DLL_FN (library, TIFFReadRGBAImage);
+ LOAD_DLL_FN (library, TIFFClose);
+ LOAD_DLL_FN (library, TIFFSetDirectory);
return 1;
}
-#else
+# undef TIFFClientOpen
+# undef TIFFClose
+# undef TIFFGetField
+# undef TIFFOpen
+# undef TIFFReadRGBAImage
+# undef TIFFSetDirectory
+# undef TIFFSetErrorHandler
+# undef TIFFSetWarningHandler
-#define fn_TIFFSetErrorHandler TIFFSetErrorHandler
-#define fn_TIFFSetWarningHandler TIFFSetWarningHandler
-#define fn_TIFFOpen TIFFOpen
-#define fn_TIFFClientOpen TIFFClientOpen
-#define fn_TIFFGetField TIFFGetField
-#define fn_TIFFReadRGBAImage TIFFReadRGBAImage
-#define fn_TIFFClose TIFFClose
-#define fn_TIFFSetDirectory TIFFSetDirectory
-#endif /* WINDOWSNT */
+# define TIFFClientOpen fn_TIFFClientOpen
+# define TIFFClose fn_TIFFClose
+# define TIFFGetField fn_TIFFGetField
+# define TIFFOpen fn_TIFFOpen
+# define TIFFReadRGBAImage fn_TIFFReadRGBAImage
+# define TIFFSetDirectory fn_TIFFSetDirectory
+# define TIFFSetErrorHandler fn_TIFFSetErrorHandler
+# define TIFFSetWarningHandler fn_TIFFSetWarningHandler
+
+# endif /* WINDOWSNT */
/* Reading from a memory buffer for TIFF images Based on the PNG
compiler error compiling tiff_handler, see Bugzilla bug #17406
(http://gcc.gnu.org/bugzilla/show_bug.cgi?id=17406). Declaring
this function as external works around that problem. */
-#if defined (__MINGW32__) && __GNUC__ == 3
-# define MINGW_STATIC
-#else
-# define MINGW_STATIC static
-#endif
+# if defined (__MINGW32__) && __GNUC__ == 3
+# define MINGW_STATIC
+# else
+# define MINGW_STATIC static
+# endif
MINGW_STATIC void
tiff_handler (const char *, const char *, const char *, va_list)
add_to_log (log_format, build_string (title),
make_string (buf, max (0, min (len, sizeof buf - 1))));
}
-#undef MINGW_STATIC
+# undef MINGW_STATIC
static void tiff_error_handler (const char *, const char *, va_list)
ATTRIBUTE_FORMAT_PRINTF (2, 0);
specified_file = image_spec_value (img->spec, QCfile, NULL);
specified_data = image_spec_value (img->spec, QCdata, NULL);
- fn_TIFFSetErrorHandler ((TIFFErrorHandler) tiff_error_handler);
- fn_TIFFSetWarningHandler ((TIFFErrorHandler) tiff_warning_handler);
+ TIFFSetErrorHandler ((TIFFErrorHandler) tiff_error_handler);
+ TIFFSetWarningHandler ((TIFFErrorHandler) tiff_warning_handler);
if (NILP (specified_data))
{
image_error ("Cannot find image file `%s'", specified_file, Qnil);
return 0;
}
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
file = ansi_encode_filename (file);
-#endif
+# endif
/* Try to open the image file. */
- tiff = fn_TIFFOpen (SSDATA (file), "r");
+ tiff = TIFFOpen (SSDATA (file), "r");
if (tiff == NULL)
{
image_error ("Cannot open `%s'", file, Qnil);
memsrc.len = SBYTES (specified_data);
memsrc.index = 0;
- tiff = fn_TIFFClientOpen ("memory_source", "r", (thandle_t)&memsrc,
- tiff_read_from_memory,
- tiff_write_from_memory,
- tiff_seek_in_memory,
- tiff_close_memory,
- tiff_size_of_memory,
- tiff_mmap_memory,
- tiff_unmap_memory);
+ tiff = TIFFClientOpen ("memory_source", "r", (thandle_t)&memsrc,
+ tiff_read_from_memory,
+ tiff_write_from_memory,
+ tiff_seek_in_memory,
+ tiff_close_memory,
+ tiff_size_of_memory,
+ tiff_mmap_memory,
+ tiff_unmap_memory);
if (!tiff)
{
{
EMACS_INT ino = XFASTINT (image);
if (! (TYPE_MINIMUM (tdir_t) <= ino && ino <= TYPE_MAXIMUM (tdir_t)
- && fn_TIFFSetDirectory (tiff, ino)))
+ && TIFFSetDirectory (tiff, ino)))
{
image_error ("Invalid image number `%s' in image `%s'",
image, img->spec);
- fn_TIFFClose (tiff);
+ TIFFClose (tiff);
return 0;
}
}
/* Get width and height of the image, and allocate a raster buffer
of width x height 32-bit values. */
- fn_TIFFGetField (tiff, TIFFTAG_IMAGEWIDTH, &width);
- fn_TIFFGetField (tiff, TIFFTAG_IMAGELENGTH, &height);
+ TIFFGetField (tiff, TIFFTAG_IMAGEWIDTH, &width);
+ TIFFGetField (tiff, TIFFTAG_IMAGELENGTH, &height);
if (!check_image_size (f, width, height))
{
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
- fn_TIFFClose (tiff);
+ TIFFClose (tiff);
return 0;
}
&& image_create_x_image_and_pixmap (f, img, width, height, 0,
&ximg, 0)))
{
- fn_TIFFClose (tiff);
+ TIFFClose (tiff);
return 0;
}
buf = xmalloc (sizeof *buf * width * height);
- rc = fn_TIFFReadRGBAImage (tiff, width, height, buf, 0);
+ rc = TIFFReadRGBAImage (tiff, width, height, buf, 0);
/* Count the number of images in the file. */
- for (count = 1; fn_TIFFSetDirectory (tiff, count); count++)
+ for (count = 1; TIFFSetDirectory (tiff, count); count++)
continue;
if (count > 1)
Fcons (make_number (count),
img->lisp_data));
- fn_TIFFClose (tiff);
+ TIFFClose (tiff);
if (!rc)
{
image_error ("Error reading TIFF image `%s'", img->spec, Qnil);
}
}
-#ifdef COLOR_TABLE_SUPPORT
+# ifdef COLOR_TABLE_SUPPORT
/* Remember the colors allocated for the image. Free the color table. */
img->colors = colors_in_color_table (&img->ncolors);
free_color_table ();
-#endif /* COLOR_TABLE_SUPPORT */
+# endif /* COLOR_TABLE_SUPPORT */
img->width = width;
img->height = height;
return 1;
}
-#else /* HAVE_TIFF */
+#elif defined HAVE_NS
-#ifdef HAVE_NS
static bool
tiff_load (struct frame *f, struct image *img)
{
image_spec_value (img->spec, QCfile, NULL),
image_spec_value (img->spec, QCdata, NULL));
}
-#endif /* HAVE_NS */
-#endif /* !HAVE_TIFF */
+#endif
\f
#ifdef HAVE_GIF
-#if defined (HAVE_NTGUI)
+# ifdef HAVE_NTGUI
/* winuser.h might define DrawText to DrawTextA or DrawTextW.
Undefine before redefining to avoid a preprocessor warning. */
-#ifdef DrawText
-#undef DrawText
-#endif
+# ifdef DrawText
+# undef DrawText
+# endif
/* avoid conflict with QuickdrawText.h */
-#define DrawText gif_DrawText
-#include <gif_lib.h>
-#undef DrawText
+# define DrawText gif_DrawText
+# include <gif_lib.h>
+# undef DrawText
/* Giflib before 5.0 didn't define these macros (used only if HAVE_NTGUI). */
-#ifndef GIFLIB_MINOR
-#define GIFLIB_MINOR 0
-#endif
-#ifndef GIFLIB_RELEASE
-#define GIFLIB_RELEASE 0
-#endif
+# ifndef GIFLIB_MINOR
+# define GIFLIB_MINOR 0
+# endif
+# ifndef GIFLIB_RELEASE
+# define GIFLIB_RELEASE 0
+# endif
-#else /* HAVE_NTGUI */
+# else /* HAVE_NTGUI */
-#include <gif_lib.h>
+# include <gif_lib.h>
-#endif /* HAVE_NTGUI */
+# endif /* HAVE_NTGUI */
/* Giflib before 5.0 didn't define these macros. */
-#ifndef GIFLIB_MAJOR
-#define GIFLIB_MAJOR 4
-#endif
+# ifndef GIFLIB_MAJOR
+# define GIFLIB_MAJOR 4
+# endif
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
/* GIF library details. */
-#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
-DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *, int *));
-#else
-DEF_IMGLIB_FN (int, DGifCloseFile, (GifFileType *));
-#endif
-DEF_IMGLIB_FN (int, DGifSlurp, (GifFileType *));
-#if GIFLIB_MAJOR < 5
-DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc));
-DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *));
-#else
-DEF_IMGLIB_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
-DEF_IMGLIB_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
-DEF_IMGLIB_FN (char *, GifErrorString, (int));
-#endif
+# if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
+DEF_DLL_FN (int, DGifCloseFile, (GifFileType *, int *));
+# else
+DEF_DLL_FN (int, DGifCloseFile, (GifFileType *));
+# endif
+DEF_DLL_FN (int, DGifSlurp, (GifFileType *));
+# if GIFLIB_MAJOR < 5
+DEF_DLL_FN (GifFileType *, DGifOpen, (void *, InputFunc));
+DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *));
+# else
+DEF_DLL_FN (GifFileType *, DGifOpen, (void *, InputFunc, int *));
+DEF_DLL_FN (GifFileType *, DGifOpenFileName, (const char *, int *));
+DEF_DLL_FN (char *, GifErrorString, (int));
+# endif
static bool
init_gif_functions (void)
if (!(library = w32_delayed_load (Qgif)))
return 0;
- LOAD_IMGLIB_FN (library, DGifCloseFile);
- LOAD_IMGLIB_FN (library, DGifSlurp);
- LOAD_IMGLIB_FN (library, DGifOpen);
- LOAD_IMGLIB_FN (library, DGifOpenFileName);
-#if GIFLIB_MAJOR >= 5
- LOAD_IMGLIB_FN (library, GifErrorString);
-#endif
+ LOAD_DLL_FN (library, DGifCloseFile);
+ LOAD_DLL_FN (library, DGifSlurp);
+ LOAD_DLL_FN (library, DGifOpen);
+ LOAD_DLL_FN (library, DGifOpenFileName);
+# if GIFLIB_MAJOR >= 5
+ LOAD_DLL_FN (library, GifErrorString);
+# endif
return 1;
}
-#else
+# undef DGifCloseFile
+# undef DGifOpen
+# undef DGifOpenFileName
+# undef DGifSlurp
+# undef GifErrorString
-#define fn_DGifCloseFile DGifCloseFile
-#define fn_DGifSlurp DGifSlurp
-#define fn_DGifOpen DGifOpen
-#define fn_DGifOpenFileName DGifOpenFileName
-#if 5 <= GIFLIB_MAJOR
-# define fn_GifErrorString GifErrorString
-#endif
+# define DGifCloseFile fn_DGifCloseFile
+# define DGifOpen fn_DGifOpen
+# define DGifOpenFileName fn_DGifOpenFileName
+# define DGifSlurp fn_DGifSlurp
+# define GifErrorString fn_GifErrorString
-#endif /* WINDOWSNT */
+# endif /* WINDOWSNT */
/* Reading a GIF image from memory
Based on the PNG memory stuff to a certain extent. */
int retval;
#if 5 < GIFLIB_MAJOR + (1 <= GIFLIB_MINOR)
- retval = fn_DGifCloseFile (gif, err);
+ retval = DGifCloseFile (gif, err);
#else
- retval = fn_DGifCloseFile (gif);
+ retval = DGifCloseFile (gif);
#if GIFLIB_MAJOR >= 5
if (err)
*err = gif->Error;
/* Open the GIF file. */
#if GIFLIB_MAJOR < 5
- gif = fn_DGifOpenFileName (SSDATA (file));
+ gif = DGifOpenFileName (SSDATA (file));
if (gif == NULL)
{
image_error ("Cannot open `%s'", file, Qnil);
return 0;
}
#else
- gif = fn_DGifOpenFileName (SSDATA (file), &gif_err);
+ gif = DGifOpenFileName (SSDATA (file), &gif_err);
if (gif == NULL)
{
image_error ("Cannot open `%s': %s",
- file, build_string (fn_GifErrorString (gif_err)));
+ file, build_string (GifErrorString (gif_err)));
return 0;
}
#endif
memsrc.index = 0;
#if GIFLIB_MAJOR < 5
- gif = fn_DGifOpen (&memsrc, gif_read_from_memory);
+ gif = DGifOpen (&memsrc, gif_read_from_memory);
if (!gif)
{
image_error ("Cannot open memory source `%s'", img->spec, Qnil);
return 0;
}
#else
- gif = fn_DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
+ gif = DGifOpen (&memsrc, gif_read_from_memory, &gif_err);
if (!gif)
{
image_error ("Cannot open memory source `%s': %s",
- img->spec, build_string (fn_GifErrorString (gif_err)));
+ img->spec, build_string (GifErrorString (gif_err)));
return 0;
}
#endif
}
/* Read entire contents. */
- rc = fn_DGifSlurp (gif);
+ rc = DGifSlurp (gif);
if (rc == GIF_ERROR || gif->ImageCount <= 0)
{
image_error ("Error reading `%s'", img->spec, Qnil);
if (gif_close (gif, &gif_err) == GIF_ERROR)
{
#if 5 <= GIFLIB_MAJOR
- char *error_text = fn_GifErrorString (gif_err);
+ char *error_text = GifErrorString (gif_err);
if (error_text)
image_error ("Error closing `%s': %s",
SVG
***********************************************************************/
-#if defined (HAVE_RSVG)
+#ifdef HAVE_RSVG
/* Function prototypes. */
{":background", IMAGE_STRING_OR_NIL_VALUE, 0}
};
-#if defined HAVE_NTGUI && defined WINDOWSNT
+# if defined HAVE_NTGUI && defined WINDOWSNT
static bool init_svg_functions (void);
-#else
+# else
#define init_svg_functions NULL
-#endif
+# endif
/* Structure describing the image type `svg'. Its the same type of
structure defined for all image formats, handled by emacs image
return fmt[SVG_FILE].count + fmt[SVG_DATA].count == 1;
}
-#include <librsvg/rsvg.h>
+# include <librsvg/rsvg.h>
-#ifdef WINDOWSNT
+# ifdef WINDOWSNT
/* SVG library functions. */
-DEF_IMGLIB_FN (RsvgHandle *, rsvg_handle_new, (void));
-DEF_IMGLIB_FN (void, rsvg_handle_get_dimensions, (RsvgHandle *, RsvgDimensionData *));
-DEF_IMGLIB_FN (gboolean, rsvg_handle_write, (RsvgHandle *, const guchar *, gsize, GError **));
-DEF_IMGLIB_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **));
-DEF_IMGLIB_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *));
-DEF_IMGLIB_FN (void, rsvg_handle_set_base_uri, (RsvgHandle *, const char *));
-
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *));
-DEF_IMGLIB_FN (guchar *, gdk_pixbuf_get_pixels, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_rowstride, (const GdkPixbuf *));
-DEF_IMGLIB_FN (GdkColorspace, gdk_pixbuf_get_colorspace, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_n_channels, (const GdkPixbuf *));
-DEF_IMGLIB_FN (gboolean, gdk_pixbuf_get_has_alpha, (const GdkPixbuf *));
-DEF_IMGLIB_FN (int, gdk_pixbuf_get_bits_per_sample, (const GdkPixbuf *));
-
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
-DEF_IMGLIB_FN (void, g_type_init, (void));
-#endif
-DEF_IMGLIB_FN (void, g_object_unref, (gpointer));
-DEF_IMGLIB_FN (void, g_error_free, (GError *));
+DEF_DLL_FN (RsvgHandle *, rsvg_handle_new, (void));
+DEF_DLL_FN (void, rsvg_handle_get_dimensions,
+ (RsvgHandle *, RsvgDimensionData *));
+DEF_DLL_FN (gboolean, rsvg_handle_write,
+ (RsvgHandle *, const guchar *, gsize, GError **));
+DEF_DLL_FN (gboolean, rsvg_handle_close, (RsvgHandle *, GError **));
+DEF_DLL_FN (GdkPixbuf *, rsvg_handle_get_pixbuf, (RsvgHandle *));
+DEF_DLL_FN (void, rsvg_handle_set_base_uri, (RsvgHandle *, const char *));
+
+DEF_DLL_FN (int, gdk_pixbuf_get_width, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_height, (const GdkPixbuf *));
+DEF_DLL_FN (guchar *, gdk_pixbuf_get_pixels, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_rowstride, (const GdkPixbuf *));
+DEF_DLL_FN (GdkColorspace, gdk_pixbuf_get_colorspace, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_n_channels, (const GdkPixbuf *));
+DEF_DLL_FN (gboolean, gdk_pixbuf_get_has_alpha, (const GdkPixbuf *));
+DEF_DLL_FN (int, gdk_pixbuf_get_bits_per_sample, (const GdkPixbuf *));
+
+# if ! GLIB_CHECK_VERSION (2, 36, 0)
+DEF_DLL_FN (void, g_type_init, (void));
+# endif
+DEF_DLL_FN (void, g_object_unref, (gpointer));
+DEF_DLL_FN (void, g_error_free, (GError *));
Lisp_Object Qgdk_pixbuf, Qglib, Qgobject;
return 0;
}
- LOAD_IMGLIB_FN (library, rsvg_handle_new);
- LOAD_IMGLIB_FN (library, rsvg_handle_get_dimensions);
- LOAD_IMGLIB_FN (library, rsvg_handle_write);
- LOAD_IMGLIB_FN (library, rsvg_handle_close);
- LOAD_IMGLIB_FN (library, rsvg_handle_get_pixbuf);
- LOAD_IMGLIB_FN (library, rsvg_handle_set_base_uri);
-
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_width);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_height);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_pixels);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_rowstride);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_colorspace);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_n_channels);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_has_alpha);
- LOAD_IMGLIB_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
-
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
- LOAD_IMGLIB_FN (gobject, g_type_init);
-#endif
- LOAD_IMGLIB_FN (gobject, g_object_unref);
- LOAD_IMGLIB_FN (glib, g_error_free);
+ LOAD_DLL_FN (library, rsvg_handle_new);
+ LOAD_DLL_FN (library, rsvg_handle_get_dimensions);
+ LOAD_DLL_FN (library, rsvg_handle_write);
+ LOAD_DLL_FN (library, rsvg_handle_close);
+ LOAD_DLL_FN (library, rsvg_handle_get_pixbuf);
+ LOAD_DLL_FN (library, rsvg_handle_set_base_uri);
+
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_width);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_height);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_pixels);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_rowstride);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_colorspace);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_n_channels);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_has_alpha);
+ LOAD_DLL_FN (gdklib, gdk_pixbuf_get_bits_per_sample);
+
+# if ! GLIB_CHECK_VERSION (2, 36, 0)
+ LOAD_DLL_FN (gobject, g_type_init);
+# endif
+ LOAD_DLL_FN (gobject, g_object_unref);
+ LOAD_DLL_FN (glib, g_error_free);
return 1;
}
-#else
/* The following aliases for library functions allow dynamic loading
to be used on some platforms. */
-#define fn_rsvg_handle_new rsvg_handle_new
-#define fn_rsvg_handle_get_dimensions rsvg_handle_get_dimensions
-#define fn_rsvg_handle_write rsvg_handle_write
-#define fn_rsvg_handle_close rsvg_handle_close
-#define fn_rsvg_handle_get_pixbuf rsvg_handle_get_pixbuf
-#define fn_rsvg_handle_set_base_uri rsvg_handle_set_base_uri
-
-#define fn_gdk_pixbuf_get_width gdk_pixbuf_get_width
-#define fn_gdk_pixbuf_get_height gdk_pixbuf_get_height
-#define fn_gdk_pixbuf_get_pixels gdk_pixbuf_get_pixels
-#define fn_gdk_pixbuf_get_rowstride gdk_pixbuf_get_rowstride
-#define fn_gdk_pixbuf_get_colorspace gdk_pixbuf_get_colorspace
-#define fn_gdk_pixbuf_get_n_channels gdk_pixbuf_get_n_channels
-#define fn_gdk_pixbuf_get_has_alpha gdk_pixbuf_get_has_alpha
-#define fn_gdk_pixbuf_get_bits_per_sample gdk_pixbuf_get_bits_per_sample
-#if ! GLIB_CHECK_VERSION (2, 36, 0)
-#define fn_g_type_init g_type_init
-#endif
-#define fn_g_object_unref g_object_unref
-#define fn_g_error_free g_error_free
-#endif /* !WINDOWSNT */
+# undef gdk_pixbuf_get_bits_per_sample
+# undef gdk_pixbuf_get_colorspace
+# undef gdk_pixbuf_get_has_alpha
+# undef gdk_pixbuf_get_height
+# undef gdk_pixbuf_get_n_channels
+# undef gdk_pixbuf_get_pixels
+# undef gdk_pixbuf_get_rowstride
+# undef gdk_pixbuf_get_width
+# undef g_error_free
+# undef g_object_unref
+# undef g_type_init
+# undef rsvg_handle_close
+# undef rsvg_handle_get_dimensions
+# undef rsvg_handle_get_pixbuf
+# undef rsvg_handle_new
+# undef rsvg_handle_set_base_uri
+# undef rsvg_handle_write
+
+# define gdk_pixbuf_get_bits_per_sample fn_gdk_pixbuf_get_bits_per_sample
+# define gdk_pixbuf_get_colorspace fn_gdk_pixbuf_get_colorspace
+# define gdk_pixbuf_get_has_alpha fn_gdk_pixbuf_get_has_alpha
+# define gdk_pixbuf_get_height fn_gdk_pixbuf_get_height
+# define gdk_pixbuf_get_n_channels fn_gdk_pixbuf_get_n_channels
+# define gdk_pixbuf_get_pixels fn_gdk_pixbuf_get_pixels
+# define gdk_pixbuf_get_rowstride fn_gdk_pixbuf_get_rowstride
+# define gdk_pixbuf_get_width fn_gdk_pixbuf_get_width
+# define g_error_free fn_g_error_free
+# define g_object_unref fn_g_object_unref
+# define g_type_init fn_g_type_init
+# define rsvg_handle_close fn_rsvg_handle_close
+# define rsvg_handle_get_dimensions fn_rsvg_handle_get_dimensions
+# define rsvg_handle_get_pixbuf fn_rsvg_handle_get_pixbuf
+# define rsvg_handle_new fn_rsvg_handle_new
+# define rsvg_handle_set_base_uri fn_rsvg_handle_set_base_uri
+# define rsvg_handle_write fn_rsvg_handle_write
+
+# endif /* !WINDOWSNT */
/* Load SVG image IMG for use on frame F. Value is true if
successful. */
#if ! GLIB_CHECK_VERSION (2, 36, 0)
/* g_type_init is a glib function that must be called prior to
using gnome type library functions (obsolete since 2.36.0). */
- fn_g_type_init ();
+ g_type_init ();
#endif
/* Make a handle to a new rsvg object. */
- rsvg_handle = fn_rsvg_handle_new ();
+ rsvg_handle = rsvg_handle_new ();
/* Set base_uri for properly handling referenced images (via 'href').
See rsvg bug 596114 - "image refs are relative to curdir, not .svg file"
(https://bugzilla.gnome.org/show_bug.cgi?id=596114). */
if (filename)
- fn_rsvg_handle_set_base_uri(rsvg_handle, filename);
+ rsvg_handle_set_base_uri(rsvg_handle, filename);
/* Parse the contents argument and fill in the rsvg_handle. */
- fn_rsvg_handle_write (rsvg_handle, contents, size, &err);
+ rsvg_handle_write (rsvg_handle, contents, size, &err);
if (err) goto rsvg_error;
/* The parsing is complete, rsvg_handle is ready to used, close it
for further writes. */
- fn_rsvg_handle_close (rsvg_handle, &err);
+ rsvg_handle_close (rsvg_handle, &err);
if (err) goto rsvg_error;
- fn_rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
+ rsvg_handle_get_dimensions (rsvg_handle, &dimension_data);
if (! check_image_size (f, dimension_data.width, dimension_data.height))
{
image_error ("Invalid image size (see `max-image-size')", Qnil, Qnil);
/* We can now get a valid pixel buffer from the svg file, if all
went ok. */
- pixbuf = fn_rsvg_handle_get_pixbuf (rsvg_handle);
+ pixbuf = rsvg_handle_get_pixbuf (rsvg_handle);
if (!pixbuf) goto rsvg_error;
- fn_g_object_unref (rsvg_handle);
+ g_object_unref (rsvg_handle);
/* Extract some meta data from the svg handle. */
- width = fn_gdk_pixbuf_get_width (pixbuf);
- height = fn_gdk_pixbuf_get_height (pixbuf);
- pixels = fn_gdk_pixbuf_get_pixels (pixbuf);
- rowstride = fn_gdk_pixbuf_get_rowstride (pixbuf);
+ width = gdk_pixbuf_get_width (pixbuf);
+ height = gdk_pixbuf_get_height (pixbuf);
+ pixels = gdk_pixbuf_get_pixels (pixbuf);
+ rowstride = gdk_pixbuf_get_rowstride (pixbuf);
/* Validate the svg meta data. */
- eassert (fn_gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
- eassert (fn_gdk_pixbuf_get_n_channels (pixbuf) == 4);
- eassert (fn_gdk_pixbuf_get_has_alpha (pixbuf));
- eassert (fn_gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
+ eassert (gdk_pixbuf_get_colorspace (pixbuf) == GDK_COLORSPACE_RGB);
+ eassert (gdk_pixbuf_get_n_channels (pixbuf) == 4);
+ eassert (gdk_pixbuf_get_has_alpha (pixbuf));
+ eassert (gdk_pixbuf_get_bits_per_sample (pixbuf) == 8);
/* Try to create a x pixmap to hold the svg pixmap. */
if (!image_create_x_image_and_pixmap (f, img, width, height, 0, &ximg, 0))
{
- fn_g_object_unref (pixbuf);
+ g_object_unref (pixbuf);
return 0;
}
free_color_table ();
#endif /* COLOR_TABLE_SUPPORT */
- fn_g_object_unref (pixbuf);
+ g_object_unref (pixbuf);
img->width = width;
img->height = height;
return 1;
rsvg_error:
- fn_g_object_unref (rsvg_handle);
+ g_object_unref (rsvg_handle);
/* FIXME: Use error->message so the user knows what is the actual
problem with the image. */
image_error ("Error parsing SVG image `%s'", img->spec, Qnil);
- fn_g_error_free (err);
+ g_error_free (err);
return 0;
}
/* True if more input was available last time we read an event.
Since redisplay can take a significant amount of time and is not
- indispensible to perform the user's commands, when input arrives
+ indispensable to perform the user's commands, when input arrives
"too fast", Emacs skips redisplay. More specifically, if the next
command has already been input when we finish the previous command,
we skip the intermediate redisplay.
{
if ([rep respondsToSelector: @selector (getBitmapDataPlanes:)])
{
- NSBitmapImageRep *bmRep = (NSBitmapImageRep *) rep;
+ NSBitmapImageRep *bmr = (NSBitmapImageRep *) rep;
- if ([bmRep numberOfPlanes] >= 3)
- [bmRep getBitmapDataPlanes: pixmapData];
+ if ([bmr numberOfPlanes] >= 3)
+ [bmr getBitmapDataPlanes: pixmapData];
/* The next two lines cause the DPI of the image to be ignored.
This seems to be the behavior users expect. */
[self setScalesWhenResized: YES];
- [self setSize: NSMakeSize([bmRep pixelsWide], [bmRep pixelsHigh])];
+ [self setSize: NSMakeSize([bmr pixelsWide], [bmr pixelsHigh])];
break;
}
}
*op = 0;
while (doup-- > 0)
- strcat (op, up);
+ op = stpcpy (op, up);
while (doleft-- > 0)
- strcat (op, left);
+ op = stpcpy (op, left);
return outstring;
}
\f
int ln;
strcpy (filename, dir_pathname);
- ln = strlen (filename) - 1;
- if (!IS_DIRECTORY_SEP (filename[ln]))
- strcat (filename, "\\");
- strcat (filename, "*");
+ ln = strlen (filename);
+ if (!IS_DIRECTORY_SEP (filename[ln - 1]))
+ filename[ln++] = '\\';
+ strcpy (filename + ln, "*");
/* Note: No need to resolve symlinks in FILENAME, because
FindFirst opens the directory that is the target of a
{
/* Make sure root directories end in a slash. */
if (!IS_DIRECTORY_SEP (name[len-1]))
- strcat (name, "\\");
+ strcpy (name + len, "\\");
if (GetDriveType (name) < 2)
{
errno = ENOENT;
p--;
if (p > linkfn)
strncpy (tem, linkfn, p - linkfn);
- tem[p - linkfn] = '\0';
- strcat (tem, filename);
+ strcpy (tem + (p - linkfn), filename);
dir_access = faccessat (AT_FDCWD, tem, D_OK, AT_EACCESS);
}
else
const void* buf, size_t sz);
#endif /* HAVE_GNUTLS */
+/* Definine a function that will be loaded from a DLL. */
+#define DEF_DLL_FN(type, func, args) static type (FAR CDECL *fn_##func) args
+
+/* Load a function from the DLL. */
+#define LOAD_DLL_FN(lib, func) \
+ do \
+ { \
+ fn_##func = (void *) GetProcAddress (lib, #func); \
+ if (!fn_##func) \
+ return false; \
+ } \
+ while (false)
+
#endif /* EMACS_W32_H */
if (wv->key != NULL)
{
out_string = SAFE_ALLOCA (strlen (wv->name) + strlen (wv->key) + 2);
- strcpy (out_string, wv->name);
- strcat (out_string, "\t");
- strcat (out_string, wv->key);
+ p = stpcpy (out_string, wv->name);
+ p = stpcpy (p, "\t");
+ strcpy (p, wv->key);
}
else
out_string = (char *)wv->name;
if (egetenv ("CMDPROXY"))
strcpy (cmdname, egetenv ("CMDPROXY"));
else
- {
- lispstpcpy (cmdname, Vinvocation_directory);
- strcat (cmdname, "cmdproxy.exe");
- }
+ strcpy (lispstpcpy (cmdname, Vinvocation_directory), "cmdproxy.exe");
/* Can't use unixtodos_filename here, since that needs its file
name argument encoded in UTF-8. */
if (GetLocaleInfo (try_lcid, LOCALE_SABBREVLANGNAME,
locval, LOCALE_NAME_MAX_LENGTH))
{
+ size_t locval_len;
+
/* This is for when they only specify the language, as in "ENU". */
if (stricmp (locval, lname) == 0)
{
found_lcid = try_lcid;
return FALSE;
}
- strcat (locval, "_");
+ locval_len = strlen (locval);
+ strcpy (locval + locval_len, "_");
if (GetLocaleInfo (try_lcid, LOCALE_SABBREVCTRYNAME,
- locval + strlen (locval), LOCALE_NAME_MAX_LENGTH))
+ locval + locval_len + 1, LOCALE_NAME_MAX_LENGTH))
{
- size_t locval_len = strlen (locval);
-
+ locval_len = strlen (locval);
if (strnicmp (locval, lname, locval_len) == 0
&& (lname[locval_len] == '.'
|| lname[locval_len] == '\0'))
else if (it->cmp_it.id >= 0)
{
/* We are currently getting glyphs from a composition. */
- int i;
-
if (! it->bidi_p)
{
IT_CHARPOS (*it) += it->cmp_it.nchars;
IT_BYTEPOS (*it) += it->cmp_it.nbytes;
- if (it->cmp_it.to < it->cmp_it.nglyphs)
- {
- it->cmp_it.from = it->cmp_it.to;
- }
- else
- {
- it->cmp_it.id = -1;
- composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
- IT_BYTEPOS (*it),
- it->end_charpos, Qnil);
- }
}
- else if (! it->cmp_it.reversed_p)
+ else
{
- /* Composition created while scanning forward. */
+ int i;
+
/* Update IT's char/byte positions to point to the first
character of the next grapheme cluster, or to the
character visually after the current composition. */
bidi_move_to_visually_next (&it->bidi_it);
IT_BYTEPOS (*it) = it->bidi_it.bytepos;
IT_CHARPOS (*it) = it->bidi_it.charpos;
+ }
- if (it->cmp_it.to < it->cmp_it.nglyphs)
- {
- /* Proceed to the next grapheme cluster. */
- it->cmp_it.from = it->cmp_it.to;
- }
- else
- {
- /* No more grapheme clusters in this composition.
- Find the next stop position. */
- ptrdiff_t stop = it->end_charpos;
- if (it->bidi_it.scan_dir < 0)
- /* Now we are scanning backward and don't know
- where to stop. */
- stop = -1;
- composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
- IT_BYTEPOS (*it), stop, Qnil);
- }
+ if ((! it->bidi_p || ! it->cmp_it.reversed_p)
+ && it->cmp_it.to < it->cmp_it.nglyphs)
+ {
+ /* Composition created while scanning forward. Proceed
+ to the next grapheme cluster. */
+ it->cmp_it.from = it->cmp_it.to;
+ }
+ else if ((it->bidi_p && it->cmp_it.reversed_p)
+ && it->cmp_it.from > 0)
+ {
+ /* Composition created while scanning backward. Proceed
+ to the previous grapheme cluster. */
+ it->cmp_it.to = it->cmp_it.from;
}
else
{
- /* Composition created while scanning backward. */
- /* Update IT's char/byte positions to point to the last
- character of the previous grapheme cluster, or the
- character visually after the current composition. */
- for (i = 0; i < it->cmp_it.nchars; i++)
- bidi_move_to_visually_next (&it->bidi_it);
- IT_BYTEPOS (*it) = it->bidi_it.bytepos;
- IT_CHARPOS (*it) = it->bidi_it.charpos;
- if (it->cmp_it.from > 0)
- {
- /* Proceed to the previous grapheme cluster. */
- it->cmp_it.to = it->cmp_it.from;
- }
- else
- {
- /* No more grapheme clusters in this composition.
- Find the next stop position. */
- ptrdiff_t stop = it->end_charpos;
- if (it->bidi_it.scan_dir < 0)
- /* Now we are scanning backward and don't know
- where to stop. */
- stop = -1;
- composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
- IT_BYTEPOS (*it), stop, Qnil);
- }
+ /* No more grapheme clusters in this composition.
+ Find the next stop position. */
+ ptrdiff_t stop = it->end_charpos;
+
+ if (it->bidi_it.scan_dir < 0)
+ /* Now we are scanning backward and don't know
+ where to stop. */
+ stop = -1;
+ composition_compute_stop_pos (&it->cmp_it, IT_CHARPOS (*it),
+ IT_BYTEPOS (*it), stop, Qnil);
}
}
else
}
if (it->cmp_it.id >= 0)
{
- int i;
-
+ /* We are delivering display elements from a composition.
+ Update the string position past the grapheme cluster
+ we've just processed. */
if (! it->bidi_p)
{
IT_STRING_CHARPOS (*it) += it->cmp_it.nchars;
IT_STRING_BYTEPOS (*it) += it->cmp_it.nbytes;
- if (it->cmp_it.to < it->cmp_it.nglyphs)
- it->cmp_it.from = it->cmp_it.to;
- else
- {
- it->cmp_it.id = -1;
- composition_compute_stop_pos (&it->cmp_it,
- IT_STRING_CHARPOS (*it),
- IT_STRING_BYTEPOS (*it),
- it->end_charpos, it->string);
- }
}
- else if (! it->cmp_it.reversed_p)
+ else
{
+ int i;
+
for (i = 0; i < it->cmp_it.nchars; i++)
bidi_move_to_visually_next (&it->bidi_it);
IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
+ }
- if (it->cmp_it.to < it->cmp_it.nglyphs)
- it->cmp_it.from = it->cmp_it.to;
- else
- {
- ptrdiff_t stop = it->end_charpos;
- if (it->bidi_it.scan_dir < 0)
- stop = -1;
- composition_compute_stop_pos (&it->cmp_it,
- IT_STRING_CHARPOS (*it),
- IT_STRING_BYTEPOS (*it), stop,
- it->string);
- }
+ /* Did we exhaust all the grapheme clusters of this
+ composition? */
+ if ((! it->bidi_p || ! it->cmp_it.reversed_p)
+ && (it->cmp_it.to < it->cmp_it.nglyphs))
+ {
+ /* Not all the grapheme clusters were processed yet;
+ advance to the next cluster. */
+ it->cmp_it.from = it->cmp_it.to;
+ }
+ else if ((it->bidi_p && it->cmp_it.reversed_p)
+ && it->cmp_it.from > 0)
+ {
+ /* Likewise: advance to the next cluster, but going in
+ the reverse direction. */
+ it->cmp_it.to = it->cmp_it.from;
}
else
{
- for (i = 0; i < it->cmp_it.nchars; i++)
- bidi_move_to_visually_next (&it->bidi_it);
- IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
- IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
- if (it->cmp_it.from > 0)
- it->cmp_it.to = it->cmp_it.from;
- else
+ /* This composition was fully processed; find the next
+ candidate place for checking for composed
+ characters. */
+ /* Always limit string searches to the string length;
+ any padding spaces are not part of the string, and
+ there cannot be any compositions in that padding. */
+ ptrdiff_t stop = SCHARS (it->string);
+
+ if (it->bidi_p && it->bidi_it.scan_dir < 0)
+ stop = -1;
+ else if (it->end_charpos < stop)
{
- ptrdiff_t stop = it->end_charpos;
- if (it->bidi_it.scan_dir < 0)
- stop = -1;
- composition_compute_stop_pos (&it->cmp_it,
- IT_STRING_CHARPOS (*it),
- IT_STRING_BYTEPOS (*it), stop,
- it->string);
+ /* Cf. PRECISION in reseat_to_string: we might be
+ limited in how many of the string characters we
+ need to deliver. */
+ stop = it->end_charpos;
}
+ composition_compute_stop_pos (&it->cmp_it,
+ IT_STRING_CHARPOS (*it),
+ IT_STRING_BYTEPOS (*it), stop,
+ it->string);
}
}
else
bidi_move_to_visually_next (&it->bidi_it);
IT_STRING_BYTEPOS (*it) = it->bidi_it.bytepos;
IT_STRING_CHARPOS (*it) = it->bidi_it.charpos;
+ /* If the scan direction changes, we may need to update
+ the place where to check for composed characters. */
if (prev_scan_dir != it->bidi_it.scan_dir)
{
- ptrdiff_t stop = it->end_charpos;
+ ptrdiff_t stop = SCHARS (it->string);
if (it->bidi_it.scan_dir < 0)
stop = -1;
+ else if (it->end_charpos < stop)
+ stop = it->end_charpos;
+
composition_compute_stop_pos (&it->cmp_it,
IT_STRING_CHARPOS (*it),
IT_STRING_BYTEPOS (*it), stop,
{
const char *sep = motif ? ";" : ",";
char *fontsetname;
+ char *z;
/* Make a fontset name from the base font name. */
if (xic_default_fontset == base_fontname)
{
/* There is no base font name, use the default. */
fontsetname = xmalloc (strlen (base_fontname) + 2);
- strcpy (fontsetname, base_fontname);
+ z = stpcpy (fontsetname, base_fontname);
}
else
{
Use the specified font plus the default. */
fontsetname = xmalloc (strlen (base_fontname)
+ strlen (xic_default_fontset) + 3);
- strcpy (fontsetname, base_fontname);
- strcat (fontsetname, sep);
- strcat (fontsetname, xic_default_fontset);
+ z = stpcpy (fontsetname, base_fontname);
+ z = stpcpy (z, sep);
+ z = stpcpy (z, xic_default_fontset);
}
else
{
/* Build the font spec that matches all. */
len = p - p2 + strlen (allcs) + strlen (all) + strlen (allfamilies) + 1;
font_all = alloca (len);
- strcpy (font_all, allfamilies);
- strcat (font_all, all);
- memcpy (font_all + strlen (all) + strlen (allfamilies), p2, p - p2);
- strcpy (font_all + strlen (all) + strlen (allfamilies) + (p - p2),
- allcs);
+ z = stpcpy (font_all, allfamilies);
+ z = stpcpy (z, all);
+ memcpy (z, p2, p - p2);
+ strcpy (z + (p - p2), allcs);
/* Build the actual font set name. */
len = strlen (base_fontname) + strlen (font_allcs)
+ strlen (font_allfamilies) + strlen (font_all) + 5;
fontsetname = xmalloc (len);
- strcpy (fontsetname, base_fontname);
- strcat (fontsetname, sep);
- strcat (fontsetname, font_allcs);
- strcat (fontsetname, sep);
- strcat (fontsetname, font_allfamilies);
- strcat (fontsetname, sep);
- strcat (fontsetname, font_all);
+ z = stpcpy (fontsetname, base_fontname);
+ z = stpcpy (z, sep);
+ z = stpcpy (z, font_allcs);
+ z = stpcpy (z, sep);
+ z = stpcpy (z, font_allfamilies);
+ z = stpcpy (z, sep);
+ z = stpcpy (z, font_all);
}
}
if (motif)
- return strcat (fontsetname, ":");
+ strcpy (z, ":");
return fontsetname;
}
#endif /* HAVE_X_WINDOWS && USE_X_TOOLKIT */
#ifdef WINDOWSNT
-#include <windows.h>
-#include "w32.h"
+# include <windows.h>
+# include "w32.h"
-/* Macro for defining functions that will be loaded from the libxml2 DLL. */
-#define DEF_XML2_FN(rettype,func,args) static rettype (FAR CDECL *fn_##func)args
-
-/* Macro for loading libxml2 functions from the library. */
-#define LOAD_XML2_FN(lib,func) { \
- fn_##func = (void *) GetProcAddress (lib, #func); \
- if (!fn_##func) goto bad_library; \
- }
-
-DEF_XML2_FN (htmlDocPtr, htmlReadMemory,
+DEF_DLL_FN (htmlDocPtr, htmlReadMemory,
(const char *, int, const char *, const char *, int));
-DEF_XML2_FN (xmlDocPtr, xmlReadMemory,
+DEF_DLL_FN (xmlDocPtr, xmlReadMemory,
(const char *, int, const char *, const char *, int));
-DEF_XML2_FN (xmlNodePtr, xmlDocGetRootElement, (xmlDocPtr));
-DEF_XML2_FN (void, xmlFreeDoc, (xmlDocPtr));
-DEF_XML2_FN (void, xmlCleanupParser, (void));
-DEF_XML2_FN (void, xmlCheckVersion, (int));
+DEF_DLL_FN (xmlNodePtr, xmlDocGetRootElement, (xmlDocPtr));
+DEF_DLL_FN (void, xmlFreeDoc, (xmlDocPtr));
+DEF_DLL_FN (void, xmlCleanupParser, (void));
+DEF_DLL_FN (void, xmlCheckVersion, (int));
static int
libxml2_loaded_p (void)
return 0;
}
-#else /* !WINDOWSNT */
+# undef htmlReadMemory
+# undef xmlCheckVersion
+# undef xmlCleanupParser
+# undef xmlDocGetRootElement
+# undef xmlFreeDoc
+# undef xmlReadMemory
+
+# define htmlReadMemory fn_htmlReadMemory
+# define xmlCheckVersion fn_xmlCheckVersion
+# define xmlCleanupParser fn_xmlCleanupParser
+# define xmlDocGetRootElement fn_xmlDocGetRootElement
+# define xmlFreeDoc fn_xmlFreeDoc
+# define xmlReadMemory fn_xmlReadMemory
+
+static bool
+load_dll_functions (HMODULE library)
+{
+ LOAD_DLL_FN (library, htmlReadMemory);
+ LOAD_DLL_FN (library, xmlReadMemory);
+ LOAD_DLL_FN (library, xmlDocGetRootElement);
+ LOAD_DLL_FN (library, xmlFreeDoc);
+ LOAD_DLL_FN (library, xmlCleanupParser);
+ LOAD_DLL_FN (library, xmlCheckVersion);
+ return true;
+}
-#define fn_htmlReadMemory htmlReadMemory
-#define fn_xmlReadMemory xmlReadMemory
-#define fn_xmlDocGetRootElement xmlDocGetRootElement
-#define fn_xmlFreeDoc xmlFreeDoc
-#define fn_xmlCleanupParser xmlCleanupParser
-#define fn_xmlCheckVersion xmlCheckVersion
+#else /* !WINDOWSNT */
static int
libxml2_loaded_p (void)
return 0;
}
- /* LOAD_XML2_FN jumps to bad_library if it fails to find the
- named function. */
- LOAD_XML2_FN (library, htmlReadMemory);
- LOAD_XML2_FN (library, xmlReadMemory);
- LOAD_XML2_FN (library, xmlDocGetRootElement);
- LOAD_XML2_FN (library, xmlFreeDoc);
- LOAD_XML2_FN (library, xmlCleanupParser);
- LOAD_XML2_FN (library, xmlCheckVersion);
+ if (! load_dll_functions (library))
+ goto bad_library;
Vlibrary_cache = Fcons (Fcons (Qlibxml2_dll, Qt), Vlibrary_cache);
return 1;
const char *burl = "";
ptrdiff_t istart, iend, istart_byte, iend_byte;
- fn_xmlCheckVersion (LIBXML_VERSION);
+ xmlCheckVersion (LIBXML_VERSION);
validate_region (&start, &end);
}
if (htmlp)
- doc = fn_htmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
- iend_byte - istart_byte, burl, "utf-8",
- HTML_PARSE_RECOVER|HTML_PARSE_NONET|
- HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR|
- HTML_PARSE_NOBLANKS);
+ doc = htmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+ iend_byte - istart_byte, burl, "utf-8",
+ HTML_PARSE_RECOVER|HTML_PARSE_NONET|
+ HTML_PARSE_NOWARNING|HTML_PARSE_NOERROR|
+ HTML_PARSE_NOBLANKS);
else
- doc = fn_xmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
- iend_byte - istart_byte, burl, "utf-8",
- XML_PARSE_NONET|XML_PARSE_NOWARNING|
- XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
+ doc = xmlReadMemory ((char *) BYTE_POS_ADDR (istart_byte),
+ iend_byte - istart_byte, burl, "utf-8",
+ XML_PARSE_NONET|XML_PARSE_NOWARNING|
+ XML_PARSE_NOBLANKS |XML_PARSE_NOERROR);
if (doc != NULL)
{
if (NILP (result)) {
/* The document doesn't have toplevel comments or we discarded
them. Get the tree the proper way. */
- xmlNode *node = fn_xmlDocGetRootElement (doc);
+ xmlNode *node = xmlDocGetRootElement (doc);
if (node != NULL)
result = make_dom (node);
} else
result = Fcons (intern ("top"),
Fcons (Qnil, Fnreverse (Fcons (r, result))));
- fn_xmlFreeDoc (doc);
+ xmlFreeDoc (doc);
}
return result;
xml_cleanup_parser (void)
{
if (libxml2_loaded_p ())
- fn_xmlCleanupParser ();
+ xmlCleanupParser ();
}
DEFUN ("libxml-parse-html-region", Flibxml_parse_html_region,
if (ptr == NULL)
return xstrdup ("/");
- copy = xmalloc (strlen (ptr) + 2);
- strcpy (copy, ptr);
- return strcat (copy, "/");
+ ptrdiff_t len = strlen (ptr);
+ copy = xmalloc (len + 2);
+ strcpy (copy + len, "/");
+ return memcpy (copy, ptr, len);
}
return db;
}
+static char const xdefaults[] = ".Xdefaults";
static XrmDatabase
get_user_db (Display *display)
db = XrmGetStringDatabase (xdefs);
else
{
- char *home;
- char *xdefault;
-
- home = gethomedir ();
- xdefault = xmalloc (strlen (home) + sizeof ".Xdefaults");
- strcpy (xdefault, home);
- strcat (xdefault, ".Xdefaults");
- db = XrmGetFileDatabase (xdefault);
- xfree (home);
- xfree (xdefault);
+ char *home = gethomedir ();
+ ptrdiff_t homelen = strlen (home);
+ char *filename = xrealloc (home, homelen + sizeof xdefaults);
+ strcpy (filename + homelen, xdefaults);
+ db = XrmGetFileDatabase (filename);
+ xfree (filename);
}
#ifdef HAVE_XSCREENRESOURCESTRING
get_environ_db (void)
{
XrmDatabase db;
- char *p;
- char *path = 0;
+ char *p = getenv ("XENVIRONMENT");
+ char *filename = 0;
- if ((p = getenv ("XENVIRONMENT")) == NULL)
+ if (!p)
{
- static char const xdefaults[] = ".Xdefaults-";
char *home = gethomedir ();
- char const *host = SSDATA (Vsystem_name);
- ptrdiff_t pathsize = (strlen (home) + sizeof xdefaults
- + SBYTES (Vsystem_name));
- path = xrealloc (home, pathsize);
- strcat (strcat (path, xdefaults), host);
- p = path;
+ ptrdiff_t homelen = strlen (home);
+ ptrdiff_t filenamesize = (homelen + sizeof xdefaults
+ + SBYTES (Vsystem_name));
+ p = filename = xrealloc (home, filenamesize);
+ lispstpcpy (stpcpy (filename + homelen, xdefaults), Vsystem_name);
}
db = XrmGetFileDatabase (p);
- xfree (path);
+ xfree (filename);
return db;
}
struct selection_data;
static void x_decline_selection_request (struct input_event *);
-static int x_convert_selection (struct input_event *, Lisp_Object, Lisp_Object,
- Atom, int, struct x_display_info *);
-static int waiting_for_other_props_on_window (Display *, Window);
+static bool x_convert_selection (struct input_event *, Lisp_Object,
+ Lisp_Object, Atom, bool,
+ struct x_display_info *);
+static bool waiting_for_other_props_on_window (Display *, Window);
static struct prop_location *expect_property_change (Display *, Window,
Atom, int);
static void unexpect_property_change (struct prop_location *);
static Lisp_Object
x_get_local_selection (Lisp_Object selection_symbol, Lisp_Object target_type,
- int local_request, struct x_display_info *dpyinfo)
+ bool local_request, struct x_display_info *dpyinfo)
{
Lisp_Object local_value;
Lisp_Object handler_fn, value, check;
ptrdiff_t size;
int format;
Atom type;
- int nofree;
+ bool nofree;
Atom property;
/* This can be set to non-NULL during x_reply_selection_request, if
the selection is waiting for an INCR transfer to complete. Don't
for (cs = converted_selections; cs; cs = next)
{
next = cs->next;
- if (cs->nofree == 0 && cs->data)
+ if (! cs->nofree && cs->data)
xfree (cs->data);
xfree (cs);
}
Window window;
Atom property;
int desired_state;
- int arrived;
+ bool arrived;
struct prop_location *next;
};
Lisp_Object target_symbol = x_atom_to_symbol (dpyinfo, target);
Atom property = SELECTION_EVENT_PROPERTY (event);
Lisp_Object local_selection_data;
- int success = 0;
+ bool success = false;
ptrdiff_t count = SPECPDL_INDEX ();
GCPRO2 (local_selection_data, target_symbol);
if (subproperty != None)
x_convert_selection (event, selection_symbol, subtarget,
- subproperty, 1, dpyinfo);
+ subproperty, true, dpyinfo);
}
- success = 1;
+ success = true;
}
else
{
property = SELECTION_EVENT_TARGET (event);
success = x_convert_selection (event, selection_symbol,
target_symbol, property,
- 0, dpyinfo);
+ false, dpyinfo);
}
DONE:
/* Perform the requested selection conversion, and write the data to
the converted_selections linked list, where it can be accessed by
- x_reply_selection_request. If FOR_MULTIPLE is non-zero, write out
+ x_reply_selection_request. If FOR_MULTIPLE, write out
the data even if conversion fails, using conversion_fail_tag.
- Return 0 if the selection failed to convert, 1 otherwise. */
+ Return true iff successful. */
-static int
+static bool
x_convert_selection (struct input_event *event, Lisp_Object selection_symbol,
Lisp_Object target_symbol, Atom property,
- int for_multiple, struct x_display_info *dpyinfo)
+ bool for_multiple, struct x_display_info *dpyinfo)
{
struct gcpro gcpro1;
Lisp_Object lisp_selection;
lisp_selection
= x_get_local_selection (selection_symbol, target_symbol,
- 0, dpyinfo);
+ false, dpyinfo);
/* A nil return value means we can't perform the conversion. */
if (NILP (lisp_selection)
cs->size = 1;
cs->format = 32;
cs->type = XA_ATOM;
- cs->nofree = 1;
+ cs->nofree = true;
cs->property = property;
cs->wait_object = NULL;
cs->next = converted_selections;
}
UNGCPRO;
- return 0;
+ return false;
}
/* Otherwise, record the converted selection to binary. */
cs = xmalloc (sizeof *cs);
cs->data = NULL;
- cs->nofree = 1;
+ cs->nofree = true;
cs->property = property;
cs->wait_object = NULL;
cs->next = converted_selections;
converted_selections = cs;
lisp_data_to_selection_data (dpyinfo, lisp_selection, cs);
UNGCPRO;
- return 1;
+ return true;
}
\f
/* Handle a SelectionClear event EVENT, which indicates that some
}
}
\f
-/* Nonzero if any properties for DISPLAY and WINDOW
+/* True if any properties for DISPLAY and WINDOW
are on the list of what we are waiting for. */
-static int
+static bool
waiting_for_other_props_on_window (Display *display, Window window)
{
- struct prop_location *rest = property_change_wait_list;
- while (rest)
- if (rest->display == display && rest->window == window)
- return 1;
- else
- rest = rest->next;
- return 0;
+ for (struct prop_location *p = property_change_wait_list; p; p = p->next)
+ if (p->display == display && p->window == window)
+ return true;
+ return false;
}
/* Add an entry to the list of property changes we are waiting for.
pl->property = property;
pl->desired_state = state;
pl->next = property_change_wait_list;
- pl->arrived = 0;
+ pl->arrived = false;
property_change_wait_list = pl;
return pl;
}
EMACS_INT secs = timeout / 1000;
int nsecs = (timeout % 1000) * 1000000;
TRACE2 (" Waiting %"pI"d secs, %d nsecs", secs, nsecs);
- wait_reading_process_output (secs, nsecs, 0, 0,
+ wait_reading_process_output (secs, nsecs, 0, false,
property_change_reply, NULL, 0);
if (NILP (XCAR (property_change_reply)))
(event->state == PropertyDelete ? "deletion" : "change"),
XGetAtomName (event->display, event->atom));
- rest->arrived = 1;
+ rest->arrived = true;
/* If this is the one wait_for_property_change is waiting for,
tell it to wake up. */
during this time. In fact, the SAVE_TARGETS mechanism requires
us to handle a clipboard manager's requests before it returns
SelectionNotify. */
-#if 0
+#if false
x_start_queuing_selection_requests ();
record_unwind_protect_void (x_stop_queuing_selection_requests);
#endif
secs = timeout / 1000;
nsecs = (timeout % 1000) * 1000000;
TRACE1 (" Start waiting %"pI"d secs for SelectionNotify", secs);
- wait_reading_process_output (secs, nsecs, 0, 0,
+ wait_reading_process_output (secs, nsecs, 0, false,
reading_selection_reply, NULL, 0);
TRACE1 (" Got event = %d", !NILP (XCAR (reading_selection_reply)));
x_get_window_property (Display *display, Window window, Atom property,
unsigned char **data_ret, ptrdiff_t *bytes_ret,
Atom *actual_type_ret, int *actual_format_ret,
- unsigned long *actual_size_ret, int delete_p)
+ unsigned long *actual_size_ret)
{
ptrdiff_t total_size;
unsigned long bytes_remaining;
XFlush (display);
unblock_input ();
- while (1)
+ while (true)
{
unsigned char *tmp_data;
ptrdiff_t tmp_size_bytes;
TRACE0 (" Get property value");
x_get_window_property (display, window, property,
&tmp_data, &tmp_size_bytes,
- type_ret, format_ret, size_ret, 1);
+ type_ret, format_ret, size_ret);
TRACE1 (" Read increment of %"pD"d bytes", tmp_size_bytes);
TRACE0 ("Reading selection data");
x_get_window_property (display, window, property, &data, &bytes,
- &actual_type, &actual_format, &actual_size, 1);
+ &actual_type, &actual_format, &actual_size);
if (! data)
{
- int there_is_a_selection_owner;
block_input ();
- there_is_a_selection_owner
- = XGetSelectionOwner (display, selection_atom);
+ bool there_is_a_selection_owner
+ = XGetSelectionOwner (display, selection_atom) != 0;
unblock_input ();
if (there_is_a_selection_owner)
signal_error ("Selection owner couldn't convert",
Lisp_Object type = Qnil;
eassert (cs != NULL);
- cs->nofree = 0;
+ cs->nofree = false;
if (CONSP (obj) && SYMBOLP (XCAR (obj)))
{
cs->format = 8;
cs->size = SBYTES (obj);
cs->data = SDATA (obj);
- cs->nofree = 1;
+ cs->nofree = true;
}
else if (SYMBOLP (obj))
{
if (!f)
error ("X selection unavailable for this frame");
- val = x_get_local_selection (selection_symbol, target_type, 1,
+ val = x_get_local_selection (selection_symbol, target_type, true,
FRAME_DISPLAY_INFO (f));
if (NILP (val) && FRAME_LIVE_P (f))
/* Convert an XClientMessageEvent to a Lisp event of type DRAG_N_DROP_EVENT. */
-int
+bool
x_handle_dnd_message (struct frame *f, const XClientMessageEvent *event,
struct x_display_info *dpyinfo, struct input_event *bufp)
{
for (i = 0; i < dpyinfo->x_dnd_atoms_length; ++i)
if (dpyinfo->x_dnd_atoms[i] == event->message_type) break;
- if (i == dpyinfo->x_dnd_atoms_length) return 0;
+ if (i == dpyinfo->x_dnd_atoms_length) return false;
XSETFRAME (frame, f);
bufp->arg = vec;
bufp->modifiers = 0;
- return 1;
+ return true;
}
DEFUN ("x-send-client-message", Fx_send_client_message,
Window wdest;
XEvent event;
struct frame *f = decode_window_system_frame (from);
- int to_root;
+ bool to_root;
CHECK_NUMBER (format);
CHECK_CONS (values);
event then goes to clients selecting for events on the root window. */
x_catch_errors (dpyinfo->display);
{
- int propagate = to_root ? False : True;
+ bool propagate = !to_root;
long mask = to_root ? 0xffffff : 0;
XSendEvent (dpyinfo->display, wdest, propagate, mask, &event);
kbd_buffer_store_event (&event);
}
-/* Return non-zero if DPYINFO is still valid. */
-static int
+/* Return true if DPYINFO is still valid. */
+static bool
dpyinfo_valid (struct x_display_info *dpyinfo)
{
- int found = 0;
+ bool found = false;
if (dpyinfo != NULL)
{
struct x_display_info *d;
/* First 4 bytes is a serial number, skip that. */
- if (bytes < 12) return BadLength;
+ if (bytes < 12) return settings_seen;
memcpy (&n_settings, prop+8, 4);
if (my_bo != that_bo) n_settings = bswap_32 (n_settings);
bytes_parsed = 12;
CARD32 vlen, ival = 0;
char name[128]; /* The names we are looking for are not this long. */
char sval[128]; /* The values we are looking for are not this long. */
- int want_this;
+ bool want_this;
int to_cpy;
sval[0] = '\0';
memcpy (&nlen, prop+bytes_parsed, 2);
bytes_parsed += 2;
if (my_bo != that_bo) nlen = bswap_16 (nlen);
- if (bytes_parsed+nlen > bytes) return BadLength;
- to_cpy = nlen > 127 ? 127 : nlen;
+ if (bytes_parsed + nlen > bytes) return settings_seen;
+ to_cpy = min (nlen, sizeof name - 1);
memcpy (name, prop+bytes_parsed, to_cpy);
name[to_cpy] = '\0';
bytes_parsed = PAD (bytes_parsed);
bytes_parsed += 4; /* Skip serial for this value */
- if (bytes_parsed > bytes) return BadLength;
+ if (bytes_parsed > bytes) return settings_seen;
- want_this =
+ want_this = strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
#ifdef HAVE_XFT
- (nlen > 6 && strncmp (name, "Xft/", 4) == 0)
- || strcmp (XSETTINGS_FONT_NAME, name) == 0
- ||
+ if ((nlen > 6 && memcmp (name, "Xft/", 4) == 0)
+ || strcmp (XSETTINGS_FONT_NAME, name) == 0)
+ want_this = true;
#endif
- strcmp (XSETTINGS_TOOL_BAR_STYLE, name) == 0;
switch (type)
{
case 0: /* Integer */
- if (bytes_parsed+4 > bytes) return BadLength;
+ if (bytes_parsed + 4 > bytes) return settings_seen;
if (want_this)
{
memcpy (&ival, prop+bytes_parsed, 4);
break;
case 1: /* String */
- if (bytes_parsed+4 > bytes) return BadLength;
+ if (bytes_parsed + 4 > bytes) return settings_seen;
memcpy (&vlen, prop+bytes_parsed, 4);
bytes_parsed += 4;
if (my_bo != that_bo) vlen = bswap_32 (vlen);
if (want_this)
{
- to_cpy = vlen > 127 ? 127 : vlen;
+ to_cpy = min (vlen, sizeof sval - 1);
memcpy (sval, prop+bytes_parsed, to_cpy);
sval[to_cpy] = '\0';
}
case 2: /* RGB value */
/* No need to parse this */
- if (bytes_parsed+8 > bytes) return BadLength;
+ if (bytes_parsed + 8 > bytes) return settings_seen;
bytes_parsed += 8; /* 4 values (r, b, g, alpha), 2 bytes each. */
break;
default: /* Parse Error */
- return BadValue;
+ return settings_seen;
}
if (want_this)
{
- ++settings_seen;
if (strcmp (name, XSETTINGS_TOOL_BAR_STYLE) == 0)
{
dupstring (&settings->tb_style, sval);
settings->seen &= ~SEEN_LCDFILTER;
}
#endif /* HAVE_XFT */
+ else
+ want_this = false;
+ settings_seen += want_this;
}
}
/* Read settings from the XSettings property window on display for DPYINFO.
Store settings read in SETTINGS.
- Return non-zero if successful, zero if not. */
+ Return true iff successful. */
-static int
+static bool
read_settings (struct x_display_info *dpyinfo, struct xsettings *settings)
{
Atom act_type;
unsigned char *prop = NULL;
Display *dpy = dpyinfo->display;
int rc;
+ bool got_settings = false;
x_catch_errors (dpy);
rc = XGetWindowProperty (dpy,
if (rc == Success && prop != NULL && act_form == 8 && nitems > 0
&& act_type == dpyinfo->Xatom_xsettings_prop)
- rc = parse_settings (prop, nitems, settings);
+ got_settings = parse_settings (prop, nitems, settings) != 0;
XFree (prop);
x_uncatch_errors ();
- return rc != 0;
+ return got_settings;
}
/* Apply Xft settings in SETTINGS to the Xft library.
- If SEND_EVENT_P is non-zero store a Lisp event that Xft settings changed. */
+ Store a Lisp event that Xft settings changed. */
static void
apply_xft_settings (struct x_display_info *dpyinfo,
- int send_event_p,
struct xsettings *settings)
{
#ifdef HAVE_XFT
FcPattern *pat;
struct xsettings oldsettings;
- int changed = 0;
+ bool changed = false;
memset (&oldsettings, 0, sizeof (oldsettings));
pat = FcPatternCreate ();
{
FcPatternDel (pat, FC_ANTIALIAS);
FcPatternAddBool (pat, FC_ANTIALIAS, settings->aa);
- ++changed;
+ changed = true;
oldsettings.aa = settings->aa;
}
{
FcPatternDel (pat, FC_HINTING);
FcPatternAddBool (pat, FC_HINTING, settings->hinting);
- ++changed;
+ changed = true;
oldsettings.hinting = settings->hinting;
}
if ((settings->seen & SEEN_RGBA) != 0 && oldsettings.rgba != settings->rgba)
FcPatternDel (pat, FC_RGBA);
FcPatternAddInteger (pat, FC_RGBA, settings->rgba);
oldsettings.rgba = settings->rgba;
- ++changed;
+ changed = true;
}
/* Older fontconfig versions don't have FC_LCD_FILTER. */
{
FcPatternDel (pat, FC_LCD_FILTER);
FcPatternAddInteger (pat, FC_LCD_FILTER, settings->lcdfilter);
- ++changed;
+ changed = true;
oldsettings.lcdfilter = settings->lcdfilter;
}
{
FcPatternDel (pat, FC_HINT_STYLE);
FcPatternAddInteger (pat, FC_HINT_STYLE, settings->hintstyle);
- ++changed;
+ changed = true;
oldsettings.hintstyle = settings->hintstyle;
}
#endif
{
FcPatternDel (pat, FC_DPI);
FcPatternAddDouble (pat, FC_DPI, settings->dpi);
- ++changed;
+ changed = true;
oldsettings.dpi = settings->dpi;
/* Changing the DPI on this display affects all frames on it.
char buf[sizeof format + d_formats * d_growth + lf_formats * lf_growth];
XftDefaultSet (dpyinfo->display, pat);
- if (send_event_p)
- store_config_changed_event (Qfont_render,
- XCAR (dpyinfo->name_list_element));
+ store_config_changed_event (Qfont_render,
+ XCAR (dpyinfo->name_list_element));
Vxft_settings
= make_formatted_string (buf, format,
oldsettings.aa, oldsettings.hinting,
}
/* Read XSettings from the display for DPYINFO.
- If SEND_EVENT_P is non-zero store a Lisp event settings that changed. */
+ If SEND_EVENT_P store a Lisp event settings that changed. */
static void
-read_and_apply_settings (struct x_display_info *dpyinfo, int send_event_p)
+read_and_apply_settings (struct x_display_info *dpyinfo, bool send_event_p)
{
struct xsettings settings;
if (!read_settings (dpyinfo, &settings))
return;
- apply_xft_settings (dpyinfo, True, &settings);
+ apply_xft_settings (dpyinfo, &settings);
if (settings.seen & SEEN_TB_STYLE)
{
if (send_event_p)
void
xft_settings_event (struct x_display_info *dpyinfo, const XEvent *event)
{
- bool check_window_p = 0, apply_settings_p = 0;
+ bool check_window_p = false, apply_settings_p = false;
switch (event->type)
{
case DestroyNotify:
if (dpyinfo->xsettings_window == event->xany.window)
- check_window_p = 1;
+ check_window_p = true;
break;
case ClientMessage:
if (event->xclient.message_type == dpyinfo->Xatom_xsettings_mgr
&& event->xclient.data.l[1] == dpyinfo->Xatom_xsettings_sel
&& event->xclient.window == dpyinfo->root_window)
- check_window_p = 1;
+ check_window_p = true;
break;
case PropertyNotify:
if (event->xproperty.window == dpyinfo->xsettings_window
&& event->xproperty.state == PropertyNewValue
&& event->xproperty.atom == dpyinfo->Xatom_xsettings_prop)
- apply_settings_p = 1;
+ apply_settings_p = true;
break;
}
dpyinfo->xsettings_window = None;
get_prop_window (dpyinfo);
if (dpyinfo->xsettings_window != None)
- apply_settings_p = 1;
+ apply_settings_p = true;
}
if (apply_settings_p)
- read_and_apply_settings (dpyinfo, True);
+ read_and_apply_settings (dpyinfo, true);
}
/* Initialize GSettings and read startup values. */
{
#ifdef HAVE_GSETTINGS
GVariant *val;
- int schema_found = 0;
+ bool schema_found = false;
#if ! GLIB_CHECK_VERSION (2, 36, 0)
g_type_init ();
get_prop_window (dpyinfo);
if (dpyinfo->xsettings_window != None)
- read_and_apply_settings (dpyinfo, False);
+ read_and_apply_settings (dpyinfo, false);
unblock_input ();
}
When this is non-nil and the system defined fixed width font changes, we
update frames dynamically.
If this variable is nil, Emacs ignores system font changes. */);
- use_system_font = 0;
+ use_system_font = false;
DEFVAR_LISP ("xft-settings", Vxft_settings,
doc: /* Font settings applied to Xft. */);
/* A flag that says if we are in shutdown interactions or not. */
-static int doing_interact;
+static bool doing_interact;
/* The session manager object for the session manager connection. */
kbd_buffer_store_event (&emacs_event);
}
-/* Return non-zero if we have a connection to a session manager. */
+/* Return true if we have a connection to a session manager. */
-int
+bool
x_session_have_connection (void)
{
return ice_fd != -1;
static void
smc_interact_CB (SmcConn smcConn, SmPointer clientData)
{
- doing_interact = True;
+ doing_interact = true;
emacs_event.kind = SAVE_SESSION_EVENT;
emacs_event.arg = Qnil;
}
props[props_idx]->vals[vp_idx++].value = emacs_program;
smid_opt = xmalloc (strlen (SMID_OPT) + strlen (client_id) + 1);
- strcpy (smid_opt, SMID_OPT);
- strcat (smid_opt, client_id);
+ strcpy (stpcpy (smid_opt, SMID_OPT), client_id);
props[props_idx]->vals[vp_idx].length = strlen (smid_opt);
props[props_idx]->vals[vp_idx++].value = smid_opt;
if (cwd)
{
chdir_opt = xmalloc (strlen (CHDIR_OPT) + strlen (cwd) + 1);
- strcpy (chdir_opt, CHDIR_OPT);
- strcat (chdir_opt, cwd);
+ strcpy (stpcpy (chdir_opt, CHDIR_OPT), cwd);
props[props_idx]->vals[vp_idx].length = strlen (chdir_opt);
props[props_idx]->vals[vp_idx++].value = chdir_opt;
ptrdiff_t name_len = 0;
ice_fd = -1;
- doing_interact = False;
+ doing_interact = false;
/* Check if we where started by the session manager. If so, we will
have a previous id. */
- if (! EQ (Vx_session_previous_id, Qnil) && STRINGP (Vx_session_previous_id))
+ if (! NILP (Vx_session_previous_id) && STRINGP (Vx_session_previous_id))
previous_id = SSDATA (Vx_session_previous_id);
/* Construct the path to the Emacs program. */
- if (! EQ (Vinvocation_directory, Qnil))
+ if (! NILP (Vinvocation_directory))
name_len += SBYTES (Vinvocation_directory);
name_len += SBYTES (Vinvocation_name);
emacs_program = xmalloc (name_len + 1);
char *z = emacs_program;
- if (! EQ (Vinvocation_directory, Qnil))
+ if (! NILP (Vinvocation_directory))
z = lispstpcpy (z, Vinvocation_directory);
lispstpcpy (z, Vinvocation_name);
Do not call this function yourself. */)
(Lisp_Object event)
{
- int kill_emacs = CONSP (event) && CONSP (XCDR (event))
- && EQ (Qt, XCAR (XCDR (event)));
+ bool kill_emacs = (CONSP (event) && CONSP (XCDR (event))
+ && EQ (Qt, XCAR (XCDR (event))));
/* Check doing_interact so that we don't do anything if someone called
this at the wrong time. */
if (doing_interact && ! kill_emacs)
{
- Bool cancel_shutdown = False;
-
- cancel_shutdown = ! EQ (call0 (intern ("emacs-session-save")), Qnil);
+ bool cancel_shutdown = ! NILP (call0 (intern ("emacs-session-save")));
SmcInteractDone (smc_conn, cancel_shutdown);
SmcSaveYourselfDone (smc_conn, True);
- doing_interact = False;
+ doing_interact = false;
}
else if (kill_emacs)
{
prevent. Fix this in next version. */
Fkill_emacs (Qnil);
-#if 0
+#if false
/* This will not be reached, but we want kill-emacs-hook to be run. */
SmcCloseConnection (smc_conn, 0, 0);
ice_connection_closed ();
switch (f->want_fullscreen)
{
case FULLSCREEN_BOTH:
- if (cur == FULLSCREEN_WIDTH || cur == FULLSCREEN_MAXIMIZED
- || cur == FULLSCREEN_HEIGHT)
- set_wm_state (frame, false,
- dpyinfo->Xatom_net_wm_state_maximized_horz,
- dpyinfo->Xatom_net_wm_state_maximized_vert);
- set_wm_state (frame, true,
- dpyinfo->Xatom_net_wm_state_fullscreen, None);
+ if (cur != FULLSCREEN_BOTH)
+ set_wm_state (frame, true, dpyinfo->Xatom_net_wm_state_fullscreen,
+ None);
break;
case FULLSCREEN_WIDTH:
if (cur == FULLSCREEN_BOTH || cur == FULLSCREEN_HEIGHT
Lisp_Object format,
Lisp_Object values);
-extern int x_handle_dnd_message (struct frame *,
- const XClientMessageEvent *,
- struct x_display_info *,
- struct input_event *);
+extern bool x_handle_dnd_message (struct frame *,
+ const XClientMessageEvent *,
+ struct x_display_info *,
+ struct input_event *);
extern int x_check_property_data (Lisp_Object);
extern void x_fill_property_data (Display *,
Lisp_Object,
/* Defined in xsmfns.c */
#ifdef HAVE_X_SM
extern void x_session_initialize (struct x_display_info *dpyinfo);
-extern int x_session_have_connection (void);
+extern bool x_session_have_connection (void);
extern void x_session_close (void);
#endif
+2014-12-27 Glenn Morris <rgm@gnu.org>
+
+ * automated/let-alist.el: Load dependency.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el
+ (python-shell-completion-native-interpreter-disabled-p-1): New
+ test.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el (python-shell-get-or-create-process-1)
+ (python-shell-get-or-create-process-2)
+ (python-shell-get-or-create-process-3): Remove tests.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ (python-shell-buffer-substring-9): New test.
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el (python-shell-buffer-substring-1)
+ (python-shell-buffer-substring-2, python-shell-buffer-substring-3)
+ (python-shell-buffer-substring-4, python-shell-buffer-substring-5)
+ (python-shell-buffer-substring-6, python-shell-buffer-substring-7)
+ (python-shell-buffer-substring-8)
+ (python-info-encoding-from-cookie-1)
+ (python-info-encoding-from-cookie-2)
+ (python-info-encoding-from-cookie-3)
+ (python-info-encoding-from-cookie-4)
+ (python-info-encoding-from-cookie-5)
+ (python-info-encoding-from-cookie-6)
+ (python-info-encoding-from-cookie-7, python-info-encoding-1)
+ (python-info-encoding-2): New tests.
+
+2014-12-27 Michael Albinus <michael.albinus@gmx.de>
+
+ * automated/tramp-tests.el (tramp-test17-insert-directory): Do not
+ expect a given order of "." and "..".
+
+2014-12-27 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el (python-indent-electric-colon-2)
+ (python-indent-electric-colon-3): New tests.
+
+2014-12-27 João Távora <joaotavora@gmail.com>
+
+ * automated/electric-tests.el (autowrapping-7): Tests for
+ tex-mode.
+
+2014-12-27 Glenn Morris <rgm@gnu.org>
+
+ * automated/flymake/warnpred/test.pl: Tweak format, since the
+ previous one seems to have stopped giving a warning with perl 5.20.1.
+
+2014-12-26 Fabián Ezequiel Gallina <fgallina@gnu.org>
+
+ * automated/python-tests.el (python-shell-get-process-name-1)
+ (python-shell-internal-get-process-name-1): Cleanup.
+ (python-shell-get-process-name-2)
+ (python-shell-internal-get-process-name-2): New tests.
+ (python-shell-calculate-command-1)
+ (python-shell-calculate-process-environment-3)
+ (python-shell-calculate-exec-path-2, python-shell-make-comint-1)
+ (python-shell-make-comint-2, python-shell-make-comint-4)
+ (python-shell-get-process-1, python-util-clone-local-variables-1):
+ Replace obsolete function and variable references with current.
+
2014-12-19 Artur Malabarba <bruce.connor.am@gmail.com>
* automated/let-alist.el: require `cl-lib'
2014-10-22 Noam Postavsky <npostavs@users.sourceforget.net>
- * test/automated/process-tests.el (process-test-quoted-batfile):
+ * automated/process-tests.el (process-test-quoted-batfile):
New test.
2014-10-20 Glenn Morris <rgm@gnu.org>
@arr = [1,2,3,4];
-@arr[1] = -1;
+my $b = @arr[1];
(cl-progv
(mapcar #'car bindings)
(mapcar #'cdr bindings)
- (self-insert-command 1))))
+ (call-interactively (key-binding `[,last-command-event])))))
(should (equal (buffer-substring-no-properties (point-min) (point-max))
expected-string))
(should (equal (point)
(skip-chars-backward "\"")
(mark-sexp -1)))
+(define-electric-pair-test autowrapping-7
+ "foo" "\"" :expected-string "``foo''" :expected-point 8
+ :modes '(tex-mode)
+ :fixture-fn #'(lambda ()
+ (electric-pair-mode 1)
+ (goto-char (point-max))
+ (skip-chars-backward "\"")
+ (mark-sexp -1)))
+
(provide 'electric-tests)
;;; electric-tests.el ends here
(require 'ert)
(require 'cl-lib)
+(require 'let-alist)
(ert-deftest let-alist-surface-test ()
"Tests basic macro expansion for `let-alist'."
'(nil 1 1 2 nil)))))
(ert-deftest let-alist-remove-dot ()
- "Remove firt dot from symbol."
+ "Remove first dot from symbol."
(should (equal (let-alist--remove-dot 'hi) 'hi))
(should (equal (let-alist--remove-dot '.hi) 'hi))
(should (equal (let-alist--remove-dot '..hi) '.hi)))
(python-tests-self-insert ":")
(should (= (current-indentation) 0))))
+(ert-deftest python-indent-electric-colon-2 ()
+ "Test indentation case for dedenter."
+ (python-tests-with-temp-buffer
+ "
+if do:
+ something()
+ else
+"
+ (python-tests-look-at "else")
+ (goto-char (line-end-position))
+ (python-tests-self-insert ":")
+ (should (= (current-indentation) 0))))
+
+(ert-deftest python-indent-electric-colon-3 ()
+ "Test indentation case for multi-line dedenter."
+ (python-tests-with-temp-buffer
+ "
+if do:
+ something()
+ elif (this
+ and
+ that)
+"
+ (python-tests-look-at "that)")
+ (goto-char (line-end-position))
+ (python-tests-self-insert ":")
+ (python-tests-look-at "elif" -1)
+ (should (= (current-indentation) 0))
+ (python-tests-look-at "and")
+ (should (= (current-indentation) 6))
+ (python-tests-look-at "that)")
+ (should (= (current-indentation) 6))))
+
(ert-deftest python-indent-region-1 ()
"Test indentation case from Bug#18843."
(let ((contents "
(defvar python-tests-shell-interpreter "python")
(ert-deftest python-shell-get-process-name-1 ()
- "Check process name calculation on different scenarios."
+ "Check process name calculation sans `buffer-file-name'."
(python-tests-with-temp-buffer
- ""
- (should (string= (python-shell-get-process-name nil)
- python-shell-buffer-name))
- ;; When the `current-buffer' doesn't have `buffer-file-name', even
- ;; if dedicated flag is non-nil should not include its name.
- (should (string= (python-shell-get-process-name t)
- python-shell-buffer-name)))
+ ""
+ (should (string= (python-shell-get-process-name nil)
+ python-shell-buffer-name))
+ (should (string= (python-shell-get-process-name t)
+ (format "%s[%s]" python-shell-buffer-name (buffer-name))))))
+
+(ert-deftest python-shell-get-process-name-2 ()
+ "Check process name calculation with `buffer-file-name'."
(python-tests-with-temp-file
- ""
- ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
- ;; should be respected.
- (should (string= (python-shell-get-process-name nil)
- python-shell-buffer-name))
- (should (string=
- (python-shell-get-process-name t)
- (format "%s[%s]" python-shell-buffer-name buffer-file-name)))))
+ ""
+ ;; `buffer-file-name' is non-nil but the dedicated flag is nil and
+ ;; should be respected.
+ (should (string= (python-shell-get-process-name nil)
+ python-shell-buffer-name))
+ (should (string=
+ (python-shell-get-process-name t)
+ (format "%s[%s]" python-shell-buffer-name (buffer-name))))))
(ert-deftest python-shell-internal-get-process-name-1 ()
- "Check the internal process name is config-unique."
- (let* ((python-shell-interpreter python-tests-shell-interpreter)
- (python-shell-interpreter-args "")
- (python-shell-prompt-regexp ">>> ")
- (python-shell-prompt-block-regexp "[.][.][.] ")
- (python-shell-setup-codes "")
- (python-shell-process-environment "")
- (python-shell-extra-pythonpaths "")
- (python-shell-exec-path "")
- (python-shell-virtualenv-path "")
- (expected (python-tests-with-temp-buffer
- "" (python-shell-internal-get-process-name))))
- ;; Same configurations should match.
- (should
- (string= expected
- (python-tests-with-temp-buffer
- "" (python-shell-internal-get-process-name))))
- (let ((python-shell-interpreter-args "-B"))
- ;; A minimal change should generate different names.
- (should
- (not (string=
- expected
- (python-tests-with-temp-buffer
- "" (python-shell-internal-get-process-name))))))))
-
-(ert-deftest python-shell-parse-command-1 ()
+ "Check the internal process name is buffer-unique sans `buffer-file-name'."
+ (python-tests-with-temp-buffer
+ ""
+ (should (string= (python-shell-internal-get-process-name)
+ (format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
+
+(ert-deftest python-shell-internal-get-process-name-2 ()
+ "Check the internal process name is buffer-unique with `buffer-file-name'."
+ (python-tests-with-temp-file
+ ""
+ (should (string= (python-shell-internal-get-process-name)
+ (format "%s[%s]" python-shell-internal-buffer-name (buffer-name))))))
+
+(ert-deftest python-shell-calculate-command-1 ()
"Check the command to execute is calculated correctly.
Using `python-shell-interpreter' and
`python-shell-interpreter-args'."
(format "%s %s"
python-shell-interpreter
python-shell-interpreter-args)
- (python-shell-parse-command)))))
+ (python-shell-calculate-command)))))
(ert-deftest python-shell-calculate-process-environment-1 ()
"Test `python-shell-process-environment' modification."
path-separator original-pythonpath)))))
(ert-deftest python-shell-calculate-process-environment-3 ()
- "Test `python-shell-virtualenv-path' modification."
+ "Test `python-shell-virtualenv-root' modification."
(let* ((original-path (or (getenv "PATH") ""))
- (python-shell-virtualenv-path
+ (python-shell-virtualenv-root
(directory-file-name user-emacs-directory))
(process-environment
(python-shell-calculate-process-environment)))
(should (not (getenv "PYTHONHOME")))
- (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-path))
+ (should (string= (getenv "VIRTUAL_ENV") python-shell-virtualenv-root))
(should (equal (getenv "PATH")
(format "%s/bin%s%s"
- python-shell-virtualenv-path
+ python-shell-virtualenv-root
path-separator original-path)))))
(ert-deftest python-shell-calculate-process-environment-4 ()
(ert-deftest python-shell-calculate-exec-path-2 ()
"Test `python-shell-exec-path' modification."
(let* ((original-exec-path exec-path)
- (python-shell-virtualenv-path
+ (python-shell-virtualenv-root
(directory-file-name (expand-file-name user-emacs-directory)))
(exec-path (python-shell-calculate-exec-path)))
(should (equal
exec-path
(append (cons
- (format "%s/bin" python-shell-virtualenv-path)
+ (format "%s/bin" python-shell-virtualenv-root)
original-exec-path))))))
(ert-deftest python-shell-make-comint-1 ()
(shell-buffer
(python-tests-with-temp-buffer
"" (python-shell-make-comint
- (python-shell-parse-command) proc-name)))
+ (python-shell-calculate-command) proc-name)))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
(shell-buffer
(python-tests-with-temp-buffer
"" (python-shell-make-comint
- (python-shell-parse-command) proc-name nil t)))
+ (python-shell-calculate-command) proc-name nil t)))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
(setenv "PYTHONSTARTUP" startup-file)
(python-tests-with-temp-buffer
"" (python-shell-make-comint
- (python-shell-parse-command) proc-name nil))))
+ (python-shell-calculate-command) proc-name nil))))
(process (get-buffer-process shell-buffer)))
(unwind-protect
(progn
(dedicated-proc-name (python-shell-get-process-name t))
(global-shell-buffer
(python-shell-make-comint
- (python-shell-parse-command) global-proc-name))
+ (python-shell-calculate-command) global-proc-name))
(dedicated-shell-buffer
(python-shell-make-comint
- (python-shell-parse-command) dedicated-proc-name))
+ (python-shell-calculate-command) dedicated-proc-name))
(global-process (get-buffer-process global-shell-buffer))
(dedicated-process (get-buffer-process dedicated-shell-buffer)))
(unwind-protect
(ignore-errors (kill-buffer global-shell-buffer))
(ignore-errors (kill-buffer dedicated-shell-buffer))))))
-(ert-deftest python-shell-get-or-create-process-1 ()
- "Check shell dedicated process creation."
- (skip-unless (executable-find python-tests-shell-interpreter))
- (python-tests-with-temp-file
- ""
- (let* ((cmd
- (concat (executable-find python-tests-shell-interpreter) " -i"))
- (use-dialog-box)
- (dedicated-process-name (python-shell-get-process-name t))
- (dedicated-process (python-shell-get-or-create-process cmd t))
- (dedicated-shell-buffer (process-buffer dedicated-process)))
- (unwind-protect
- (progn
- (set-process-query-on-exit-flag dedicated-process nil)
- ;; should be dedicated.
- (should (equal (process-name dedicated-process)
- dedicated-process-name))
- (kill-buffer dedicated-shell-buffer)
- ;; Check there are no processes for current buffer.
- (should (not (python-shell-get-process))))
- (ignore-errors (kill-buffer dedicated-shell-buffer))))))
-
-(ert-deftest python-shell-get-or-create-process-2 ()
- "Check shell global process creation."
- (skip-unless (executable-find python-tests-shell-interpreter))
- (python-tests-with-temp-file
- ""
- (let* ((cmd
- (concat (executable-find python-tests-shell-interpreter) " -i"))
- (use-dialog-box)
- (process-name (python-shell-get-process-name nil))
- (process (python-shell-get-or-create-process cmd))
- (shell-buffer (process-buffer process)))
- (unwind-protect
- (progn
- (set-process-query-on-exit-flag process nil)
- ;; should be global.
- (should (equal (process-name process) process-name))
- (kill-buffer shell-buffer)
- ;; Check there are no processes for current buffer.
- (should (not (python-shell-get-process))))
- (ignore-errors (kill-buffer shell-buffer))))))
-
-(ert-deftest python-shell-get-or-create-process-3 ()
- "Check shell dedicated/global process preference."
- (skip-unless (executable-find python-tests-shell-interpreter))
- (python-tests-with-temp-file
- ""
- (let* ((cmd
- (concat (executable-find python-tests-shell-interpreter) " -i"))
- (python-shell-interpreter python-tests-shell-interpreter)
- (use-dialog-box)
- (dedicated-process-name (python-shell-get-process-name t))
- (global-process)
- (dedicated-process))
- (progn
- ;; Create global process
- (run-python cmd nil)
- (setq global-process (get-buffer-process "*Python*"))
- (should global-process)
- (set-process-query-on-exit-flag global-process nil)
- ;; Create dedicated process
- (run-python cmd t)
- (setq dedicated-process (get-process dedicated-process-name))
- (should dedicated-process)
- (set-process-query-on-exit-flag dedicated-process nil)
- ;; Prefer dedicated.
- (should (equal (python-shell-get-or-create-process)
- dedicated-process))
- ;; Kill the dedicated so the global takes over.
- (kill-buffer (process-buffer dedicated-process))
- ;; Detect global.
- (should (equal (python-shell-get-or-create-process) global-process))
- ;; Kill the global.
- (kill-buffer (process-buffer global-process))
- ;; Check there are no processes for current buffer.
- (should (not (python-shell-get-process)))))))
-
(ert-deftest python-shell-internal-get-or-create-process-1 ()
"Check internal shell process creation fallback."
(skip-unless (executable-find python-tests-shell-interpreter))
"^\\(o\\.t \\|\\)")))
(ignore-errors (delete-file startup-file)))))
+(ert-deftest python-shell-buffer-substring-1 ()
+ "Selecting a substring of the whole buffer must match its contents."
+ (python-tests-with-temp-buffer
+ "
+class Foo(models.Model):
+ pass
+
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (buffer-string)
+ (python-shell-buffer-substring (point-min) (point-max))))))
+
+(ert-deftest python-shell-buffer-substring-2 ()
+ "Main block should be removed if NOMAIN is non-nil."
+ (python-tests-with-temp-buffer
+ "
+class Foo(models.Model):
+ pass
+
+class Bar(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+"
+ (should (string= (python-shell-buffer-substring (point-min) (point-max) t)
+ "
+class Foo(models.Model):
+ pass
+
+class Bar(models.Model):
+ pass
+
+
+
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-3 ()
+ "Main block should be removed if NOMAIN is non-nil."
+ (python-tests-with-temp-buffer
+ "
+class Foo(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring (point-min) (point-max) t)
+ "
+class Foo(models.Model):
+ pass
+
+
+
+
+
+class Bar(models.Model):
+ pass
+"))))
+
+(ert-deftest python-shell-buffer-substring-4 ()
+ "Coding cookie should be added for substrings."
+ (python-tests-with-temp-buffer
+ "# coding: latin-1
+
+class Foo(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring
+ (python-tests-look-at "class Foo(models.Model):")
+ (progn (python-nav-forward-sexp) (point)))
+ "# -*- coding: latin-1 -*-
+
+class Foo(models.Model):
+ pass"))))
+
+(ert-deftest python-shell-buffer-substring-5 ()
+ "The proper amount of blank lines is added for a substring."
+ (python-tests-with-temp-buffer
+ "# coding: latin-1
+
+class Foo(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring
+ (python-tests-look-at "class Bar(models.Model):")
+ (progn (python-nav-forward-sexp) (point)))
+ "# -*- coding: latin-1 -*-
+
+
+
+
+
+
+
+
+class Bar(models.Model):
+ pass"))))
+
+(ert-deftest python-shell-buffer-substring-6 ()
+ "Handle substring with coding cookie in the second line."
+ (python-tests-with-temp-buffer
+ "
+# coding: latin-1
+
+class Foo(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring
+ (python-tests-look-at "# coding: latin-1")
+ (python-tests-look-at "if __name__ == \"__main__\":"))
+ "# -*- coding: latin-1 -*-
+
+
+class Foo(models.Model):
+ pass
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-7 ()
+ "Ensure first coding cookie gets precedence."
+ (python-tests-with-temp-buffer
+ "# coding: utf-8
+# coding: latin-1
+
+class Foo(models.Model):
+ pass
+
+if __name__ == \"__main__\":
+ foo = Foo()
+ print (foo)
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring
+ (python-tests-look-at "# coding: latin-1")
+ (python-tests-look-at "if __name__ == \"__main__\":"))
+ "# -*- coding: utf-8 -*-
+
+
+class Foo(models.Model):
+ pass
+
+"))))
+
+(ert-deftest python-shell-buffer-substring-8 ()
+ "Ensure first coding cookie gets precedence when sending whole buffer."
+ (python-tests-with-temp-buffer
+ "# coding: utf-8
+# coding: latin-1
+
+class Foo(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring (point-min) (point-max))
+ "# coding: utf-8
+
+
+class Foo(models.Model):
+ pass
+"))))
+
+(ert-deftest python-shell-buffer-substring-9 ()
+ "Check substring starting from `point-min'."
+ (python-tests-with-temp-buffer
+ "# coding: utf-8
+
+class Foo(models.Model):
+ pass
+
+class Bar(models.Model):
+ pass
+"
+ (should (string= (python-shell-buffer-substring
+ (point-min)
+ (python-tests-look-at "class Bar(models.Model):"))
+ "# coding: utf-8
+
+class Foo(models.Model):
+ pass
+
+"))))
+
\f
;;; Shell completion
+(ert-deftest python-shell-completion-native-interpreter-disabled-p-1 ()
+ (let* ((python-shell-completion-native-disabled-interpreters (list "pypy"))
+ (python-shell-interpreter "/some/path/to/bin/pypy"))
+ (should (python-shell-completion-native-interpreter-disabled-p))))
+
+
+
\f
;;; PDB Track integration
(forward-line 1)
(should (python-info-current-line-empty-p))))
+(ert-deftest python-info-encoding-from-cookie-1 ()
+ "Should detect it on first line."
+ (python-tests-with-temp-buffer
+ "# coding=latin-1
+
+foo = True # another comment
+"
+ (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-2 ()
+ "Should detect it on second line."
+ (python-tests-with-temp-buffer
+ "
+# coding=latin-1
+
+foo = True # another comment
+"
+ (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-3 ()
+ "Should not be detected on third line (and following ones)."
+ (python-tests-with-temp-buffer
+ "
+
+# coding=latin-1
+foo = True # another comment
+"
+ (should (not (python-info-encoding-from-cookie)))))
+
+(ert-deftest python-info-encoding-from-cookie-4 ()
+ "Should detect Emacs style."
+ (python-tests-with-temp-buffer
+ "# -*- coding: latin-1 -*-
+
+foo = True # another comment"
+ (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-5 ()
+ "Should detect Vim style."
+ (python-tests-with-temp-buffer
+ "# vim: set fileencoding=latin-1 :
+
+foo = True # another comment"
+ (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-from-cookie-6 ()
+ "First cookie wins."
+ (python-tests-with-temp-buffer
+ "# -*- coding: iso-8859-1 -*-
+# vim: set fileencoding=latin-1 :
+
+foo = True # another comment"
+ (should (eq (python-info-encoding-from-cookie) 'iso-8859-1))))
+
+(ert-deftest python-info-encoding-from-cookie-7 ()
+ "First cookie wins."
+ (python-tests-with-temp-buffer
+ "# vim: set fileencoding=latin-1 :
+# -*- coding: iso-8859-1 -*-
+
+foo = True # another comment"
+ (should (eq (python-info-encoding-from-cookie) 'latin-1))))
+
+(ert-deftest python-info-encoding-1 ()
+ "Should return the detected encoding from cookie."
+ (python-tests-with-temp-buffer
+ "# vim: set fileencoding=latin-1 :
+
+foo = True # another comment"
+ (should (eq (python-info-encoding) 'latin-1))))
+
+(ert-deftest python-info-encoding-2 ()
+ "Should default to utf-8."
+ (python-tests-with-temp-buffer
+ "# No encoding for you
+
+foo = True # another comment"
+ (should (eq (python-info-encoding) 'utf-8))))
+
\f
;;; Utility functions
. "from IPython.core.completerlib import module_completion")
(python-shell-completion-string-code
. "';'.join(get_ipython().Completer.all_completions('''%s'''))\n")
- (python-shell-virtualenv-path
+ (python-shell-virtualenv-root
. "/home/user/.virtualenvs/project"))))
(with-current-buffer buffer
(kill-all-local-variables)
(goto-char (point-min))
(should
(looking-at-p
- "\\(total.+[[:digit:]]+\n\\)?.+ \\.\n.+ \\.\\.\n.+ foo$"))))
+ (concat
+ ;; There might be a summary line.
+ "\\(total.+[[:digit:]]+\n\\)?"
+ ;; We don't know in which order "." and ".." appear.
+ "\\(.+ \\.?\\.\n\\)\\{2\\}"
+ ".+ foo$")))))
(ignore-errors (delete-directory tmp-name1 'recursive)))))
(ert-deftest tramp-test18-file-attributes ()
var e = 100500,
+ 1;
+function test ()
+{
+ return /[/]/.test ('/') // (bug#19397)
+}
+
var f = bar('/protocols/')
baz();