;;; makesum.el --- generate key binding summary for Emacs;; Copyright (C) 1985 Free Software Foundation, Inc.;; Maintainer: FSF;; Keywords: help;; This file is part of GNU Emacs.;; GNU Emacs is free software; you can redistribute it and/or modify;; it under the terms of the GNU General Public License as published by;; the Free Software Foundation; either version 2, or (at your option);; any later version.;; GNU Emacs is distributed in the hope that it will be useful,;; but WITHOUT ANY WARRANTY; without even the implied warranty of;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the;; GNU General Public License for more details.;; You should have received a copy of the GNU General Public License;; along with GNU Emacs; see the file COPYING. If not, write to the;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,;; Boston, MA 02111-1307, USA.;;; Commentary:;; Displays a nice human-readable summary of all keybindings in a;; two-column format.;;; Code:;;;###autoload(defunmake-command-summary()"Make a summary of current key bindings in the buffer *Summary*.Previous contents of that buffer are killed first."(interactive)(message"Making command summary...");; This puts a description of bindings in a buffer called *Help*.(save-window-excursion(describe-bindings))(with-output-to-temp-buffer"*Summary*"(save-excursion(let((cur-modemode-name))(set-bufferstandard-output)(erase-buffer)(insert-buffer-substring"*Help*")(goto-char(point-min))(delete-region(point)(progn(forward-line1)(point)))(while(search-forward" "nilt)(replace-match" "))(goto-char(point-min))(while(search-forward"-@ "nilt)(replace-match"-SP"))(goto-char(point-min))(while(search-forward" .. ~ "nilt)(replace-match"SP .. ~"))(goto-char(point-min))(while(search-forward"C-?"nilt)(replace-match"DEL"))(goto-char(point-min))(while(search-forward"C-i"nilt)(replace-match"TAB"))(goto-char(point-min))(if(re-search-forward"^Local Bindings:"nilt)(progn(forward-char-1)(insert" for "cur-mode" Mode")(while(search-forward"??\n"nilt)(delete-region(point)(progn(forward-line-1)(point))))))(goto-char(point-min))(insert"Emacs command summary, "(substring(current-time-string)010)".\n");; Delete "key binding" and underlining of dashes.(delete-region(point)(progn(forward-line2)(point)))(forward-line1);Skip blank line(while(not(eobp))(let((beg(point)))(or(re-search-forward"^$"nilt)(goto-char(point-max)))(double-columnbeg(point))(forward-line1)))(goto-char(point-min)))))(message"Making command summary...done"))(defundouble-column(startend)(interactive"r")(let(halfcntlinelinesnlines(from-end(-(point-max)end)))(setqnlines(count-linesstartend))(if(<=nlines1)nil(setqhalf(/(1+nlines)2))(goto-charstart)(save-excursion(forward-linehalf)(while(<halfnlines)(setqhalf(1+half))(setqline(buffer-substring(point)(save-excursion(end-of-line)(point))))(setqlines(conslinelines))(delete-region(point)(progn(forward-line1)(point)))))(setqlines(nreverselines))(whilelines(end-of-line)(indent-to41)(insert(carlines))(forward-line1)(setqlines(cdrlines))))(goto-char(-(point-max)from-end))))(provide'makesum);;; makesum.el ends here