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

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

[elpa] externals/hyperbole c19e62e10f 2/2: Merge pull request #538 from


From: ELPA Syncer
Subject: [elpa] externals/hyperbole c19e62e10f 2/2: Merge pull request #538 from rswgnu/rsw
Date: Sun, 2 Jun 2024 18:58:06 -0400 (EDT)

branch: externals/hyperbole
commit c19e62e10fd39953ff44fe5e19579a8f88f06729
Merge: c3050387ea f017340a28
Author: Robert Weiner <rsw@gnu.org>
Commit: GitHub <noreply@github.com>

    Merge pull request #538 from rswgnu/rsw
    
    hywiki.el - Fix, improve a number of features and defaults.
---
 ChangeLog            |  19 +++++++
 hui-mouse.el         |  24 ++++----
 hyperbole.el         |   8 ++-
 hywiki.el            | 157 +++++++++++++++++++++++++++++++++------------------
 man/hyperbole.texi   |  24 ++++----
 test/hywiki-tests.el |   3 +-
 6 files changed, 151 insertions(+), 84 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 3ea46df538..91c8aa866f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,22 @@
+2024-06-02  Bob Weiner  <rsw@gnu.org>
+
+* hyperbole.el (hyperbole--disable-mode): Add disabling of 'hywiki-mode'.
+
+* hywiki.el (hywiki-active-in-current-buffer-p): Exclude buffers whose
+    major-modes are 'special, e.g. Dired mode.
+            (hywiki-word-highlight-flag): Clarify behavior.
+           (hywiki-highlight-all-in-prog-modes): Change to a `defcustom'.
+           (hywiki-get-page-files): Change to find files that end with
+    'hywiki-file-suffix' only.
+            (defib hywiki): Rename to 'hywiki-word' since activates on a
+    HyWikiWord.
+            (defcustom :group): Change from hyperbole-wiki to hyperbole-hywiki.
+            (hywiki-mode): Enable 'hyperbole-mode' which it uses.
+            (hywiki-mode-lighter): Add so can customize mode-line indicator.
+            (hywiki-excluded-major-modes): Rename to 
'hywiki-exclude-major-modes'.
+            (hywiki-add-page): Fix case-sensitive check of page-name validity
+    by calling 'hywiki-is-wikiword'.
+
 2024-06-01  Mats Lidell  <matsl@gnu.org>
 
 * test/hywiki-tests.el 
(hywiki-tests--hywiki-add-page--adds-file-in-wiki-folder)
diff --git a/hui-mouse.el b/hui-mouse.el
index e9496d105a..42f80cbfc4 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    04-Feb-89
-;; Last-Mod:     29-May-24 at 00:15:48 by Bob Weiner
+;; Last-Mod:      2-Jun-24 at 11:40:22 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -1803,19 +1803,19 @@ Active when `hsys-org-enable-smart-keys' is non-nil,
 
 When the Action Key is pressed:
 
-  1. If on an Org todo keyword, cycle through the keywords in
-     that set or if final done keyword, remove it.
+  1. On an Org todo keyword, cycle through the keywords in that
+     set or if final done keyword, remove it.
 
-  2. If on an Org agenda view item, jump to the item for editing.
+  2. On an Org agenda view item, jump to the item for editing.
 
   3. Within a radio or internal target or a link to it, jump between
      the target and the first link to it, allowing two-way navigation.
 
-  4. Follow other internal links in Org mode files.
+  4. On another internal link in an Org mode file, jump to its referent.
 
-  5. Follow Org mode external links.
+  5. On an Org mode external link, jump to its referent.
 
-  6. When on a Hyperbole button, activate the button.
+  6. On a Hyperbole button, activate the button.
 
   7. With point on the :dir path of a code block definition, display the
      directory given by the path.
