From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= Newsgroups: gmane.emacs.devel Subject: Improving describe-mode and discoverability Date: Thu, 23 Jun 2016 14:29:00 -0400 Message-ID: <576C2A6C.3090908@gmail.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="hEVQOegSg6jWAB9tH4suBjAquIgDXkbPk" X-Trace: ger.gmane.org 1466706604 20716 80.91.229.3 (23 Jun 2016 18:30:04 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 23 Jun 2016 18:30:04 +0000 (UTC) To: Emacs developers Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jun 23 20:29:55 2016 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bG9Ny-0006Ju-6m for ged-emacs-devel@m.gmane.org; Thu, 23 Jun 2016 20:29:54 +0200 Original-Received: from localhost ([::1]:38668 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG9Nx-0002jg-A0 for ged-emacs-devel@m.gmane.org; Thu, 23 Jun 2016 14:29:53 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:48177) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG9NG-0002ie-P8 for emacs-devel@gnu.org; Thu, 23 Jun 2016 14:29:14 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bG9NA-0007Bh-MN for emacs-devel@gnu.org; Thu, 23 Jun 2016 14:29:09 -0400 Original-Received: from mout.kundenserver.de ([212.227.126.130]:49797) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bG9NA-0007Ba-6d for emacs-devel@gnu.org; Thu, 23 Jun 2016 14:29:04 -0400 Original-Received: from [18.26.2.123] ([18.26.2.123]) by mrelayeu.kundenserver.de (mreue005) with ESMTPSA (Nemesis) id 0MPKwG-1bKZDy0Wps-004WjY for ; Thu, 23 Jun 2016 20:29:02 +0200 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.8.0 X-Provags-ID: V03:K0:OjeYPtyu9axr2WMrlbetPXAwn5MHTofm30+Hpm57533506yq/o8 maYMt1FLYPi+q4Ilu9pQ25I8syIAycqe7yDYPByqxBy8+TpXpp+vzS0ZxfPJFTExU97zBP3 6/biXC5gUBhdQ7RTNlpx6ka+lQ6dbPhhnpQdKN0XkcaAXC9Vu+dGKnk+oRaHOQwEbKlvOeE WNqZdNIyQOrvgMzX6NIRA== X-UI-Out-Filterresults: notjunk:1;V01:K0:sdYq8RecSmM=:D0NmVDrWEjJmo//PkPi6HK dV2wVjMQXWiWRB67tw45HTFgMvs/ip5KpFgolqzJTp3bmDFB0uZmw7sXrp4KCJcfs6fxLiQNx fcTI5S+k3b84IqvWl2oP6QOR7ITp9ZsmIxJ2gjo74kpGTz+NXWwBDxRyNearL+GfMWRgUOUtG 1UHV2hDm/8HQy3KNoxrPw2hdL0v/hhKzG4GuxXIJKNnNo0W60lsmu1Z/P/yxcqj4POlAGPUiE tEqANqPz18nYleRLpzIpW8IPF7snyOZ/jR8xgYZfEzYEN1lQyUDFgYLnXr3nXFTezND/49e5g 10/0JtoQKF9Vay/G8jmFXo876EO2IYK6LDv/Pct+SkMJVNWtU50RfT9Kg3QBaywiK7Zr1i2cV H8TThxlflrYh9bmJdla3Lu7kxuurBU9IPLpsNkAQ2RcpX6V1WxuY2miBOjeksPubU4oJOKJ4i yB6+f/osHEbYokHy5vnNQl8lRRqMmm9OqC6baSkTT6UmAgIGckltc4MvYDLaIHZBRAhtTCJ8w XvnpygmNBBrmJPX9N8Bnge9qtj3l1WbXh/p3gFWyI7OPgNBKyvMliafcuV/rRMhKKbrH86JCc 8Ej5IE8Jz8cC/wT2eAk0x8oYMPwqUORFPRY3PieItd8iGhvFW/A/M61gYoN2wqIbGxma94GsY eXv1pPsVQJqbddh3d1mIc1hclrvaXWJfw069mmQAoT00hvBscf7kKK06jOvloGqN06y0= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 212.227.126.130 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:204699 Archived-At: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --hEVQOegSg6jWAB9tH4suBjAquIgDXkbPk Content-Type: multipart/mixed; boundary="9ET1tXPJ9avbxati4H8m1hJoni5x328Li" From: =?UTF-8?Q?Cl=c3=a9ment_Pit--Claudel?= To: Emacs developers Message-ID: <576C2A6C.3090908@gmail.com> Subject: Improving describe-mode and discoverability --9ET1tXPJ9avbxati4H8m1hJoni5x328Li Content-Type: multipart/mixed; boundary="------------070100030201080101000807" This is a multi-part message in MIME format. --------------070100030201080101000807 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Hey Emacs, Among the many ways to get information about a package (READMEs, Commenta= ries, manuals, menu-bar menus, and describe-mode; are there others?), des= cribe-mode is the only universally available one. It always works, but it= 's not very nice to use: it just gives you a list of function names and t= he associated bindings. Recently I added an extra documentation feature to one of my packages, bi= blio.el. It's a single function that walks a keymap, and displays for ea= ch binding not only the name of the associated function, but also the fir= st line of the documentation of each function. Here's how it looks in has= kell-mode: Help with =E2=80=98haskell-mode=E2=80=99 =E2=80=98C-M-q=E2=80=99 (prog-indent-sexp) Indent the expression after point. =E2=80=98C-c C-c=E2=80=99 (haskell-compile) Compile the Haskell program including the current buffer. =E2=80=98C-c C-s=E2=80=99 (haskell-mode-toggle-scc-at-point) If point is in an SCC annotation, kill the annotation. Otherwise, = try to insert a new annotation. =E2=80=98C-c TAB=E2=80=99 (haskell-process-do-info) Print info on the identifier at point. =E2=80=98C-c C-t=E2=80=99 (haskell-process-do-type) Print the type of the given expression. =E2=80=98C-c C-v=E2=80=99 (haskell-mode-enable-process-minor-mode) Tell the user to choose a minor mode for process interaction. =E2=80=98C-c C-b=E2=80=99, =E2=80=98C-c C-z=E2=80=99 (haskell-interac= tive-switch) Switch to the interactive mode for this session. =E2=80=98C-c C-l=E2=80=99 (haskell-process-load-file) Load the current buffer file. =E2=80=98C-c C-.=E2=80=99 (haskell-mode-format-imports) Format the imports by aligning and sorting them. =E2=80=98 =E2=80=99 (haskell-delete-indent= ation) Like `delete-indentation' but ignoring Bird-style ">". It's not much, but I think it looks much better. I've attached examples o= f the output for several other modes to this email, as well as the code u= sed to generate this example. Contrast with the default output of C-h m f= or haskell-mode: key binding --- ------- C-c Prefix Command C-x Prefix Command ESC Prefix Command Prefix Command haskell-delete-indentation C-c C-b haskell-interactive-switch C-c C-c haskell-compile C-c TAB haskell-process-do-info C-c C-l haskell-process-load-file C-c C-s haskell-mode-toggle-scc-at-point C-c C-t haskell-process-do-type C-c C-v haskell-mode-enable-process-minor-mode C-c C-z haskell-interactive-switch C-c ESC Prefix Command C-c C-. haskell-mode-format-imports C-M-q prog-indent-sexp My implementation is rather brittle (I don't have sufficient knowledge of= keymaps), but I think a documentation facility in the line of the one de= moed above would be very useful. Most interactive functions are already = documented, so we'd be tapping into a large body of existing docs, making= them more accessible. What do you think? I would be happy to get help in refining this code (an= d this proposal). For example, we could consider hyperlinking the functio= n names to their sources, or letting users expand the first line of the d= ocumentation to show the full docstring. We could also think about ways t= o cover functions that are not bound to a key by default, but which users= may want to bind (e.g. by looking for interactive functions starting wit= h the mode's name). Cheers, Cl=C3=A9ment. --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="shell-script-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shell-script-mode-help" SGVscCB3aXRoIOKAmHNoLW1vZGXigJkKCuKAmEMtTS1x4oCZIChwcm9nLWluZGVudC1zZXhw KQogIEluZGVudCB0aGUgZXhwcmVzc2lvbiBhZnRlciBwb2ludC4KCuKAmEMtYyA64oCZIChz aC1zZXQtc2hlbGwpCiAgU2V0IHRoaXMgYnVmZmVyJ3Mgc2hlbGwgdG8gU0hFTEwgKGEgc3Ry aW5nKS4KCuKAmEMtYyBDLXrigJkgKHNoLXNob3ctc2hlbGwpCiAgUG9wIHRoZSBzaGVsbCBp bnRlcmFjdGlvbiBidWZmZXIuCgrigJhDLWMgQy1k4oCZIChzaC1jZC1oZXJlKQogIENoYW5n ZSBkaXJlY3RvcnkgaW4gdGhlIGN1cnJlbnQgaW50ZXJhY3Rpb24gc2hlbGwgdG8gdGhlIGN1 cnJlbnQgb25lLgoK4oCYQy1jIEMtbuKAmSAoc2gtc2VuZC1saW5lLW9yLXJlZ2lvbi1hbmQt c3RlcCkKICBTZW5kIHRoZSBjdXJyZW50IGxpbmUgdG8gdGhlIGluZmVyaW9yIHNoZWxsIGFu ZCBzdGVwIHRvIHRoZSBuZXh0IGxpbmUuCgrigJhDLWMgQy144oCZIChleGVjdXRhYmxlLWlu dGVycHJldCkKICBSdW4gc2NyaXB0IHdpdGggdXNlci1zcGVjaWZpZWQgYXJncywgYW5kIGNv bGxlY3Qgb3V0cHV0IGluIGEgYnVmZmVyLgoK4oCYQy1jICvigJkgKHNoLWFkZCkKICBJbnNl cnQgYW4gYWRkaXRpb24gb2YgVkFSIGFuZCBwcmVmaXggREVMVEEgZm9yIEJvdXJuZSAodHlw ZSkgc2hlbGwuCgrigJhDLWMgQy1c4oCZIChzaC1iYWNrc2xhc2gtcmVnaW9uKQogIEluc2Vy dCwgYWxpZ24sIG9yIGRlbGV0ZSBlbmQtb2YtbGluZSBiYWNrc2xhc2hlcyBvbiB0aGUgbGlu ZXMgaW4gdGhlIHJlZ2lvbi4KCuKAmEMtYyA+4oCZIChzaC1sZWFybi1idWZmZXItaW5kZW50 KQogIExlYXJuIGhvdyB0byBpbmRlbnQgdGhlIGJ1ZmZlciB0aGUgd2F5IGl0IGN1cnJlbnRs eSBpcy4KCuKAmEMtYyA84oCZIChzaC1sZWFybi1saW5lLWluZGVudCkKICBMZWFybiBob3cg dG8gaW5kZW50IGEgbGluZSBhcyBpdCBjdXJyZW50bHkgaXMgaW5kZW50ZWQuCgrigJhDLWMg PeKAmSAoc2gtc2V0LWluZGVudCkKICBTZXQgdGhlIGluZGVudGF0aW9uIGZvciB0aGUgY3Vy cmVudCBsaW5lLgoK4oCYQy1jID/igJkgKHNoLXNob3ctaW5kZW50KQogIFNob3cgdGhlIGhv dyB0aGUgY3VycmVudCBsaW5lIHdvdWxkIGJlIGluZGVudGVkLgoK4oCYQy1jIEMtY+KAmSAo c2gtY2FzZSkKICBJbnNlcnQgYSBjYXNlL3N3aXRjaCBzdGF0ZW1lbnQuICBTZWUgYHNoLWZl YXR1cmUnLgoK4oCYQy1jIEMtZuKAmSAoc2gtZm9yKQogIEluc2VydCBhIGZvciBsb29wLiAg U2VlIGBzaC1mZWF0dXJlJy4KCuKAmEMtYyBUQULigJkgKHNoLWlmKQogIEluc2VydCBhbiBp ZiBzdGF0ZW1lbnQuICBTZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtbOKAmSAoc2gtaW5k ZXhlZC1sb29wKQogIEluc2VydCBhbiBpbmRleGVkIGxvb3AgZnJvbSAxIHRvIG4uICBTZWUg YHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtb+KAmSAoc2gtd2hpbGUtZ2V0b3B0cykKICBJbnNl cnQgYSB3aGlsZSBnZXRvcHRzIGxvb3AuICBTZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMt cuKAmSAoc2gtcmVwZWF0KQogIEluc2VydCBhIHJlcGVhdCBsb29wIGRlZmluaXRpb24uICBT ZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtc+KAmSAoc2gtc2VsZWN0KQogIEluc2VydCBh IHNlbGVjdCBzdGF0ZW1lbnQuICBTZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtdOKAmSAo c2gtdG1wLWZpbGUpCiAgSW5zZXJ0IGNvZGUgdG8gc2V0dXAgdGVtcG9yYXJ5IGZpbGUgaGFu ZGxpbmcuICBTZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtdeKAmSAoc2gtdW50aWwpCiAg SW5zZXJ0IGFuIHVudGlsIGxvb3AuICBTZWUgYHNoLWZlYXR1cmUnLgoK4oCYQy1jIEMtd+KA mSAoc2gtd2hpbGUpCiAgSW5zZXJ0IGEgd2hpbGUgbG9vcC4gIFNlZSBgc2gtZmVhdHVyZScu CgrigJhDLWMgKOKAmSAoc2gtZnVuY3Rpb24pCiAgSW5zZXJ0IGEgZnVuY3Rpb24gZGVmaW5p dGlvbi4gIFNlZSBgc2gtZmVhdHVyZScuCgrigJg94oCZIChzaC1hc3NpZ25tZW50KQogIFJl bWVtYmVyIHByZWNlZGluZyBpZGVudGlmaWVyIGZvciBmdXR1cmUgY29tcGxldGlvbiBhbmQg ZG8gc2VsZi1pbnNlcnQuCgrigJhDLU0teOKAmSAoc2gtZXhlY3V0ZS1yZWdpb24pCiAgUGFz cyBvcHRpb25hbCBoZWFkZXIgYW5kIHJlZ2lvbiB0byBhIHN1YnNoZWxsIGZvciBub25pbnRl cmFjdGl2ZSBleGVjdXRpb24uCgrigJg8cmVtYXA+IDxmb3J3YXJkLXNlbnRlbmNlPuKAmSAo c2gtZW5kLW9mLWNvbW1hbmQpCiAgTW92ZSBwb2ludCB0byBzdWNjZXNzaXZlIGVuZHMgb2Yg Y29tbWFuZHMuCgrigJg8cmVtYXA+IDxiYWNrd2FyZC1zZW50ZW5jZT7igJkgKHNoLWJlZ2lu bmluZy1vZi1jb21tYW5kKQogIE1vdmUgcG9pbnQgdG8gc3VjY2Vzc2l2ZSBiZWdpbm5pbmdz IG9mIGNvbW1hbmRzLgoK4oCYPHJlbWFwPiA8ZGVsZXRlLWJhY2t3YXJkLWNoYXI+4oCZIChi YWNrd2FyZC1kZWxldGUtY2hhci11bnRhYmlmeSkKICBEZWxldGUgY2hhcmFjdGVycyBiYWNr d2FyZCwgY2hhbmdpbmcgdGFicyBpbnRvIHNwYWNlcy4K --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="elisp-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="elisp-mode-help" SGVscCB3aXRoIOKAmGVtYWNzLWxpc3AtbW9kZeKAmQoK4oCYREVM4oCZIChiYWNrd2FyZC1k ZWxldGUtY2hhci11bnRhYmlmeSkKICBEZWxldGUgY2hhcmFjdGVycyBiYWNrd2FyZCwgY2hh bmdpbmcgdGFicyBpbnRvIHNwYWNlcy4KCuKAmEMtTS1x4oCZIChpbmRlbnQtcHAtc2V4cCkK ICBJbmRlbnQgZWFjaCBsaW5lIG9mIHRoZSBsaXN0IHN0YXJ0aW5nIGp1c3QgYWZ0ZXIgcG9p bnQsIG9yIHByZXR0eXByaW50IGl0LgoK4oCYQy1NLXjigJkgKGV2YWwtZGVmdW4pCiAgRXZh bHVhdGUgdGhlIHRvcC1sZXZlbCBmb3JtIGNvbnRhaW5pbmcgcG9pbnQsIG9yIGFmdGVyIHBv aW50LgoK4oCYQy1NLWnigJkgKGNvbXBsZXRpb24tYXQtcG9pbnQpCiAgUGVyZm9ybSBjb21w bGV0aW9uIG9uIHRoZSB0ZXh0IGFyb3VuZCBwb2ludC4K --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="python-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="python-mode-help" SGVscCB3aXRoIOKAmHB5dGhvbi1tb2Rl4oCZCgrigJhDLU0tceKAmSAocHJvZy1pbmRlbnQt c2V4cCkKICBJbmRlbnQgdGhlIGV4cHJlc3Npb24gYWZ0ZXIgcG9pbnQuCgrigJg8cmVtYXA+ IDxtYXJrLWRlZnVuPuKAmSAocHl0aG9uLW1hcmstZGVmdW4pCiAgUHV0IG1hcmsgYXQgZW5k IG9mIHRoaXMgZGVmdW4sIHBvaW50IGF0IGJlZ2lubmluZy4KCuKAmDxyZW1hcD4gPGJhY2t3 YXJkLXVwLWxpc3Q+4oCZIChweXRob24tbmF2LWJhY2t3YXJkLXVwLWxpc3QpCiAgTW92ZSBi YWNrd2FyZCBvdXQgb2Ygb25lIGxldmVsIG9mIHBhcmVudGhlc2VzIChvciBibG9ja3MpLgoK 4oCYPHJlbWFwPiA8Zm9yd2FyZC1zZW50ZW5jZT7igJkgKHB5dGhvbi1uYXYtZm9yd2FyZC1i bG9jaykKICBNb3ZlIGZvcndhcmQgdG8gbmV4dCBibG9jayBvZiBjb2RlLgoK4oCYPHJlbWFw PiA8YmFja3dhcmQtc2VudGVuY2U+4oCZIChweXRob24tbmF2LWJhY2t3YXJkLWJsb2NrKQog IE1vdmUgYmFja3dhcmQgdG8gcHJldmlvdXMgYmxvY2sgb2YgY29kZS4KCuKAmEMtYyBDLWTi gJkgKHB5dGhvbi1kZXNjcmliZS1hdC1wb2ludCkKICAKCuKAmEMtYyBDLWbigJkgKHB5dGhv bi1lbGRvYy1hdC1wb2ludCkKICBHZXQgaGVscCBvbiBTWU1CT0wgdXNpbmcgYGhlbHAnLgoK 4oCYQy1jIEMtduKAmSAocHl0aG9uLWNoZWNrKQogIENoZWNrIGEgUHl0aG9uIGZpbGUgKGRl ZmF1bHQgY3VycmVudCBidWZmZXIncyBmaWxlKS4KCuKAmEMtYyBDLXrigJkgKHB5dGhvbi1z aGVsbC1zd2l0Y2gtdG8tc2hlbGwpCiAgU3dpdGNoIHRvIGluZmVyaW9yIFB5dGhvbiBwcm9j ZXNzIGJ1ZmZlci4KCuKAmEMtYyBDLWzigJkgKHB5dGhvbi1zaGVsbC1zZW5kLWZpbGUpCiAg U2VuZCBGSUxFLU5BTUUgdG8gaW5mZXJpb3IgUHl0aG9uIFBST0NFU1MuCgrigJhDLWMgQy1j 4oCZIChweXRob24tc2hlbGwtc2VuZC1idWZmZXIpCiAgU2VuZCB0aGUgZW50aXJlIGJ1ZmZl ciB0byBpbmZlcmlvciBQeXRob24gcHJvY2Vzcy4KCuKAmEMtYyBDLXLigJkgKHB5dGhvbi1z aGVsbC1zZW5kLXJlZ2lvbikKICBTZW5kIHRoZSByZWdpb24gZGVsaW1pdGVkIGJ5IFNUQVJU IGFuZCBFTkQgdG8gaW5mZXJpb3IgUHl0aG9uIHByb2Nlc3MuCgrigJhDLWMgQy1z4oCZIChw eXRob24tc2hlbGwtc2VuZC1zdHJpbmcpCiAgU2VuZCBTVFJJTkcgdG8gaW5mZXJpb3IgUHl0 aG9uIFBST0NFU1MuCgrigJhDLWMgQy1w4oCZIChydW4tcHl0aG9uKQogIFJ1biBhbiBpbmZl cmlvciBQeXRob24gcHJvY2Vzcy4KCuKAmEMtYyBDLXQgY+KAmSAocHl0aG9uLXNrZWxldG9u LWNsYXNzKQogIEluc2VydCBjbGFzcyBzdGF0ZW1lbnQuCgrigJhDLWMgQy10IGTigJkgKHB5 dGhvbi1za2VsZXRvbi1kZWYpCiAgSW5zZXJ0IGRlZiBzdGF0ZW1lbnQuCgrigJhDLWMgQy10 IGbigJkgKHB5dGhvbi1za2VsZXRvbi1mb3IpCiAgSW5zZXJ0IGZvciBzdGF0ZW1lbnQuCgri gJhDLWMgQy10IGnigJkgKHB5dGhvbi1za2VsZXRvbi1pZikKICBJbnNlcnQgaWYgc3RhdGVt ZW50LgoK4oCYQy1jIEMtdCBt4oCZIChweXRob24tc2tlbGV0b24taW1wb3J0KQogIEluc2Vy dCBpbXBvcnQgc3RhdGVtZW50LgoK4oCYQy1jIEMtdCB04oCZIChweXRob24tc2tlbGV0b24t dHJ5KQogIEluc2VydCB0cnkgc3RhdGVtZW50LgoK4oCYQy1jIEMtdCB34oCZIChweXRob24t c2tlbGV0b24td2hpbGUpCiAgSW5zZXJ0IHdoaWxlIHN0YXRlbWVudC4KCuKAmEMtYyA+4oCZ IChweXRob24taW5kZW50LXNoaWZ0LXJpZ2h0KQogIFNoaWZ0IGxpbmVzIGNvbnRhaW5lZCBp biByZWdpb24gU1RBUlQgRU5EIGJ5IENPVU5UIGNvbHVtbnMgdG8gdGhlIHJpZ2h0LgoK4oCY Qy1jIDzigJkgKHB5dGhvbi1pbmRlbnQtc2hpZnQtbGVmdCkKICBTaGlmdCBsaW5lcyBjb250 YWluZWQgaW4gcmVnaW9uIFNUQVJUIEVORCBieSBDT1VOVCBjb2x1bW5zIHRvIHRoZSBsZWZ0 LgoK4oCYQy1jIEMtauKAmSAoaW1lbnUpCiAgSnVtcCB0byBhIHBsYWNlIGluIHRoZSBidWZm ZXIgY2hvc2VuIHVzaW5nIGEgYnVmZmVyIG1lbnUgb3IgbW91c2UgbWVudS4KCuKAmERFTOKA mSAocHl0aG9uLWluZGVudC1kZWRlbnQtbGluZS1iYWNrc3BhY2UpCiAgRGUtaW5kZW50IGN1 cnJlbnQgbGluZS4KCuKAmDxiYWNrdGFiPuKAmSAocHl0aG9uLWluZGVudC1kZWRlbnQtbGlu ZSkKICBEZS1pbmRlbnQgY3VycmVudCBsaW5lLgoK4oCYQy1NLWnigJkgKGNvbXBsZXRpb24t YXQtcG9pbnQpCiAgUGVyZm9ybSBjb21wbGV0aW9uIG9uIHRoZSB0ZXh0IGFyb3VuZCBwb2lu dC4KCuKAmEMtTS144oCZIChweXRob24tc2hlbGwtc2VuZC1kZWZ1bikKICBTZW5kIHRoZSBj dXJyZW50IGRlZnVuIHRvIGluZmVyaW9yIFB5dGhvbiBwcm9jZXNzLgo= --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="rst-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="rst-mode-help" SGVscCB3aXRoIOKAmHJzdC1tb2Rl4oCZCgrigJhDLU0taeKAmSAoaXNwZWxsLWNvbXBsZXRl LXdvcmQpCiAgVHJ5IHRvIGNvbXBsZXRlIHRoZSB3b3JkIGJlZm9yZSBvciBhdCBwb2ludC4K CuKAmEMtYyA14oCZIChyc3QtZGVwcmVjYXRlZC1jb21waWxlLXNsaWRlcy1wcmV2aWV3KQog IERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LWNvbXBpbGUtc2xpZGVzLXByZXZpZXcsIHVz ZSBcW3JzdC1jb21waWxlLXNsaWRlcy1wcmV2aWV3XSBpbnN0ZWFkLgoK4oCYQy1jIDTigJkg KHJzdC1kZXByZWNhdGVkLWNvbXBpbGUtcGRmLXByZXZpZXcpCiAgRGVwcmVjYXRlZCBiaW5k aW5nIGZvciByc3QtY29tcGlsZS1wZGYtcHJldmlldywgdXNlIFxbcnN0LWNvbXBpbGUtcGRm LXByZXZpZXddIGluc3RlYWQuCgrigJhDLWMgM+KAmSAocnN0LWRlcHJlY2F0ZWQtY29tcGls ZS1wc2V1ZG8tcmVnaW9uKQogIERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LWNvbXBpbGUt cHNldWRvLXJlZ2lvbiwgdXNlIFxbcnN0LWNvbXBpbGUtcHNldWRvLXJlZ2lvbl0gaW5zdGVh ZC4KCuKAmEMtYyAy4oCZIChyc3QtZGVwcmVjYXRlZC1jb21waWxlLWFsdC10b29sc2V0KQog IERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LWNvbXBpbGUtYWx0LXRvb2xzZXQsIHVzZSBc W3JzdC1jb21waWxlLWFsdC10b29sc2V0XSBpbnN0ZWFkLgoK4oCYQy1jIDHigJkgKHJzdC1k ZXByZWNhdGVkLWNvbXBpbGUpCiAgRGVwcmVjYXRlZCBiaW5kaW5nIGZvciByc3QtY29tcGls ZSwgdXNlIFxbcnN0LWNvbXBpbGVdIGluc3RlYWQuCgrigJhDLWMgQy1jIEMtY+KAmSAocnN0 LWNvbXBpbGUpCiAgQ29tcGlsZSBjb21tYW5kIHRvIGNvbnZlcnQgcmVTVCBkb2N1bWVudCBp bnRvIHNvbWUgb3V0cHV0IGZpbGUuCgrigJhDLWMgQy1jIEMtYeKAmSAocnN0LWNvbXBpbGUt YWx0LXRvb2xzZXQpCiAgQ29tcGlsZSBjb21tYW5kIHdpdGggdGhlIGFsdGVybmF0aXZlIHRv b2wtc2V0LgoK4oCYQy1jIEMtYyBDLXjigJkgKHJzdC1jb21waWxlLXBzZXVkby1yZWdpb24p CiAgU2hvdyBwc2V1ZG8tWE1MIHJlbmRlcmluZy4KCuKAmEMtYyBDLWMgQy1w4oCZIChyc3Qt Y29tcGlsZS1wZGYtcHJldmlldykKICBDb252ZXJ0IHRoZSBkb2N1bWVudCB0byBhIFBERiBm aWxlIGFuZCBsYXVuY2ggYSBwcmV2aWV3IHByb2dyYW0uCgrigJhDLWMgQy1jIEMtc+KAmSAo cnN0LWNvbXBpbGUtc2xpZGVzLXByZXZpZXcpCiAgQ29udmVydCB0aGUgZG9jdW1lbnQgdG8g YW4gUzUgc2xpZGUgcHJlc2VudGF0aW9uIGFuZCBsYXVuY2ggYSBwcmV2aWV3IHByb2dyYW0u CgrigJhDLWMgQy1m4oCZIChyc3QtZGVwcmVjYXRlZC1nb3RvLXNlY3Rpb24pCiAgRGVwcmVj YXRlZCBiaW5kaW5nIGZvciByc3QtZ290by1zZWN0aW9uLCB1c2UgXFtyc3QtZ290by1zZWN0 aW9uXSBpbnN0ZWFkLgoK4oCYQy1jIEMtdeKAmSAocnN0LWRlcHJlY2F0ZWQtdG9jLXVwZGF0 ZSkKICBEZXByZWNhdGVkIGJpbmRpbmcgZm9yIHJzdC10b2MtdXBkYXRlLCB1c2UgXFtyc3Qt dG9jLXVwZGF0ZV0gaW5zdGVhZC4KCuKAmEMtYyBUQULigJkgKHJzdC1kZXByZWNhdGVkLXRv Yy1pbnNlcnQpCiAgRGVwcmVjYXRlZCBiaW5kaW5nIGZvciByc3QtdG9jLWluc2VydCwgdXNl IFxbcnN0LXRvYy1pbnNlcnRdIGluc3RlYWQuCgrigJhDLWMgQy10IEMtdOKAmSAocnN0LXRv YykKICBEaXNwbGF5IGEgdGFibGUtb2YtY29udGVudHMuCgrigJhDLWMgQy10IFRBQuKAmSAo cnN0LXRvYy1pbnNlcnQpCiAgSW5zZXJ0IGEgc2ltcGxlIHRleHQgcmVuZGVyaW5nIG9mIHRo ZSB0YWJsZSBvZiBjb250ZW50cy4KCuKAmEMtYyBDLXQgQy114oCZIChyc3QtdG9jLXVwZGF0 ZSkKICBBdXRvbWF0aWNhbGx5IGZpbmQgdGhlIGNvbnRlbnRzIHNlY3Rpb24gb2YgYSBkb2N1 bWVudCBhbmQgdXBkYXRlLgoK4oCYQy1jIEMtdCBDLWrigJkgKHJzdC1nb3RvLXNlY3Rpb24p CiAgR28gdG8gdGhlIHNlY3Rpb24gdGhlIGN1cnJlbnQgbGluZSBkZXNjcmliZXMuCgrigJhD LWMgQy134oCZIChyc3QtZGVwcmVjYXRlZC1zdHJhaWdodGVuLWJ1bGxldHMtcmVnaW9uKQog IERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LXN0cmFpZ2h0ZW4tYnVsbGV0cy1yZWdpb24s IHVzZSBcW3JzdC1zdHJhaWdodGVuLWJ1bGxldHMtcmVnaW9uXSBpbnN0ZWFkLgoK4oCYQy1j IEMtduKAmSAocnN0LWRlcHJlY2F0ZWQtY29udmVydC1idWxsZXRzLXRvLWVudW1lcmF0aW9u KQogIERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LWNvbnZlcnQtYnVsbGV0cy10by1lbnVt ZXJhdGlvbiwgdXNlIFxbcnN0LWNvbnZlcnQtYnVsbGV0cy10by1lbnVtZXJhdGlvbl0gaW5z dGVhZC4KCuKAmEMtYyBDLWXigJkgKHJzdC1kZXByZWNhdGVkLWVudW1lcmF0ZS1yZWdpb24p CiAgRGVwcmVjYXRlZCBiaW5kaW5nIGZvciByc3QtZW51bWVyYXRlLXJlZ2lvbiwgdXNlIFxb cnN0LWVudW1lcmF0ZS1yZWdpb25dIGluc3RlYWQuCgrigJhDLWMgQy1i4oCZIChyc3QtZGVw cmVjYXRlZC1idWxsZXQtbGlzdC1yZWdpb24pCiAgRGVwcmVjYXRlZCBiaW5kaW5nIGZvciBy c3QtYnVsbGV0LWxpc3QtcmVnaW9uLCB1c2UgXFtyc3QtYnVsbGV0LWxpc3QtcmVnaW9uXSBp bnN0ZWFkLgoK4oCYQy1jIEMtbCBDLWLigJkgKHJzdC1idWxsZXQtbGlzdC1yZWdpb24pCiAg QWRkIGJ1bGxldHMgdG8gYWxsIHRoZSBsZWZ0bW9zdCBwYXJhZ3JhcGhzIGluIHRoZSBnaXZl biByZWdpb24uCgrigJhDLWMgQy1sIEMtZeKAmSAocnN0LWVudW1lcmF0ZS1yZWdpb24pCiAg QWRkIGVudW1lcmF0aW9uIHRvIGFsbCB0aGUgbGVmdG1vc3QgcGFyYWdyYXBocyBpbiB0aGUg Z2l2ZW4gcmVnaW9uLgoK4oCYQy1jIEMtbCBDLWPigJkgKHJzdC1jb252ZXJ0LWJ1bGxldHMt dG8tZW51bWVyYXRpb24pCiAgQ29udmVydCB0aGUgYnVsbGV0ZWQgYW5kIGVudW1lcmF0ZWQg aXRlbXMgaW4gdGhlIHJlZ2lvbiB0byBlbnVtZXJhdGVkIGxpc3RzLgoK4oCYQy1jIEMtbCBD LXPigJkgKHJzdC1zdHJhaWdodGVuLWJ1bGxldHMtcmVnaW9uKQogIE1ha2UgYWxsIHRoZSBi dWxsZXRlZCBsaXN0IGl0ZW1zIGluIHRoZSByZWdpb24gY29uc2lzdGVudC4KCuKAmEMtYyBD LWwgVEFC4oCZIChyc3QtaW5zZXJ0LWxpc3QpCiAgSW5zZXJ0IGEgbGlzdCBpdGVtIGF0IHRo ZSBjdXJyZW50IHBvaW50LgoK4oCYQy1jIEMtZOKAmSAocnN0LWRlcHJlY2F0ZWQtbGluZS1i bG9jay1yZWdpb24pCiAgRGVwcmVjYXRlZCBiaW5kaW5nIGZvciByc3QtbGluZS1ibG9jay1y ZWdpb24sIHVzZSBcW3JzdC1saW5lLWJsb2NrLXJlZ2lvbl0gaW5zdGVhZC4KCuKAmEMtYyBD LXIgQy1s4oCZIChyc3QtbGluZS1ibG9jay1yZWdpb24pCiAgVG9nZ2xlIGxpbmUgYmxvY2sg cHJlZml4ZXMgZm9yIGEgcmVnaW9uLgoK4oCYQy1jIEMtciA8dGFiPuKAmSAocnN0LXNoaWZ0 LXJlZ2lvbikKICBTaGlmdCByZWdpb24gQkVHIHRvIEVORCBieSBDTlQgdGFicy4KCuKAmEMt YyBDLXIgPHQ+4oCZLCDigJhDLWMgQy1sIDx0PuKAmSAocnN0LWRlcHJlY2F0ZWQtc2hpZnQt cmVnaW9uKQogIERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LXNoaWZ0LXJlZ2lvbiwgdXNl IFxbcnN0LXNoaWZ0LXJlZ2lvbl0gaW5zdGVhZC4KCuKAmEMtYyBDLXDigJkgKHJzdC1kZXBy ZWNhdGVkLWZvcndhcmQtc2VjdGlvbikKICBEZXByZWNhdGVkIGJpbmRpbmcgZm9yIHJzdC1m b3J3YXJkLXNlY3Rpb24sIHVzZSBcW3JzdC1mb3J3YXJkLXNlY3Rpb25dIGluc3RlYWQuCgri gJhDLWMgQy1u4oCZIChyc3QtZGVwcmVjYXRlZC1iYWNrd2FyZC1zZWN0aW9uKQogIERlcHJl Y2F0ZWQgYmluZGluZyBmb3IgcnN0LWJhY2t3YXJkLXNlY3Rpb24sIHVzZSBcW3JzdC1iYWNr d2FyZC1zZWN0aW9uXSBpbnN0ZWFkLgoK4oCYQy1jIFJFVOKAmSAocnN0LWRlcHJlY2F0ZWQt bWFyay1zZWN0aW9uKQogIERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LW1hcmstc2VjdGlv biwgdXNlIFxbcnN0LW1hcmstc2VjdGlvbl0gaW5zdGVhZC4KCuKAmEMtYyBDLXPigJkgKHJz dC1kZXByZWNhdGVkLXN0cmFpZ2h0ZW4tYWRvcm5tZW50cykKICBEZXByZWNhdGVkIGJpbmRp bmcgZm9yIHJzdC1zdHJhaWdodGVuLWFkb3JubWVudHMsIHVzZSBcW3JzdC1zdHJhaWdodGVu LWFkb3JubWVudHNdIGluc3RlYWQuCgrigJhDLWMgQy1hIDx0PuKAmSAocnN0LWRlcHJlY2F0 ZWQtYWRqdXN0KQogIERlcHJlY2F0ZWQgYmluZGluZyBmb3IgcnN0LWFkanVzdCwgdXNlIFxb cnN0LWFkanVzdF0gaW5zdGVhZC4KCuKAmEMtYyBDLWEgQy1k4oCZIChyc3QtZGlzcGxheS1h ZG9ybm1lbnRzLWhpZXJhcmNoeSkKICBEaXNwbGF5IHRoZSBjdXJyZW50IGZpbGUncyBzZWN0 aW9uIHRpdGxlIGFkb3JubWVudHMgaGllcmFyY2h5LgoK4oCYQy1jIEMtYSBDLXPigJkgKHJz dC1zdHJhaWdodGVuLWFkb3JubWVudHMpCiAgUmVkbyBhbGwgdGhlIGFkb3JubWVudHMgaW4g dGhlIGN1cnJlbnQgYnVmZmVyLgoK4oCYQy1jIEMtaOKAmSwg4oCYQy1jIEMtYSBDLWjigJks IOKAmEMtYyBDLXIgQy1o4oCZLCDigJhDLWMgQy1sIEMtaOKAmSwg4oCYQy1jIEMtdCBDLWji gJksIOKAmEMtYyBDLWMgQy1o4oCZIChkZXNjcmliZS1wcmVmaXgtYmluZGluZ3MpCiAgRGVz Y3JpYmUgdGhlIGJpbmRpbmdzIG9mIHRoZSBwcmVmaXggdXNlZCB0byByZWFjaCB0aGlzIGNv bW1hbmQuCgrigJhDLT3igJksIOKAmEMtYyBDLT3igJksIOKAmEMtYyBDLWEgQy1h4oCZIChy c3QtYWRqdXN0KQogIEF1dG8tYWRqdXN0IHRoZSBhZG9ybm1lbnQgYXJvdW5kIHBvaW50LgoK 4oCYQy1NLWXigJkgKHJzdC1mb3J3YXJkLXNlY3Rpb24pCiAgU2tpcCB0byB0aGUgbmV4dCBy ZVN0cnVjdHVyZWRUZXh0IHNlY3Rpb24gdGl0bGUuCgrigJhDLU0tYeKAmSAocnN0LWJhY2t3 YXJkLXNlY3Rpb24pCiAgTGlrZSBgcnN0LWZvcndhcmQtc2VjdGlvbicsIGV4Y2VwdCBtb3Zl IGJhY2sgb25lIHRpdGxlLgoK4oCYQy1NLWjigJkgKHJzdC1tYXJrLXNlY3Rpb24pCiAgU2Vs ZWN0IENPVU5UIHNlY3Rpb25zIGFyb3VuZCBwb2ludC4KICAK --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="c-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="c-mode-help" SGVscCB3aXRoIOKAmGMtbW9kZeKAmQoK4oCYTS1x4oCZIChjLWZpbGwtcGFyYWdyYXBoKQog IExpa2UgXFtmaWxsLXBhcmFncmFwaF0gYnV0IGhhbmRsZXMgQyBhbmQgQysrIHN0eWxlIGNv bW1lbnRzLgoK4oCYQy1NLWXigJkgKGMtZW5kLW9mLWRlZnVuKQogIE1vdmUgZm9yd2FyZCB0 byB0aGUgZW5kIG9mIGEgdG9wIGxldmVsIGRlY2xhcmF0aW9uLgoK4oCYQy1NLWHigJkgKGMt YmVnaW5uaW5nLW9mLWRlZnVuKQogIE1vdmUgYmFja3dhcmQgdG8gdGhlIGJlZ2lubmluZyBv ZiBhIGRlZnVuLgoK4oCYQy1NLWrigJksIOKAmE0tauKAmSAoYy1pbmRlbnQtbmV3LWNvbW1l bnQtbGluZSkKICBCcmVhayBsaW5lIGF0IHBvaW50IGFuZCBpbmRlbnQsIGNvbnRpbnVpbmcg Y29tbWVudCBvciBtYWNybyBpZiB3aXRoaW4gb25lLgoK4oCYTS1l4oCZIChjLWVuZC1vZi1z dGF0ZW1lbnQpCiAgR28gdG8gdGhlIGVuZCBvZiB0aGUgaW5uZXJtb3N0IEMgc3RhdGVtZW50 LgoK4oCYTS1h4oCZIChjLWJlZ2lubmluZy1vZi1zdGF0ZW1lbnQpCiAgR28gdG8gdGhlIGJl Z2lubmluZyBvZiB0aGUgaW5uZXJtb3N0IEMgc3RhdGVtZW50LgoK4oCYQy1NLXHigJkgKGMt aW5kZW50LWV4cCkKICBJbmRlbnQgZWFjaCBsaW5lIGluIHRoZSBiYWxhbmNlZCBleHByZXNz aW9uIGZvbGxvd2luZyBwb2ludCBzeW50YWN0aWNhbGx5LgoK4oCYQy1NLWjigJkgKGMtbWFy ay1mdW5jdGlvbikKICBQdXQgbWFyayBhdCBlbmQgb2YgdGhlIGN1cnJlbnQgdG9wLWxldmVs IGRlY2xhcmF0aW9uIG9yIG1hY3JvLCBwb2ludCBhdCBiZWdpbm5pbmcuCgrigJhUQULigJkg KGMtaW5kZW50LWxpbmUtb3ItcmVnaW9uKQogIEluZGVudCBhY3RpdmUgcmVnaW9uLCBjdXJy ZW50IGxpbmUsIG9yIGJsb2NrIHN0YXJ0aW5nIG9uIHRoaXMgbGluZS4KCuKAmEMtYyBDLXfi gJkgKGMtc3Vid29yZC1tb2RlKQogIFRvZ2dsZSBzdWJ3b3JkIG1vdmVtZW50IGFuZCBlZGl0 aW5nIChTdWJ3b3JkIG1vZGUpLgoK4oCYQy1jIC7igJkgKGMtc2V0LXN0eWxlKQogIFNldCB0 aGUgY3VycmVudCBidWZmZXIgdG8gdXNlIHRoZSBzdHlsZSBTVFlMRU5BTUUuCgrigJhDLWMg Qy1z4oCZIChjLXNob3ctc3ludGFjdGljLWluZm9ybWF0aW9uKQogIFNob3cgc3ludGFjdGlj IGluZm9ybWF0aW9uIGZvciBjdXJyZW50IGxpbmUuCgrigJhDLWMgQy1x4oCZIChjLWluZGVu dC1kZWZ1bikKICBJbmRlbnQgdGhlIGN1cnJlbnQgdG9wLWxldmVsIGRlY2xhcmF0aW9uIG9y IG1hY3JvIHN5bnRhY3RpY2FsbHkuCgrigJhDLWMgQy1v4oCZIChjLXNldC1vZmZzZXQpCiAg Q2hhbmdlIHRoZSB2YWx1ZSBvZiBhIHN5bnRhY3RpYyBlbGVtZW50IHN5bWJvbCBpbiBgYy1v ZmZzZXRzLWFsaXN0Jy4KCuKAmEMtYyBDLWzigJkgKGMtdG9nZ2xlLWVsZWN0cmljLXN0YXRl KQogIFRvZ2dsZSB0aGUgZWxlY3RyaWMgaW5kZW50YXRpb24gZmVhdHVyZS4KCuKAmEMtYyBD LWPigJkgKGNvbW1lbnQtcmVnaW9uKQogIENvbW1lbnQgb3IgdW5jb21tZW50IGVhY2ggbGlu ZSBpbiB0aGUgcmVnaW9uLgoK4oCYQy1jIEMtYuKAmSAoYy1zdWJtaXQtYnVnLXJlcG9ydCkK ICBTdWJtaXQgdmlhIG1haWwgYSBidWcgcmVwb3J0IG9uIENDIE1vZGUuCgrigJhDLWMgQy1h 4oCZIChjLXRvZ2dsZS1hdXRvLW5ld2xpbmUpCiAgVG9nZ2xlIGF1dG8tbmV3bGluZSBmZWF0 dXJlLgoK4oCYQy1jIEMtXOKAmSAoYy1iYWNrc2xhc2gtcmVnaW9uKQogIEluc2VydCwgYWxp Z24sIG9yIGRlbGV0ZSBlbmQtb2YtbGluZSBiYWNrc2xhc2hlcyBvbiB0aGUgbGluZXMgaW4g dGhlIHJlZ2lvbi4KCuKAmEMtYyBERUzigJksIOKAmEMtYyBDLURFTOKAmSwg4oCYQy1jIDxD LWJhY2tzcGFjZT7igJkgKGMtaHVuZ3J5LWRlbGV0ZS1iYWNrd2FyZHMpCiAgRGVsZXRlIHRo ZSBwcmVjZWRpbmcgY2hhcmFjdGVyIG9yIGFsbCBwcmVjZWRpbmcgd2hpdGVzcGFjZQoK4oCY Qy1jIEMtZOKAmSwg4oCYQy1jIDxkZWxldGVjaGFyPuKAmSwg4oCYQy1jIDxDLWRlbGV0ZWNo YXI+4oCZLCDigJhDLWMgPEMtZGVsZXRlPuKAmSAoYy1odW5ncnktZGVsZXRlLWZvcndhcmQp CiAgRGVsZXRlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIG9yIGFsbCBmb2xsb3dpbmcgd2hp dGVzcGFjZQoK4oCYQy1jIEMtdeKAmSAoYy11cC1jb25kaXRpb25hbCkKICBNb3ZlIGJhY2sg dG8gdGhlIGNvbnRhaW5pbmcgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsLCBsZWF2aW5nIG1h cmsgYmVoaW5kLgoK4oCYQy1jIEMtcOKAmSAoYy1iYWNrd2FyZC1jb25kaXRpb25hbCkKICBN b3ZlIGJhY2sgYWNyb3NzIGEgcHJlcHJvY2Vzc29yIGNvbmRpdGlvbmFsLCBsZWF2aW5nIG1h cmsgYmVoaW5kLgoK4oCYQy1jIEMtbuKAmSAoYy1mb3J3YXJkLWNvbmRpdGlvbmFsKQogIE1v dmUgZm9yd2FyZCBhY3Jvc3MgYSBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWwsIGxlYXZpbmcg bWFyayBiZWhpbmQuCgrigJhDLWTigJkgKGMtZWxlY3RyaWMtZGVsZXRlLWZvcndhcmQpCiAg RGVsZXRlIHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyIG9yIHdoaXRlc3BhY2UuCgrigJhERUzi gJkgKGMtZWxlY3RyaWMtYmFja3NwYWNlKQogIERlbGV0ZSB0aGUgcHJlY2VkaW5nIGNoYXJh Y3RlciBvciB3aGl0ZXNwYWNlLgoK4oCYI+KAmSAoYy1lbGVjdHJpYy1wb3VuZCkKICBJbnNl cnQgYSAiIyIuCgrigJh94oCZLCDigJh74oCZIChjLWVsZWN0cmljLWJyYWNlKQogIEluc2Vy dCBhIGJyYWNlLgoK4oCYL+KAmSAoYy1lbGVjdHJpYy1zbGFzaCkKICBJbnNlcnQgYSBzbGFz aCBjaGFyYWN0ZXIuCgrigJgq4oCZIChjLWVsZWN0cmljLXN0YXIpCiAgSW5zZXJ0IGEgc3Rh ciBjaGFyYWN0ZXIuCgrigJgs4oCZLCDigJg74oCZIChjLWVsZWN0cmljLXNlbWkmY29tbWEp CiAgSW5zZXJ0IGEgY29tbWEgb3Igc2VtaWNvbG9uLgoK4oCYOuKAmSAoYy1lbGVjdHJpYy1j b2xvbikKICBJbnNlcnQgYSBjb2xvbi4KCuKAmCnigJksIOKAmCjigJkgKGMtZWxlY3RyaWMt cGFyZW4pCiAgSW5zZXJ0IGEgcGFyZW50aGVzaXMuCgrigJhDLWMgQy1l4oCZIChjLW1hY3Jv LWV4cGFuZCkKICBFeHBhbmQgQyBtYWNyb3MgaW4gdGhlIHJlZ2lvbiwgdXNpbmcgdGhlIEMg cHJlcHJvY2Vzc29yLgo= --------------070100030201080101000807 Content-Type: text/plain; charset=UTF-8; name="shell-mode-help" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="shell-mode-help" SGVscCB3aXRoIOKAmHNoZWxsLW1vZGXigJkKCuKAmE0tcuKAmSAoY29taW50LWhpc3Rvcnkt aXNlYXJjaC1iYWNrd2FyZC1yZWdleHApCiAgU2VhcmNoIGZvciBhIHJlZ3VsYXIgZXhwcmVz c2lvbiBiYWNrd2FyZCBpbiBpbnB1dCBoaXN0b3J5IHVzaW5nIElzZWFyY2guCgrigJg8Qy11 cD7igJksIOKAmE0tcOKAmSAoY29taW50LXByZXZpb3VzLWlucHV0KQogIEN5Y2xlIGJhY2t3 YXJkcyB0aHJvdWdoIGlucHV0IGhpc3RvcnksIHNhdmluZyBpbnB1dC4KCuKAmDxDLWRvd24+ 4oCZLCDigJhNLW7igJkgKGNvbWludC1uZXh0LWlucHV0KQogIEN5Y2xlIGZvcndhcmRzIHRo cm91Z2ggaW5wdXQgaGlzdG9yeS4KCuKAmEMtYyAu4oCZIChjb21pbnQtaW5zZXJ0LXByZXZp b3VzLWFyZ3VtZW50KQogIEluc2VydCB0aGUgSU5ERVh0aCBhcmd1bWVudCBmcm9tIHRoZSBw cmV2aW91cyBDb21pbnQgY29tbWFuZC1saW5lIGF0IHBvaW50LgoK4oCYQy1jIEMtc+KAmSAo Y29taW50LXdyaXRlLW91dHB1dCkKICBXcml0ZSBvdXRwdXQgZnJvbSBpbnRlcnByZXRlciBz aW5jZSBsYXN0IGlucHV0IHRvIEZJTEVOQU1FLgoK4oCYQy1jIEMtZOKAmSAoY29taW50LXNl bmQtZW9mKQogIFNlbmQgYW4gRU9GIHRvIHRoZSBjdXJyZW50IGJ1ZmZlcidzIHByb2Nlc3Mu CgrigJhDLWMgQy1w4oCZIChjb21pbnQtcHJldmlvdXMtcHJvbXB0KQogIE1vdmUgdG8gZW5k IG9mIE50aCBwcmV2aW91cyBwcm9tcHQgaW4gdGhlIGJ1ZmZlci4KCuKAmEMtYyBDLW7igJkg KGNvbWludC1uZXh0LXByb21wdCkKICBNb3ZlIHRvIGVuZCBvZiBOdGggbmV4dCBwcm9tcHQg aW4gdGhlIGJ1ZmZlci4KCuKAmEMtYyBDLWzigJkgKGNvbWludC1keW5hbWljLWxpc3QtaW5w dXQtcmluZykKICBEaXNwbGF5IGEgbGlzdCBvZiByZWNlbnQgaW5wdXRzIGVudGVyZWQgaW50 byB0aGUgY3VycmVudCBidWZmZXIuCgrigJhDLWMgQy1l4oCZIChjb21pbnQtc2hvdy1tYXhp bXVtLW91dHB1dCkKICBQdXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyIGF0IHRoZSBib3R0b20g b2YgdGhlIHdpbmRvdy4KCuKAmEMtYyBDLXLigJksIOKAmEMtTS1s4oCZIChjb21pbnQtc2hv dy1vdXRwdXQpCiAgRGlzcGxheSBzdGFydCBvZiB0aGlzIGJhdGNoIG9mIGludGVycHJldGVy IG91dHB1dCBhdCB0b3Agb2Ygd2luZG93LgoK4oCYQy1jIEMtb+KAmSAoY29taW50LWRlbGV0 ZS1vdXRwdXQpCiAgRGVsZXRlIGFsbCBvdXRwdXQgZnJvbSBpbnRlcnByZXRlciBzaW5jZSBs YXN0IGlucHV0LgoK4oCYQy1jIFJFVOKAmSAoY29taW50LWNvcHktb2xkLWlucHV0KQogIElu c2VydCBhZnRlciBwcm9tcHQgb2xkIGlucHV0IGF0IHBvaW50IGFzIG5ldyBpbnB1dCB0byBi ZSBlZGl0ZWQuCgrigJhDLWMgQy1c4oCZIChjb21pbnQtcXVpdC1zdWJqb2IpCiAgU2VuZCBx dWl0IHNpZ25hbCB0byB0aGUgY3VycmVudCBzdWJqb2IuCgrigJhDLWMgQy164oCZIChjb21p bnQtc3RvcC1zdWJqb2IpCiAgU3RvcCB0aGUgY3VycmVudCBzdWJqb2IuCgrigJhDLWMgQy1j 4oCZIChjb21pbnQtaW50ZXJydXB0LXN1YmpvYikKICBJbnRlcnJ1cHQgdGhlIGN1cnJlbnQg c3Viam9iLgoK4oCYQy1jIEMtd+KAmSAoYmFja3dhcmQta2lsbC13b3JkKQogIEtpbGwgY2hh cmFjdGVycyBiYWNrd2FyZCB1bnRpbCBlbmNvdW50ZXJpbmcgdGhlIGJlZ2lubmluZyBvZiBh IHdvcmQuCgrigJhDLWMgQy114oCZIChjb21pbnQta2lsbC1pbnB1dCkKICBLaWxsIGFsbCB0 ZXh0IGZyb20gbGFzdCBzdHVmZiBvdXRwdXQgYnkgaW50ZXJwcmV0ZXIgdG8gcG9pbnQuCgri gJhDLWMgQy1h4oCZIChjb21pbnQtYm9sLW9yLXByb2Nlc3MtbWFyaykKICBNb3ZlIHBvaW50 IHRvIGJlZ2lubmluZyBvZiBsaW5lIChhZnRlciBwcm9tcHQpIG9yIHRvIHRoZSBwcm9jZXNz IG1hcmsuCgrigJhDLWMgQy144oCZIChjb21pbnQtZ2V0LW5leHQtZnJvbS1oaXN0b3J5KQog IEFmdGVyIGZldGNoaW5nIGEgbGluZSBmcm9tIGlucHV0IGhpc3RvcnksIHRoaXMgZmV0Y2hl cyB0aGUgZm9sbG93aW5nIGxpbmUuCgrigJhDLWMgU1BD4oCZIChjb21pbnQtYWNjdW11bGF0 ZSkKICBBY2N1bXVsYXRlIGEgbGluZSB0byBzZW5kIGFzIGlucHV0IGFsb25nIHdpdGggbW9y ZSBsaW5lcy4KCuKAmEMtYyBNLXLigJkgKGNvbWludC1wcmV2aW91cy1tYXRjaGluZy1pbnB1 dC1mcm9tLWlucHV0KQogIFNlYXJjaCBiYWNrd2FyZHMgdGhyb3VnaCBpbnB1dCBoaXN0b3J5 IGZvciBtYXRjaCBmb3IgY3VycmVudCBpbnB1dC4KCuKAmEMtYyBNLXPigJkgKGNvbWludC1u ZXh0LW1hdGNoaW5nLWlucHV0LWZyb20taW5wdXQpCiAgU2VhcmNoIGZvcndhcmRzIHRocm91 Z2ggaW5wdXQgaGlzdG9yeSBmb3IgbWF0Y2ggZm9yIGN1cnJlbnQgaW5wdXQuCgrigJhDLWMg TS1v4oCZIChjb21pbnQtY2xlYXItYnVmZmVyKQogIENsZWFyIHRoZSBjb21pbnQgYnVmZmVy LgoK4oCYUkVU4oCZIChjb21pbnQtc2VuZC1pbnB1dCkKICBTZW5kIGlucHV0IHRvIHByb2Nl c3MuCgrigJhDLWTigJkgKGNvbWludC1kZWxjaGFyLW9yLW1heWJlLWVvZikKICBEZWxldGUg QVJHIGNoYXJhY3RlcnMgZm9yd2FyZCBvciBzZW5kIGFuIEVPRiB0byBzdWJwcm9jZXNzLgoK 4oCYPGtwLWRlbGV0ZT7igJksIOKAmDxkZWxldGU+4oCZIChkZWxldGUtZm9yd2FyZC1jaGFy KQogIERlbGV0ZSB0aGUgZm9sbG93aW5nIE4gY2hhcmFjdGVycyAocHJldmlvdXMgaWYgTiBp cyBuZWdhdGl2ZSkuCgrigJg8bW91c2UtMj7igJkgKGNvbWludC1pbnNlcnQtaW5wdXQpCiAg SW4gYSBDb21pbnQgYnVmZmVyLCBzZXQgdGhlIGN1cnJlbnQgaW5wdXQgdG8gdGhlIHByZXZp b3VzIGlucHV0IGF0IHBvaW50LgoK4oCYQy1jIEMtYuKAmSAoc2hlbGwtYmFja3dhcmQtY29t bWFuZCkKICBNb3ZlIGJhY2t3YXJkIGFjcm9zcyBBUkcgc2hlbGwgY29tbWFuZChzKS4gIERv ZXMgbm90IGNyb3NzIGxpbmVzLgoK4oCYQy1jIEMtZuKAmSAoc2hlbGwtZm9yd2FyZC1jb21t YW5kKQogIE1vdmUgZm9yd2FyZCBhY3Jvc3MgQVJHIHNoZWxsIGNvbW1hbmQocykuICBEb2Vz IG5vdCBjcm9zcyBsaW5lcy4KCuKAmFRBQuKAmSAoY29tcGxldGlvbi1hdC1wb2ludCkKICBQ ZXJmb3JtIGNvbXBsZXRpb24gb24gdGhlIHRleHQgYXJvdW5kIHBvaW50LgoK4oCYTS0/4oCZ IChjb21pbnQtZHluYW1pYy1saXN0LWZpbGVuYW1lLWNvbXBsZXRpb25zKQogIERpc3BsYXkg YSBsaXN0IG9mIHBvc3NpYmxlIGNvbXBsZXRpb25zIGZvciB0aGUgZmlsZW5hbWUgYXQgcG9p bnQuCgrigJhNLVJFVOKAmSAoc2hlbGwtcmVzeW5jLWRpcnMpCiAgUmVzeW5jIHRoZSBidWZm ZXIncyBpZGVhIG9mIHRoZSBjdXJyZW50IGRpcmVjdG9yeSBzdGFjay4K --------------070100030201080101000807 Content-Type: text/x-emacs-lisp; name="help-with-major-mode.el" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="help-with-major-mode.el" ;;; Help with major mode ;; Extracted from https://github.com/cpitclaudel/biblio.el/blob/master/bi= blio-core.el#L265 ;; Requires: seq, dash (defsubst hwmm--as-list (x) "Make X a list, if it isn't." (if (consp x) x (list x))) (defun hwmm--map-keymap (func map) "Call `map-keymap' on FUNC and MAP, and collect the results." (let ((out)) (map-keymap (lambda (&rest args) (push (apply func args) out)) map) out)) (defun hwmm--flatten-map (keymap &optional prefix) "Flatten KEYMAP, prefixing its keys with PREFIX. This should really be in Emacs core (in Elisp), instead of being implemented in C (at least for sparse keymaps). Don't run this on non-sparse keymaps." (nreverse (cond ((keymapp keymap) (seq-map (lambda (key-value) "Add PREFIX to key in KEY-VALUE." (cons (append prefix (hwmm--as-list (car key-value))) (cdr key-value))) (delq nil (apply #'seq-concatenate 'list (hwmm--map-keymap (lambda (k v) "Return a list of bindings in V, prefixed b= y K." (hwmm--flatten-map v (hwmm--as-list k))) keymap))))) ;; This breaks if keymap is a symbol whose function cell is a keymap ((symbolp keymap) (list (cons prefix keymap)))))) (defun hwmm--group-alist (alist) "Return a copy of ALIST whose keys are lists of keys, grouped by value.= That is, if two key map to `eq' values, they are grouped." (let ((map (make-hash-table :test 'eq)) (new-alist nil)) (pcase-dolist (`(,key . ,value) alist) (puthash value (cons key (gethash value map)) map)) (pcase-dolist (`(,_ . ,value) alist) (-when-let* ((keys (gethash value map))) (push (cons (nreverse keys) value) new-alist) (puthash value nil map))) (nreverse new-alist))) (defun hwmm--quote (str) "Quote STR and call `substitute-command-keys' on it." (if str (substitute-command-keys (concat "`" str "'")) "")) (defun hwmm--quote-keys (keys) "Quote and concatenate keybindings in KEYS." (mapconcat (lambda (keyseq) (hwmm--quote (ignore-errors (help-key-description keyseq n= il)))) keys ", ")) (defun hwmm--brief-docs (command) "Return first line of documentation of COMMAND." (let ((docs (or (ignore-errors (documentation command t)) ""))) (string-match "\\(.*\\)$" docs) (match-string-no-properties 1 docs))) (defun hwmm--help-with-major-mode-1 (keyseqs-command) "Print help on KEYSEQS-COMMAND to standard output." ;; (hwmm-with-fontification 'font-lock-function-name-face (insert (format "%s (%S)\n" (hwmm--quote-keys (car keyseqs-command)) (cdr keyseqs-command))) (insert (format " %s\n\n" (hwmm--brief-docs (cdr keyseqs-command))))) (defun hwmm--help-with-major-mode () "Display help with current major mode." (let ((buf (format "*%S help*" major-mode))) (with-help-window buf (princ (format "Help with %s\n\n" (hwmm--quote (symbol-name major-m= ode)))) (let ((bindings (nreverse (hwmm--group-alist (hwmm--flatten-map (current-local-map)))))) (with-current-buffer buf (seq-do #'hwmm--help-with-major-mode-1 bindings)))) buf)) --------------070100030201080101000807-- --9ET1tXPJ9avbxati4H8m1hJoni5x328Li-- --hEVQOegSg6jWAB9tH4suBjAquIgDXkbPk Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.22 (GNU/Linux) iQIcBAEBAgAGBQJXbCpsAAoJEPqg+cTm90wjVFkP/j5igmvLDR3/k2Owam3lgH9O EvpPuYDGmotm4NYktB5Ym4ruj9wrD2z8fPDFGdXBfqDIBPcDTskHND2XIPaRWtVY SHcO3NedIYWfU/qP22ECRQaBwydk7wbuYY9KpL24iHzgJ5FH43QCpPf5qLHOkp+1 XQTbygdickGPdgusbQSRiy/WOrcPwrR/p33oizWzoMIcaex7dA1DD9m1zliH+cxT Xpkczh/18dJog9h0ev08gcqyUtuqRq/i4qTTWOIPypZf4u3LbhkFll1GRHrNK+oN capg2pZYQAvFs2D8/Ez+8Ng6bvXLzSvu5ytItPgZxEjDUEcPBHywIw3c8ZeugaDh 0ZggqhMLX9gKhoQ/dw41AGAczqrtVhIqLH9VzUxqIPPLsmIbFFicve9Ok0ga8b0f lOsARgqonmJJCW7oWmjrkc65SPwsW2gt2pT9OV9J9tkoIp3MSSYAn5y0srNPiTKC vnbgWzA5NwzRjWzOXEYpcOeXFTQQX/9lm1Wf0e/exzBegvwrJAw8n6bC6gjIuxrO EV17LvHZhP1TPZo+1wyyCmsNnRI3Ym2m+fHmC/oywHenl2lG2/YvRZH/RElpDCr6 x+WPsrZ/SJCI0XNS9mbnevrCPy8PrlH0J+mH3MHE8AQt1eIOIYvsh/s/JWlGv9dQ snKQYxkD68/UZWs7KIzc =68wB -----END PGP SIGNATURE----- --hEVQOegSg6jWAB9tH4suBjAquIgDXkbPk--