Commit 3eca4629 authored by Paul Eggert's avatar Paul Eggert

Merge from mainline.

parents 01e0b5ad d32df629
......@@ -212,6 +212,236 @@ Root must be the root of an Emacs source tree."
"\\\\def\\\\year{")
"\\([0-9]\\{4\\}\\)}.+%.+copyright year"))))))
;;; Various bits of magic for generating the web manuals
(defun make-manuals (root)
"Generate the web manuals for the Emacs webpage."
(interactive "DEmacs root directory: ")
(let* ((dest (expand-file-name "manual" root))
(html-node-dir (expand-file-name "html_node" dest))
(html-mono-dir (expand-file-name "html_mono" dest))
(txt-dir (expand-file-name "text" dest))
(dvi-dir (expand-file-name "dvi" dest))
(ps-dir (expand-file-name "ps" dest)))
(when (file-directory-p dest)
(if (y-or-n-p (format "Directory %s exists, delete it first?" dest))
(delete-directory dest t)
(error "Aborted")))
(make-directory dest)
(make-directory html-node-dir)
(make-directory html-mono-dir)
(make-directory txt-dir)
(make-directory dvi-dir)
(make-directory ps-dir)
;; Emacs manual
(let ((texi (expand-file-name "doc/emacs/emacs.texi" root)))
(manual-html-node texi (expand-file-name "emacs" html-node-dir))
(manual-html-mono texi (expand-file-name "emacs.html" html-mono-dir))
(manual-txt texi (expand-file-name "emacs.txt" txt-dir))
(manual-pdf texi (expand-file-name "emacs.pdf" dest))
(manual-dvi texi (expand-file-name "emacs.dvi" dvi-dir)
(expand-file-name "emacs.ps" ps-dir)))
;; Lisp manual
(let ((texi (expand-file-name "doc/lispref/elisp.texi" root)))
(manual-html-node texi (expand-file-name "elisp" html-node-dir))
(manual-html-mono texi (expand-file-name "elisp.html" html-mono-dir))
(manual-txt texi (expand-file-name "elisp.txt" txt-dir))
(manual-pdf texi (expand-file-name "elisp.pdf" dest))
(manual-dvi texi (expand-file-name "elisp.dvi" dvi-dir)
(expand-file-name "elisp.ps" ps-dir)))
(message "Manuals created in %s" dest)))
(defconst manual-doctype-string
"<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\"
\"http://www.w3.org/TR/html4/loose.dtd\">\n\n")
(defconst manual-meta-string
"<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\">
<link rev=\"made\" href=\"mailto:webmasters@gnu.org\">
<link rel=\"icon\" type=\"image/png\" href=\"/graphics/gnu-head-mini.png\">
<meta name=\"ICBM\" content=\"42.256233,-71.006581\">
<meta name=\"DC.title\" content=\"gnu.org\">\n\n")
(defconst manual-style-string "<style type=\"text/css\">
@import url('/style.css');\n</style>\n")
(defun manual-html-mono (texi-file dest)
"Run Makeinfo on TEXI-FILE, emitting mono HTML output to DEST.
This function also edits the HTML files so that they validate as
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
the @import directive."
(call-process "makeinfo" nil nil nil
"--html" "--no-split" texi-file "-o" dest)
(with-temp-buffer
(insert-file-contents dest)
(setq buffer-file-name dest)
(manual-html-fix-headers)
(manual-html-fix-index-1)
(manual-html-fix-index-2 t)
(manual-html-fix-node-div)
(goto-char (point-max))
(re-search-backward "</body>[\n \t]*</html>")
(insert "</div>\n\n")
(save-buffer)))
(defun manual-html-node (texi-file dir)
"Run Makeinfo on TEXI-FILE, emitting per-node HTML output to DIR.
This function also edits the HTML files so that they validate as
HTML 4.01 Transitional, and pulls in the gnu.org stylesheet using
the @import directive."
(unless (file-exists-p texi-file)
(error "Manual file %s not found" texi-file))
(call-process "makeinfo" nil nil nil
"--html" texi-file "-o" dir)
;; Loop through the node files, fixing them up.
(dolist (f (directory-files dir nil "\\.html\\'"))
(let (opoint)
(with-temp-buffer
(insert-file-contents (expand-file-name f dir))
(setq buffer-file-name (expand-file-name f dir))
(if (looking-at "<meta http-equiv")
;; Ignore those HTML files that are just redirects.
(set-buffer-modified-p nil)
(manual-html-fix-headers)
(if (equal f "index.html")
(let (copyright-text)
(manual-html-fix-index-1)
;; Move copyright notice to the end.
(re-search-forward "[ \t]*<p>Copyright &copy;")
(setq opoint (match-beginning 0))
(re-search-forward "</blockquote>")
(setq copyright-text (buffer-substring opoint (point)))
(delete-region opoint (point))
(manual-html-fix-index-2)
(insert copyright-text "\n</div>\n"))
;; For normal nodes, give the header div a blue bg.
(manual-html-fix-node-div))
(save-buffer))))))
(defun manual-txt (texi-file dest)
"Run Makeinfo on TEXI-FILE, emitting plaintext output to DEST."
(call-process "makeinfo" nil nil nil
"--plaintext" "--no-split" texi-file "-o" dest)
(shell-command (concat "gzip -c " dest " > " (concat dest ".gz"))))
(defun manual-pdf (texi-file dest)
"Run texi2pdf on TEXI-FILE, emitting plaintext output to DEST."
(call-process "texi2pdf" nil nil nil texi-file "-o" dest))
(defun manual-dvi (texi-file dest ps-dest)
"Run texi2dvi on TEXI-FILE, emitting dvi output to DEST.
Also generate postscript output in PS-DEST."
(call-process "texi2dvi" nil nil nil texi-file "-o" dest)
(call-process "dvips" nil nil nil dest "-o" ps-dest)
(call-process "gzip" nil nil nil dest)
(call-process "gzip" nil nil nil ps-dest))
(defun manual-html-fix-headers ()
"Fix up HTML headers for the Emacs manual in the current buffer."
(let (opoint)
(insert manual-doctype-string)
(search-forward "<head>\n")
(insert manual-meta-string)
(search-forward "<meta")
(setq opoint (match-beginning 0))
(re-search-forward "<!--")
(goto-char (match-beginning 0))
(delete-region opoint (point))
(insert manual-style-string)
(search-forward "<meta http-equiv=\"Content-Style")
(setq opoint (match-beginning 0))
(search-forward "</head>")
(delete-region opoint (match-beginning 0))))
(defun manual-html-fix-node-div ()
"Fix up HTML \"node\" divs in the current buffer."
(let (opoint div-end)
(while (search-forward "<div class=\"node\">" nil t)
(replace-match
"<div class=\"node\" style=\"background-color:#DDDDFF\">"
t t)
(setq opoint (point))
(re-search-forward "</div>")
(setq div-end (match-beginning 0))
(goto-char opoint)
(if (search-forward "<hr>" div-end 'move)
(replace-match "" t t)))))
(defun manual-html-fix-index-1 ()
(let (opoint)
(re-search-forward "<body>\n\\(<h1 class=\"settitle\\)")
(setq opoint (match-beginning 1))
(search-forward "<h2 class=\"unnumbered")
(goto-char (match-beginning 0))
(delete-region opoint (point))
(insert "<div id=\"content\" class=\"inner\">\n\n")))
(defun manual-html-fix-index-2 (&optional table-workaround)
"Replace the index list in the current buffer with a HTML table."
(let (done open-td tag desc)
;; Convert the list that Makeinfo made into a table.
(search-forward "<ul class=\"menu\">")
(replace-match "<table style=\"float:left\" width=\"100%\">")
(forward-line 1)
(while (not done)
(cond
((or (looking-at "<li>\\(<a.+</a>\\):[ \t]+\\(.*\\)$")
(looking-at "<li>\\(<a.+</a>\\)$"))
(setq tag (match-string 1))
(setq desc (match-string 2))
(replace-match "" t t)
(when open-td
(save-excursion
(forward-char -1)
(skip-chars-backward " ")
(delete-region (point) (line-end-position))
(insert "</td>\n </tr>")))
(insert " <tr>\n ")
(if table-workaround
;; This works around a Firefox bug in the mono file.
(insert "<td bgcolor=\"white\">")
(insert "<td>"))
(insert tag "</td>\n <td>" (or desc ""))
(setq open-td t))
((eq (char-after) ?\n)
(delete-char 1)
;; Negate the following `forward-line'.
(forward-line -1))
((looking-at "<!-- ")
(search-forward "-->"))
((looking-at "<p>[- ]*The Detailed Node Listing[- \n]*")
(replace-match " </td></tr></table>\n
<h3>Detailed Node Listing</h3>\n\n" t t)
(search-forward "<p>")
(search-forward "<p>")
(goto-char (match-beginning 0))
(skip-chars-backward "\n ")
(setq open-td nil)
(insert "</p>\n\n<table style=\"float:left\" width=\"100%\">"))
((looking-at "</li></ul>")
(replace-match "" t t))
((looking-at "<p>")
(replace-match "" t t)
(when open-td
(insert " </td></tr>")
(setq open-td nil))
(insert " <tr>
<th colspan=\"2\" align=\"left\" style=\"text-align:left\">")
(re-search-forward "</p>[ \t\n]*<ul class=\"menu\">")
(replace-match " </th></tr>"))
((looking-at "[ \t]*</ul>[ \t]*$")
(replace-match
(if open-td
" </td></tr>\n</table>"
"</table>") t t)
(setq done t))
(t
(if (eobp)
(error "Parse error in %s" f))
(unless open-td
(setq done t))))
(forward-line 1))))
(provide 'admin)
;;; admin.el ends here
NOTES ON THE EMACS PACKAGE ARCHIVE
The GNU Emacs package archive, at elpa.gnu.org, is managed using Bzr.
The Bzr branch is hosted on Savannah, and you can check it out with
The GNU Emacs package archive, at elpa.gnu.org, is managed using a Bzr
branch named "elpa", hosted on Savannah. To check it out:
bzr branch bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa elpa
cd elpa
echo "public_branch = bzr+ssh://USER@bzr.savannah.gnu.org/emacs/elpa" >> .bzr/branch/branch.conf
bzr bind bzr+ssh://USERNAME@bzr.savannah.gnu.org/emacs/elpa
[create task branch for edits, etc.]
Changes made to this branch propagate to elpa.gnu.org as follows.
Changes to this branch propagate to elpa.gnu.org in a semi-manual way.
There exists a copy of the elpa branch on that machine. Someone with
access must log in, pull the latest changes from Savannah, and run a
"deployment" script that generates the content at the web-visible
location http://elpa.gnu.org/packages.
access logs in, pulls the latest changes from Savannah, and runs a
"deployment" script. This script (which is itself kept in the Bzr
branch) generates the content visible at http://elpa.gnu.org/packages.
The reason things are set up this way, instead of using the package
upload utilities in package-x.el, is so that Emacs hackers can easily
edit the contents of the Savannah "elpa" branch, with the aid of
version control. (For instance, multi-file packages are stored on the
Bzr branch in source form, not as tarfiles.) Because deployment is a
semi-manual process, this allows us some flexibility in making changes
to the branch on Savannah. Furthermore, one can use the elpa branch
to deploy a "local" copy of the package archive, for testing.
The reason we set things up this way, instead of using the package
upload commands in package-x.el, is to let Emacs hackers conveniently
edit the contents of the "elpa" branch. (In particular, multi-file
packages are stored on the branch in source form, not as tarfiles.)
For details on how to use the elpa branch, see that README file in
that branch.
It is easy to use the elpa branch to deploy a "local" copy of the
package archive. For details, see the README file in the elpa branch.
2011-03-12 Eli Zaretskii <eliz@gnu.org>
* msdog.texi (Windows HOME): Fix the wording to clarify how Emacs sets
HOME on Windows and where it looks for init files. (Bug#8221)
2011-03-10 Eli Zaretskii <eliz@gnu.org>
* search.texi (Regexp Example):
......
......@@ -404,36 +404,45 @@ names, which might cause misalignment of columns in Dired display.
@dfn{user-specific application data directory}. The actual location
depends on your Windows version and system configuration; typical values
are @file{C:\Documents and Settings\@var{username}\Application Data} on
Windows 2K/XP and later, and either @file{C:\WINDOWS\Application Data}
Windows 2K/XP/2K3, @file{C:\Users\@var{username}\AppData\Roaming} on
Windows Vista/7/2K8, and either @file{C:\WINDOWS\Application Data}
or @file{C:\WINDOWS\Profiles\@var{username}\Application Data} on the
older Windows 9X/ME systems.
@code{HOME} can also be set in the system registry, for details see
older Windows 9X/ME systems. If this directory does not exist or
cannot be accessed, Emacs falls back to @file{C:\} as the default
value of @code{HOME}.
You can override this default value of @code{HOME} by explicitly
setting the environment variable @env{HOME} to point to any directory
on your system. @env{HOME} can be set either from the command shell
prompt or from the @samp{My Computer}s @samp{Properties} dialog.
@code{HOME} can also be set in the system registry, for details see
@ref{MS-Windows Registry}.
@cindex init file @file{.emacs} on MS-Windows
The home directory is where your init file @file{.emacs} is stored.
When Emacs starts, it first checks whether the environment variable
@env{HOME} is set. If it is, it looks for the init file in the
directory pointed by @env{HOME}. If @env{HOME} is not defined, Emacs
checks for an existing @file{.emacs} file in @file{C:\}, the root
directory of drive @file{C:}@footnote{
The check in @file{C:\} is for compatibility with older versions of Emacs,
which didn't check the application data directory.
}. If there's no such file in @file{C:\}, Emacs next uses the Windows
system calls to find out the exact location of your application data
directory. If that system call fails, Emacs falls back to @file{C:\}.
Whatever the final place is, Emacs sets the value of the @env{HOME}
environment variable to point to it, and it will use that location for
other files and directories it normally creates in the user's home
directory.
For compatibility with older versions of Emacs@footnote{
Older versions of Emacs didn't check the application data directory.
}, if there is a file named @file{.emacs} in @file{C:\}, the root
directory of drive @file{C:}, and @env{HOME} is set neither in the
environment nor in the Registry, Emacs will treat @file{C:\} as the
default @code{HOME} location, and will not look in the application
data directory, even if it exists. Note that only @file{.emacs} is
looked for in @file{C:\}; the older name @file{_emacs} (see below) is
not. This use of @file{C:\.emacs} to define @code{HOME} is
deprecated.
Whatever the final place is, Emacs sets the internal value of the
@env{HOME} environment variable to point to it, and it will use that
location for other files and directories it normally looks for or
creates in the user's home directory.
You can always find out where Emacs thinks is your home directory's
location by typing @kbd{C-x d ~/ @key{RET}}. This should present the
list of files in the home directory, and show its full name on the
first line. Likewise, to visit your init file, type @kbd{C-x C-f
~/.emacs @key{RET}}.
~/.emacs @key{RET}} (assuming the file's name is @file{.emacs}).
@cindex init file @file{.emacs} on MS-Windows
The home directory is where your init file is stored. It can have
any name mentioned in @ref{Init File}.
@cindex @file{_emacs} init file, MS-Windows
Because MS-DOS does not allow file names with leading dots, and
......
2011-03-12 Teodor Zlatanov <tzz@lifelogs.com>
* auth.texi (Help for developers): Update docs to explain that the
:save-function will only run the first time.
2011-03-12 Glenn Morris <rgm@gnu.org>
* Makefile.in (emacs-faq.html): Fix some more cross-refs.
(emacs-faq.text): New target.
(clean): Add emacs-faq.
2011-03-12 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.2.1.
* trampver.texi: Update release number.
2011-03-11 Glenn Morris <rgm@gnu.org>
* Makefile.in (HTML_TARGETS): New.
(clean): Delete $HTML_TARGETS.
(emacs-faq.html): New, for use with the gnu.org Emacs webpage.
2011-03-08 Teodor Zlatanov <tzz@lifelogs.com>
* auth.texi (Help for developers): Show example of using
......
......@@ -197,6 +197,8 @@ PDF_TARGETS = \
widget.pdf \
woman.pdf
HTML_TARGETS = emacs-faq.html
TEXI2DVI = texi2dvi
TEXI2PDF = texi2pdf
......@@ -401,6 +403,15 @@ faq.dvi: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2DVI) $<
faq.pdf: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(ENVADD) $(TEXI2PDF) $<
## This is the name used on the Emacs web-page.
## sed fixes up links to point to split version of the manual.
emacs-faq.html: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(MAKEINFO) $(MAKEINFO_OPTS) --no-split \
--css-ref='/layout.css' --html -o $@ $<
sed -i -e 's|a href="\([a-z]*\)\.html#\([^"]*\)"|a href="manual/html_node/\1/\2.html"|g' \
-e 's|/Top\.html|/|g' $@
emacs-faq.text: ${srcdir}/faq.texi $(emacsdir)/emacsver.texi
$(MAKEINFO) $(MAKEINFO_OPTS) --plaintext -o $@ $<
flymake : $(infodir)/flymake
$(infodir)/flymake: flymake.texi
......@@ -684,7 +695,7 @@ mostlyclean:
rm -f gnustmp.*
clean: mostlyclean
rm -f $(DVI_TARGETS) $(PDF_TARGETS)
rm -f $(DVI_TARGETS) $(PDF_TARGETS) $(HTML_TARGETS) emacs-faq.text
distclean: clean
# rm -f Makefile
......
......@@ -289,11 +289,21 @@ Later, after a successful login, @code{nnimal.el} calls the
(funcall (nth 2 credentials)))
@end example
Which will work whether the @code{:save-function} was provided or not.
This will work whether the @code{:save-function} was provided or not.
@code{:save-function} will be provided only when a new entry was
created, so this effectively says ``after a successful login, save the
authentication information we just used, if it was newly created.''
After the first time it's called, the @code{:save-function} will not
run again (but it will log something if you have set
@code{auth-source-debug} to @code{'trivia}). This is so it won't ask
the same question again, which is annoying. This is so it won't ask
the same question again, which is annoying. This is so it won't ask
the same question again, which is annoying.
So the responsibility of the API user that specified @code{:create t}
is to call the @code{:save-function} if it's provided.
@defun auth-source-delete SPEC
TODO: how to include docstring?
......
......@@ -8,7 +8,7 @@
@c In the Tramp CVS, the version number is auto-frobbed from
@c configure.ac, so you should edit that file and run
@c "autoconf && ./configure" to change the version number.
@set trampver 2.2.1-pre
@set trampver 2.2.1
@c Other flags from configuration
@set instprefix /usr/local
......
2011-03-13 Juanma Barranquero <lekktu@gmail.com>
* help.el (describe-mode): Link to the mode's definition (bug#8185).
2011-03-12 Stefan Monnier <monnier@iro.umontreal.ca>
* ebuff-menu.el (electric-buffer-menu-mode-map): Move initialization
into declaration. Remove redundant and harmful binding.
2011-03-12 Eli Zaretskii <eliz@gnu.org>
* files.el (file-ownership-preserved-p): Pass `integer' as an
explicit 2nd argument to `file-attributes'. If the file's owner
is the Administrators group on Windows, and the current user is
Administrator, consider that a match.
* server.el (server-ensure-safe-dir): Consider server directory
safe on MS-Windows if its owner is the Administrators group while
the current Emacs user is Administrator. Use `=' to compare
numerical UIDs, since they could be integers or floats.
2011-03-12 Juanma Barranquero <lekktu@gmail.com>
* vc/vc-bzr.el (vc-bzr-state): Handle bzr 2.3.0 (follow-up to bug#8170).
2011-03-12 Michael Albinus <michael.albinus@gmx.de>
Sync with Tramp 2.2.1.
* net/tramp-sh.el (tramp-methods): Exchange "%k" marker with options.
* net/trampver.el: Update release number.
2011-03-12 Stefan Monnier <monnier@iro.umontreal.ca>
* progmodes/compile.el (compilation--previous-directory): Fix up
various nil/dead-marker mismatches (bug#8014).
(compilation-directory-properties, compilation-error-properties):
Don't call it at a position past the one we're about to change.
* emacs-lisp/bytecomp.el (byte-compile-make-obsolete-variable):
Disable obsolescence warnings in the file that declares it.
2011-03-11 Ken Manheimer <ken.manheimer@gmail.com>
* allout-widgets.el (allout-widgets-tally): Initialize
allout-widgets-tally as a hash table rather than nil to prevent
mode-line redisplay warnings.
Also, clarify the module description and fix a comment typo.
2011-03-11 Juanma Barranquero <lekktu@gmail.com>
* help-fns.el (describe-variable): Don't complete keywords.
......@@ -47,7 +97,7 @@
preserves the existing header prefix, rebulleting it if necessary,
rather than replacing it. This is necessary for proper operation
of cooperative addons like allout-widgets.
(allout-make-topic-prefix) (allout-rebullet-heading): Change
(allout-make-topic-prefix, allout-rebullet-heading): Change
SOLICIT arg to INSTEAD, and interpret additionally a string value
as alternate bullet to be used, instead of prompting the user for
a bullet character.
......@@ -883,7 +933,7 @@
2011-02-17 Ken Manheimer <ken.manheimer@gmail.com>
* lisp/allout-widgets.el (allout-widgets-icons-light-subdir)
(allout-widgets-icons-dark-subdir): Track relocations of icons
(allout-widgets-icons-dark-subdir): Track relocations of icons.
* lisp/allout.el: Remove commentary about remove encryption
passphrase mnemonic support and verification.
(allout-encrypt-string): Recognize epg failure to decrypt gpg2
......@@ -1260,10 +1310,9 @@
(allout-auto-activation-helper, allout-setup): New autoloads
implement new custom set procedure for allout-auto-activation.
Also, explicitly invoke
(allout-setup) after allout-auto-activation is custom-defined, to
effect the settings in emacs sessions besides the few where
allout-auto-activation customization is donea.
Also, explicitly invoke (allout-setup) after allout-auto-activation
is custom-defined, to affect the settings in emacs sessions besides
the few where allout-auto-activation customization is done.
(allout-auto-activation): Use allout-auto-activation-helper to
:set. Revise the docstring.
(allout-init): Reduce functionality to just customizing
......
;; allout-widgets.el --- Show allout outline structure with graphical widgets.
;; allout-widgets.el --- Visually highlight allout outline structure.
;; Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011 Ken Manheimer
......@@ -238,7 +238,7 @@ buffer, and tracking increases as new widgets are added and
decreases as obsolete widgets are garbage collected."
:type 'boolean
:group 'allout-widgets-developer)
(defvar allout-widgets-tally nil
(defvar allout-widgets-tally (make-hash-table :test 'eq :weakness 'key)
"Hash-table of existing allout widgets, for debugging.
Table is maintained iff `allout-widgets-maintain-tally' is non-nil.
......
......@@ -34,7 +34,56 @@
;; this depends on the format of list-buffers (from src/buffer.c) and
;; on stuff in lisp/buff-menu.el
(defvar electric-buffer-menu-mode-map nil)
(defvar electric-buffer-menu-mode-map
(let ((map (make-keymap)))
(fillarray (car (cdr map)) 'Electric-buffer-menu-undefined)
(define-key map "\e" nil)
(define-key map "\C-z" 'suspend-frame)
(define-key map "v" 'Electric-buffer-menu-mode-view-buffer)
(define-key map (char-to-string help-char) 'Helper-help)
(define-key map "?" 'Helper-describe-bindings)
(define-key map "\C-c" nil)
(define-key map "\C-c\C-c" 'Electric-buffer-menu-quit)
(define-key map "\C-]" 'Electric-buffer-menu-quit)
(define-key map "q" 'Electric-buffer-menu-quit)
(define-key map " " 'Electric-buffer-menu-select)
(define-key map "\C-m" 'Electric-buffer-menu-select)
(define-key map "\C-l" 'recenter)
(define-key map "s" 'Buffer-menu-save)
(define-key map "d" 'Buffer-menu-delete)
(define-key map "k" 'Buffer-menu-delete)
(define-key map "\C-d" 'Buffer-menu-delete-backwards)
;; (define-key map "\C-k" 'Buffer-menu-delete)
(define-key map "\177" 'Buffer-menu-backup-unmark)
(define-key map "~" 'Buffer-menu-not-modified)
(define-key map "u" 'Buffer-menu-unmark)
(let ((i ?0))
(while (<= i ?9)
(define-key map (char-to-string i) 'digit-argument)
(define-key map (concat "\e" (char-to-string i)) 'digit-argument)
(setq i (1+ i))))
(define-key map "-" 'negative-argument)
(define-key map "\e-" 'negative-argument)
(define-key map "m" 'Buffer-menu-mark)
(define-key map "\C-u" 'universal-argument)
(define-key map "\C-p" 'previous-line)
(define-key map "\C-n" 'next-line)
(define-key map "p" 'previous-line)
(define-key map "n" 'next-line)
(define-key map "\C-v" 'scroll-up)
(define-key map "\ev" 'scroll-down)
(define-key map ">" 'scroll-right)
(define-key map "<" 'scroll-left)
(define-key map "\e\C-v" 'scroll-other-window)
(define-key map "\e>" 'end-of-buffer)
(define-key map "\e<" 'beginning-of-buffer)
(define-key map "\e\e" nil)
(define-key map "\e\e\e" 'Electric-buffer-menu-quit)
;; This binding prevents the "escape => ESC" function-key-map mapping from
;; kicking in!
;; (define-key map [escape escape escape] 'Electric-buffer-menu-quit)
(define-key map [mouse-2] 'Electric-buffer-menu-mouse-select)
map))
(defvar electric-buffer-menu-mode-hook nil
"Normal hook run by `electric-buffer-list'.")
......@@ -167,55 +216,7 @@ Entry to this mode via command `electric-buffer-list' calls the value of
;; generally the same as Buffer-menu-mode-map
;; (except we don't indirect to global-map)
(put 'Electric-buffer-menu-undefined 'suppress-keymap t)
(if electric-buffer-menu-mode-map
nil
(let ((map (make-keymap)))
(fillarray (car (cdr map)) 'Electric-buffer-menu-undefined)
(define-key map "\e" nil)
(define-key map "\C-z" 'suspend-frame)
(define-key map "v" 'Electric-buffer-menu-mode-view-buffer)
(define-key map (char-to-string help-char) 'Helper-help)
(define-key map "?" 'Helper-describe-bindings)
(define-key map "\C-c" nil)
(define-key map "\C-c\C-c" 'Electric-buffer-menu-quit)
(define-key map "\C-]" 'Electric-buffer-menu-quit)
(define-key map "q" 'Electric-buffer-menu-quit)
(define-key map " " 'Electric-buffer-menu-select)
(define-key map "\C-m" 'Electric-buffer-menu-select)
(define-key map "\C-l" 'recenter)
(define-key map "s" 'Buffer-menu-save)
(define-key map "d" 'Buffer-menu-delete)
(define-key map "k" 'Buffer-menu-delete)
(define-key map "\C-d" 'Buffer-menu-delete-backwards)
;(define-key map "\C-k" 'Buffer-menu-delete)
(define-key map "\177" 'Buffer-menu-backup-unmark)
(define-key map "~" 'Buffer-menu-not-modified)
(define-key map "u" 'Buffer-menu-unmark)
(let ((i ?0))
(while (<= i ?9)
(define-key map (char-to-string i) 'digit-argument)
(define-key map (concat "\e" (char-to-string i)) 'digit-argument)
(setq i (1+ i))))
(define-key map "-" 'negative-argument)
(define-key map "\e-" 'negative-argument)
(define-key map "m" 'Buffer-menu-mark)
(define-key map "\C-u" 'universal-argument)
(define-key map "\C-p" 'previous-line)
(define-key map "\C-n" 'next-line)
(define-key map "p" 'previous-line)
(define-key map "n" 'next-line)
(define-key map "\C-v" 'scroll-up)
(define-key map "\ev" 'scroll-down)
(define-key map ">" 'scroll-right)
(define-key map "<" 'scroll-left)
(define-key map "\e\C-v" 'scroll-other-window)
(define-key map "\e>" 'end-of-buffer)
(define-key map "\e<" 'beginning-of-buffer)
(define-key map "\e\e" nil)
(define-key map "\e\e\e" 'Electric-buffer-menu-quit)
(define-key map [escape escape escape] 'Electric-buffer-menu-quit)
(define-key map [mouse-2] 'Electric-buffer-menu-mouse-select)
(setq electric-buffer-menu-mode-map map)))
(defun Electric-buffer-menu-exit ()
(interactive)
......
......@@ -3840,6 +3840,17 @@ that suppresses all warnings during execution of BODY."
,@decls
',(nth 1 form)))))
;; If foo.el declares `toto' as obsolete, it is likely that foo.el will
;; actually use `toto' in order for this obsolete variable to still work
;; correctly, so paradoxically, while byte-compiling foo.el, the presence
;; of a make-obsolete-variable call for `toto' is an indication that `toto'
;; should not trigger obsolete-warnings in foo.el.
(byte-defop-compiler-1 make-obsolete-variable)
(defun byte-compile-make-obsolete-variable (form)
(when (eq 'quote (car-safe (nth 1 form)))
(push (nth 1 (nth 1 form)) byte-compile-not-obsolete-vars))
(byte-compile-normal-call form))
(defun byte-compile-defvar (form)