@@ -1824,8 +1824,8 @@ When the Action Key is pressed:
      or #+end_example header, execute the code block via the Org mode
      standard binding of {\\`C-c' \\`C-c'}, (org-ctrl-c-ctrl-c).
   
-  9. When point is on an Org mode heading, cycle the view of the subtree
-     at point.
+  9. With point on an Org mode heading, cycle the view of the subtree at
+     point.
 
   10. In any other context besides the end of a line, invoke the Org mode
       standard binding of {M-RET}, (org-meta-return).
@@ -1833,10 +1833,10 @@ When the Action Key is pressed:
 When the Assist Key is pressed, it behaves just like the Action Key except
 in these contexts:
 
-  1. If on an Org todo keyword, move to the first todo keyword in
-     the next set, if any.
+  1. On an Org todo keyword, move to the first todo keyword in the next
+     set, if any.
 
-  2. If on an Org mode link or agenda view item, display Hyperbole
+  2. On an Org mode link or agenda view item, display Hyperbole
      context-sensitive help.
 
   3. On a Hyperbole button, perform the Assist Key function, generally
diff --git a/hyperbole.el b/hyperbole.el
index 7c7257b3a6..f207f925ab 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -9,7 +9,7 @@
 ;; Maintainer:   Mats Lidell <matsl@gnu.org>
 ;; Maintainers:  Robert Weiner <rsw@gnu.org>, Mats Lidell <matsl@gnu.org>
 ;; Created:      06-Oct-92 at 11:52:51
-;; Last-Mod:     28-May-24 at 23:04:52 by Bob Weiner
+;; Last-Mod:      2-Jun-24 at 13:22:35 by Bob Weiner
 ;; Released:     10-Mar-24
 ;; Version:      9.0.2pre
 ;; Keywords:     comm, convenience, files, frames, hypermedia, languages, 
mail, matching, mouse, multimedia, outlines, tools, wp
@@ -511,8 +511,8 @@ frame, those functions by default still return the prior 
frame."
   (message "Initializing Hyperbole...done"))
   
 
