[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/hyperbole 158a407228 5/5: Merge pull request #407 from
From: |
ELPA Syncer |
Subject: |
[elpa] externals/hyperbole 158a407228 5/5: Merge pull request #407 from rswgnu/rsw |
Date: |
Fri, 1 Dec 2023 09:58:15 -0500 (EST) |
branch: externals/hyperbole
commit 158a40722876d7063093d9c2cffe5db7fe52931c
Merge: 3692855fa8 7b1cd4a4de
Author: Robert Weiner <rsw@gnu.org>
Commit: GitHub <noreply@github.com>
Merge pull request #407 from rswgnu/rsw
Improve tag/symbol finding, <> and {} handling
---
ChangeLog | 70 +++++++++++++++++++++++++++++++++++++++-
DEMO | 2 ++
FAST-DEMO | 11 ++++---
HY-NEWS | 2 ++
README | 4 +--
hargs.el | 27 +++++++++-------
hbut.el | 26 +++++++++------
hib-kbd.el | 84 ++++++++++++++++++++++--------------------------
hmouse-tag.el | 44 +++++++++++++++++++++++--
hpath.el | 68 +++++++++++++++++++++++----------------
hui-mouse.el | 18 +++++++++--
hui-select.el | 28 ++++++++++------
hypb.el | 8 +++--
hyrolo-demo.el | 11 +++++--
hyrolo.el | 49 +++++++++++-----------------
kotl/kvspec.el | 7 ++--
test/hbut-tests.el | 4 +--
test/hui-select-tests.el | 40 ++++++++++++++++-------
18 files changed, 334 insertions(+), 169 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 295bba14fd..ecd08c4d8b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,9 +1,36 @@
+2023-12-01 Bob Weiner <rsw@gnu.org>
+
+* hargs.el (hargs:delimited): Remove use of 'bounds-of-thing-at-point'
+ and (require 'thingatpt) since it doesn't use the delimiters given
+ and returns wrong results. This fixes defal tests that were failing.
+
+* hyrolo.el (hyrolo-grep): Fix to ensure 'outline-regexp' setting for all
+ matching file types is set locally in the match buffer only.
+ (hyrolo-mode): Use 'setq-local' instead of 'make-local-variable'.
+ (require 'outline): Add and remove its function declarations.
+
+* hpath.el (hpath:expand): Fix to allow return of paths with file wildcards
+ that are not yet expanded. Use 'hpath:expand-list' to expand them.
+ (hpath:expand-list): Fix to call 'hpath:expand' before resolving
+ wildcards, so that variables are resolved first. Also make 'match-regexp'
+ argument optional, in which case all files are matched. Improve doc
string.
+
+2023-11-30 Bob Weiner <rsw@gnu.org>
+
+* hyrolo.el (hyrolo-grep-file): Add 'backward-search-limit' to minimize
+ backward searches to the end of the last match and to prevent
+ forward search stalls in some contexts.
+
+* hypb.el (hypb:insert-hyperbole-banner): Keep any initial line of
+ variable settings (starts with -*-, e.g. for Org mode as the first
+ line.
+
2023-11-30 Mats Lidell <matsl@gnu.org>
* test/hui-tests.el (hui--ebut-link-directly-to-file)
(hui--ebut-link-directly-to-dired, hui--buf-writable-err)
(hui--gbut-link-directly-ibut, hui--gbut-link-directly-ebut): Add
- tests for ebut-link-directly.
+ tests for ebut-link-directly.
2023-11-29 Mats Lidell <matsl@gnu.org>
@@ -26,11 +53,52 @@
* Remove warnings for unknown functions by using declare-function.
+2023-11-23 Bob Weiner <rsw@gnu.org>
+
+* hui-select.el (hui-select-syntax-table): Change to copy syntax
+ table so changes do not affect the parent.
+
+* hbut.el (hbut:modify-syntax): Add <> and {} pair support in text
+ and fundamental modes.
+ (require 'mode-local): Use in 'hbut:modify-syntax'.
+ hib-kbd.el (defib kbd-key): Remove explicit syntax setting of braces
+ and just temporarily use Hyperbole-modified text-mode syntax table.
+ hyrolo.el (hyrolo-mode-syntax-table): Remove explicit syntax setting
+ of < > delimiters; inherit from 'text-mode-syntax-table' instead.
+
+* test/hui-select-tests.el (hui-select--thing): Fix to skip 'indent-def
+ by removing final newline. Label each test section with the type
+ of match expected.
+ (hui-select--thing-interactive-prints-type-of-match): Make similar
+ fixes as in above function.
+
2023-11-22 Mats Lidell <matsl@gnu.org>
* test/demo-tests.el (fast-demo-key-series-dired-other-window): Add test
from demo key series.
+2023-11-22 Bob Weiner <rsw@gnu.org>
+
+* hui-mouse.el (hkey-alist): Add clause to handle Smart Key when in
+ a vertico minibuffer window; make it behave like standard vertico
+ which exits and selects the first minibuffer line, not the candidate
+ presently selected.
+
+* hargs.el (hargs:delimited):
+ (require 'thingatpt): For 'bounds-of-thing-at-point'
+ used in 'hargs:delimited' on single char matching delims.
+
+* hui-select.el (hui-select-scan-sexps): Add to fix brace handling
+ as a matching pair when selecting things by using previously
+ unused 'hui-select-syntax-table'.
+
+* hmouse-tag.el (smart-lisp-bound-symbol-def): Rewrite to support
+ Hyperbole type defs like defib, etc. This improves finding
+ the proper definition of a Hyperbole type.
+ (find-defact-regexp, find-defal-regexp,
+ find-defib-regexp, find-defil-regexp): Add these
+ entries to 'find-function-regexp-alist'.
+
2023-11-21 Bob Weiner <rsw@gnu.org>
* hui-select.el (hui-select-initialize): Fix to set 'syntax-table-sym'
diff --git a/DEMO b/DEMO
index 5d8213fd22..b7c684fb97 100644
--- a/DEMO
+++ b/DEMO
@@ -1,3 +1,5 @@
+-*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
+
* GNU Hyperbole Full Demo/Tutorial by Bob Weiner
Send an email or a testimonial if you like Hyperbole to <rsw@gnu.org>.
diff --git a/FAST-DEMO b/FAST-DEMO
index ed1b6d9050..04000b0bf5 100644
--- a/FAST-DEMO
+++ b/FAST-DEMO
@@ -1,4 +1,4 @@
-;;; -*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t
-*-
+-*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
* GNU Hyperbole Fast Demo by Bob Weiner
@@ -191,11 +191,11 @@
Press {C-h A} when over any Hyperbole button for an explanation of
what it does.
- {M-x dired-other-window RET ${hyperb:dir}/*.el RET}
+ {M-x dired-other-window RET ${hyperb:dir}/*.el M-RET}
Hyperbole home directory Dired listing of Emacs Lisp files only
- {C-c @ 22 RET}
+ {C-22 C-c @}
Display a 2x2 windows grid in the current frame of the 4 most recently
used buffers. Before you try this, remember the binding {C-h h h} for
@@ -207,7 +207,7 @@
Find the Hyperbole Koutliner source files that begin with 'kotl' and
display them in an auto-sized grid of windows.
- {C-u 0 C-c @ emacs-lisp-mode RET 33 RET}
+ {C-0 C-c @ emacs-lisp-mode RET 33 RET}
Display the 9 mostly recently used Emacs Lisp buffers in a 3x3 grid.
A BLANK buffer fills in the grid if there are not enough Emacs Lisp
@@ -215,7 +215,8 @@
{C-x 4 d ${hyperb:dir} RET}
- Dired the Hyperbole home directory based on its variable.
+ Dired the Hyperbole home directory based on its variable. {M-RET} on
+ the directory itself will display the directory's value in the
minibuffer.
Within this dired buffer, mark a few files with {m} and then press {@}
to display a window grid of those files only. That works in Buffer
diff --git a/HY-NEWS b/HY-NEWS
index 971e6a0539..be894f4cab 100644
--- a/HY-NEWS
+++ b/HY-NEWS
@@ -1,3 +1,5 @@
+-*- Mode: org; org-cycle-global-at-bob: t; hsys-org-enable-smart-keys: t -*-
+
* What's New in GNU Hyperbole
by Bob Weiner
diff --git a/README b/README
index 10f2eda1f8..601104785e 100644
--- a/README
+++ b/README
@@ -3,9 +3,9 @@
# Author: Bob Weiner
#
# Orig-Date: 19-Oct-91 at 03:27:47
-# Last-Mod: 24-Jan-22 at 00:19:12 by Bob Weiner
+# Last-Mod: 24-Jan-23 at 00:19:12 by Bob Weiner
#
-# Copyright (C) 1989-2021 Free Software Foundation, Inc.
+# Copyright (C) 1989-2023 Free Software Foundation, Inc.
# See the "HY-COPY" file for license information.
#
# This file is part of GNU Hyperbole.
diff --git a/hargs.el b/hargs.el
index e3665a49cf..fb58c616a3 100644
--- a/hargs.el
+++ b/hargs.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 31-Oct-91 at 23:17:35
-;; Last-Mod: 25-Nov-23 at 16:38:50 by Mats Lidell
+;; Last-Mod: 1-Dec-23 at 11:23:52 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -128,7 +128,9 @@ START-DELIM is treated as a regular expression.
END-REGEXP-FLAG
is similar. With optional LIST-POSITIONS-FLAG, return list
of (string-matched start-pos end-pos). Optional
EXCLUDE-REGEXP is compared against the match string with its delimiters
-included; any string that matches this regexp is ignored."
+included; any string that matches this regexp is ignored. Optional
+AS-KEY non-nil means return the string normalized as a Hyperbole
+button key (no spaces)."
(let* ((opoint (point))
;; This initial limit is the forward search limit for start delimiters
(limit (if start-regexp-flag
@@ -140,12 +142,13 @@ included; any string that matches this regexp is ignored."
(end-search-func (if end-regexp-flag 're-search-forward
'search-forward))
(count 0)
first
- start
- end
+ start ;; excludes delimiter
+ end ;; excludes delimiter
start-pos
end-pos
start-with-delim
end-with-delim)
+
(if (string-equal start-delim end-delim)
(save-excursion
(beginning-of-line)
@@ -205,14 +208,16 @@ included; any string that matches this regexp is ignored."
(goto-char opoint)
(and (funcall end-search-func end-delim limit t)
(setq end (match-beginning 0)
- end-with-delim (match-end 0))
+ end-with-delim (match-end 0)))))
- ;; Ignore any preceding backslash, e.g. when a double-quoted
- ;; string is embedded within a doc string, except when
- ;; the string starts with 2 backslashes or an MSWindows
- ;; disk drive prefix, in which case the backslash is
- ;; considered part of a pathname.
- (if (and (> end (point-min))
+ (when (and start end)
+ (save-excursion
+ ;; Ignore any preceding backslash, e.g. when a double-quoted
+ ;; string is embedded within a doc string, except when
+ ;; the string starts with 2 backslashes or an MSWindows
+ ;; disk drive prefix, in which case the backslash is
+ ;; considered part of a pathname.
+ (and (if (and (> end (point-min))
(= (char-before end) ?\\)
(not (string-match (concat "\\(\\`[\\][\\]\\)\\|"
hpath:mswindows-mount-prefix)
diff --git a/hbut.el b/hbut.el
index 545a36dc02..0833e3481e 100644
--- a/hbut.el
+++ b/hbut.el
@@ -3,11 +3,11 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 18-Sep-91 at 02:57:09
-;; Last-Mod: 25-Nov-23 at 17:10:28 by Mats Lidell
+;; Last-Mod: 30-Nov-23 at 23:23:53 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
-;; Copyright (C) 1991-2022 Free Software Foundation, Inc.
+;; Copyright (C) 1991-2023 Free Software Foundation, Inc.
;; See the "HY-COPY" file for license information.
;;
;; This file is part of GNU Hyperbole.
@@ -1503,17 +1503,18 @@ non-nil)."
(nreverse result)))
(defvar hbut:syntax-table (copy-syntax-table emacs-lisp-mode-syntax-table)
- "Modified Elisp syntax table for use with Action and Key Series buttons.
-Makes < > and { } into syntactically matching pairs after `hyperb:init'
+ "Syntax table copied from Elisp for use with Action and Key Series buttons.
+Make < > and { } into syntactically matching pairs after `hyperb:init'
calls `hbut:modify-syntax'.")
;;;###autoload
(defun hbut:modify-syntax ()
- "Modify syntactic character pairs in syntax tables.
-Modify `hbut:syntax-table' and `help-mode-syntax-table'. For use
-with implicit button activations."
- ;; Treat angle brackets as opening and closing delimiters for ease
- ;; of matching.
+ "Make <> and {} behave as syntactic character pairs in major syntax tables.
+Modify `hbut:syntax-table' and `help-mode-syntax-table' to include <> and {}.
+Modify `text-mode-syntax-table' and `fundamental-mode's syntax table
+to include {} only. For use with implicit button activations."
+ ;; Treat angle brackets and braces as opening and closing delimiters
+ ;; for ease of matching.
(mapc (lambda (syntax-table)
(modify-syntax-entry ?\< "(>" syntax-table)
(modify-syntax-entry ?\> ")<" syntax-table)
@@ -1521,6 +1522,13 @@ with implicit button activations."
(modify-syntax-entry ?\{ "(}" syntax-table)
(modify-syntax-entry ?\} "){" syntax-table))
(list hbut:syntax-table help-mode-syntax-table))
+ (mapc (lambda (syntax-table)
+ ;; Treat braces as opening and closing delimiters for ease of
matching.
+ (modify-syntax-entry ?\{ "(}" syntax-table)
+ (modify-syntax-entry ?\} "){" syntax-table))
+ (list text-mode-syntax-table
+ ;; fundamental-mode syntax table
+ (standard-syntax-table)))
nil)
(defun hbut:outside-comment-p ()
diff --git a/hib-kbd.el b/hib-kbd.el
index 64d902e4b7..f9fd5e676a 100644
--- a/hib-kbd.el
+++ b/hib-kbd.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 22-Nov-91 at 01:37:57
-;; Last-Mod: 19-Nov-23 at 17:55:29 by Bob Weiner
+;; Last-Mod: 23-Nov-23 at 01:51:41 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -117,50 +117,44 @@ Any key sequence within the series must be a string of
one of the following:
(and (looking-at "[{}]") (/= ?\\ (preceding-char))))
;; Temporarily make open and close braces have list syntax for
;; matching purposes.
- (let ((open-brace-syntax (hypb:get-raw-syntax-descriptor ?\{))
- (close-brace-syntax (hypb:get-raw-syntax-descriptor ?\})))
- (unwind-protect
- (progn (modify-syntax-entry ?\{ "(}" (syntax-table))
- (modify-syntax-entry ?\} "){" (syntax-table))
- ;; Handle long series, e.g. eval-elisp actions
- (let* ((hbut:max-len (max 3000 (hbut:max-len)))
- (seq-and-pos (or
- ;; (kbd) calls but only if point is
between double quotes
- (and (hbut:label-p t "(kbd \"" "\"\)" t)
- (hbut:label-p t "\"" "\"\)" t))
- ;; braces delimiters
- (hbut:label-p t "{`" "'}" t)
- (hbut:label-p t "{" "}" t)
- ;; Regular dual single quotes (Texinfo
smart quotes)
- (hbut:label-p t "``" "''" t)
- ;; Typical GNU manual key sequences; note
- ;; these are special quote marks, not the
- ;; standard ASCII characters.
- (hbut:label-p t "‘" "’" t)))
- ;; This excludes delimiters
- (key-series (car seq-and-pos))
- (start (cadr seq-and-pos))
- binding)
- ;; Match only when start delimiter is preceded by whitespace,
- ;; double quotes or is the 1st buffer character, so do not
- ;; match to things like ${variable}.
- (when (memq (char-before start) '(nil ?\ ?\t ?\n ?\r ?\f
?\"))
- (when (and (stringp key-series)
- (not (string-equal key-series "")))
- ;; Replace any ${} internal or env vars; leave
- ;; $VAR untouched for the shell to evaluate.
- (let ((hpath:variable-regexp "\\${\\([^}]+\\)}"))
- (setq key-series (hpath:substitute-value key-series)))
-
- (setq key-series (kbd-key:normalize key-series)
- binding (kbd-key:binding key-series)))
- (and (stringp key-series)
- (or (and binding (not (integerp binding)))
- (kbd-key:special-sequence-p key-series))
- (ibut:label-set seq-and-pos)
- (hact 'kbd-key key-series)))))
- (hypb:set-raw-syntax-descriptor ?\{ open-brace-syntax)
- (hypb:set-raw-syntax-descriptor ?\} close-brace-syntax)))))
+ (with-syntax-table text-mode-syntax-table
+ ;; Handle long series, e.g. eval-elisp actions
+ (let* ((hbut:max-len (max 3000 (hbut:max-len)))
+ (seq-and-pos (or
+ ;; (kbd) calls but only if point is between double
quotes
+ (and (hbut:label-p t "(kbd \"" "\"\)" t)
+ (hbut:label-p t "\"" "\"\)" t))
+ ;; braces delimiters
+ (hbut:label-p t "{`" "'}" t)
+ (hbut:label-p t "{" "}" t)
+ ;; Regular dual single quotes (Texinfo smart quotes)
+ (hbut:label-p t "``" "''" t)
+ ;; Typical GNU manual key sequences; note
+ ;; these are special quote marks, not the
+ ;; standard ASCII characters.
+ (hbut:label-p t "‘" "’" t)))
+ ;; This excludes delimiters
+ (key-series (car seq-and-pos))
+ (start (cadr seq-and-pos))
+ binding)
+ ;; Match only when start delimiter is preceded by whitespace,
+ ;; double quotes or is the 1st buffer character, so do not
+ ;; match to things like ${variable}.
+ (when (memq (char-before start) '(nil ?\ ?\t ?\n ?\r ?\f ?\"))
+ (when (and (stringp key-series)
+ (not (string-equal key-series "")))
+ ;; Replace any ${} internal or env vars; leave
+ ;; $VAR untouched for the shell to evaluate.
+ (let ((hpath:variable-regexp "\\${\\([^}]+\\)}"))
+ (setq key-series (hpath:substitute-value key-series)))
+
+ (setq key-series (kbd-key:normalize key-series)
+ binding (kbd-key:binding key-series)))
+ (and (stringp key-series)
+ (or (and binding (not (integerp binding)))
+ (kbd-key:special-sequence-p key-series))
+ (ibut:label-set seq-and-pos)
+ (hact 'kbd-key key-series)))))))
;;; ************************************************************************
;;; Public functions
diff --git a/hmouse-tag.el b/hmouse-tag.el
index d13ac503cd..1c68a65ae6 100644
--- a/hmouse-tag.el
+++ b/hmouse-tag.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 24-Aug-91
-;; Last-Mod: 20-Nov-23 at 02:06:48 by Bob Weiner
+;; Last-Mod: 22-Nov-23 at 00:15:24 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -91,6 +91,34 @@
;;; Public variables
;;; ************************************************************************
+(defconst find-defact-regexp "^\\s-*(defact\\s-+%s\\s-"
+ "The regexp used to search for a Hyperbole action type definition.
+Note it must contain a ‘%s’ at the place where ‘format’
+should insert the action type definition name.")
+
+(defconst find-defal-regexp "^\\s-*(defal\\s-+%s\\s-"
+ "The regexp used to search for a Hyperbole action link type definition.
+Note it must contain a ‘%s’ at the place where ‘format’
+should insert the action link type definition name.")
+
+(defconst find-defib-regexp "^\\s-*(defib\\s-+%s\\s-"
+ "The regexp used to search for a Hyperbole implicit button type definition.
+Note it must contain a ‘%s’ at the place where ‘format’
+should insert the implicit button type definition name.")
+
+(defconst find-defil-regexp "^\\s-*(defil\\s-+%s\\s-"
+ "The regexp used to search for a Hyperbole implicit link type definition.
+Note it must contain a ‘%s’ at the place where ‘format’
+should insert the implicit link type definition name.")
+
+;; Add Hyperbole def types to `find-function-regexp-alist'.
+(mapc (lambda (item)
+ (add-to-list 'find-function-regexp-alist item))
+ '((defact . find-defact-regexp)
+ (defal . find-defal-regexp)
+ (defib . find-defib-regexp)
+ (defil . find-defil-regexp)))
+
(define-obsolete-variable-alias 'smart-asm-include-dirs
'smart-asm-include-path "06.00")
(defcustom smart-asm-include-path nil
@@ -1189,7 +1217,19 @@ The buffer may be attached to a .elc file. TAG-SYM may
be a function,
variable or face."
(save-excursion
;; Bound Emacs Lisp function, variable and face definition display.
- (ignore-errors (or (find-function-noselect tag-sym)
+ (ignore-errors (or (let ((func-lib (find-function-library tag-sym nil t))
+ tag-type ;; nil means regular Lisp function
+ tag-name)
+ (when func-lib
+ (setq tag-sym (car func-lib)
+ tag-name (symbol-name tag-sym))
+ (cond ((string-prefix-p "ibtypes::" tag-name)
+ (setq tag-type 'defib
+ tag-sym (ibtype:def-symbol tag-sym)))
+ ((string-prefix-p "actypes::" tag-name)
+ (setq tag-type 'defact
+ tag-sym (actype:def-symbol tag-sym))))
+ (find-function-search-for-symbol tag-sym tag-type
(cdr func-lib))))
(find-variable-noselect tag-sym)
(find-definition-noselect tag-sym 'defface)))))
diff --git a/hpath.el b/hpath.el
index 35cd892417..b65538f481 100644
--- a/hpath.el
+++ b/hpath.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 1-Nov-91 at 00:44:23
-;; Last-Mod: 25-Nov-23 at 16:42:29 by Mats Lidell
+;; Last-Mod: 1-Dec-23 at 01:11:32 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -1209,47 +1209,60 @@ Any single ${variable} within PATH is resolved. Then
PATH is
expanded from the first file matching regexp in
`hpath:auto-variable-alist'.
+Return expanded path if it exists or it contains file wildcards of
+'[]', '*', or '?'.
+
Return any absolute or invalid PATH unchanged unless optional
EXISTS-FLAG is non-nil in which case, return the expanded path
only if it exists, otherwise, return nil."
(when (stringp path)
(unless (string-match-p hpath:variable-regexp path)
+ ;; Replace any $VAR environment variable references
(setq path (substitute-in-file-name path)))
(let (variable-path
substituted-path
expanded-path)
- (setq variable-path (hpath:expand-with-variable path)
- substituted-path (hpath:substitute-value variable-path)
- expanded-path
- (cond ((or (null substituted-path) (string-empty-p
substituted-path))
- path)
- ((and (string-match-p hpath:variable-regexp variable-path)
- (string-match-p hpath:variable-regexp substituted-path))
- ;; If a path is invalid, then a variable may have been
prepended but
- ;; it will remain unresolved in `substituted-path', in which
case we
- ;; want to return `path' without any further changes.
- path)
- ;; For compressed Elisp libraries, add any found compressed
suffix to the path.
- ((string-match-p "\\.el\\(\\.\\|\\'\\)" substituted-path)
- (or (locate-library substituted-path t) path))
- ((or (string-match-p
"\\`\\(#[^#+.]\\|([^\)\\/]+)\\|[^.\\/].*\\.[^.\\/]\\)" substituted-path)
- (string-match-p "[\\/~]" substituted-path))
- ;; Don't expand if an Info path, URL, #anchor or has a
directory prefix
- substituted-path)
- (t (expand-file-name substituted-path))))
- (if (file-exists-p expanded-path)
+ (setq
+ ;; Expand relative path from appropriate multi-path prefix variables
+ variable-path (hpath:expand-with-variable path)
+ ;; Substitute values for Emacs Lisp variables and environment variables
in PATH.
+ substituted-path (hpath:substitute-value variable-path)
+ expanded-path
+ (cond ((or (null substituted-path) (string-empty-p substituted-path))
+ path)
+ ((and (string-match-p hpath:variable-regexp variable-path)
+ (string-match-p hpath:variable-regexp substituted-path))
+ ;; If a path is invalid, then a variable may have been prepended
but
+ ;; it will remain unresolved in `substituted-path', in which case
we
+ ;; want to return `path' without any further changes.
+ path)
+ ;; For compressed Elisp libraries, add any found compressed suffix
to the path.
+ ((string-match-p "\\.el\\(\\.\\|\\'\\)" substituted-path)
+ (or (locate-library substituted-path t) path))
+ ((or (string-match-p
"\\`\\(#[^#+.]\\|([^\)\\/]+)\\|[^.\\/].*\\.[^.\\/]\\)" substituted-path)
+ (string-match-p "[\\/~]" substituted-path))
+ ;; Don't expand if an Info path, URL, #anchor or has a directory
prefix
+ substituted-path)
+ (t (expand-file-name substituted-path))))
+ (if (and (stringp expanded-path)
+ (or (file-exists-p expanded-path)
+ (string-match "[[*?]" (file-local-name expanded-path))))
expanded-path
(unless exists-flag
path)))))
-(defun hpath:expand-list (paths match-regexp &optional exists-flag)
+(defun hpath:expand-list (paths &optional match-regexp exists-flag)
"Return expansions of PATHS, a list of dirs or wildcarded file patterns.
-PATHS expansion filters out non-strings, expand file wildcards
-when `find-file-wildcards' is non-nil (the default), substitute
-up to one ${variable} per path, and recursively walk directory
-trees for files with MATCH-REGEXP."
+PATHS expansion recursively walks directory trees to include
+files with names matching optional MATCH-REGEXP (otherwise, all
+files), filters out non-strings and non-existent filenames when
+optional EXISTS-FLAG is non-nil, expands file wildcards when
+`find-file-wildcards' is non-nil (the default), substitutes for
+multipled $VAR environment variables, substitutes up to one
+${variable} per path."
(mapcan (lambda (path)
+ (setq path (hpath:expand path exists-flag))
(when (setq path (or (when find-file-wildcards
(file-expand-wildcards path))
(list path)))
@@ -1257,9 +1270,8 @@ trees for files with MATCH-REGEXP."
(setq path (car path))
(setq paths (nconc (cdr path) paths)
path (car path)))
- (setq path (hpath:expand path exists-flag))
(if (file-directory-p path)
- (directory-files-recursively path match-regexp)
+ (directory-files-recursively path (or match-regexp ""))
(list path))))
(seq-filter #'stringp paths)))
diff --git a/hui-mouse.el b/hui-mouse.el
index 095de546e6..2b7596186c 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 04-Feb-89
-;; Last-Mod: 15-Nov-23 at 01:52:38 by Bob Weiner
+;; Last-Mod: 23-Nov-23 at 03:45:24 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -227,14 +227,26 @@ Its default value is `smart-scroll-down'. To disable it,
set it to
. ((smart-push-button nil (mouse-event-p last-command-event))
. (smart-push-button-help nil (mouse-event-p last-command-event))))
;;
- ;; If click in the minibuffer and reading an argument (aside from
+ ;; If in the minibuffer and reading an argument with vertico
+ ;; run the vertico command on {M-RET} which accepts the first
+ ;; line of minibuffer input, rather than any candidate.
+ ((and hargs:reading-type
+ (> (minibuffer-depth) 0)
+ (eq (selected-window) (minibuffer-window))
+ (not (bound-and-true-p ivy-mode))
+ (and (bound-and-true-p vertico-mode)
+ ;; Is vertico prompting for an argument?
+ (vertico--command-p nil (current-buffer))))
+ . ((vertico-exit-input) . (vertico-exit-input)))
+ ;;
+ ;; If in the minibuffer and reading an argument (aside from
;; with vertico or ivy), accept argument or give completion help.
((and hargs:reading-type
(> (minibuffer-depth) 0)
(eq (selected-window) (minibuffer-window))
(not (bound-and-true-p ivy-mode))
(not (and (bound-and-true-p vertico-mode)
- ;; Is vertico is prompting for an argument?
+ ;; Is vertico prompting for an argument?
(vertico--command-p nil (current-buffer))))
(not (eq hargs:reading-type 'hmenu))
(not (smart-helm-alive-p)))
diff --git a/hui-select.el b/hui-select.el
index 89d1191667..612a7c00ba 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 19-Oct-96 at 02:25:27
-;; Last-Mod: 21-Nov-23 at 02:41:17 by Bob Weiner
+;; Last-Mod: 30-Nov-23 at 11:33:09 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -256,10 +256,12 @@ Used to include a final line when marking indented code.")
;;; ************************************************************************
(defconst hui-select-syntax-table
- (let ((st (make-syntax-table emacs-lisp-mode-syntax-table)))
+ (let ((st (copy-syntax-table emacs-lisp-mode-syntax-table)))
;; Make braces be thing delimiters, not punctuation.
(modify-syntax-entry ?\{ "(}" st)
(modify-syntax-entry ?\} "){" st)
+ (modify-syntax-entry ?< "(>" st)
+ (modify-syntax-entry ?> ")<" st)
st)
"Syntax table to use when selecting delimited things.")
@@ -430,8 +432,8 @@ Also, add language-specific syntax setups to aid in thing
selection."
`(lambda ()
(let ((syntax-table (symbol-value
',syntax-table-sym))
(keymap (symbol-value
',keymap-sym)))
- (modify-syntax-entry ?\< "(>"
syntax-table)
- (modify-syntax-entry ?\> ")<"
syntax-table)
+ ;; (modify-syntax-entry ?\< "(>"
syntax-table)
+ ;; (modify-syntax-entry ?\> ")<"
syntax-table)
(modify-syntax-entry ?\{ "(}"
syntax-table)
(modify-syntax-entry ?\} "){"
syntax-table)
(modify-syntax-entry ?\" "\""
syntax-table)
@@ -461,6 +463,11 @@ Also, add language-specific syntax setups to aid in thing
selection."
(when region-bounds
(buffer-substring-no-properties (car region-bounds) (cdr
region-bounds)))))
+(defun hui-select-scan-sexps (from count)
+ "Scan FROM point across COUNT sexpressions."
+ (with-syntax-table hui-select-syntax-table
+ (scan-sexps from count)))
+
;;;###autoload
(defun hui-select-thing ()
"Select a region based on the syntax of the thing at point.
@@ -534,6 +541,7 @@ displayed in the minibuffer."
;;;###autoload
(defun hui-select-goto-matching-tag ()
"Move point to start of the tag paired with closest tag point is at or
precedes.
+Tag in this context is an sgml-like tag surrounded by angle brackets, <>.
Enabled in major modes in `hui-select-markup-modes'. Returns t if
point is moved, else nil. Signals an error if no tag is found
following point or if the closing tag does not have a `>'
@@ -1006,7 +1014,7 @@ language must be included in the list,
hui-select-brace-modes."
(ignore-errors
;; Leave point at opening brace.
(goto-char
- (scan-sexps (1+ (point)) -1))
+ (hui-select-scan-sexps (1+ (point)) -1))
;; Test if these are defun braces.
(save-excursion
(beginning-of-line)
@@ -1072,7 +1080,7 @@ language must be included in the list,
hui-select-brace-modes."
(error (point-max)))))
(when (= (following-char) ?\})
;; Leave point at opening brace.
- (goto-char (scan-sexps (1+ (point)) -1)))
+ (goto-char (hui-select-scan-sexps (1+ (point)) -1)))
(when (= (following-char) ?\{)
(while (and (zerop (forward-line -1))
(not (hui-select-at-blank-line-or-comment))))
@@ -1148,9 +1156,9 @@ list, hui-select-indent-modes."
'(?w ?_))
(setq hui-select-previous 'symbol)
(condition-case ()
- (let ((end (scan-sexps pos 1)))
+ (let ((end (hui-select-scan-sexps pos 1)))
(hui-select-set-region
- (min pos (scan-sexps end -1)) end))
+ (min pos (hui-select-scan-sexps end -1)) end))
(error nil))))))
(defun hui-select-sexp-start (pos)
@@ -1159,14 +1167,14 @@ list, hui-select-indent-modes."
(hui-select-brace-def-or-declaration pos)
(save-excursion
(setq hui-select-previous 'sexp-start)
- (ignore-errors (hui-select-set-region pos (scan-sexps pos 1))))))
+ (ignore-errors (hui-select-set-region pos (hui-select-scan-sexps pos
1))))))
(defun hui-select-sexp-end (pos)
"Return (start . end) of sexp ending at POS."
(or (hui-select-brace-def-or-declaration pos)
(save-excursion
(setq hui-select-previous 'sexp-end)
- (ignore-errors (hui-select-set-region (scan-sexps (1+ pos) -1) (1+
pos))))))
+ (ignore-errors (hui-select-set-region (hui-select-scan-sexps (1+ pos)
-1) (1+ pos))))))
(defun hui-select-sexp (pos)
"Return (start . end) of the sexp that POS is within."
diff --git a/hypb.el b/hypb.el
index b9c66eb126..fc649dcc0e 100644
--- a/hypb.el
+++ b/hypb.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 6-Oct-91 at 03:42:38
-;; Last-Mod: 20-Nov-23 at 00:49:09 by Bob Weiner
+;; Last-Mod: 30-Nov-23 at 11:18:54 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -1069,9 +1069,13 @@ Without file, the banner is prepended to the current
buffer."
(buffer-read-only)
button)
(goto-char (point-min))
+ ;; Keep any initial line of variable settings, e.g. for Org
+ ;; mode as the first line.
+ (when (looking-at (regexp-quote "-*- "))
+ (forward-line 1))
(insert "\n")
(insert-image hyperbole-banner)
- (insert "\n\n")
+ (insert "\n")
(setq button (make-button (- (point) 3) (- (point) 2) :type
'hyperbole-banner))
(button-put button 'help-echo (concat "Click to visit " hypb:home-page))
(button-put button 'action #'hypb:browse-home-page)
diff --git a/hyrolo-demo.el b/hyrolo-demo.el
index 3cf72ff26e..41f19fbc7a 100644
--- a/hyrolo-demo.el
+++ b/hyrolo-demo.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 4-Nov-17 at 13:56:47
-;; Last-Mod: 7-Oct-22 at 00:16:24 by Mats Lidell
+;; Last-Mod: 30-Nov-23 at 11:55:28 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -46,8 +46,13 @@ Returns number of entries matched. See also documentation
for
the function `hyrolo-demo-fgrep-logical' for documentation on the
logical sexpression matching."
(interactive "sFind rolo string (or logical sexpression): \nP")
- (let ((hyrolo-file-list (list (expand-file-name "DEMO-ROLO.otl"
hyperb:dir))))
- (hyrolo-fgrep string max-matches)))
+ (let* ((hyrolo-file-list (list (expand-file-name "DEMO-ROLO.otl"
hyperb:dir)))
+ (match-count (hyrolo-fgrep string max-matches)))
+ (when (and (called-interactively-p 'interactive)
+ (zerop match-count))
+ ;; Let user know that they invoked the demo version of hyrolo-fgrep
+ (message "(hyrolo-demo-fgrep): No demo matches found for '%s'" string))
+ match-count))
;;;###autoload
(defun hyrolo-demo-fgrep-logical (expr &optional count-only
include-sub-entries no-sub-entries-out)
diff --git a/hyrolo.el b/hyrolo.el
index 217daad895..4f795f4487 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 7-Jun-89 at 22:08:29
-;; Last-Mod: 25-Nov-23 at 17:09:20 by Mats Lidell
+;; Last-Mod: 1-Dec-23 at 02:24:49 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -31,6 +31,7 @@
(require 'hversion)
(require 'hmail)
(require 'hypb) ;; For 'hypb:mail-address-regexp'.
+(require 'outline)
(require 'package)
(require 'set)
(require 'sort)
@@ -83,19 +84,6 @@
(declare-function hui:hbut-act "hui")
(declare-function ibut:at-p "hbut")
(declare-function kcell-view:indent "kotl/kview")
-(declare-function outline-back-to-heading "outline")
-(declare-function outline-backward-same-level "outline")
-(declare-function outline-end-of-subtree "outline")
-(declare-function outline-forward-same-level "outline")
-(declare-function outline-hide-sublevels "outline")
-(declare-function outline-hide-subtree "outline")
-(declare-function outline-level "outline")
-(declare-function outline-next-heading "outline")
-(declare-function outline-next-visible-heading "outline")
-(declare-function outline-previous-heading "outline")
-(declare-function outline-previous-visible-heading "outline")
-(declare-function outline-show-all "outline")
-(declare-function outline-up-heading "outline")
(declare-function hmouse-pulse-line "hui-window")
(declare-function hpath:find "hpath")
@@ -335,10 +323,7 @@ String search expressions are converted to regular
expressions.")
(if hyrolo-mode-syntax-table
()
- (setq hyrolo-mode-syntax-table (make-syntax-table text-mode-syntax-table))
- ;; Support syntactic selection of delimited e-mail addresses.
- (modify-syntax-entry ?\< "(>" hyrolo-mode-syntax-table)
- (modify-syntax-entry ?\> ")<" hyrolo-mode-syntax-table))
+ (setq hyrolo-mode-syntax-table (make-syntax-table text-mode-syntax-table)))
(defvar hyrolo-mode-map nil
"Keymap for the hyrolo match buffer.")
@@ -681,7 +666,7 @@ select it."
(with-current-buffer buf
(when (equal outline-regexp (default-value 'outline-regexp))
;; Prevent matching to *word* at the beginning of
- ;; lines and hanging hyrolo search functions but this
+ ;; lines and hanging hyrolo search functions. Note this
;; change adds one to the default `outline-level' function,
;; so 'hyrolo-mode' overrides that as well to get the correct
;; calculation. -- rsw, 2023-11-17
@@ -786,9 +771,9 @@ Return number of entries matched. See also documentation
for the variable
(unless (string-prefix-p hyrolo-hdr-regexp hyrolo-entry-regexp)
(setq hyrolo-entry-regexp (concat hyrolo-hdr-regexp "\\|"
hyrolo-entry-regexp))))
(when outline-regexps
- (setq outline-regexp (string-join outline-regexps "\\|"))
+ (setq-local outline-regexp (string-join outline-regexps "\\|"))
(unless (string-prefix-p hyrolo-hdr-regexp outline-regexp)
- (setq outline-regexp (concat hyrolo-hdr-regexp "\\|"
outline-regexp))))
+ (setq-local outline-regexp (concat hyrolo-hdr-regexp "\\|"
outline-regexp))))
(hyrolo-display-matches display-buf))
(when (called-interactively-p 'interactive)
(message "%s matching entr%s found in rolo."
@@ -1683,14 +1668,18 @@ Return number of matching entries found."
(when (re-search-forward hyrolo-hdr-regexp nil t 2)
(forward-line)
(setq hdr-pos (cons (point-min) (point))))
- (let ((case-fold-search t)
- match-end)
+ (let* ((case-fold-search t)
+ (backward-search-limit (save-excursion
+ (if (re-search-forward
hyrolo-entry-regexp nil t)
+ (match-beginning 0)
+ (point))))
+ match-end)
(re-search-forward hyrolo-entry-regexp nil t)
(while (and (or (null max-matches) (< num-found
max-matches))
(funcall hyrolo-next-match-function pattern
headline-only))
(setq match-end (point))
;; If no entry delimiters found, just return the line
of the match alone.
- (unless (re-search-backward hyrolo-entry-regexp nil t)
+ (unless (re-search-backward hyrolo-entry-regexp
backward-search-limit t)
(goto-char (line-beginning-position)))
(setq entry-start (point))
(unless (re-search-forward hyrolo-entry-regexp nil t)
@@ -1729,7 +1718,8 @@ Return number of matching entries found."
(set-buffer actual-buf))))
(setq num-found (1+ num-found))
(or count-only
- (hyrolo-add-match hyrolo-display-buffer pattern
entry-start (point)))))))
+ (hyrolo-add-match hyrolo-display-buffer pattern
entry-start (point)))
+ (setq backward-search-limit (point))))))
num-found))
(when (< stuck-negative-point 0)
(pop-to-buffer (current-buffer))
@@ -1806,13 +1796,10 @@ Calls the functions given by `hyrolo-mode-hook'.
\\{hyrolo-mode-map}"
(interactive)
(unless (eq major-mode 'hyrolo-mode)
- (make-local-variable 'outline-regexp)
;; This next local value is dynamically overridden in `hyrolo-grep'.
- (setq outline-regexp (default-value 'outline-regexp))
- (make-local-variable 'hyrolo-entry-regexp)
- (setq hyrolo-entry-regexp (default-value 'hyrolo-entry-regexp))
- (make-local-variable 'outline-level)
- (setq outline-level #'hyrolo-mode-outline-level)
+ (setq-local outline-regexp (default-value 'outline-regexp)
+ hyrolo-entry-regexp (default-value 'hyrolo-entry-regexp)
+ outline-level #'hyrolo-mode-outline-level)
(reveal-mode 1)) ;; Expose hidden text as move into it.
(setq major-mode 'hyrolo-mode
mode-name "HyRolo")
diff --git a/kotl/kvspec.el b/kotl/kvspec.el
index 731a6b06e4..f855ad7490 100644
--- a/kotl/kvspec.el
+++ b/kotl/kvspec.el
@@ -3,7 +3,7 @@
;; Author: Bob Weiner
;;
;; Orig-Date: 21-Oct-95 at 15:17:07
-;; Last-Mod: 4-Oct-23 at 19:10:12 by Mats Lidell
+;; Last-Mod: 21-Nov-23 at 13:20:57 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -104,7 +104,7 @@ characters at run-time.")
(defun kvspec:activate (&optional view-spec)
"Activate optional VIEW-SPEC or existing view spec in the current koutline.
VIEW-SPEC is a string or t, which means recompute the current view spec. See
-<${hyperb:dir}/kotl/EXAMPLE.kotl, 2b17=048> for details on valid view specs."
+${hyperb:dir}/kotl/EXAMPLE.kotl#3b19c=042 for details on valid view specs."
(interactive (list (read-string "Set view spec: " kvspec:current)))
(kotl-mode:is-p)
(kfile:narrow-to-kcells)
@@ -169,8 +169,7 @@ display all levels of cells."
VIEW-SPEC is a string or t, which means recompute the current view
spec. A nil value of VIEW-SPEC updates the modeline viewspec display
to be current but does not recompute the viewspec itself. See
-<${hyperb:dir}/kotl/EXAMPLE.kotl, 3b18=048> for details on valid
-view specs."
+${hyperb:dir}/kotl/EXAMPLE.kotl#3b19c=042 for details on valid view specs."
(cond ((stringp view-spec)
;; Use given view-spec after removing extraneous characters.
(setq view-spec
diff --git a/test/hbut-tests.el b/test/hbut-tests.el
index 680f276652..7fcb397362 100644
--- a/test/hbut-tests.el
+++ b/test/hbut-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <matsl@gnu.org>
;;
;; Orig-Date: 30-may-21 at 09:33:00
-;; Last-Mod: 19-Aug-23 at 01:12:57 by Bob Weiner
+;; Last-Mod: 23-Nov-23 at 01:44:46 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -323,7 +323,7 @@ Needed since hyperbole expands all links to absolute paths
and
(save-excursion
(apply #'actype:act actype args)
(setq actype (hattr:get 'hbut:current 'actype))))
- ;; These shoulds show the value of these variables when you
+ ;; These should show the value of these variables when you
;; use the {l} command on failure, allowing quick debugging.
(should expected-ibtype)
(should expected-actype)
diff --git a/test/hui-select-tests.el b/test/hui-select-tests.el
index 7fdde5f21d..fb3ad9f4eb 100644
--- a/test/hui-select-tests.el
+++ b/test/hui-select-tests.el
@@ -3,7 +3,7 @@
;; Author: Mats Lidell <matsl@gnu.org>
;;
;; Orig-Date: 14-Apr-22 at 23:45:52
-;; Last-Mod: 11-Jul-22 at 23:29:45 by Mats Lidell
+;; Last-Mod: 23-Nov-23 at 02:12:38 by Bob Weiner
;;
;; SPDX-License-Identifier: GPL-3.0-or-later
;;
@@ -85,27 +85,40 @@
(skip-unless (not noninteractive))
(hui-select-reset)
(with-temp-buffer
- (insert "Buffer\n\nParagraph\nline. One word.\n")
+ (insert "Buffer\n\nParagraph\nline. One word.")
(forward-char -3)
+ ;; word
(should (hui-select-thing))
- (should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "word"))
+ (should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
+ "word"))
+
+ ;; symbol
+ (should (hui-select-thing))
+ (should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
+ "word."))
+ ;; sentence
(should (hui-select-thing))
- (should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "One word."))
+ (should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
+ "One word."))
+ ;; line
(should (hui-select-thing))
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "line. One word.\n"))
+ "line. One word."))
+ ;; paragraph
(should (hui-select-thing))
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "\nParagraph\nline. One word.\n"))
+ "\nParagraph\nline. One word."))
+ ;; buffer
(should (hui-select-thing))
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "Buffer\n\nParagraph\nline. One word.\n"))
+ "Buffer\n\nParagraph\nline. One word."))
+ ;; error
(should-not (hui-select-thing))
(hy-test-helpers:should-last-message
"(hui-select-boundaries): ‘buffer’ is the largest selectable region")))
@@ -117,12 +130,17 @@ Verifies right type of match is printed when
`hui-select-display-type' is set to
(let ((hui-select-display-type t))
(hui-select-reset)
(with-temp-buffer
- (insert "Buffer\n\nParagraph\nline. One word.\n")
+ (insert "Buffer\n\nParagraph\nline. One word.")
(forward-char -3)
+
(should (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message "word")
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "word"))
+ (should (call-interactively 'hui-select-thing))
+ (hy-test-helpers:should-last-message "symbol")
+ (should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "word."))
+
(should (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message "sentence")
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end)) "One word."))
@@ -130,17 +148,17 @@ Verifies right type of match is printed when
`hui-select-display-type' is set to
(should (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message "line")
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "line. One word.\n"))
+ "line. One word."))
(should (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message "paragraph")
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "\nParagraph\nline. One word.\n"))
+ "\nParagraph\nline. One word."))
(should (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message "Buffer")
(should (string= (buffer-substring-no-properties (region-beginning)
(region-end))
- "Buffer\n\nParagraph\nline. One word.\n"))
+ "Buffer\n\nParagraph\nline. One word."))
(should-not (call-interactively 'hui-select-thing))
(hy-test-helpers:should-last-message
- [elpa] externals/hyperbole updated (3692855fa8 -> 158a407228), ELPA Syncer, 2023/12/01
- [elpa] externals/hyperbole aa9506dffe 1/5: Improve tag/symbol finding, <> and {} handling, ELPA Syncer, 2023/12/01
- [elpa] externals/hyperbole 9dbb38e03b 2/5: Merge branch 'master' into rsw, ELPA Syncer, 2023/12/01
- [elpa] externals/hyperbole 7b1cd4a4de 4/5: hpath, hyrolo and hargs wildcard expansion and delimited match fixes, ELPA Syncer, 2023/12/01
- [elpa] externals/hyperbole 4085c60953 3/5: limit hyrolo-grep-file backward search, ELPA Syncer, 2023/12/01
- [elpa] externals/hyperbole 158a407228 5/5: Merge pull request #407 from rswgnu/rsw,
ELPA Syncer <=