emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/hyperbole 9d3a67d9b0 5/6: Bug fixes and doc updates, st


From: ELPA Syncer
Subject: [elpa] externals/hyperbole 9d3a67d9b0 5/6: Bug fixes and doc updates, starting in preparation for release
Date: Sat, 15 Jan 2022 18:57:40 -0500 (EST)

branch: externals/hyperbole
commit 9d3a67d9b00e6dffe3f87c0c7216a01119903944
Author: Robert Weiner <rsw@gnu.org>
Commit: Robert Weiner <rsw@gnu.org>

    Bug fixes and doc updates, starting in preparation for release
---
 ChangeLog          | 33 ++++++++++++++++------
 HY-NEWS            | 64 ++++++++++++++++++++++++++++-------------
 hbut.el            |  2 +-
 hib-debbugs.el     | 26 +++++++++--------
 hibtypes.el        | 14 +++++++++
 hpath.el           | 14 +++++----
 kotl/kotl-mode.el  | 73 +++++++++++++++++++++++++++--------------------
 man/hyperbole.texi | 83 +++++++++++++++++++++++++++++++++++++++++-------------
 8 files changed, 213 insertions(+), 96 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index dd605a0b29..5d80f235e0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,8 +1,30 @@
+2022-01-15  Bob Weiner  <rsw@gnu.org>
+
+* hpath.el (hpath:absolute-arguments): Check that each arg is non-nil
+    before calling hpath:absolute-to.
+
+* kotl/kotl-mode.el (kotl-mode:skip-filling-p) Add to test whether to
+    fill around point or not based on context.  Prevents filling in tables.
+
+2022-01-14  Bob Weiner  <rsw@gnu.org>
+
+* hbut.el (ebut:label-p): Add '$' as additional quoting character so
+   ${var} does not match when looking for a brace-delimited key series.
+
+* hpath.el (hpath:at-p, hpath:is-p): Add file-exists-p test to immediately
+    handle any simple paths with directories, for example.
+
 2022-01-11  Mats Lidell  <matsl@gnu.org>
 
 * test/hmouse-info-tests.el: Don't byte compile since depends on
     with-simulated-input. Patch from Stefan Monnier. Thank you Stefan.
 
+2022-01-11  Bob Weiner  <rsw@gnu.org>
+
+* hbut.el (hbut:act): If point is within the button to be activated, prevent
+    ibut:to-text call which recursively calls hbut:act and can cause problems
+    with key series buttons at least.  Much more efficient in most cases.
+
 2022-01-09  Mats Lidell  <matsl@gnu.org>
 
 * test/hyperbole-tests.el (hyperbole-keymap-tests)
@@ -10,12 +32,6 @@
     (hyperbole-global-key-binding-tests): Keybinding tests.
     (hyperbole-key-bindings): Combine tests in one helper function.
 
-2022-01-11  Bob Weiner  <rsw@gnu.org>
-
-* hbut.el (hbut:act): If point is within the button to be activated, prevent
-    ibut:to-text call which recursively calls hbut:act and can cause problems
-    with key series buttons at least.  Much more efficient in most cases.
-
 2022-01-09  Bob Weiner  <rsw@gnu.org>
 
 * topwin.py: Update to Python 3.7 or greater.
@@ -1429,7 +1445,7 @@ Delete knode.el and integrate functionality into kcell.el.
     Add to separate from hyperb:init.
                (hyperbole-mode): Update to use above functions.
 
-* hui-mini.el (hui:hypb-exit): "X" to exit from hyperbole-mode
+* hui-mini.el (hui:hypb-exit): {X} to exit from hyperbole-mode
     when a minibuffer menu is active.  Use {C-h h} to re-enable
     hyperbole-mode and display the minibuffer menu.
               (hui:hypb-exit): Command invoked by X in menus.
@@ -2281,8 +2297,9 @@ absolute paths.
     mode is active and point is in a table):
 
      |----------------------------+-----------------------------|
-     | Demotion Inside Org Table  | Promotion Inside Org Table  |
+     | Demotion Inside  Org Table | Promotion Inside  Org Table |
      |----------------------------+-----------------------------|
