summaryrefslogtreecommitdiff
path: root/man/hyperbole.texi
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2019-08-14 04:29:57 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2019-08-14 04:29:57 -0400
commit6e555e763567c66ad8e50724a7dd5e286dbb1e65 (patch)
tree86fb29daa274d8007063babec826719154bf087e /man/hyperbole.texi
parent98a5ecb3bf80f2b53523c769459d1a1a49491125 (diff)
parent332ef336a7ad87e25c0563bfeaf0e6758d52c59c (diff)
Merge remote-tracking branch 'hyperbole/master' into externals/hyperbolescratch/hyperbole-lexbind
Diffstat (limited to 'man/hyperbole.texi')
-rw-r--r--man/hyperbole.texi676
1 files changed, 459 insertions, 217 deletions
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index c699a03..fad543c 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -52,7 +52,7 @@
This manual is for GNU Hyperbole
(Edition @value{EDITION}, Published @value{UPDATED}).
-Copyright @copyright{} 1989-2017 Free Software Foundation, Inc.
+Copyright @copyright{} 1989-2019 Free Software Foundation, Inc.
@quotation
Permission is granted to copy, distribute and/or modify this document
@@ -139,7 +139,10 @@ Texinfo markup language.
<CENTER><H2>The Everyday Hypertextual Information Manager</H2></CENTER>
-<P>Copyright &copy; 1989-2017 Free Software Foundation, Inc.</P>
+<CENTER><H3><A HREF="https://saythanks.io/to/rswgnu">Say thanks if you like Hyperbole.</A></H3></CENTER>
+
+
+<P>Copyright &copy; 1989-2019 Free Software Foundation, Inc.</P>
<P>GNU Hyperbole is available for use, modification, and distribution under
the terms of the GNU General Public License (GPL) Version 3 or later,
@@ -151,8 +154,8 @@ WITHOUT ANY WARRANTY, without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
<PRE>
-Edition 7.0.2a
-Printed December 12, 2017.
+Edition 7.0.3b
+Printed August 11, 2019.
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
@@ -176,11 +179,11 @@ Printed December 12, 2017.
@center The Everyday Hypertextual Information Manager
-@center Edition 7.0.2a, December 12, 2017.
+@center Say thanks: https://saythanks.io/to/rswgnu
@sp 2
@noindent
-Copyright @copyright{} 1989-2017 Free Software Foundation, Inc.
+Copyright @copyright{} 1989-2019 Free Software Foundation, Inc.
GNU Hyperbole is available for use, modification, and distribution
under the terms of the GNU General Public License (GPL) Version 3 or
@@ -193,6 +196,9 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
@sp 2
@example
+Edition 7.0.3b
+Augut 11, 2019
+
Published by the Free Software Foundation, Inc.
Author: Bob Weiner
E-mail: <hyperbole-users@@gnu.org> (This is a mail list).
@@ -309,6 +315,10 @@ Buttons
* Button Type Precedence::
* Utilizing Explicit Buttons::
+Implicit Buttons
+
+* Implicit Button Type Summaries::
+
Utilizing Explicit Buttons
* Creation::
@@ -413,6 +423,7 @@ Smart Mouse Keys
Smart Keyboard Keys
+* Smart Key - Company Mode::
* Smart Key - Treemacs::
* Smart Key - Emacs Pushbuttons::
* Smart Key - Argument Completion::
@@ -428,6 +439,7 @@ Smart Keyboard Keys
* Smart Key - RDB Mode::
* Smart Key - Help Buffers::
* Smart Key - Pages Directory Mode::
+* Smart Key - Python Source Code::
* Smart Key - Identifier Menu Mode ::
* Smart Key - C Source Code::
* Smart Key - C++ Source Code::
@@ -435,7 +447,6 @@ Smart Keyboard Keys
* Smart Key - Lisp Source Code::
* Smart Key - Java Source Code::
* Smart Key - JavaScript Source Code::
-* Smart Key - Python Source Code::
* Smart Key - Objective-C Source Code::
* Smart Key - Fortran Source Code::
* Smart Key - Occurrence Matches::
@@ -462,7 +473,7 @@ Smart Keyboard Keys
@chapter Introduction
This edition of the GNU Hyperbole Manual is for use with any version
-7.0.2a or greater of GNU Hyperbole. Hyperbole runs atop GNU Emacs 24.3
+7.0.3b or greater of GNU Hyperbole. Hyperbole runs atop GNU Emacs 24.3
or higher. It will trigger an error if your Emacs is older.
This chapter summarizes the structure of the rest of the manual,
@@ -490,16 +501,17 @@ This is a reference manual with extensive details about Hyperbole use. If
you prefer a simpler, more interactive introduction to Hyperbole,
the @file{DEMO} file included in the Hyperbole distribution demonstrates
many of Hyperbole's standard facilities without the need to read through
-this reference manual. It is a good way to rapidly understand some of what
-Hyperbole can do for you. Once Hyperbole is installed, (@pxref{Setup}),
-you can access the DEMO with the key sequence @bkbd{C-h h d d}.
+this reference manual. The DEMO is a good way to rapidly understand some
+of what Hyperbole can do for you. Once Hyperbole is installed,
+(@pxref{Setup}), you can access the DEMO with the key sequence @bkbd{C-h h
+d d}.
@xref{Glossary}, for definitions of Hyperbole terms. In some cases,
-terms are not precisely defined within the body of this manual since
-they are defined within the glossary. Be sure to reference the
-glossary if a term is unclear to you. Although you need not have a keen
-understanding of all of these terms, a quick scan of the glossary should
-help throughout Hyperbole use.
+terms are not precisely defined within the body of this manual since they
+are defined within the glossary. Be sure to reference the glossary if a
+term is unclear to you. Although you need not have a keen understanding of
+all of these terms, a quick scan of the glossary helps throughout Hyperbole
+use.
@xref{Setup}, for explanations of how to obtain, install, configure
and load Hyperbole for use. This appendix includes information on
@@ -570,19 +582,19 @@ its use as the prime means of organizing and interlinking the constant
flows of daily information.
GNU Hyperbole takes a distinctly different approach. It has its own
-hypertext technology that can interface perfectly with web links but
-which are much easier to create (simply drag from the source to the
-destination of a link to create a new hyperlink). Hyperbole
-hyperbuttons can link not only to static information but can perform
-arbitrary actions through the use of button types written in a single,
-highly interactive language, Emacs Lisp. Hyperbole adds all of this
-power to your written documents, e-mail, news articles, contact
-management, outlines, directory listings, and much more. Hyperbole
-works well with the very latest versions of GNU Emacs.
-
-Unlock the power of GNU Hyperbole to make your information work for
-you. One system. One language. One manual. One solution. Learn GNU
-Hyperbole and start moving further, faster.
+hypertext technology that can interface perfectly with web links but which
+are much easier to create (simply drag from the source to the destination
+of a link to create a new hyperlink). Hyperbole hyperbuttons can link not
+only to static information but can perform arbitrary actions (through the
+use of button types written in a single, highly interactive language, Emacs
+Lisp). Hyperbole adds all of this power to your written documents, e-mail,
+news articles, contact management, outlines, directory listings, and much
+more. Hyperbole works well with the very latest versions of GNU Emacs
+across every editing and viewing mode in Emacs.
+
+Unlock the power of GNU Hyperbole to make your information work for you.
+One system. One language. One manual. One solution. Learn Hyperbole and
+start moving further, faster.
@node Hyperbole Overview, Mail Lists, Motivation, Introduction
@section Hyperbole Overview
@@ -593,7 +605,7 @@ Hyperbole and start moving further, faster.
@cindex Emacs Lisp
@cindex Emacs
GNU Hyperbole (pronounced Ga-new Hi-per-bo-lee), or just Hyperbole, is
-an efficient and programmable hypertextual information management
+an efficient, programmable hypertextual information management
system. It is intended for everyday work on any GNU Emacs platform.
Hyperbole allows hypertext buttons to be embedded within unstructured
and structured files, mail messages and news articles. It offers
@@ -609,9 +621,12 @@ Hyperbole consists of five parts:
@item Buttons and Smart Keys
Hyperbole hyperlink and other kinds of buttons (explicit buttons) may be
added to documents with a simple drag between windows, no markup language
-needed. Implicit buttons are patterns automatically recognized within text
-that perform actions, e.g. bug#24568 displays the bug status information
-for that bug number. @xref{Buttons}.
+needed. Implicit buttons are patterns automatically recognized within
+existing text that perform actions, e.g. bug#24568 displays the bug status
+information for that Emacs bug number, without the need for any additional
+markup. Global buttons are buttons that are activated by name from
+anywhere within Emacs.
+@xref{Buttons}.
Buttons are accessed by clicking on them or referenced by name (global
buttons), so they can be activated regardless of what is on screen.
@@ -632,7 +647,8 @@ fast, flexible file and text finding commands. A powerful, hierarchical
contact manager, @pxref{HyRolo}, which anyone can use, is also included.
It is easy to learn since it introduces only a few new mechanisms
and has a menu interface, which may be operated from the keyboard or the
-mouse;
+mouse; it may also be used to look up any record-based information and
+Hyperbole buttons may be embedded in any records;
@item Screen Control
the fastest, easiest-to-use window and frame control available for GNU
@@ -640,13 +656,14 @@ Emacs, @pxref{HyControl}. With just a few keystrokes, you can shift from
increasing a window's height by 5 lines to moving a frame by 220 pixels
or immediately moving it to a screen corner. Text in each window or
frame may be enlarged or shrunk (zoomed) for easy viewing, plus many
-other features;
+other features; this allows Hyperbole to quickly control the way
+information is presented on-screen;
@item Hypertextual Outliner
an advanced outliner, @pxref{Koutliner}, with multi-level
autonumbering and permanent identifiers attached to each outline node
for use as hypertext link anchors, per node properties and flexible
-view specifications that can be embedded within links or used
+view specifications that can be included in links or used
interactively;
@item Programming Library
@@ -701,7 +718,7 @@ Some of Hyperbole's most significant features are:
@itemize @bullet
@item
-Buttons may link to information or may execute procedures, such as
+Buttons may link to information or may execute functions, such as
starting or communicating with external programs;
@item
@@ -1179,7 +1196,7 @@ on the last line to end the dired session (bury its buffer).
If you use the Treemacs file viewer Emacs package, you can configure Hyperbole
to use this instead of Dired when you click on a modeline buffer id.
-Since this is a customization option, it may be change permanently like so.
+Since this is a customization option, it may be changed permanently like so.
Use @bkbd{M-x customize-set-variable @key{RET} action-key-modeline-buffer-id-function @key{RET}}.
Change the value to @code{smart-treemacs-modeline}. Then press @key{RET}. To change it back
to Hyperbole's default, use the value, @code{dired-jump}.
@@ -1409,14 +1426,15 @@ unless it is the only window in that frame.
@cindex drag, dired item
@cindex drag, buffer menu item
@cindex drag, Treemacs item
-You can do the same thing with items in dired, buffer menu and ibuffer menu
-listing buffers rather than buffers themselves. Drag with the Action Mouse Key
-and the selected item will be displayed in any Emacs window in which you
-release. Drag outside Emacs and it will be displayed in a new frame. To
-display the last item you want, press the Action Key on it and it will display
-within the listing window itself. (If you use the Treemacs file viewer package,
-item dragging works there as well). Remember that you can emulate these drags
-from the keyboard when needed, @pxref{Keyboard Drags}.
+You can also drag items to other windows with the Action Key in Dired,
+Buffer Menu, Ibuffer and Treemacs listing buffers, rather than the
+buffers themselves. Drag with the Action Mouse Key and the selected
+item will be displayed in any Emacs window in which you release. Drag
+outside Emacs and it will be displayed in a new frame. To display the
+last item you want within the listing window itself, press and release
+the Action Key on that item after dragging your other items to their
+respective windows. Remember that you can emulate these drags from
+the keyboard when needed, @pxref{Keyboard Drags}.
So now you can put a bunch of buffers and files on your screen wherever
you like. Typically, a brief visual pulse is shown first at the source item and
@@ -1450,37 +1468,66 @@ session since drag actions are not supported without a window system.
@cindex window by letter
@cindex jump to window by letter
@cindex keyboard, jump to window
-For even faster keyboard-based display of items, use the Emacs
-package @code{ace-window} (see @url{https://elpa.gnu.org/packages/ace-window.html}).
+For even faster keyboard-based display of items and drag emulations,
+use the Emacs package @code{ace-window}
+(see @url{https://elpa.gnu.org/packages/ace-window.html}).
The ace-window package assigns short letter IDs to each Emacs window and lets
you jump to or operate upon a specific window by giving its ID. Hyperbole can
add commands to ace-window that replace the two-step drag emulation key
-described above with a single key sequence that displays dired or
-buffer menu @emph{items}.
+described above with a single key sequence that does not require moving to
+the drag target window since it is specified by ID as part of the command.
To enable this feature, in your Emacs initialization file after
Hyperbole is initialized, if you do not have a key bound for
@code{ace-window}, then call: @code{(hkey-ace-window-setup \"\M-o\")}
-to bind it to @bkbd{M-o}. Otherwise, call the setup function without
-a key: @code{(hkey-ace-window-setup)}.
+to bind it to @bkbd{M-o}, replacing Hyperbole's
+default @code{hkey-operate} command there (because ace-window can emulate
+the drags performed by @code{hkey-operate}). If you already have a key bound
+for @code{ace-window}, then just ensure it is initialized by calling
+@code{(hkey-ace-window-setup)} without a key argument.
@cindex link creation from keyboard
@cindex keyboard link creation
@kindex M-o i <window-id>
+@kindex M-o m <window-id>
+@kindex M-o r <window-id>
@kindex M-o t <window-id>
@cindex drag item
+@cindex replace window buffer
+@cindex swap window buffers
@cindex throw item
+@cindex buffer replace
+@cindex buffers swap
@cindex item drag
@cindex item throw
After setup, the leftmost character or two of each window's modeline will show
the ID to type to use that window as the drag destination. Then whenever point
is on an item you want displayed in another window, use @bkbd{M-o i
-<id-of-window-to-display-item-in>} and watch the magic happen. You can also use
-this command to create explicit button links to other window buffers when in an editable
-buffer rather than on an item. If you want to display multiple items in different
-windows, instead use the @bkbd{M-o t <id-of-window-to-display-item-in>} key sequence to
-@emph{throw} the item to the window.
+<id-of-window-to-display-item-in>} and watch the magic happen. If you
+want to display multiple items in different windows, instead use
+the @bkbd{M-o t <id-of-window-to-display-item-in>} key sequence to
+@emph{throw} the item to the window. To @emph{replace}
+the selected window's buffer with that of another window, use
+@bkbd{M-o r <id-of-window-displaying-desired-buffer>}. To instead
+@emph{swap} the selected window's buffer with that of another window,
+use @bkbd{M-o m <id-of-window-to-swap-with>}.
+
+In summary:
+@table @asis
+@item M-o i <window>
+insert listing item at point into <window>; if not on a listing item,
+trigger an error
+
+@item M-o m <window>
+swap the buffers in the selected window and <window>
+
+@item M-o r <window>
+replace the selected (current) window's buffer with that of <window>
+
+@item M-o t <window>
+throw listing item at point or current buffer to <window>
+@end table
@c -------
@@ -1517,7 +1564,7 @@ windows, instead use the @bkbd{M-o t <id-of-window-to-display-item-in>} key sequ
@c normally under Hyperbole.
@c The code for Smart Key modifiers can be found in
-@c @file{@code{$@{hyperb:dir@}}/hmouse-mod.el}.
+@c @file{$@{hyperb:dir@}/hmouse-mod.el}.
@node Buttons, Menus, Smart Keys, Top
@@ -1719,10 +1766,10 @@ type} identifies a pattern or state that when matched triggers
an @emph{action} associated with the implicit button type. The action
is specified by either a Hyperbole action type (@pxref{Action Types})
or an Emacs Lisp function. Implicit button types may use the same
-action types that explicit buttons use. As an example, a pathname
-implicit button type would match to any existing local filename or
-directory name and its action would be to display the associated file
-or directory, typically in another window.
+action types that explicit buttons use. As an example, the pathname
+implicit button type matches to any existing local filename or
+directory name and its action displays the associated file or
+directory, typically in another window.
@vindex file, hibtypes.el
@cindex context
@@ -1730,14 +1777,15 @@ or directory, typically in another window.
@cindex activating implicit button
@cindex menu item, Ibut/Act
@kindex C-h h i a
-Unlike explicit buttons, implicit buttons have no individual button data
-other than their textual labels. You use implicit button types which
-include boolean expressions (predicates) that match to both the label
-and the context required of any button of the type. Each time a Smart
-Key is pressed at a location, Hyperbole evaluates the predicates from
-the list of implicit button types and the first one that evaluates true
-is selected and its associated action is triggered. The Ibut/Act menu
-item, @bkbd{C-h h i a}, also activates any implicit button found at the
+Unlike explicit buttons, implicit buttons have no individual button
+data other than their text and optional labels. You use implicit
+button types which include boolean expressions (predicates) that match
+to both the label and the context required of any button of the type.
+Each time a Smart Key is pressed at a location, Hyperbole evaluates
+the predicates from the list of implicit button types and the first
+one that evaluates true is selected and its associated action is
+triggered. Alternatively, you can use the Ibut/Act menu
+item, @bkbd{C-h h i a}, to activate any implicit button found at the
current point.
All of this happens transparently and is easy to use once you try it.
@@ -1745,14 +1793,38 @@ The Hyperbole Smart Keys offer additional extensive context-sensitive
point-and-click type behavior beyond implicit button types. @xref{Smart
Key Operations}.
+@cindex implicit button labels
+@cindex labeling implicit buttons
+@cindex naming implicit buttons
+Individual implicit buttons may be labeled, allowing activation by
+name or use as a link target by other buttons. Here is a pathname
+button with a label of 'My Emacs Files':
+
+@example
+<[My Emacs Files]>: "~/.emacs.d"
+@end example
+
+The label is delimited by @samp{<[} and @samp{]>} and can be followed
+by any number of :, - or = separator characters, including none. You
+can activate the button either from its label or its text. With point
+on an implicit button, @bkbd{C-h h i l} will label it or you
+may simply type the label and delimiters manually.
+
+@menu
+* Implicit Button Type Summaries::
+@end menu
+
+@node Implicit Button Type Summaries, , Implicit Buttons, Implicit Buttons
+@subsection Implicit Button Type Summaries
+
@cindex ibtypes, list of
@cindex implicit button types
Below, standard implicit button types are listed in the order in which
Hyperbole tries to match to the types when looking for an implicit
button; @bkbd{C-h h i t @key{RET}} provides similar information. See
the Hyperbole file, @file{hibtypes.el}, for complete examples of
-implicit button types (where they are listed in reverse in increasing
-order of priority).
+implicit button types (they are listed in increasing order of
+priority).
@table @code
@@ -1863,13 +1935,57 @@ Jumps to the source line associated with a debugger stack frame or
breakpoint line. This works with gdb, dbx, and xdb. Such lines are
recognized in any buffer.
+@findex ibtypes ripgrep-msg
+@cindex grep
+@cindex ripgrep
+@cindex match lines
+@item ripgrep-msg
+Jumps to line associated with a ripgrep (rg) line numbered msg.
+Ripgrep outputs each pathname once followed by all matching lines in
+that pathname. Messages are recognized in any buffer (other than a
+helm completion buffer).
+
+@findex ibtypes ipython-stack-frame
+@cindex ipython
+@cindex stack frame
+@item ipython-stack-frame
+Jumps to line associated with an ipython stack frame line numbered msg.
+ipython outputs each pathname once followed by all matching lines in that pathname.
+Messages are recognized in any buffer (other than a helm completion buffer).
+
@findex ibtypes grep-msg
@cindex grep
@cindex compiler error
+@cindex match lines
@item grep-msg
Jumps to a line associated with grep or compilation error messages.
Messages are recognized in any buffer.
+@findex ibtypes link-to-ibut
+@cindex implicit button link
+@cindex link to implicit button
+@cindex ilink
+@item link-to-ibut <ilink>
+At point, activates a link to an implicit button within the current buffer.
+Recognizes the format ’<ilink:’ <button label> ’>’, e.g. <ilink: my sequence of keys>.
+
+@findex ibtypes link-to-gbut
+@cindex global button link
+@cindex link to global button
+@cindex glink
+@item link-to-gbut <glink>
+At point, activates a link to a global button.
+The global button’s action is executed in the context of the current buffer.
+Recognizes the format ’<glink:’ <button label> ’>’, e.g. <glink: open todos>.
+
+@findex ibtypes link-to-ebut
+@cindex explicit button link
+@cindex link to explicit button
+@cindex elink
+@item link-to-ebut <elink>
+At point, activates a link to an explicit button within the current buffer.
+Recognizes the format ’<elink:’ <button label> ’>’, e.g. <elink: project-list>.
+
@findex ibtypes klink
@cindex klink
@cindex koutline link
@@ -1902,10 +2018,12 @@ retrievals.
@findex ibtypes kbd-key
@cindex key sequence
+@cindex sequence of keys
@item kbd-key
-Executes a key sequence found around point, delimited by curly braces, @{@}, if any.
-Key sequences should be in human readable form, e.g.@: @bkbd{C-x C-b}. Formats such
-as @{^x^b@} will not be recognized.
+Executes a key series (series of key sequences) found around point,
+delimited by curly braces, @{@}, if any. Key series should be in
+human readable form, e.g.@: @bkbd{C-x C-b}. Formats such as @{^x^b@}
+will not be recognized.
Any key sequence must be a string of one of the following:
@itemize @bullet
@@ -1920,7 +2038,7 @@ Any key sequence must be a string of one of the following:
@vindex file, DIR
@item dir-summary
Detects filename buttons in files named "MANIFEST" or "DIR".
-Displays selected files. Each file name must be at the beginning of the
+Displays selected files. Each filename must be at the beginning of the
line and must be followed by one or more spaces and then another
non-space, non-parenthesis, non-brace character.
@@ -1929,7 +2047,7 @@ non-space, non-parenthesis, non-brace character.
@cindex toc implicit button type
@item text-toc
Jumps to the text file section referenced by a table of contents entry
-at point. The file name of the current buffer must contain
+at point. The filename of the current buffer must contain
@file{README} and there must be a `Table of Contents' or `Contents'
label on a line by itself (it may begin with an asterisk), preceding the
table of contents. Each toc entry must begin with some whitespace
@@ -2033,7 +2151,7 @@ produced by git log.
@vindex hibtypes-github-default-user
@item github-reference
Displays the Github entity associated with REFERENCE and optional USER and PROJECT.
-See @file{DEMO#Github (Remote) References} for examples.
+See @file{../DEMO#Github (Remote) References} for examples.
REFERENCE is a string of one of the following forms:
@itemize @bullet
@@ -2063,6 +2181,45 @@ If given, PROJECT overrides any project value in REFERENCE. If no
PROJECT value is provided, it defaults to the value of
@code{hibtypes-github-default-project}.
+@findex ibtypes gitlab-reference
+@cindex gitlab reference
+@cindex version control
+@vindex hibtypes-gitlab-default-project
+@vindex hibtypes-gitlab-default-user
+@item gitlab-reference
+Displays the Gitlab entity associated with REFERENCE and optional USER and PROJECT.
+See @file{../DEMO#Gitlab (Remote) References} for examples.
+
+REFERENCE is a string of one of the following forms:
+@itemize @bullet
+@item <ref-item>
+@item <user>/<project>/<ref-item>
+@item <project>/<ref-item>
+@item /<group>/<project>.
+or
+@item /<project-or-group> (where a group is a colection of projects)
+@end itemize
+
+<ref-item> is one of these:
+@table @asis
+@item @bullet{} one of the words: activity, analytics, boards or kanban, branches, commits, contributors, groups, issues or list, jobs, labels, merge_requests, milestones, pages, pipelines, pipeline_charts, members or people or staff, projects, pulls, schedules, snippets, status or tags
+the associated items are listed
+@item @bullet{} one of the words: branch, commit(s), issue(s), milestone(s), pull(s), snippet(s) or tag(s) followed by a '/' or '=' and an item-id
+the item is shown
+@item @bullet{} an issue reference given by a positive integer, e.g. @emph{92} or prefaced with @emph{GL-}, like GL-92
+the issue is displayed
+@item @bullet{} a commit reference given by a hex number, 55a1f0
+the commit diff is displayed
+@item @bullet{} a branch or tag reference given by an alphanumeric name, e.g. hyper20
+the files in the branch are listed.
+@end table
+
+@vindex hibtypes-gitlab-default-user
+USER defaults to the value of @code{hibtypes-gitlab-default-user}.
+If given, PROJECT overrides any project value in REFERENCE. If no
+PROJECT value is provided, it defaults to the value of
+@code{hibtypes-gitlab-default-project}.
+
@findex ibtypes social-reference
@cindex hashtag
@cindex username
@@ -2170,11 +2327,12 @@ at line-num and optional column-num. Also works for remote pathnames.
@cindex link, pathname
@item pathname
Makes a valid pathname display the path entry. Also works for
-delimited and non-delimited remote pathnames, Texinfo @file{} entries,
-and hash-style link references to HTML, Markdown or Emacs outline
-headings. Emacs Lisp library files (filenames without any directory
-component that end in .el and .elc) are looked up using
-the @code{load-path} directory list.
+delimited and non-delimited remote pathnames, Texinfo @@file@{@}
+entries, and hash-style link references to HTML, Markdown or Emacs
+outline headings, and MSWindows paths (see @file{$@{hyperb:dir@}/DEMO#POSIX
+and MSWindows Paths} for details). Emacs Lisp library files
+(filenames without any directory component that end in .el and .elc)
+are looked up using the @code{load-path} directory list.
@noindent
See the function documentation for @code{hpath:at-p} for possible
@@ -2184,20 +2342,37 @@ for a valid match. See the function documentation for @code{hpath:find}
for special file display options.
@findex ibtypes org-mode
-@vindex browse-url-browser-function
@cindex org-mode
@cindex Org mode
+@cindex radio target
+@cindex code block
+@kindex C-c C-c
+@kindex M-RET
+@findex org-ctrl-c-ctrl-c
+@findex org-meta-return
@item org-mode
-The Action Key follows any Org mode link at point or cycles through
-views of the outline subtree at point. In any other context besides
-the end of a line, the Action Key will invoke the Org mode standard
-binding of @bkbd{M-@key{RET}}, (org-meta-return). The Assist Key on
-an Org mode heading cycles through views of the whole buffer outline
-and on an Org mode link, displays standard Hyperbole help.
+For users of Emacs Org mode, Hyperbole does quite a few things.
+
+First, the Action Key follows internal links in Org mode files. When
+pressed on a link referent/target, the link definition is displayed,
+allowing two-way navigation between definitions and targets.
+
+Second, the Action Key follows Org mode external links. The Assist
+Key displays help when pressed on an Org mode link.
+
+Third, within a radio target definition, the Action Key jumps to the
+first occurrence of an associated radio target.
+
+Fourth, when point is on an outline heading in Org mode, the Action Key
+cycles the view of the subtree at point and the Assist Key cycles the
+view of all headings in the buffer.
+
+Fifth, with point on the first line of a code block definition, the
+Action Key executes the code block via the Org mode standard binding
+of @bkbd{C-c C-c}, @code{org-ctrl-c-ctrl-c}.
-The variable, @code{browse-url-browser-function}, customizes the url
-browser that is used for urls. Valid values of this variable
-include @code{browse-url-default-browser} and @code{browse-url-generic}.
+In any other context besides the end of a line, the Action Key invokes
+the Org mode standard binding of @bkbd{M-RET}, @code{org-meta-return}.
@findex ibtypes doc-id
@cindex online library
@@ -2357,7 +2532,7 @@ signalled.
@findex actypes link-to-ebut
@item link-to-ebut
-Performs an action given by another explicit button, specified by KEY and KEY-FILE.
+Performs an action given by an explicit button, specified by KEY and KEY-FILE.
@findex actypes link-to-elisp-doc
@item link-to-elisp-doc
@@ -2372,6 +2547,10 @@ the buffer is displayed with POINT at the top of the window.
@item link-to-file-line
Displays a file given by PATH scrolled to LINE-NUM.
+@findex actypes link-to-gbut
+@item link-to-gbut
+Performs an action given by an existing global button, specified by KEY.
+
@findex actypes link-to-Info-index-item
@item link-to-Info-index-item
Displays an Info index ITEM cross-reference.
@@ -2386,6 +2565,10 @@ Displays an Info NODE. NODE must be a string of the form
filename and nodename is available. Filename may be given without the
.info suffix.
+@findex actypes link-to-ibut
+@item link-to-ibut
+Performs an action given by an implicit button, specified by KEY-FILE, KEY and optional POINT.
+
@findex actypes link-to-kcell
@findex kcell:ref-to-id
@item link-to-kcell
@@ -2477,9 +2660,12 @@ at point.
@item www-url
Follows a link given by a URL. The variable,
@code{browse-url-browser-function}, customizes the url browser
-that is used. See its documentation string for details.
+that is used. Valid values of this variable include
+@code{browse-url-default-browser} and @code{browse-url-generic}.
+See its documentation string for details.
@end table
+
@cindex action
@vindex hui:ebut-prompt-for-action
Action types create a convenient way of specifying button behavior
@@ -2602,12 +2788,14 @@ upon the referent context in which the Action Key is released.
@example
Referent Context Link Type
----------------------------------------------------
+Global Button link-to-gbut
Explicit Button link-to-ebut
+Implicit Button link-to-ibut
Info Index Item link-to-Info-index-item
Info Node link-to-Info-node
Mail Reader Message link-to-mail
Directory Name link-to-directory
-File Name link-to-file
+Filename link-to-file
Koutline Cell link-to-kcell
Outline Heading link-to-string-match
Buffer attached to File link-to-file
@@ -4189,8 +4377,8 @@ This helps maintain any special formatting the appended text may have.
@cindex outline, foreign file
The paragraphs of another buffer or file may be inserted into a koutline
as a set of cells by using the @bkbd{C-x i} command. When prompted,
-you may use a buffer name or file name from which to insert;
-completion is provided for file names only.
+you may use a buffer name or filename from which to insert;
+completion is provided for filenames only.
@kindex koutliner, C-u C-x i
The elements from the original buffer are converted into kcells and
@@ -4222,7 +4410,7 @@ The outliner supports conversion of three types of files into koutline
files. You can import a file into an existing koutline,
following the tree at point, or can create a new koutline from the
imported file contents. @bkbd{M-x kimport:file @key{RET}} selects the
-importation type based on the buffer or file name suffix of the file to
+importation type based on the buffer or filename suffix of the file to
import.
@findex kotl-mode
@@ -4277,7 +4465,7 @@ World-Wide Web.
@bkbd{M-x kexport:html @key{RET}} prompts for the koutline buffer or
file to export, the HTML file or buffer to which to output, and the
-title to use for the HTML file. Completion of file names is provided.
+title to use for the HTML file. Completion of filenames is provided.
The conversion will then be done and the output file or buffer will be
written; the output file will not be displayed.
@@ -4588,7 +4776,7 @@ The e-mail address of the person who created this cell.
@item create-time
The time at which the cell was created. This is stored in a form that
allows for easy data comparisons but is displayed in a human readable
-format, such as @samp{Jan 28 18:27:59 CST 2017}.
+format, such as @samp{Jan 28 18:27:59 CST 2019}.
@end table
@kindex koutliner, C-c C-i
@@ -4699,7 +4887,7 @@ automatically added by HyRolo whenever a new record is added.
==================================================================
* Smith, John <js@@hiho.com> W708-555-2001 F708-321-1492
Chief Ether Maintainer, HiHo Industries
- 05/24/2017
+ 05/24/2019
@end group
@end example
@@ -5046,7 +5234,7 @@ list. In general, you should leave your personal rolo file as the
first entry in the list, since this is the only file to which the Add
command on the rolo menu adds entries.
-Hyperbole releases earlier than 4.17 used a different file name for the
+Hyperbole releases earlier than 4.17 used a different filename for the
personal rolo. If such a file exists, you will be prompted to rename
it whenever the HyRolo system is loaded.
@@ -5503,7 +5691,7 @@ Prompts for a klink specification. See the documentation for the function
@cindex interactive cmd char, +M
@cindex argument, mail message
@item +M
-Prompts for a mail message date and the file name in which it resides.
+Prompts for a mail message date and the filename in which it resides.
The mail parameters prompted for by this character code may change in
the future.
@@ -5955,13 +6143,13 @@ windows exist within a frame.
@vindex gbut:file
@item Global Button
-A form of explicit button which is accessed by name rather than direct
+A Hyperbole button which is accessed by name rather than direct
selection. Global buttons are useful when one wants quick access to
actions such as jumping to common file locations or for performing
-sequences of operations. One need not locate them since they are always
-available by name, with full completion offered. All global buttons are
-stored in the file given by the variable @code{gbut:file} and may be
-activated as regular explicit buttons by visiting this file. By
+sequences of operations. One need not locate them since they are
+always available by name, with full completion offered. All global
+buttons are stored in the file given by the variable @code{gbut:file}
+and may be activated with the Action Key when editing this file. By
default, this is the same as the user's personal button file.
@item Global Button File
@@ -6007,7 +6195,8 @@ DataBase (BBDB) package.
@item Implicit Button
A button recognized contextually by Hyperbole. Such buttons contain no
-button data. See also @b{implicit button type}.
+button data but may have an optional preceding label that looks like this:
+@samp{<[label]>}. See also @b{implicit button type}.
@item Implicit Button Type
A specification of how to recognize and activate implicit buttons of a
@@ -6016,16 +6205,18 @@ to documents created and managed by tools other than Hyperbole, for
example, programming documentation. @b{Ibtype} is a synonym for
implicit button type. See also @b{system encapsulation}.
-@c @cindex InfoDock
-@c @item InfoDock
-@c InfoDock is an integrated productivity toolset for software engineers
-@c and knowledge workers. It is presently built atop XEmacs and is no
-@c longer maintained. An older version from 1999 may be found at
-@c infodock.sf.net. InfoDock has all the power of emacs, but with an
-@c easier to use and more comprehensive menu-based user interface. Most
-@c objections people raise to using emacs have already been addressed in
-@c InfoDock. InfoDock was meant for people who wanted a complete,
-@c pre-customized environment in one package.
+@cindex InfoDock
+@item InfoDock
+InfoDock was an integrated productivity toolset for software engineers
+and knowledge workers built atop XEmacs; it is no longer maintained or
+updated. An older version from 1999 may be found at
+infodock.sf.net.
+
+InfoDock has much of the power of GNU Emacs, but with an
+easier to use and more comprehensive menu-based user interface. Most
+objections people raise to using emacs have already been addressed in
+InfoDock. InfoDock was meant for people who wanted a complete,
+pre-customized environment in one package.
@item Instance Number
A colon prefaced number appended to the label of a newly created button
@@ -6038,6 +6229,14 @@ See also @url{https://tkf.github.io/emacs-jedi/latest/}.
Jedi is a Emacs package for Python completion, definition and documentation lookup.
+@item Key Sequence
+A single sequence of keys that can invoke an Emacs command.
+
+@item Key Series
+A series of one or more Emacs key sequences delimited by braces that
+Hyperbole processes when activated as an implicit button, as if the
+keys were typed in by the user.
+
@item Koutline
A hierarchically ordered grouping of cells which may be stored as a file
and viewed and edited as an outline.
@@ -6240,12 +6439,11 @@ Once you have Emacs set up at your site, GNU Hyperbole may be
installed by using the Emacs Package Manager. If you are not familiar
with it, @pxref{Packages,,,emacs,the GNU Emacs Manual}.
-If you have Hyperbole 5.10 or higher installed and simply want to
-upgrade it, invoke the Emacs Package Manager with @bkbd{M-x
-list-packages @key{RET}}, then use the @bkbd{U} key followed by
-the @bkbd{x} key to upgrade all out-of-date packages, Hyperbole among
-them. Then skip the text below and move on to the next
-section, @pxref{Invocation}.
+If you have Hyperbole installed and simply want to upgrade it, invoke
+the Emacs Package Manager with @bkbd{M-x list-packages @key{RET}},
+then use the @bkbd{U} key followed by the @bkbd{x} key to upgrade all
+out-of-date packages, Hyperbole among them. Then skip the text below
+and move on to the next section, @pxref{Invocation}.
Otherwise, to download and install the Hyperbole package, you should add
several lines to your personal Emacs initialization file, @file{~/.emacs}.
@@ -6417,25 +6615,78 @@ be of interest to users.
@cindex referent display
@cindex link display
@cindex display where
+@cindex display outside Emacs
@cindex where to display
-Hyperbole lets you control where link referents are displayed and even
-what Emacs function or external program is used to display them.
-There are three categories of referents, each with its own display
-setting:
+@cindex image display
+@cindex internal display
+@cindex external display
+Hyperbole lets you control where link referents are displayed. It also
+permits setting a specific Emacs function or external program
+to display them. There are four categories of referents, each with
+its own display setting, listed in decreasing order of priority. All
+of these variables are defined within @file{hpath.el}.
+
@example
Referent Category Variable Setting
========================================================================
-Internal Standard Display hpath:display-where
+Internal Image Display hpath:native-image-suffixes
Internal Custom Display hpath:internal-display-alist
External Display hpath:external-display-alist
+Internal Standard Display hpath:display-where
@end example
+@noindent
+Continue reading the next sections for information on how referents
+are displayed internally and externally.
+
+@node Internal Viewers, External Viewers, Referent Display, Customization
+@subsection Internal Viewers
+@vindex hpath:internal-display-alist
+@cindex file display function
+@cindex display function
+@cindex internal viewer
+@cindex link, display function
+
+@cindex internal image display
+@vindex hpath:native-image-suffixes
+@cindex internal custom display
+@vindex hpath:internal-display-alist
+@cindex internal standard display
+@vindex hpath:display-where
+When given a filename to display, Hyperbole first checks if its suffix
+is matched by @code{hpath:native-image-suffixes}. If so and if the
+function @code{image-mode} is defined, it uses that mode together with
+the value of @code{hpath:display-where} to display the image within an
+Emacs buffer.
+
+If no match is found, the @code{hpath:internal-display-alist} variable
+is checked for a filename match. Its value is an association list
+whose elements are (<file-name-regular-expression>
+. <function-of-one-arg>) pairs. Any path whose name matches
+a <file-name-regular-expression> will be displayed by calling the
+associated <function-of-one-arg> with the filename as the argument.
+The first regular expression that matches each filename is the one
+used. This can be used to format raw data files for convenient
+display.
+
+By default, this setting handles the following types of files:
+@table @emph
+@item Audio Files
+Major audio format files are played with the @code{play-sound-file} command.
+@item Info Manuals
+Files with a @file{.info} suffix (may also be compressed) are displayed in the Info browser.
+@item RDB Files
+Files with an @file{.rdb} suffix are displayed as relational databases using the RDB package
+available with InfoDock.
+@end table
+
@cindex menu, Cust/Referents
@kindex C-h h c r
-Regular file links are displayed in an Emacs window specified by the
-@code{hpath:display-where} setting which may be changed with the Cust/Referents
-@bkbd{C-h h c r} menu.
+Links to standard files, those which don't match any special referent
+category described earlier, are displayed in an Emacs window specified
+by the @code{hpath:display-where} setting. It may be changed with the
+Cust/Referents @bkbd{C-h h c r} menu.
@noindent
Available options are:
@@ -6453,7 +6704,7 @@ Display in a new single window frame
Display in another, possibly new window of the selected frame (this is
the default)
@item @bullet{} Single-Win
-Display in a window of the selected frame and delete its other windows
+Display in a window of the selected frame and delete its other windows
@end table
@page
@@ -6466,43 +6717,7 @@ Alternatively, you can use the Hyperbole menubar menu as shown here:
@end float
@sp 1
-@noindent
-Continue reading the next sections for information on custom Internal
-and External Viewers for link referencts.
-
-@node Internal Viewers, External Viewers, Referent Display, Customization
-@subsection Internal Viewers
-@vindex hpath:internal-display-alist
-@cindex file display function
-@cindex display function
-@cindex internal viewer
-@cindex link, display function
-When given a file name, Hyperbole will by default display the file for
-editing within an Emacs buffer. The @code{hpath:internal-display-alist}
-variable can be used to specify file name patterns, such as matching
-suffixes, which will invoke a special Emacs Lisp function to display
-any matching files within Emacs. This can be used to format raw data
-files for convenient display.
-
-For those who want to change this variable, @code{hpath:internal-display-alist}
-is defined in @file{hpath.el}. Its value is an association list whose
-elements are (<file-name-regular-expression> . <function-of-one-arg>)
-pairs. Any path whose name matches a <file-name-regular-expression>
-will be displayed by calling the associated <function-of-one-arg> with
-the file name as the argument.
-
-By default, this variable handles the following types of files:
-@table @emph
-@item Audio Files
-Major audio format files are played with the @code{play-sound-file} command.
-@item Info Manuals
-Files with a @file{.info} suffix (may also be compressed) are displayed in the Info browser.
-@item RDB Files
-Files with an @file{.rdb} suffix are displayed as relational databases using the RDB package
-available with InfoDock.
-@end table
-
-@xref{External Viewers}, for instructions on associating file names with
+@xref{External Viewers}, for instructions on associating filenames with
external, window-system specific viewers.
@node External Viewers, Link Variable Substitution, Internal Viewers, Customization
@@ -6515,10 +6730,13 @@ external, window-system specific viewers.
@cindex external program
@cindex external viewer
@cindex link, viewer program
-If you will be using Hyperbole under a window system,
-the @code{hpath:get-external-display-alist} function
-in @file{hpath.el} supports hyperlinks that open files using external, non-Emacs
-tools, e.g.@: a pdf reader or a vector graphic viewer.
+
+@cindex external display
+@vindex hpath:external-display-alist
+If you use Hyperbole under a window system,
+the @code{hpath:get-external-display-alist} function in @file{hpath.el}
+supports hyperlinks that open files using external, non-Emacs tools, e.g.@:
+a pdf reader or a vector graphics viewer.
The value returned by @code{hpath:get-external-display-alist} is determined
based on the window system supported by the current frame and the version
@@ -6528,8 +6746,8 @@ path whose name matches a <file-name-regular-expression> will be
displayed using the corresponding viewer-program or the first
viewer-program found on the system from a list of programs. If a
<viewer-program> entry contains a @samp{%s} string, the filename to
-display will be substituted at that point within the string.
-Otherwise, the filename will be appended to the <viewer-program>
+display is substituted at that point within the string.
+Otherwise, the filename is appended to the <viewer-program>
entry. Alternatively, the viewer-program may be a Lisp function that
takes a single filename argument.
@@ -6539,13 +6757,13 @@ for each available window system: @code{hpath:external-display-alist-macos},
@code{hpath:external-display-alist-x}. Examine and modify these
values to suit your needs.
-@cindex MIME
-@cindex mailcap
-@cindex external viewer
-On systems that have a MIME mailcap file (see
-@file{www.wikiwand.com/en/Mailcap}), this is used as a fallback
-set of external viewer associations when none are found
-within @code{hpath:get-external-display-alist}.
+@c @cindex MIME
+@c @cindex mailcap
+@c @cindex external viewer
+@c On systems that have a MIME mailcap file (see
+@c @file{www.wikiwand.com/en/Mailcap}), this is used as a fallback
+@c set of external viewer associations when none are found
+@c within @code{hpath:get-external-display-alist}.
@node Link Variable Substitution, Web Search Engines, External Viewers, Customization
@subsection Link Variable Substitution
@@ -6561,16 +6779,15 @@ compared against the values in @code{hpath:variables}. The first
match found, if any, is selected and its associated variable name is
substituted into the link pathname, in place of its literal value.
When a link button is activated, potentially at a different site,
-Hyperbole replaces each variable within the link pathname with the
-first matching value from this list to recreate the literal pathname.
+Hyperbole replaces each variable in the link pathname with the first
+matching value from this list to recreate the literal pathname.
Environment variables are also replaced whenever link paths are
resolved.
This permits sharing of links over wide areas, where the variable values
differ between link creator and link activator. The entire process
is wholly transparent to the user; it is explained here simply to help
-you in deciding whether or not to modify the value of
-@code{hpath:variables}.
+you in deciding whether or not to modify the value of @code{hpath:variables}.
@node Web Search Engines, Using URLs with Find-File, Link Variable Substitution, Customization
@subsection Web Search Engines
@@ -6642,7 +6859,7 @@ Hyperbole: @code{(hpath:find-file-urls-mode 1)}.
@cindex URLs, abbreviated
@cindex Tramp
Both full URLs and abbreviated ones, like @file{www.gnu.org}, are
-recognized. File name completion does not work with URLs; you
+recognized. filename completion does not work with URLs; you
have to type or paste in the entire URL. This feature will work only
if you have the builtin Tramp Emacs Lisp package; if you don't have
Tramp, an error message will be displayed when you try to enable
@@ -6673,9 +6890,11 @@ through invisible/hidden text, making the text temporarily visible
until point moves past that hidden part. When a search match is
selected, the surrounding text remains visible.
-This command toggles that setting (turns it off if a prefix
-argument less than or equal to 0 is given) and makes searches look at
-only visible text.
+You can temporarily disable searching of hidden text by typing @bkbd{M-s i}
+while in an incremental search. This key sequence toggles that
+setting and makes searches look at only visible text (or the reverse
+when invoked again). The setting lasts only through the current
+interactive search.
@node Button Colors, , Invisible Text Searches, Customization
@subsection Configuring Button Colors
@@ -7197,7 +7416,7 @@ Called from a program, takes three args: START, END and COLUMN.
@item kimport:insert-file @bkbd{C-x i}
Insert each paragraph in IMPORT-FROM as a separate cell in the current view.
Insert as sibling cells following the current cell. IMPORT-FROM may be a
-buffer name or file name (file name completion is provided).
+buffer name or filename (filename completion is provided).
@findex kimport:insert-register
@item kimport:insert-register @bkbd{C-x r i}
@@ -7815,6 +8034,7 @@ If dragged from an Emacs window to outside of Emacs:
@section Smart Keyboard Keys
@menu
+* Smart Key - Company Mode::
* Smart Key - Treemacs::
* Smart Key - Emacs Pushbuttons::
* Smart Key - Argument Completion::
@@ -7830,6 +8050,7 @@ If dragged from an Emacs window to outside of Emacs:
* Smart Key - RDB Mode::
* Smart Key - Help Buffers::
* Smart Key - Pages Directory Mode::
+* Smart Key - Python Source Code::
* Smart Key - Identifier Menu Mode ::
* Smart Key - C Source Code::
* Smart Key - C++ Source Code::
@@ -7837,7 +8058,6 @@ If dragged from an Emacs window to outside of Emacs:
* Smart Key - Lisp Source Code::
* Smart Key - Java Source Code::
* Smart Key - JavaScript Source Code::
-* Smart Key - Python Source Code::
* Smart Key - Objective-C Source Code::
* Smart Key - Fortran Source Code::
* Smart Key - Occurrence Matches::
@@ -7858,7 +8078,26 @@ If dragged from an Emacs window to outside of Emacs:
* Smart Key - Default Context::
@end menu
-@node Smart Key - Treemacs, Smart Key - Emacs Pushbuttons, Smart Keyboard Keys, Smart Keyboard Keys
+
+@node Smart Key - Company Mode, Smart Key - Treemacs, Smart Keyboard Keys, Smart Keyboard Keys
+@subsection Smart Key - Company Mode
+
+@cindex company-mode
+@cindex completion
+Company mode is an extensive in-buffer completion framework, often used to complete programming identifiers.
+
+@format
+@group
+When company-mode is active:
+ ACTION KEY
+ Displays selected item's definition.
+ ASSIST KEY
+ Displays the documentation, if any, for the selected item.
+@end group
+@end format
+
+
+@node Smart Key - Treemacs, Smart Key - Emacs Pushbuttons, Smart Key - Company Mode, Smart Keyboard Keys
@subsection Smart Key - Treemacs
@cindex Treemacs
@@ -7879,10 +8118,10 @@ When in a Treemacs file browser buffer:
collapse the entry;
(2) elsewhere within an entry line, the item is displayed for editing,
normally in another window;
- (3) at the end of an entry line: invoke @code{action-key-eol-function},
- typically to scroll up proportionally, if an Action Key press; invoke
- @code{assist-key-eol-function}, typically to scroll down proportionally,
- if an Asisst Key press;
+ (3) at the end of an entry line: if an Action Key press, invokes
+ @code{action-key-eol-function}, typically to scroll up proportionally;
+ if an Assist Key press, invokes @code{assist-key-eol-function}, typically
+ to scroll down proportionally;
(4) on the first line of the buffer (other than the end of line),
dired is run on the current directory of this Treemacs;
(5) at the end of the first or last line of the buffer,
@@ -8218,7 +8457,7 @@ When pressed at the end of a Help buffer:
@end group
@end format
-@node Smart Key - Pages Directory Mode, Smart Key - Identifier Menu Mode , Smart Key - Help Buffers, Smart Keyboard Keys
+@node Smart Key - Pages Directory Mode, Smart Key - Python Source Code, Smart Key - Help Buffers, Smart Keyboard Keys
@subsection Smart Key - Pages Directory Mode
@format
@@ -8234,7 +8473,8 @@ When pressed on a pages-directory-mode entry line:
@end group
@end format
-@node Smart Key - Python Source Code, Smart Key - Objective-C Source Code, Smart Key - JavaScript Source Code, Smart Keyboard Keys
+@page
+@node Smart Key - Python Source Code, Smart Key - Identifier Menu Mode , Smart Key - Pages Directory Mode, Smart Keyboard Keys
@subsection Smart Key - Python Source Code
@format
@group
@@ -8263,16 +8503,16 @@ When pressed within a Python source code file (without the OO-Browser):
@end group
@end format
-@page
-@node Smart Key - Identifier Menu Mode , Smart Key - C Source Code, Smart Key - Pages Directory Mode, Smart Keyboard Keys
+@node Smart Key - Identifier Menu Mode , Smart Key - C Source Code, Smart Key - Python Source Code, Smart Keyboard Keys
@subsection Smart Key - Identifier Menu Mode
@format
@group
-This works only for identifiers defined within the same source file in which they are referenced.
-It requires either Emacs' imenu or XEmacs' func-menu library and it requires that an index of
-identifiers has been built for the current buffer. Other handlers handle identifier references
-and definitions across multiple files.
+This works only for identifiers defined within the same source file in
+which they are referenced. It requires either Emacs' imenu library
+and it requires that an index of identifiers has been built for the
+current buffer. Other handlers handle identifier references and
+definitions across multiple files.
@noindent
When pressed on an identifier name after an identifier index has been generated:
@@ -8284,6 +8524,7 @@ When pressed on an identifier name after an identifier index has been generated:
@end group
@end format
+@page
@node Smart Key - C Source Code, Smart Key - C++ Source Code, Smart Key - Identifier Menu Mode , Smart Keyboard Keys
@subsection Smart Key - C Source Code
@@ -8312,7 +8553,6 @@ When pressed within a C source code file:
@end group
@end format
-@page
@node Smart Key - C++ Source Code, Smart Key - Assembly Source Code, Smart Key - C Source Code, Smart Keyboard Keys
@subsection Smart Key - C++ Source Code
@@ -8342,6 +8582,7 @@ buffer:
@end group
@end format
+@page
@format
@group
When pressed within a C++ source code file (without the OO-Browser):
@@ -8364,7 +8605,6 @@ When pressed within a C++ source code file (without the OO-Browser):
@end group
@end format
-@page
@node Smart Key - Assembly Source Code, Smart Key - Lisp Source Code, Smart Key - C++ Source Code, Smart Keyboard Keys
@subsection Smart Key - Assembly Source Code
@@ -8391,8 +8631,12 @@ When pressed within an assembly source code file:
@format
@group
+@cindex change-log-mode
+@cindex lisp identifier
+@cindex elisp identifier
When pressed on a Lisp symbol within any of these types of buffers
-(Lisp code, debugger, compilation, or help):
+(Lisp code, debugger, compilation, or help) or in change-log-mode
+on an Emacs Lisp bound identifier:
ACTION KEY
Jumps to the definition of any selected Lisp construct. If on an
Emacs Lisp require, load, or autoload clause and the (find-library)
@@ -8445,7 +8689,7 @@ When pressed within a Java source code file (without the OO-Browser):
@end group
@end format
-@node Smart Key - JavaScript Source Code, Smart Key - Python Source Code, Smart Key - Java Source Code, Smart Keyboard Keys
+@node Smart Key - JavaScript Source Code, Smart Key - Objective-C Source Code, Smart Key - Java Source Code, Smart Keyboard Keys
@subsection Smart Key - JavaScript Source Code
@format
@@ -8462,7 +8706,7 @@ When pressed within a JavaScript source code file:
@end format
-@node Smart Key - Objective-C Source Code, Smart Key - Fortran Source Code, Smart Key - Python Source Code, Smart Keyboard Keys
+@node Smart Key - Objective-C Source Code, Smart Key - Fortran Source Code, Smart Key - JavaScript Source Code, Smart Keyboard Keys
@subsection Smart Key - Objective-C Source Code
@vindex objc-cpp-include-path
@@ -9250,10 +9494,8 @@ to direct further development effort towards known needs;
and to acknowledge known weaknesses in the current system.
@end itemize
-If you would like to see some of this work done, consider funding
-its development. Without any serious interest from users, progress
-on these fronts will be slow. Here are some new features we have
-in mind, however.
+Without any serious interest from users, progress on these fronts will
+be slow. Here are some new features we have in mind, however.
@table @asis