-  ;; This call loads the rest of the Hyperbole system.
-  (require 'hinit)
+;; This call loads the rest of the Hyperbole system.
+(require 'hinit)
 
 (defun hyperbole--enable-mode ()
   "Enable Hyperbole global minor mode."
@@ -540,6 +540,8 @@ frame, those functions by default still return the prior 
frame."
 
 (defun hyperbole--disable-mode ()
   "Disable Hyperbole keys, menus and hooks."
+  ;; Deactivate hywiki-mode
+  (hywiki-mode 0)
   ;; Deactivate hyperbole-mode
   ;; Delete Hyperbole menu from all menubars.
   (hui-menu-remove Hyperbole)
diff --git a/hywiki.el b/hywiki.el
index c2055d1be3..2e7d7fddff 100644
--- a/hywiki.el
+++ b/hywiki.el
@@ -3,7 +3,7 @@
 ;; Author:       Bob Weiner
 ;;
 ;; Orig-Date:    21-Apr-24 at 22:41:13
-;; Last-Mod:     29-May-24 at 00:53:33 by Bob Weiner
+;; Last-Mod:      2-Jun-24 at 11:52:44 by Bob Weiner
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
@@ -15,49 +15,76 @@
 ;;; Commentary:
 ;;
 ;;  This is Hyperbole's markup-free personal Wiki system for
-;;  note-taking and automatic WikiWord hyperlinking.  A `HyWiki word'
-;;  starts with a capitalized letter and contains only upper and
-;;  lowercase letters.  `HyWiki pages' are Org or other text mode
-;;  files with HyWiki word names (the page name) plus a file-type
-;;  suffix which are stored within `hywiki-directory'.
+;;  note-taking and automatic wiki word hyperlinking.
+
+;;  A `HyWikiWord' is a low-priority Hyperbole implicit button type
+;;  (named hywiki-word) that starts with a capitalized letter and
+;;  contains only upper and lowercase letters.  Such words
+;;  automatically link to `HyWiki pages', which are Org mode files
+;;  with HyWikiWord names (the page name) plus a ".org" suffix, stored
+;;  within the directory given by `hywiki-directory'.  Such links are
+;;  activated with a press of the Action Key {M-RET} within the link.
 ;;
-;;  To create a new HyWiki page or to jump to one, simply create an
-;;  Org link in any buffer with the prefix "hy:" followed by a
-;;  capitalized alpha characters-only WikiWord, e.g. [[hy:Emacs]], and
-;;  then press the Action Key on the link to jump to the associated
-;;  page; new pages are automatically created.
-
-;;  If you set `hywiki-org-link-type-required' to `nil', then
-;;  you don't need the prefix, e.g. [[Emacs]] and existing HyWiki page
-;;  names will override Org's standard handling of such links.  To
-;;  prevent Org mode's binding of {M-RET} from splitting lines and
-;;  creating new headlines when on a HyWiki word whose page has not
-;;  yet been created, set `hsys-org-enable-smart-keys' to 't' so that
+;;  Once Hyperbole has been loaded and activated, HyWikiWords (with or
+;;  without delimiters) are automatically highlighted and active in
+;;  the following contexts:
+;;    - HyWiki page buffers;
+;;    - non-special text buffers when `hywiki-mode' is enabled;
+;;    - comments of programming buffers when `hywiki-mode' is enabled.
+;;  
+;;  As HyWikiWords are typed, highlighting occurs after a trailing
+;;  whitespace or punctuation character is added, or when an opening
+;;  or closing parenthesis or curly brace is added to surround the
+;;  HyWikiWord.
+;;
+;;  To create a new HyWiki page or to jump to one, simply type a
+;;  HyWikiWord in a valid context and then press the Action Key on it.
+;;  If the associated page exists, jump to it.  If it doesn't, create
+;;  it and display its empty buffer for editing.  editing.  Highlight
+;;  all visible Instances of the associated HyWikiWord as well.
+;;
+;;  You can also create Org links to HyWikiWords in any non-special text
+;;  buffer by surrounding them with double square brackets and the
+;;  'hy:' prefix, as in: [[hy:MyWikiWord]].  If you set
+;;  `hywiki-org-link-type-required' to `nil', then you don't need the
+;;  prefix, e.g. [[MyWikiWord]]; existing HyWiki page names then will
+;;  override Org's standard handling of such links.  To prevent Org
+;;  mode's binding of {M-RET} from splitting lines and creating new
+;;  headlines when on a HyWiki word whose page has not yet been
+;;  created, set `hsys-org-enable-smart-keys' to `t' so that
 ;;  Hyperbole's Action Key does the right thing in this context.
 ;;
 ;;  HyWiki pages are created in `hywiki-directory'.  Within such
-;;  pages, WikiWords (the names of HyWiki pages) work without the need
+;;  pages, HyWikiWords (the names of HyWiki pages) work without the need
 ;;  for any delimiters.  Simply type them out, e.g. Emacs and if a
-;;  page exists for the word, it is automatically highlighted when:
+;;  page exists for the word, it is 
 ;;    - a HyWiki page file is read in
 ;;    - a whitespace character, ')', '}', or Org-mode punctuation/symbol
 ;;      character is inserted following a HyWiki word
 ;;    - the Action Key is pressed to activate a HyWiki word button.
 ;;
 ;;  HyWiki links can also link to a section headline within a page by
-;;  simply following the page name a '#' character and then the
+;;  simply following the page name with a '#' character and then the
 ;;  section headline name.  For example, if your Emacs page has a
-;;  'Major Modes section, then either [[hy:Emacs#Major Modes]] or
-;;  Emacs#Major-Modes will work as a link to that section.  Note that
-;;  without the square bracket delimiters, you must convert spaces in
-;;  section names to '-' characters.
+;;  "Major Modes" section, then either Emacs#Major-Modes or
+;;  [[hy:Emacs#Major Modes]] will work as a link to that section.
+;;  Note that without the square bracket delimiters, you must convert
+;;  spaces in section names to '-' characters.  As long as the page
+;;  exists, section links are highlighted regardless of whether
+;;  associated sections exist or not.
+;;
+;;  The custom setting, `hywiki-word-highlight-flag' (default = 't),
+;;  means HyWikiWords will be auto-highlighted within HyWiki pages.
+;;  Outside of such pages, `hywiki-mode' must also be enabled for such
+;;  auto-highlighting.
 ;;
-;;  Although HyWiki creates new pages in Org mode, you can manually
-;;  insert pages in Markdown or other text modes within
-;;  `hywiki-directory' and then link to them.  You can also change the
-;;  default `hywiki-file-suffix' to something else, like ".md" to have
-;;  HyWiki use Markdown mode for its pages.  This usage has not yet
-;;  been tested though, so use at your own risk.
+;;  The custom setting, `hywiki-exclude-major-modes' (default = nil), is
+;;  a list of major modes to exclude from HyWikiWord auto-highlighting
+;;  and recognition.
+;;
+;;  The custom setting, `hywiki-highlight-all-in-prog-modes' (default =
+;;  '(lisp-interaction-mode)), is a list of programming major modes to
+;;  highlight HyWikiWords outside of comments.
 
 ;;; Code:
 ;;; ************************************************************************
@@ -87,15 +114,28 @@
 ;;; ************************************************************************
 
 (defcustom hywiki-word-highlight-flag t
-  "Non-nil means automatically highlight non-Org link HyWiki word 
hyperbuttons."
+  "HyWiki highlights non-Org link HyWikiWords only when this is non-nil.
+Outside of HyWiki pages, `hywiki-mode' must also be enabled for
+auto-HyWikiWord highlighting."
   :type 'boolean
   :initialize #'custom-initialize-default
-  :group 'hyperbole-wiki)
+  :group 'hyperbole-hywiki)
 
-(defcustom hywiki-excluded-major-modes nil
+(defcustom hywiki-exclude-major-modes nil
   "List of major modes to exclude from HyWiki word highlighting and 
recognition."
   :type '(list symbol)
-  :group 'hyperbole-wiki)
+  :group 'hyperbole-hywiki)
+
+(defcustom hywiki-highlight-all-in-prog-modes '(lisp-interaction-mode)
+  "List of programming major modes to highlight HyWikiWords outside of 
comments."
+  :type '(list symbol)
+  :group 'hyperbole-hywiki)
+
+(defcustom hywiki-mode-lighter  " HyWiki"
+  "String to display in mode line when the HyWiki global minor mode is enabled.
+Use nil for no HyWiki mode indicator."
+  :type 'string
+  :group 'hyperbole-hywiki)
 
 (defvar hywiki-file-suffix ".org"
   "File suffix (including period) to use when creating HyWiki pages.")
@@ -103,9 +143,6 @@
 (defvar hywiki-directory '"~/hywiki/"
   "Directory in which to find HyWiki page files.")
 
-(defvar hywiki-highlight-all-in-prog-modes '(lisp-interaction-mode)
-  "List of programming major modes to highlight HyWikiWords outside of 
comments.")
-
 (defvar hywiki-non-character-commands
   '(;; Org mode
     org-cycle                         ;; TAB
@@ -166,13 +203,13 @@ the HyWiki word and grouping 2 is the #section with the # 
included.")
     (((min-colors 88)) (:foreground "orange"))
     (t (:background "orange")))
   "Face for HyWiki word highlighting."
-  :group 'hyperbole-wiki)
+  :group 'hyperbole-hywiki)
 
 (defcustom hywiki-word-face 'hywiki--word-face
   "Hyperbole face for HyWiki word highlighting."
   :type 'face
   :initialize #'custom-initialize-default
-  :group 'hyperbole-wiki)
+  :group 'hyperbole-hywiki)
 
 ;;; ************************************************************************
 ;;; Private variables
@@ -275,20 +312,27 @@ See the Info documentation at \"(hyperbole)HyWiki\".
 
 \\{hywiki-mode-map}"
   :global t
-  :lighter " HyWiki"
+  :lighter hywiki-mode-lighter
   :keymap hywiki-mode-map
-  :group 'hyperbole-wiki
+  :group 'hyperbole-hywiki
   (if hywiki-mode
-      (progn (unless hywiki-mode-map
-               (setq hywiki-mode-map (make-sparse-keymap)))
+      ;; enable mode
+      (progn
+       ;; Need hyperbole-mode
+       (if (boundp 'hyperbole-mode)
+           (unless hyperbole-mode (hyperbole-mode 1))
+         (error "(hywiki-mode): `hyperbole-mode' must be defined before 
invoking `hywiki-mode'"))
+       (unless hywiki-mode-map
+          (setq hywiki-mode-map (make-sparse-keymap)))
             ;; Self-insert punct/sym keys that trigger wiki-word
             ;; highlighting via `hywiki-buttonize-character-commands'
             ;; in `hywiki-mode'.
-            (unless hywiki--buttonize-characters
-              (setq hywiki--buttonize-characters
-                    (concat " \t\r\n()<>[]{}'" 
(hywiki-get-buttonize-characters))))
-            (add-hook 'post-self-insert-hook 
'hywiki-buttonize-character-commands)
-            (add-hook 'pre-command-hook 
'hywiki-buttonize-non-character-commands 95))
+       (unless hywiki--buttonize-characters
+         (setq hywiki--buttonize-characters
+               (concat " \t\r\n()<>[]{}'" (hywiki-get-buttonize-characters))))
+       (add-hook 'post-self-insert-hook 'hywiki-buttonize-character-commands)
+       (add-hook 'pre-command-hook 'hywiki-buttonize-non-character-commands 
95))
+    ;; disable mode
     (remove-hook 'post-self-insert-hook 'hywiki-buttonize-character-commands)
     (remove-hook 'pre-command-hook 'hywiki-buttonize-character-commands))
   (hywiki-highlight-page-names-in-frame (selected-frame)))
@@ -297,7 +341,7 @@ See the Info documentation at \"(hyperbole)HyWiki\".
 ;;; Public Implicit Button and Action Types
 ;;; ************************************************************************
 
-(defib hywiki ()
+(defib hywiki-word ()
   "When on a HyWiki word, display its page and optional section."
   (let ((page-name (hywiki-at-wikiword)))
     (when page-name
@@ -355,8 +399,9 @@ successfully finding a page and reading it into a buffer, 
run
 
 (defun hywiki-active-in-current-buffer-p ()
   "Return non-nil if HyWiki word links are active in the current buffer."
-  (and hywiki-word-highlight-flag
-       (not (apply #'derived-mode-p hywiki-excluded-major-modes))
+  (and (not (eq (get major-mode 'mode-class) 'special))
+       hywiki-word-highlight-flag
+       (not (apply #'derived-mode-p hywiki-exclude-major-modes))
        (or hywiki-mode (hywiki-in-page-p))))
 
 (defun hywiki-add-to-page (page-name text start-flag)
@@ -718,11 +763,13 @@ No validation of PAGE-NAME is done."
 
 (defun hywiki-get-page-files ()
   "Return the list of existing HyWiki page file names.
-These may have any alphanumeric file suffix, if files were added manually."
+These must end with `hywiki-file-suffix'."
   (when (stringp hywiki-directory)
     (make-directory hywiki-directory t)
     (when (file-readable-p hywiki-directory)
-      (directory-files-recursively hywiki-directory (concat "^" 
hywiki-word-regexp "\\.[A-Za-z0-9]+$")))))
+      (directory-files-recursively
+       hywiki-directory (concat "^" hywiki-word-regexp
+                               (regexp-quote hywiki-file-suffix) "$")))))
 
 (defun hywiki-get-page-hasht ()
   "Return hash table of existing HyWiki pages."
@@ -738,7 +785,7 @@ return nil.
 
 Use `hywiki-get-page' to determine whether a HyWiki page exists."
   (if (and (stringp page-name) (not (string-empty-p page-name))
-          (string-match hywiki-word-with-optional-section-exact-regexp 
page-name))
+          (hywiki-is-wikiword page-name))
       (progn
        (when (match-string-no-properties 2 page-name)
          ;; Remove any #section suffix in PAGE-NAME.
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index 79f7fc2c34..3f5b8a7de2 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -25,8 +25,8 @@
 @set txicodequoteundirected
 @set txicodequotebacktick
 
-@set UPDATED April, 2024
-@set UPDATED-MONTH April 2024
+@set UPDATED June, 2024
+@set UPDATED-MONTH June 2024
 @set EDITION 9.0.2pre
 @set VERSION 9.0.2pre
 
@@ -159,7 +159,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</P>
 
 <PRE>
 Edition 9.0.2pre
-Printed April 16, 2024.
+Printed June 2, 2024.
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -201,7 +201,7 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
 @example
 Edition 9.0.2pre
-April 16, 2024
+June 2, 2024
 
   Published by the Free Software Foundation, Inc.
   Author:    Bob Weiner
@@ -2326,13 +2326,13 @@ Within a radio or internal target or a link to it, jump 
between
 the target and the first link to it, allowing two-way navigation.
 
 @item
-Follow other internal links and ID references in Org mode files.
+On another internal link in an Org mode file, jump to its referent.
 
 @item
-Follow Org mode external links.
+On an Org mode external link, jump to its referent.
 
 @item
-When on a Hyperbole button, activate the button.
+On a Hyperbole button, activate the button.
 
 @item
 With point on the :dir path of a code block definition, display the
@@ -2344,8 +2344,8 @@ or #+end_example header, execute the code block via the 
Org mode
 standard binding of @bkbd{C-c C-c}, @code{org-ctrl-c-ctrl-c}.
 
 @item
-When point is on an Org mode heading, cycle the view of the subtree
-at point.
+With point on an Org mode heading, cycle the view of the subtree at
+point.
 
 @item
 In any other context besides the end of a line, invoke the Org mode
@@ -2358,11 +2358,11 @@ except in these contexts:
 
 @enumerate
 @item
-If on an Org todo keyword, move to the first todo keyword in
-the next set, if any.
+On an Org todo keyword, move to the first todo keyword in the next
+set, if any.
 
 @item
-If on an Org mode link or agenda view item, display Hyperbole
+On an Org mode link or agenda view item, display Hyperbole
 context-sensitive help.
 
 @item
diff --git a/test/hywiki-tests.el b/test/hywiki-tests.el
index ee8b282140..b4c8d87112 100644
--- a/test/hywiki-tests.el
+++ b/test/hywiki-tests.el
@@ -7,7 +7,7 @@
 ;;
 ;; SPDX-License-Identifier: GPL-3.0-or-later
 ;;
-;; Copyright (C) 2021-2022  Free Software Foundation, Inc.
+;; Copyright (C) 2024  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -41,7 +41,6 @@
 
 (ert-deftest hywiki-tests--hywiki-add-page--adds-no-wiki-word-fails ()
   "Verify add page requires a WikiWord."
-  :expected-result :failed
   ;; Should not leave erroneously created file after test but leaving
   ;; added error cleanup till later if it is even needed!? No file
   ;; should be created so only happens on error!? (If this is



reply via email to

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