+     | M-0 TAB                    | M-0 Shift-TAB or M-0 M-TAB  |
      | C-c C-,                    | C-c C-.                     |
      | C-c C-<                    | C-c C->                     |
      |----------------------------+-----------------------------|
diff --git a/HY-NEWS b/HY-NEWS
index 6b99b710d2..42a2c144f9 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -20,7 +20,7 @@
 
     - M-RET: Reworked M-RET interface so can control how much or little of
       Hyperbole works in Org mode when Hyperbole minor mode is enabled.
-      See "(hyperbole)enable org-mode support".
+      See "(hyperbole)enable org-mode support" and "hsys-org.el".
 
     - hsys-org-enable-smart-keys: New customization to replace
       'inhibit-hsys-org'.  This applies only in Org major/minor modes when
@@ -38,7 +38,7 @@
       | t            | Activate          | Activate         | Activate | None  
           |
       
|--------------+-------------------+------------------+----------+------------------|
 
-   SIMPLE BUTTON TYPE CREATION
+   EASILY CREATE YOUR OWN BUTTON TYPES
 
     - Simple Action Link Button Type Creation: `defal' is a new,
       easy-to-use construct that generates new action button types from
@@ -49,13 +49,13 @@
       Link Types" or the "DEMO#Defining New Action Button Types"
       section.
 
-    - Easy Implicit Link Button Type Creation: `defil' is a new,
+    - Easy Implicit Link Button Type Creation: `defil' is a new
       construct for those familiar with regular expressions but not
-      much Emacs Lisp.  This macro creates more flexible implicit
-      button types than `defal' where the delimiters and text
-      substitution can be specified with regular expressions.  Actions
-      are limited to executing key series, displaying URLs, displaying
-      the contents of pathnames or invoking functions.  See
+      much Emacs Lisp.  This creates more flexible implicit button
+      types than `defal' where the delimiters and text substitution
+      can be specified with regular expressions.  Actions are limited
+      to executing key series, displaying URLs, displaying the
+      contents of pathnames or invoking functions.  See
       "(hyperbole)Implicit Button Link Types".
 
       Elisp programmers should use the existing `defib' macro for full
@@ -69,8 +69,9 @@
       in the test/ subdirectory.  Simply run 'make test' or 'make test-all'
       from the command-line when in the Hyperbole source directory and you
       should see all tests pass.  If any fail, you can press the Action Key
-      to see the source of the failure.
-
+      to see the source of the failure.  Full testing is suppored under POSIX
+      systems only.
+ 
     - Implicit Button Types to Run Tests: The file "hypb-ert.el" contains two
       action link types:
         hyperbole-run-test  - run a single Hyperbole test by name
@@ -105,9 +106,10 @@
 
     - Org Table Support: Org table editing now automatically works in the
       Koutliner via Org table minor mode.  Use {M-x orgtbl-mode RET} to
-      toggle this on and off.  A press of the Action Key on a | symbol
-      separating fields, also toggles this minor mode on or off. See
-      "(Org)Tables" for details.
+      toggle this on and off.  A press of the Action Key on a | symbol,
+      also toggles this minor mode on or off. See "(Org)Tables" for details.
+      Use a prefix arg with {TAB} to promote/demote Koutline trees when in
+      a table since {TAB} moves between fields within a table.
 
     - New Mail Tree Key Binding: The kotl-mode:mail-tree command that
       extracts the current view of a Koutline in text-only format and
@@ -121,8 +123,9 @@
       an Org table or outside.
 
       |----------------------------+-----------------------------|
-      | Demotion Inside Org Table  | Promotion Inside Org Table  |
+      | Demotion Inside  Org Table | Promotion Inside  Org Table |
       |----------------------------+-----------------------------|
+      | M-0 TAB                    | M-0 Shift-TAB or M-0 M-TAB  |
       | C-c C-,                    | C-c C-.                     |
       | C-c C-<                    | C-c C->                     |
       |----------------------------+-----------------------------|
@@ -144,6 +147,17 @@
        kotl-mode:copy-absolute-klink-to-register
        kotl-mode:copy-relative-klink-to-register
 
+  MENUS
+
+    - Minibuffer Menu Changes:
+        + Items Activated by First Capital Letter: Used to be by the first
+          letter.  This allows more flexibility in naming, e.g.
+          where two items start with the same first letter.
+
+        + {X} exits Hyperbole mode: This disables the Hyperbole minor mode
+          completely and exits from the menu.  {C-h h} re-enables the
+          global minor mode and display the top-level Hyperbole menu.
+
   SMART (ACTION AND ASSIST) KEYS
 
     - Implicit Button Types Reprioritization: Modified hibtypes.el so if
@@ -174,6 +188,20 @@
     - Todotxt Mode Support: Smart key support for the todotxt mode
       https://github.com/rpdillon/todotxt.el.
 
+    - UNIX Shell Errors: Jump to associated source line from a shell error of 
the
+      form:  "<pathname>: line <num>: ".
+
+  CUSTOMIZATON
+
+    - Customizable Display Program File Mappings:
+      The variables:
+         hpath:internal-display-alist
+         hpath:external-display-alist-macos
+         hpath:external-display-alist-mswindows
+         hpath:external-display-alist-x)
+      are all customizable.
+
+
   PROGRAMMING
 
     - Edebuggable Hyperbole Types: `defib' and `defact' type definitions
@@ -223,9 +251,6 @@
     - Magit Mode: Action Key expands/collapses like {TAB} and Assist Key
       jumps to items like {RET}.  See "(hyperbole)Smart Key - Magit Mode".
 
-    - UNIX Shell Errors: Jump to associated source line from a shell error of 
the
-      form:  "<pathname>: line <num>: ".
-
   BUTTON TYPES
 
     - {Key Series} Button Support for Helm and Counsel: Key series buttons
@@ -268,7 +293,7 @@
       Bookmark or to a Texinfo Node.
 
     - link-to-texinfo-node Action Type: Now takes a first file parameter,
-      rather than only working on the current buffer.
+      rather than working only on the current buffer.
 
   KOUTLINER
 
@@ -2606,7 +2631,7 @@ are new in 2016 and you should look through them all.
       Rolo/Mail minibuffer menu item and Rolo/Mail-to-Address for window
       system menus.
 
-    - New variable, wrolo-yank-reformat-function permits reformatting of an
+    - New variable, wrolo-yank-reformat-function, permits reformatting of an
       entry yanked into the current buffer with {C-h h r y}, rolo-yank.
 
   WINDOW CONFIGURATIONS 
@@ -2615,4 +2640,3 @@ are new in 2016 and you should look through them all.
       the Win menu after performing their actions.  This allows you to yank
       or pop window configurations repeatedly until you get to the one you
       want.
-
diff --git a/hbut.el b/hbut.el
index bc98a785a8..eaf1b63324 100644
--- a/hbut.el
+++ b/hbut.el
@@ -191,7 +191,7 @@ but-start-position, but-end-position.  Positions include
 delimiters.  With TWO-LINES-FLAG non-nil, constrain label search
 to two lines."
   (let ((opoint (point))
-       (quoted "\\(^\\|[^\\{]\\)")
+       (quoted "\\(^\\|[^\\{$]\\)")
        (hbut:max-len hbut:max-len)
        npoint start lbl-key end but-start but-end start-regexp end-regexp)
     (unless start-delim (setq start-delim ebut:start))
diff --git a/hib-debbugs.el b/hib-debbugs.el
index 56ec2733fe..e7021da39c 100644
--- a/hib-debbugs.el
+++ b/hib-debbugs.el
@@ -108,12 +108,12 @@ attribute):
 
 Note that `issue' or `debbugs' may be used as well in place of `bug'."
   (when (debbugs-version-sufficient-p)
-    (if (debbugs-query:at-p)
-       (cond ((and (match-beginning 3) (string-equal "?" (match-string 3)))
-              (hact 'debbugs-gnu-query:string (buffer-substring-no-properties
-                                               (or (match-beginning 1) 
(match-beginning 2))
-                                               (match-end 4))))
-             (t (hact 'debbugs-gnu-query (string-to-number (match-string 
2))))))))
+    (when (debbugs-query:at-p)
+      (if (and (match-beginning 3) (string-equal "?" (match-string 3)))
+         (hact 'debbugs-gnu-query:string (buffer-substring-no-properties
+                                          (or (match-beginning 1) 
(match-beginning 2))
+                                          (match-end 4)))
+       (hact 'debbugs-gnu-query (string-to-number (match-string 2)))))))
 
 (defact debbugs-gnu-query (id)
   "Display the discussion of Gnu debbugs ID (a positive integer)."
@@ -175,7 +175,8 @@ issue number.  Note that `issue' or `debbugs' may be used 
as well in place of `b
     (setq attr-pair-list
          (mapcar (lambda (elt) (cons (car elt) (cadr elt)))
                  (url-parse-query-string url-query-string))) ;; autoloaded
-    (if id (push (cons 'bugs (list (string-to-number id))) attr-pair-list))
+    (when id
+      (push (cons 'bugs (list (string-to-number id))) attr-pair-list))
     (debbugs-gnu-query:list attr-pair-list)))
 
 (defun debbugs-gnu-query:list (query-attribute-list)
@@ -187,7 +188,9 @@ severity, and package."
   (setq debbugs-gnu-current-query nil)
   (dolist (attr query-attribute-list)
     (add-to-list 'debbugs-gnu-current-query
-                (cons (if (symbolp (car attr)) (car attr) (intern (car attr)))
+                (cons (if (symbolp (car attr))
+                          (car attr)
+                        (intern (car attr)))
                       (cdr attr))))
   (debbugs-gnu-show-reports))
 
@@ -207,7 +210,7 @@ severity, and package."
 ;;; ************************************************************************
 
 (defun debbugs-query:at-p ()
-  "Return t if point appear to be within a debbugs id.
+  "Return t if point appears to be within a debbugs id.
 Id number is (match-string 2).  If this is a query with attributes,
 then (match-string 3) = \"?\" and (match-string 4) is the query
 attributes." 
@@ -220,10 +223,9 @@ attributes."
          (skip-chars-backward "bugdiseBUGDISE#") ;; bug, debbugs or issue
          ;; Allow for bug#222?package=hyperbole&severity=high as well as 
bug222, or bug#222.
          (or (looking-at "[ \t\n\r\f]*\\(bug#?\\|debbugs#?\\|issue#?\\)[ 
\t\n\r\f]*#?\\([1-9][0-9]*\\)?\\(\\?\\)\\([a-z=&0-9%;()]+\\)")
-             (looking-at "[ \t\n\r\f]*\\(bug#?\\|debbugs#?\\|issue#?\\)[ 
\t\n\r\f]*#?\\([1-9][0-9]*\\)[\].,;?:!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)")
+             (looking-at "[ \t\n\r\f]*\\(bug#?\\|debbugs#?\\|issue#?\\)[ 
\t\n\r\f]*#?\\([1-9][0-9]*\\)[\].,;?:!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)"))))))
              ;; Ignore matches like  #222, so this is not confused with 
"hib-social.el" social references.
              ;; (looking-at "[ \t\n\r\f]*\\(bug\\|debbugs\\|issue\\)?[ 
\t\n\r\f]*#\\([1-9][0-9]*\\)[\].,;?!\)\>\}]?\\([ \t\n\r\f]\\|\\'\\)")
-             )))))
 
 (defun debbugs-query:status (id)
   "Pretty print to `standard-output' the status attributes of debbugs ID (a 
positive integer).
@@ -231,7 +233,7 @@ Ignore nil valued attributes.  Return t unless no 
attributes are printed."
   (require 'debbugs-gnu)
   ;; The (car (debbugs-get-status id)) is a list of (attribute . value) pairs 
which we sort below.
   (let ((attrib-list
-        (sort (delq nil (mapcar (lambda (elt) (if (cdr elt) elt)) (car 
(debbugs-get-status id))))
+        (sort (delq nil (mapcar (lambda (elt) (when (cdr elt) elt)) (car 
(debbugs-get-status id))))
               (lambda (a b) (string-lessp (car a) (car b)))))
        (has-attr) attr len val)
     (unless (or (null attrib-list) (not (listp attrib-list)))
diff --git a/hibtypes.el b/hibtypes.el
index 27afe9860c..0140e3ac86 100644
--- a/hibtypes.el
+++ b/hibtypes.el
@@ -1368,6 +1368,20 @@ arg1 ... argN '>'.  For example, <mail nil 
\"user@somewhere.org\">."
               (apply hrule:action actype args)
             (apply hrule:action actype (mapcar #'eval args))))))))
 
+;; !! Todo: Finish this
+
+;; (defun action:help (label)
+;;   "Display documentation for action button function or variable."
+;;   (interactive (list (hargs:read-match "Report on global button labeled: "
+;;                                    (mapcar 'list (gbut:label-list))
+;;                                    nil t nil 'hbut)))
+;;   (let* ((lbl-key (hbut:label-to-key label))
+;;      (but (hbut:get lbl-key nil gbut:file)))
+;;     (if but
+;;     (hbut:report but)
+;;       (error "(gbut:help): No global button labeled: %s" label))))
+
+
 ;;; ========================================================================
 ;;; Inserts completion into minibuffer or other window.
 ;;; ========================================================================
diff --git a/hpath.el b/hpath.el
index c5330308c8..2ff4d09465 100644
--- a/hpath.el
+++ b/hpath.el
@@ -665,9 +665,10 @@ Other arguments are returned unchanged."
                 (make-list (max 0 (- (length arg-list) (length param-list)))
                            (last param-list))))
     (cl-mapcar (lambda (param arg)
-                (if (or (string-match-p "file" param)
-                        (string-match-p "dir" param)
-                        (string-match-p "path" param))
+                (if (and arg
+                         (or (string-match-p "file" param)
+                             (string-match-p "dir" param)
+                             (string-match-p "path" param)))
                     (hpath:absolute-to arg default-dirs)
                   arg))
               param-list arg-list)))
@@ -867,7 +868,9 @@ paths are allowed.  Absolute pathnames must begin with a 
`/' or `~'."
        subpath)
     (when (and path (not non-exist) (string-match hpath:prefix-regexp path))
       (setq non-exist t))
-    (cond ((and path (string-match hpath:path-variable-value-regexp path)
+    (cond ((and path (file-readable-p path))
+          path)
+         ((and path (string-match hpath:path-variable-value-regexp path)
                ;; Don't allow more than one set of grouping chars
                (not (string-match "\)\\s-*\(\\|\\]\\s-*\\[\\|\}\\s-*\{" path)))
           ;; With point inside a path variable, return the path that point is 
on or to the right of.
@@ -1516,7 +1519,8 @@ form is what is returned for PATH."
             (or (/= (length path) 1) (and (string-match-p "\\sw\\|\\s_" path)
                                           (not (string-match-p "[@#&!*]" 
path)))))
     (setq path (hpath:mswindows-to-posix path))
-    (unless (string-match-p "\\`[.~/]\\'" path)
+    (unless (or (string-match-p "\\`[.~/]\\'" path)
+               (file-readable-p path))
       (setq path (hpath:call
                  (lambda (path non-exist)
                    (let (modifier
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index 3aa6674be8..e5ebab8fb5 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -495,17 +495,27 @@ With prefix ARG non-nil, join this line to the following 
line."
             (fixup-whitespace))
         (goto-char opoint))))))
 
+(defun kotl-mode:skip-filling-p (interactive-flag)
+  "Return t if filling is to be skipped due to a no-fill attribute or with 
point in a table, else return nil."
+  (not (cond ((and (fboundp #'org-at-table-p) (org-at-table-p))
+             (when interactive-flag
+               (beep)
+               (message "Filling is disabled within tables")
+               nil))
+            ((kcell-view:get-attr 'no-fill)
+             (when interactive-flag
+               (beep)
+               (message "Current cell has a `do not fill' attribute")
+               nil))
+            (t))))
+
 (defun kotl-mode:fill-cell (&optional justify ignore-collapsed-p)
   "Fill current cell within current view if it lacks a non-nil `no-fill' 
attribute.
 With optional JUSTIFY, justify cell as well.
 IGNORE-COLLAPSED-P is used when caller has already expanded cell, indicating
 it is not collapsed."
   (interactive "*P")
-  (cond ((kcell-view:get-attr 'no-fill)
-        (when (called-interactively-p 'interactive)
-          (beep)
-          (message "Current cell has a `do not fill' attribute.")
-          nil))
+  (cond ((kotl-mode:skip-filling-p (called-interactively-p 'interactive)))
        ((string-match "\\`[ \t\n\r]*\\'" (kcell-view:contents))
          ;; Cell content is all whitespace.
         nil)
@@ -560,32 +570,33 @@ it is not collapsed."
 With optional JUSTIFY, justify the paragraph as well.
 Ignore any non-nil no-fill attribute attached to the cell."
   (interactive "*P")
-  (let ((indent (kcell-view:indent))
-       (opoint (point-marker))
-       start end)
-    (re-search-backward (concat "\\`\\|" paragraph-separate))
-    (kotl-mode:to-valid-position)
-    (setq start (point-marker))
-    ;; Add a temporary fill-prefix for the 1st line in the cell which
-    ;; contains a label, so that it is filled properly.
-    (insert "\n\n") (insert-char ?\  indent)
-    (setq end (point-marker))
-    ;; Return to original paragraph point.  This is the correct formula,
-    ;; considering the fill prefix that was just added.
-    (goto-char (min (max opoint (point)) (kcell-view:end-contents)))
-    (if (fboundp 'fill-paragraph-and-align)
-       (fill-paragraph-and-align justify)
-      (fill-paragraph justify))
-    ;; Delete temporary fill prefix.
-    (delete-region start end)
-    ;; Return to original point.
-    (goto-char (min opoint (kcell-view:end-contents)))
-    ;; Move to editable point if need be.
-    (kotl-mode:to-valid-position)
-    ;; Remove markers
-    (set-marker opoint nil)
-    (set-marker start nil)
-    (set-marker end nil)))
+  (unless (kotl-mode:skip-filling-p (called-interactively-p 'interactive))
+    (let ((indent (kcell-view:indent))
+         (opoint (point-marker))
+         start end)
+      (re-search-backward (concat "\\`\\|" paragraph-separate))
+      (kotl-mode:to-valid-position)
+      (setq start (point-marker))
+      ;; Add a temporary fill-prefix for the 1st line in the cell which
+      ;; contains a label, so that it is filled properly.
+      (insert "\n\n") (insert-char ?\  indent)
+      (setq end (point-marker))
+      ;; Return to original paragraph point.  This is the correct formula,
+      ;; considering the fill prefix that was just added.
+      (goto-char (min (max opoint (point)) (kcell-view:end-contents)))
+      (if (fboundp 'fill-paragraph-and-align)
+         (fill-paragraph-and-align justify)
+       (fill-paragraph justify))
+      ;; Delete temporary fill prefix.
+      (delete-region start end)
+      ;; Return to original point.
+      (goto-char (min opoint (kcell-view:end-contents)))
+      ;; Move to editable point if need be.
+      (kotl-mode:to-valid-position)
+      ;; Remove markers
+      (set-marker opoint nil)
+      (set-marker start nil)
+      (set-marker end nil))))
 
 ;; XEmacs binds this to {M-q}.
 (defalias 'kotl-mode:fill-paragraph-or-region 'kotl-mode:fill-paragraph)
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 2a3ecccf4e..72fd575444 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -1993,7 +1993,7 @@ implicit button types (they are listed in increasing 
order of priority).
 @table @code
 
 @findex ibtypes org-mode
-@cindex Org-mode
+@cindex org-mode
 @cindex radio target
 @cindex code block
 @cindex links
@@ -2001,12 +2001,17 @@ implicit button types (they are listed in increasing 
order of priority).
 @kindex M-@key{RET}
 @findex org-ctrl-c-ctrl-c
 @findex org-meta-return
+@findex hsys-org-mode-p
+@vindex file, hsys-org.el
 @vindex hsys-org-enable-smart-keys
 @cindex enable org-mode support
 @cindex disable org-mode support
 @cindex inhibit org-mode support
 @item org-mode
-For users of Emacs Org-mode, Hyperbole does quite a few things.
+Hyperbole recognizes Org mode constructs in any of these modes:
+@code{org-mode}, @code{org-agenda-mode}, @code{outshine-mode}
+or @code{poporg-mode}.  (See the function @code{hsys-org-mode-p}).
+Hyperbole does quite a few things for Org mode users.
 
 First, the Action Key follows internal links in Org-mode files.  When
 pressed on a link referent/target, the link definition is displayed,
@@ -4452,17 +4457,57 @@ Set the variable, @code{kotl-mode:indent-tabs-mode}, to
 Use @bkbd{M-1 @key{TAB}} to toggle the @key{TAB} and
 @bkbd{M-@key{TAB}} keys back to promoting and demoting trees.
 
+
+@cindex Org tables
+The Koutliner supports Org Table editing, @pxref{Tables,,, org, the Org
+Mode Manual}, via Org table minor mode.  Use {M-x orgtbl-mode RET} to
+toggle this on and off.  A press of the Action Key on a @code{|} symbol,
+also toggles this minor mode on or off.
+
+@cindex outline mode
+@kindex M-0 @key{TAB}
+@kindex M-0 M-@key{TAB}
+Tree demotion and promotion keys match the defaults in Org mode and
+Outline mode, plus some easier to type ones.  The tables below
+summarize which keys work whether inside an Org table or outside.
+
+Note that you must use @bkbd{M-0 @key{TAB}} and @bkbd{M-0 M-@key{TAB}} to
+demote/promote Koutline trees when in a table since @key{TAB} by itself
+moves between fields within a table.
+
+@example
+@noindent
+|----------------------------+-----------------------------|
+| Demotion Inside  Org Table | Promotion Inside  Org Table |
+|----------------------------+-----------------------------|
+| M-0 TAB                    | M-0 Shift-TAB or M-0 M-TAB  |
+| C-c C-,                    | C-c C-.                     |
+| C-c C-<                    | C-c C->                     |
+|----------------------------+-----------------------------|
+
+|----------------------------+-----------------------------|
+| Demotion Outside Org Table | Promotion Outside Org Table |
+|----------------------------+-----------------------------|
+| TAB                        | Shift-TAB or M-TAB          |
+| M-left-arrow               | M-right-arrow               |
+| C-c C-,                    | C-c C-.                     |
+| C-c C-<                    | C-c C->                     |
+|----------------------------+-----------------------------|
+@end example
+
+
 @cindex tree, copying
 @cindex tree, moving
 @cindex Action Key, cell argument
 @kindex koutliner, Action Key, cell argument
-For maximum flexibility in rearranging outlines, there are commands that
-move or copy entire trees.  Each of these commands prompts for the label
-of the root cell to move or copy and for a second cell which specifies
-the new location for the moved or copied tree.  You may either accept
-the default provided, type in the cell label, or when a mouse is
-available, simply double click with the Action Key on the contents of a
-cell.  The Koutliner knows to use the cell's label in such cases.
+For maximum flexibility in rearranging outlines, there are commands
+that move or copy entire trees anywhere within the outline.  Each of
+these commands prompts for the label of the root cell to move or copy
+and for a second cell which specifies the new location for the moved
+or copied tree.  You may either accept the default provided, type in
+the cell label, or when a mouse is available, simply double click with
+the Action Key on the contents of a cell.  The Koutliner knows to use
+the cell's label in such cases.
 
 In the following commands, words delimited with <> represent the
 arguments for which each command prompts.  Note how the use of prefix
@@ -4596,12 +4641,12 @@ right margins.
 @cindex refilling
 @cindex attribute, no-fill
 @cindex cell, no-fill attribute
-Set the variable, @code{kotl-mode:refill-flag}, to @samp{t} if you want
-moving, promoting, demoting, exchanging, splitting and appending cells
-to also automatically refill each cell.  Generally, this is not
-recommended since if you happen to move a cell that you carefully
-formatted yet forgot to give a `no-fill' property, then your formatting
-will be lost.
+Set the variable, @code{kotl-mode:refill-flag}, to @samp{t} if you
+want moving, promoting, demoting, exchanging, splitting and appending
+cells to also automatically refill each cell, aside from any that have
+a `no-fill' property.  Generally, this is not recommended since if you
+happen to move a cell that you carefully formatted yet forgot to give
+a `no-fill' property, then your formatting will be lost.
 
 
 @node Transposing, Splitting and Appending, Filling, Editing
@@ -7256,10 +7301,10 @@ be of interest to users.
 @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}.
+permits setting a specific Emacs function or external program to display
+them.  There are four categories of referents, each with its own
+customizable display setting, listed in decreasing order of priority.
+All of these variables are defined within @file{hpath.el}.
 
 @example
 Referent Category             Variable Setting



reply via email to

[Prev in Thread] Current Thread [Next in Thread]