2026-04-30 Bob Weiner * kotl/kvspec.el (kvspec:update): If updating an existing viewspec, mark buffer as modified so new viewspec is saved when writing out the file. * kotl/kfile.el (kfile:insert-attributes-v3): Fix to handle alpha and legal numbering properly plus a period with no following spaces as the separator. Update to 'save-excursion' and force start at (point-min) and make args optional so can be called in 'kfile:write' as well as 'kfile:read'. * kotl/kotl-mode.el (kotl-mode): Prevent 'delete-trailing-whitespace-mode' from deleting trailing whitespace from any lines within kcells. Ensure "stripmode" package does not delete trailing whitespace from cells whose first line is blank or editing will not start at the proper column. * kotl/kotl-mode.el (kotl-mode:just-one-space): Add optional N arg of how many spaces to leave that 'just-one-space supports and update doc string. Since works for a single line only, does not support -N for removing newlines as 'just-one-space' does. 2026-04-29 Bob Weiner * kotl/kfile.el (kfile:insert-attributes-v3): When reading in an exising Koutline, repair any cells that start with a blank line and have had the label separator removed or where lines of just whitespace have been remove due to packages that delete trailing spaces. Also ensure search for relative ids that only start with a digit, not alpha chars. 2026-04-21 Mats Lidell * Makefile (COVERAGE_TESTSPEC): Use test= for specifying the test selector to be used when running coverage check. Defaults to t. 2026-04-16 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--tab-through-matches): Verifies that the path name is not selected when tabbing through matches. 2026-04-13 Bob Weiner * hyrolo.el (hyrolo-next-match, hyrolo-next-regexp-match, hyrolo-previous-match): Update to match only outside of file headers. 2026-04-12 Bob Weiner * hywiki.el (hywiki-cache-save): test/hy-test-helpers.el (hy-delete-file-and-buffer): Suppress echo area and *Messages* output of 'Wrote * hsys-consult.el (hsys-consult-get-exit-value): Use 'hypb:function-p' instead of 'functionp' so recognizes symbol names of functions too. * hibtypes.el (man-apropos): Stop matches to (function (pos)) in elisp by requiring first char in parens to be a 1-9 digit. * hyrolo.el (hyrolo-outline-level): Remove first cond clause checking for :hyrolo-level which would return 0 for outline-level in Koutlines matched in the hyrolo display buffer because the :hyrolo-level property was not on the first char of the line but indented to the first char of the cell's relative id. Instead let it fall through to the clause matching 'hyrolo-entry-group-number'. (hyrolo--cache-initialize, hyrolo--cache-major-mode-indexes): Clarified usage in doc string. Initialize to '(1) instead of '(0) so when point is at position 1 in the *HyRolo* buffer which matches to the first position in this list. The 'major-mode' lookup table indexes starting with 1, not 0, so using 0 would return nil for the 'major-mode'. (hyrolo-outline-backward-same-level, hyrolo-outline-forward-same-level): Fix so if within a file hdr moves to the start of the file hdr before trying to move to the next entry at the same level. Update to treat a nil arg as 1, a 0 arg as a no-op, negative args move in the opposite direction and return whether any sibling is found (point moves) or not (point does not move). 2026-04-10 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--fgrep-move-test): Add more tests for movement when a section is hidden. 2026-04-08 Bob Weiner * test/hyrolo-tests.el (hyrolo-tests--fgrep-move-test): Move tests more likely to fail to the start and after these ensure full outline is shown and point goes to 'point-min'. * hyrolo.el (hyrolo-move-to-entry-end): Fix movement over collapsed file headers by changing call of 'outline-next-heading' to 'hyrolo-outline-next-visible-heading'. (hyrolo-hdr-move-after-p): Fix to fully move past hidden file headers. 2026-04-08 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--fgrep-move-test): Add test case for moving in *HyRolo* buffer after fgrep search. Test is set as expected failed since there is a problem with moving over hidden sections. 2026-04-07 Bob Weiner * hsys-consult.el: Rewrite to properly extract version number from the consult.el file. 2026-04-05 Bob Weiner * hyrolo.el (hyrolo-hdr-to-first-line-p): Handle black lines and @loc> after two lines of 'hyrolo-hdr-regexp'. Move by visible lines. (hyrolo-outline-next-visible-heading): Fix moving when in a file hdr but not at the start of a line. Fix forward and backward movement when entries are hidden. (hyrolo-hdr-to-first-line-p, hyrolo-hdr-move-after-p): Return t only if point is left on a visible, non-hidden character to fix next and previous entry movement. (hyrolo-hdr-in-p): Rewrite with 'hyrolo-hdr-to-first-line-p' instead of 'hyrolo-hdr-move-after-p' since that can return nil when it leaves point at a hidden/invisible position. 2026-04-04 Bob Weiner * hyrolo.el (hyrolo-grep-file): Change to call 'hyrolo-set-display-buffer' to set display buffer as current. (hyrolo-set-display-buffer): Remove set and restore of major-mode; handle these separately so done only once per file processed. (hyrolo-set-display-buffer-mode): Add to separate from the above function. (hyrolo--cache-post-display-buffer): Rename to 'hyrolo--post-display-buffer' and set major mode. (hyrolo-cache-set-major-mode): Rename to 'hyrolo--pre-display-buffer' and leave out setting of major mode as that may come from the cache or from a current source buffer. (hyrolo-source-buffer): Add for quick access to the source buffer or file associated with (point) within the HyRolo display buffer. (hyrolo-grep-file): Rename 'actual-buf' to 'src-buf'. (defvar-local): Stop using since sets local values in buffers that do not use the variable. Use 'defvar' and 'setq-local' to set in a single buffer. (hyrolo-hdr-move-after-p): Fix to handle when point is not at the start of file header line but is within the header. (hyrolo-to-entry-beginning): Remove unneeded call to 'hyrolo-hdr-in-p'. (hyrolo-hdr-move-after-p): Remove duplicate (beginning-of-line) calls. (hyrolo-hdr-to-first-line-p): Return nil if point is at the start of the first line of a file header and therefore it doesn't move. Optimize and clarify cases. hui-mouse.el (smart-hyrolo): Fix to handle change in above function. 2026-04-03 Bob Weiner * hyrolo.el (hyrolo-cache-set-major-mode): Add setting of 'hyrolo-entry-regexp' when in 'markdown-mode'. Used in 'hyrolo-add-match'. * hproperty.el (hproperty:length): Add and use in HyRolo. 2026-04-02 Mats Lidell * hsys-org.el (hsys-org-id-find-advice): Fix docstring has wrong usage of unescaped single quotes and make first line a sentence. 2026-03-31 Bob Weiner * hyrolo.el (hyrolo-outline-next-visible-heading): Optimize performance in large files. (hyrolo-display-format-function, hyrolo-bbdb-entry-format): Change from a function of one arg, a HyRolo entry, to two args, start and end, the region to modify for display. (hyrolo-display-format): Define to avoid lambda creation on display of each HyRolo entry. (hyrolo-display-format-function): Use above function as value. (hyrolo-add-match): Rewrite to insert directly into display-buffer without generating Lisp-level strings. Also add :hyrolo-level = t property around any leading outline delimiter (excluding trailing whitespace) across all heading levels within a matching entry. For single line, non-delimited entries on the first char of the entry. Use this to speed movement between entries in the HyRolo match buffer. (hyrolo-cache-set-major-mode): Delay mode hooks since only using the mode to get 'outline-regexp' and these can be time-consuming. 2026-03-30 Bob Weiner * hyrolo.el (hyrolo-grep-file): Fix *word* at bol causing the search to get stuck. Always move at least one char past the end of an entry. (hyrolo-to-entry-end): Rewrite for speed by only moving past the header if at the beginning of the buffer. Remove lambda generation to eliminate function generation on every call. (hyrolo-next-match): Speed up a bit with local vars and add in-line comments to explain logic. 2026-03-30 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-split-cell): Use kotl-mode:kill-tree with new arg 0 for clearer reuse of test buffer. (kotl-mode--kill-tree-erase-buffer): Add test for arg 0 to erase buffer. (kotl-mode--kill-tree-first-and-only-tree): Add test for verifying removing one tree. 2026-03-29 Bob Weiner * man/hyperbole.texi (Testing): Update from 200 to 660 automated test cases. * hypb.el (hypb:in-string-cache): Move Private Variable definitions to precede code so they are not referenced before they are defined. * hsys-org.el (org-id-find): Declare as external to quiet byte-compiler. * hywiki.el (hywiki-delimited-p): Fix to eliminate nil sent as arg to 'matching-paren'. * hypb.el (hypb:in-string-p): Temporarily widen each non-kotl-mode buffer to ensure can see entire string. * hywiki.el (consult--async-*): Silence byte-compiler warnings with function declarations. * hypb.el (hypb:in-string-cache-disable, hypb:in-string-cache): Add. (hypb:in-string-check): Rename from 'hypb:in-string-p' so can be a subfunction call when cache lookup fails. Rewrite 'max-lines' handling to use in-buffer ranges rather than strings. (hypb:in-string-p): Rewrite to utilize caching. (hypb:narrow-to-max-lines): Add for potential future use and to archive prior code from 'hypb:in-string-p'. * kotl/kview.el (kview:id-counter-set): Add. kotl/kotl-mode.el (kotl-mode:kill-tree): Add support for sending 0 as the prefix arg to say kill from the root of the outline tree all the way down, killing all cells and inserting a new blank #1 cell in the buffer. 2026-03-29 Mats Lidell * hproperty.el: Remove defalias of display-color-p, defined since Emacs 21.1 hsys-flymake.el (flymake-mode-hook): Use repeat-mode, defined since Emacs 28.1. hui-mouse.el (hkey-alist): Use button-at, defined in Emacs before version 28. (smart-dired): Use dired-do-flagged-delete, defined since before Emacs 28. hyperbole.el: Use macroexp-file-name, defined since Emacs 28.1. htz.el (htz:zone-to-hour): Use current-time-zone, defined in Emacs 25.1 hui-window.el (assist-key-modeline-click-left-edge): Use last, defined before Emacs 28. (hmouse-horizontal-action-drag): Use split-window-vertically. (smart-coords-in-window-p): Use window-edges, defined before Emacs 28. hinit.el (hyperb:check-dir-user): Use make-directory, defined since Emacs 19.34. hmouse-info.el (smart-info): Use Info-next and mouse-event-p. (smart-info-assist): Use Info-prev and mouse-event-p. hycontrol.el (hycontrol-windows-mode-map): Use text-scale-increase and text-scale-decrease. hui-select.el (hui-select-thing): Use use-region-p, defined since Emacs 23.1. hypb.el (hypb:hkey-help-file): Do not check for locate-data-file, it is not an Emacs function. (hypb:insert-hyperbole-banner): Do not check for locate-data-file, not an Emacs function. hact.el (action:commandp): Do not use compiled-function-interactive. (action:params): Do not use compiled-function-arglist. Not Emacs functions. hib-social.el (git-reference): Use vc-print-root-log, defined since Emacs 24.1. (hibtypes-git-find): Use locate-dominating-file, defined before Emacs 28. hibtypes.el (gnus-push-button): Use get-text-property. hmoccur.el (moccur): hui.el (hui:ebut-search): Use outline-minor-mode, defined since Emacs 19.1. hmouse-drv.el (mouse-drag-mode-line): Use mouse-drag-frame-move, defined since Emacs 28. (hmouse-window-at-absolute-pixel-position): Use frame-list-z-order, defined since Emacs 26.1. hmouse-tag.el (smart-lisp): (smart-lisp-at-known-identifier-p): Use find-library, defined since Emacs 25.2. (smart-lisp-find-tag): (smart-lisp-at-known-identifier-p): Use find-function-noselect, defined before Emacs 28. hyrolo.el (reveal-hide-revealed): Use reveal-hide-revealed, defined since Emacs 28.1. (reveal-auto-hide): Use reveal-auto-hide, defined since Emacs 28.1. (hyrolo-add): Use mail-fetch-field, defined before Emacs 28. 2026-03-28 Bob Weiner * hyperbole.el (hyperb:init): Uncomment call to 'hsys-org-fix-version' accidentally commented out on Jan 11, 2026. * hypb.el (hypb:sqlite-p): Add to return non-nil when Emacs supports sqlite. (hypb:advised-p): Add to test whether a function has been advised with a specific function. hsys-org.el (hsys-org-id-find-advice): Add as :before advice to `org-id-find' to remove :before-until advice that `org-roam-id-find' adds if sqlite is not available inside Emacs. hactypes.el (link-to-org-id): hibtypes.el (org-id, org-id:help): Remove call of `org-roam-id-find' since that will be called when loaded by any call to `org-id-find' as `org-roam' advises it. 2026-03-26 Mats Lidell * test/hui-tests.el (hui--kill-region-delimited-text-and-yank-back): Remove expected-result tag and expand tests. (hui-tests--selectable-thing-and-bounds): Add test. 2026-03-24 Mats Lidell * hui-mouse.el (profiler-report-find-entry) (profiler-report-toggle-entry): Declare functions and sort the declarations. (smart-profiler-report): Shorten docstring line below 80 chars. Do explicit initialization of curr-buffer since byte-compiler does not see it will be set. * hywiki.el (consult-grep-args, consult-ripgrep-args): Defvar consult variables. (hywiki-org-to-heading-instance): Use with-suppressed-warnings for obsolete org-show-entry. * hywiki.el (hywiki-delimited-p): Fix to return non-nil only when the (car range) is non-nil since range may be '(nil ) when a cached entry is found. (hywiki-get-page-files): Fix to test whether 'hywiki-directory' exists before calling 'make-directory' to avoid its call to 'make-directory-insernal' triggering an error when debugging. 2026-03-24 Bob Weiner * hibtypes.el (hib-link-to-file-line): Add missing 'let' for 'ext' variable, fix indentation and change 'and' to 'when' for clarity. 2026-03-23 Bob Weiner * hypb.el (hypb:in-string-p): Limit searches to a max of 9000 chars for speed. * hui-mouse.el (hkey-alist): Add 'profiler-report-mode' support for jumping to call tree items or expanding/collapsing their call trees. (smart-profiler-report, smart-profiler-report-assist): Add. man/hyperbole.texi (Smart Key - Profiler Report Mode): Add doc. (smart-profiler-report): Fix display of found buffer. 2026-03-22 Mats Lidell * test/hibtypes-tests.el (ibtypes-tests--grep-msg): (ibtypes-tests--hib-link-to-file-line): Add tests. 2026-03-22 Bob Weiner * man/hyperbole.texi (HyWiki Menu): Move ModeSet/ menu description here. * hui-menu.el (hui-menu-hywiki): Change item from 'Backlink-To' to 'Backlink-Consult'. hui-mini.el (hui:menu-hywiki): Change item from 'BacklinkTo' to 'BacklinkConsult'. man/hyperbole.texi (HyWiki Menu): Add BacklinkConsult entry. * hibtypes.el (grep-single-file): Add to handle grep -n on a single file where the lines do not show the filename. man/hyperbole.texi (Implicit Button Types): Add 'grep-single-file'. hpath.el (hpath:get-grep-filename): Add, used by 'grep-single-file'. * hibtypes.el (hib-python-traceback, debugger-source, grep-msg, hyrolo-stuck-msg): Flash whole line as the button label. * hibtypes.el (hib-link-to-file-line): Fix that a filename both in the current dir and in the 'load-path' variable is expanded into a 'load-path' dir first rather than the current directory, which should be preferred. * hpath.el (hpath:find): Fix (let ((buf))) when (string-empty-p path) to return the current buffer when 'hpath:display-buffer' is called. Fixes bug where that function returned a window instead. * hywiki.el (hywiki-get-referent-hasht): Remove rebuild of referent-hasht when empty. This was causing a problem in the 'hywiki-tests--save-referent-org-id'. 2026-03-21 Bob Weiner * hypb.el (hypb:grep-has-pcre-p, hypb:ripgrep-has-pcre-p): Add. hywiki.el (hywiki-consult-backlink): Add and use call above functions. (hywiki-word-grep): Call above function instead of obsolete 'hywiki-word-consult-grep'. (hywiki-word-consult-grep): Remove. Replaced by backlink function. hui-mini.el (hui:menu-hywiki): hui-menu.el (hui-menu-hywiki): Add Backlinks menu item and remove WikiWordConsult / HyWiki-Word-Consult menu items since Backlinks replaces them. * test/hywiki-tests.el (hywiki-tests--referent-test): Remove these lines for testing the cache every time this is called. Test that in a single test instead. (hywiki-tests--referent-cache-test): Add to test saving and reloading a bookmark referent from cache. (hywiki-tests--save-referent-org-id): Fix to call 'hywiki-add-referent' around 'hywiki-add-org-id' since interactive runs of this test without that wrapper return nil for comparison to the expected (cons 'org-id "generated-org-id". 2026-03-21 Mats Lidell * Makefile (HYPB_BYTE_COMP_ELN_LOAD_PATH): Add users eln-cache last in native-comp-eln-load-path so that batch-byte+native-compile uses that for storing the en-files. (%.elc): Use HYPB_BYTE_COMP_ELN_LOAD_PATH. 2026-03-18 Mats Lidell * hactypes.el (link-to-org-id): Fix quote in docstring. * hibtypes.el (hywiki-get-existing-page-file): (hywiki-word-from-reference): Declare functions. * hpath.el (hywiki-get-existing-page-file): (hywiki-get-referent): (hywiki-org-to-heading-instance): (org-element-property): Declare functions. (hywiki-directory): Defvar. (hpath:org-normalize-title): (hpath:org-normalize-titles): Rephrase long docstrings to fit in 80 chars. * hsys-org.el (org-uuid-regexp): Defvar. (hsys-org-link-at-p): Remove unused var: label. * hui.el (hywiki-mode): Defvar (hywiki-get-buffer-page-name): (hywiki-in-page-p): (hywiki-org-format-heading): (hywiki-org-get-heading-match-regexp): Declare functions. * hypb.el (hypb:in-string-p): Remove unused var: close-match-string. Mark close-regexp as unused. * hywiki.el (hywiki-org-format-heading): (org-fold-core-remove-optimisation): (org-fold-core-update-optimisation): (org-fold-show-entry): Declare functions. (hywiki-add-org-id): Fix quote in docstring. 2026-03-17 Bob Weiner * hpath.el (hpath:validate): 'suffix-start' can be nil, so replace (zerop suffix-start) with (equal suffix-start 0). * hibtypes.el (pathname): Add a clause to handle "#section" links by themselves as some change had broken this capability. * test/hibtypes-tests.el (ibtypes:org-id-test): Fix by adding missing 'Org' in front of 'ID' in the string match. * hpath.el (hpath:validate): Fix path and suffix handling edge cases. 2026-03-16 Bob Weiner * hibtypes.el (action): Ensure if action name is bound only as a variable that there are no arguments within the angle brackets. If there are, then it is not an action button. * test/hywiki-tests.el (hywiki-tests--save-referent-org-id): Fix to mock 'org-id-get' instead of 'org-id-get-create' and add call to `hywiki-get-referent' to ensure referent is created and read back properly. * hywiki.el (hywiki-get-page-file): The page file may have previously been resolved and sent as input here. If it exists, simply use it. * hpath.el (hpath:is-p): Remove 'file-exists-p' call because 'hpath:normalize' handles that while accounting for path #suffixes which the 'file-exists-p' call mistakenly nullifies. (hpath:validate): Fix that 'suffix' was set to the whole path string when 'suffix-start' was null. Now it is set properly to nil. Also fix so if a file named "myfile#name", validate accepts it without treating the #name as a suffic/section to be stripped. 2026-03-15 Bob Weiner * test/demo-tests.el (fast-demo-display-kotl-starting-from-cell, demo-implicit-button-hash-link-test) demo-implicit-button-line-and-column-rtest): Update these to remove 'hy-test-helpers:kill-buffer' since 'with-temp-buffer' cleans it up. This eliminates a null buffer error. * hpath.el (hpath:normalize): Handle directory paths and avoid reading in the file to handle it. (hpath:validate): Fix to strip #suffix before validation and add it back on return. * hibtypes.el (hywiki-existing-word): Simplify pathname check without calling other ibtypes. * hpath.el (hpath:suffixes): Remove ".org" as it triggers pathname ibtype when it shouldn't and overrides `hywiki-existing-word'. * hywiki.el (hywiki-add-org-id): Remove (hmouse-choose-link-and-referent-windows) as this is not what inserts a link but just creates the wikiword referent. (hywiki-word-regexp): Add optional .org suffix so "WikiWord.org#section" works. * hywiki.el (hywiki-referent-menu): Change from inserting a string link to an Org link that includes the associated Org heading title. Change format from "ID: uuid" to [[id:uuid][title]]. (hywiki-add-org-id): test/hywiki-tests.el (hywiki-tests--add-org-id): (hywiki-tests--save-referent-org-id): (hywiki-tests--add-org-id): Add reading back the org-id referent. (hywiki-tests--save-referent-org-id): Delete this test; covered better by 'hywiki-tests--add-org-id'. hui.el (hui:link-possible-types): Update id handling in all of these. * hywiki.el (hywiki-get-page-file, hywiki-get-existing-page-file): Add second function and check that 'file-stem-name' does not contain a directory, so it is not returned with the wrong dir attached. hpath.el (hpath:at-p, hpath:find-line): hibtypes.el (pathname-line-and-column, hib-link-to-file-line): Call the new fuction in these four functions. * hywiki.el (hywiki-org-get-heading-match-regexp, hywiki--org-set-heading-regexp): Make whitespace before optional components optional and allow for tabs. * hywiki.el (hywiki-referent-menu): Change all "ID: " to "id:" to match how Org works with the id: link type prefix when specifying ids. * hpath.el (hpath:find, hpath:expand): Fix to properly expand HyWiki page references. * test/hywiki-tests.el (hywiki-tests--save-referent-global-button-use-menu): Rewrite to not use mocking. Fixes this to work with latest 'hpath:find' as well. * hbut.el (ibut:insert-text): Ensure line and col nums are prefixed with :L and :C. * hywiki.el (hywiki-org-get-heading-match-regexp): Handle both HyWiki dir custom todo keywords when in a page and Org standard todo keywords, otherwise. * hibtypes.el (pathname-line-and-column, hib-link-to-file-line): Expand HyWiki page name using 'hywiki-get-page-file' before try to expand in current directory (pathname-line-and-column, hib-link-to-file-line): Call 'hywiki-get-page-file' only if 'label' has no directory attached. This fixes a problem where ".org" is attached improperly to the filename. * hpath.el (hpath:at-p, hpath:find-line): Handle pathname expansion of HyWiki page names. 2026-03-15 Mats Lidell * test/hyrolo-tests.el: Prefix all tests with hyrolo-tests. Use execute-kbd-macro instead of calling hact. (hyrolo-tests--add-items-interactive): (hyrolo-tests--hyrolo-grep-interactive): Add new separate test for interactive call. (hyrolo-tests--sort-test, hyrolo-tests--fgrep-find-all-types-of-files): Modify test to do both interactive and non-interactive call. (hyrolo-tests--fgrep-find-all-types-of-files): Use hy-delete-files-and-buffers. (hyrolo-tests--get-file-list): Use hy-delete-file-and-buffer. (hyrolo-tests--hyrolo-reveal-mode): Remove non-interactive guard. (hyrolo-tests--sort): Remove name suffix tests. 2026-03-14 Mats Lidell * Makefile (coverage): enable-local-variables :all so test suite can execute with no user interaction. * test/hycontrol-tests.el (hycontrol-tests--move-frame): Use stub since frame-position is called differenty in headless and native environment. 2026-03-14 Bob Weiner * hpath.el (hpath:call): (file-exists-p "") returns t, so fix to check for empty string before calling that. hibtypes.el (hpath:is-p): Unless 'non-exist' arg is sent or path is a remote file, return path only if it exists. * hui.el (require 'hsys-org): Add. hibtypes.el (require 'hsys-org): Add. hsys-org.el (hsys-org-uuid-is-p): Add and use in "hibtypes.el" and "hui.el". * hui.el (hui:link-possible-types): For Org/Org-Roam ids, send 2nd arg of current heading string to 'link-to-org-id' call. (hui:link-possible-types): If in a HyWiki page but not on a heading line, use a 'link-to-wikiword' with the page name and line number. hactypes.el (link-to-org-id): Add optional heading 'title' arg for use in 'hbut:insert-text' where ibut links are created. * hbut.el (ibut:insert-text): For 'actypes::link-to-org-id', change from a double-quoted link to a double square bracketed Org link. This allows including the title from the Org heading linked to which is stored in the current Hyperbole button attribute, 'lbl-key'. * hui.el (hui:link-possible-types): For HyWiki links, wrap a call of 'hpath:org-normalize-title' around 'hywiki-org-format-heading' to ensure everything but the title is removed. * hsys-org.el (hsys-org-link-at-p): Don't shrink label region down to just the description part of the Org link, leave it as the entire space inside the Org open and close brackets. Remove this code: (when (string-match "\\]\\[" label) (setq start (match-end 0))) This makes link activation work better. * hibtypes.el (org-id, org-id:help): Fix to remove "id:" prefix so that uuid check predicates succeed properly. * Makefile (HYPB_BIN_WARN): Fix preceding commentary on example use. (test-all TERM=xterm-256color): Add #(LET_VARIABLES). * hywiki.el (hywiki--org-todo-regexp): Add to cache regular and custom Org todo keywords for 'hywiki-directory'. (hywiki--org-set-heading-regexp): Add set of above variable. (hywiki-org-get-heading-match-regexp): Add and call in "hui.el" and "hpath.el". (hywiki-org-set-heading-regexp): Add and call when load this library. (hywiki-org-to-heading-instance): Update to use exact title matching and fail if can't find exact instance specified without reporting how many instances were found. * hui.el (hui:link-possible-types): If on a HyWiki Org heading, provide a 'link-to-wikiword'. * hibtypes.el (hywiki-existing-word): Change actype to 'link-to-wikiword' so this is picked up by `hbut:insert-text' when determining the type of link to insert into a buffer. * hsys-org.el (hsys-org-format-heading): Move and rename to 'hywiki-org-format-heading' so can include 'hywiki-directory' custom TODO keywords, if any. 2026-03-13 Bob Weiner * hywiki.el (hywiki-format-grep-to-reference): Make line match to .+ rather than .* since is required. (hywiki-completion-at-point): Fix to return nil when get a no match to any HyWiki page. (hywiki-org-heading-regexp, hywiki-org-get-titles-from-headings, hywiki-org-directory-todo-regexp): Add. (hywiki-org-to-heading-instance): Fix to initialize n when not given or not a natural number. * hpath.el (hpath:org-normalize-title): Strip leading priority, e.g. [#22]. 2026-03-12 Bob Weiner * hpath.el (hpath:org-normalize-title, hpath:org-normalize-titles, hpath:org-to-heading-instance): Add to extract the static title from a heading with dynamic info like a todo keyword, priority, statistics and tags. (hpath:to-markup-anchor): When given an Org mode section, use the above functions to limit match to a specific heading instance with all the above fields. 2026-03-11 Bob Weiner * hsys-org.el (hsys-org-link-at-p): Clarify doc string with regard to HyWikiWord handling within Org links. * test/hywiki-tests.el (hywiki-tests--org-in-buffer-completion): Simplify, remove 'Sole completion' check which is not always reliable. (hywiki-tests--org-link-with-wikiword-in-description): Bug fixed, so remove :expected-fail. Rewrite to test when WikiWord is in description, (hywiki-tests--org-link-with-wikiword-in-filename): Test that Action Key treats it as an Org link if WikiWord is in the filename part of the link since WikiWord's in filenames should always ignored. * hyrolo.el (hyrolo-grep-input): Fix bug gh#897 (Wrong type argument: listp, "banana"' when try to search with hyrolo). Always return a list, not a string. Update doc string to reflect this. 2026-03-11 Mats Lidell * test/hywiki-tests.el (hywiki-tests--org-link-with-wikiword-in-description): Add test. * test/hywiki-tests.el (hywiki-tests--org-in-buffer-completion): Add test. 2026-03-09 Bob Weiner * hywiki.el (hywiki-word-add-completion-at-point): (hywiki-word-remove-completion-at-point): Remove the setting and unsetting of 'completion-cycle-threshold' to t. Will solve basic Emacs completion with spaces another way that does not affect this basic Emacs behavior. This fixes Emacs bug#80579: HyWiki globally overwrites completion-cycle-threshold. 2026-03-08 Bob Weiner * hywiki.el (hywiki-get-buttonize-characters): Optimize this costly function with a cache. (hywiki--buttonize-characters-cache): Cache to use. (hywiki--clear-buttonize-characters-cache): Clear the cache. (global-map, hywiki--org-mode-syntax-table): Add variable watchers on these and clear the cache when these change. (hywiki-consult-page-and-headline): Add '--search-zip' to decompress .gz and .zip files for searching. * hsys-org.el (org-version): Fix to test if version< "9.6" not "6". hywiki.el (hywiki-maybe-highlight-region): Add for rehighlighting in a region after edits are made to a buffer. (hywiki-word-add-completion-at-point): Make 'indent-for-tab-command' by default bound to {TAB} complete HyWiki references by setting 'tab-always-complete' to 'complete. (hywiki-word-remove-completion-at-point): Restore user's customized setting of 'tab-always-complete'. 2026-03-07 Bob Weiner * man/hyperbole.texi (HyWikiWords): Fix key binding for Org None option for the Action Key. * hsys-org-roam.el (require 'package): hyrolo.el (require 'package): hui-treemacs.el (require 'package): hsys-org.el (require 'package): Ensure this is always the first require to avoid the need to add a (package-activate) call. * hywiki.el (hywiki-mode-disable): Move global hook disables to this new function from 'hywiki-word-dehighlight-buffers'. Call only when 'hywiki-mode' is set to nil. This fixes an issue where new HyWiki pages would not get WikiWord highlighting when in :pages mode. test/hywiki-tests.el (hywiki-tests--verify-hook-functions): Add this test from Mats to verify the above. * hsys-org.el (hsys-org-format-heading): Emacs 28.2 includes Org 9.5.5 which lacks the 'org-fold-core-remove-optimisation' function, so add a separate version of this function for backward compatibility. * hywiki.el (hywiki-completion-exit-function): Leave point on the closing delimiter or after the HyWiki reference so can cycle completions in-buffer, notably when using Emacs default completion. (hywiki-word-add-completion-at-point): With default Emacs completion, add: (setq completion-cycle-threshold t) (hywiki-word-remove-completion-at-point): Restore customized setting of 'completion-cycle-threshold'. * test/hywiki-tests.el (hywiki-tests--edit): test/hpath-tests.el (ert): Add (require 'cl-lib) for 'cl-incf'. * test/demo-tests.el (fast-demo-key-series-shell-cd-hyperb-dir, (fast-demo-key-series-shell-cd-hyperb-dir-view-mode): Add 0.3 second delay to allow shell to start up. * test/hpath-tests.el (hpath--hpath:delimited-possible-path): Extend tests to verify at the start and end of strings as well, to catch edge cases. * hui-select.el (hui-select-string-p): Change from 'or' to 'if' to ensure else clause is not hit when delims are double quotes. (hui-select-string): Support Python triple quotes. * hypb.el (hypb:in-string-modes-regexps): Change format to a list of lists of (open-regexp close-regexp) since 're-search-backward' is not greedy, have to search for longer regexp matches before search for shorter ones or may find one of the shorter ones that is a part of a longer one, e.g. in Python where a single or a triple double quote is allowed. (hypb:in-string-p): Fix to skip past backslash quoted matches when searching for open and close delimiters. (hypb:in-string-modes-regexps): Rename to 'hypb:in-string-mode-regexps' and update doc string as the format has changed, this will help avoid improper customized usage. 2026-03-06 Bob Weiner * hypb.el (hypb:in-string-p): Fix so search for closing quote matches only to the type of quote given by 'open-match-string' match. * hui-select.el (hui-select-rgrep): Fix to use --exclude-dir when possible since --exclude does not match dir names. 2026-03-05 Mats Lidell * hycontrol.el (hycontrol-move-frame): Ensure move past left and upper border is not possible. * test/hycontrol-tests.el (hycontrol-tests--move-frame): Test case. 2026-03-04 Mats Lidell * Makefile (.PHONY): Set the .PHONY declarations at each phony target. (HYPB_BYTE_COMP_INFO, HYPB_BYTE_COMP_FUNC): Use macros so %.elc rule can de defined once. (new-bin): Remove not needed dependency on autoloads. (eln): Remove not needed dependency on src and echo. (kotl/kotl-autoloads.el, hyperbole-autoloads.el): Use hload-path--make-directory-autoloads in both rules and make them consistent. Touch target after rebuild to ensure new timestamp. (bin): Run remove-elc before src target. (TOUCH): Add touch(1) for setting new timestamp. * test/hargs-tests.el (hargs-get-verify-extension-characters): Make test run in batch. * Makefile (docker): Remove all elc files in the docker container. 2026-03-03 Mats Lidell * hload-path.el (hload-path--make-directory-autoloads): Use Emacs provided byte compilation functions. (hload-path--internal-make-directory-autoloads): Removed, not required from Emacs 28. 2026-03-02 Mats Lidell * hywiki.el (consult--async-command): (consult--lookup-member): (consult--read): Declare functions. 2026-03-02 Bob Weiner * hsys-org.el (hsys-org-format-heading): Remove any Org '#+TITLE:'. 2026-03-01 Bob Weiner * hywiki.el (hywiki-maybe-highlight-references): Fix to include #section spaces only if the delimiter is at the start of the WikiWord ref. (hywiki--end-pos): Add and set in 'hywiki-completion-at-point' to pass to 'hywiki-completion-exit-function'. This handles when point is moved to before the completion prefix, it is cancelled and the exit function should not insert anything or move point any further. (hywiki-completion-at-point): Fix completion after # suffix by stripping the suffix off the WikiWord ref when used as the page name in the grep 'cmd'. (hywiki-word-at): Make char after # optional so when doing completion and # is followed by a closing delimiter, it does not stop completing because of failure to recognize the WikiWord reference. (hywiki-completion-at-point): Rewrite to limit candidates to those that start with a match to the WikiWord prefix at point; allowing for matches anywhere within the WikiWord made it harder to find the references desired. * test/hywiki-tests.el (hywiki-tests--completion-at-point): Fix to newest HyWiki completion policies. (hywiki--start-pos): Add and use in 'hywiki-completion-exit-function'. (hywiki--delimiter-hasht): Rename to 'hywiki--open-close-hasht'. Add 'hywiki--close-open-hasht'. (hywiki-completion-exit-function): When no delimiters, add double quotes around WikiWord ref after completion. 2026-02-28 Bob Weiner * hyrolo.el (hyrolo-mode): Make the match buffer's 'hyrolo-mode' a special mode. HyWiki buttons will never be active therein since every name would trigger as a new, potential HyWiki word. 2026-02-28 Mats Lidell * test/hywiki-tests.el (hywiki-tests--get-page-headings): (hywiki-tests--get-references-at-al): (hywiki-tests--completion-at-point): New tests. (hywiki-tests--remove-keyword-args): Helper to ease comparision of completion candidates. 2026-02-28 Bob Weiner * test/hmouse-drv-tests.el (hbut-man-apropos-test): test/hibtypes-tests.el (ibtypes::man-apropos-test): test/demo-tests.el (demo-man-apropos-test): (require 'man) to prevent any batch run failure. * hibtypes.el (man-apropos): Rewrite to simplify and target modern Emacs. hbut.el (ibut:label-separator-regexp): Remove newlines from this regexp to fix bug where when creating a new ibut will insert <[name]> and then could move forward several lines past the end of this match, e.g. a line of dashes, before it inserts the implicit button, making the button fail. The above two updates fix Emacs bug#80498 - Hyperbole 9.0.1: Ibut/Create with man-show produces non-actionable button. * hywiki.el (hywiki--char-before): Add to communicate between 'hywiki-completion-at-point' and its :exit-function. (hywiki-delimiter-hasht): Add to lookup matching ending delimiters. (hywiki-completion-exit-function): Expand to add any needed closing delimiter and to leave point on the last character of the ref so can activate with {M-RET} if desired. (hywiki-word-set-auto-highlighting): Reverse order of 'set:difference' args when going from :pages to :all, as the bigger set, :all, must come first or the difference will always be nil. hsys-consult.el (hsys-consult-require-version): Add to make 'hsys-consult-flag' and this version check callable from other libraries. (hsys-consult-grep, hsys-consult--grep-paths): Call above new function. * hywiki.el (hywiki-consult-page-and-headline): Call above new function. (hywiki-page-read-reference): Fix to always return a string or nil, not a list. (hywiki-format-reference-to-grep): Remove, unused. (hywiki-get-page-headings): Remove 'shell-quote-argument' around 'page' name. Not used in other grep calls. (hywiki-insert-link): Fix transposition typo quoting double quote. (hywiki-completion-at-point): Remove 'hywiki-get-singular-wikiword' call because it can be wrong. (hywiki-completion-exit-function): Allow completion function to send any number of arguments (unused right now). 2026-02-27 Bob Weiner * hpath.el (hpath:outline-section-pattern): Add support for Org '#+TITLE:' lines. Also, allow leading spaces hywiki.el (hywiki-completion-at-point): Add support for Org '#+TITLE:' lines as section headers. (hywiki-completion-at-point): Remove grep -r arg since don't need to recurse in 'hywiki-directory'. 2026-02-27 Mats Lidell * test/hywiki-yki-tests.el (hywiki-test--insert-with-point): Remove. Reuse similar function from hywiki-tests.el instead. (hywiki-test--get-buffer-text-with-point-and-highlight): Change to a more lifelike test that behaves the same in batch as interactively to solve the issue with the failing test for now. Use hywiki-tests--insert-by-char and remove not needed hywiki-mode calls. 2026-02-26 Bob Weiner * hywiki.el (hywiki-word-strip-suffix): Fix to strip any leading or trailing # and whitespace chars. (hywiki-format-grep-to-reference): Don't add double quotes so when used with completions, don't fail because the double quote is not included in the matched prefix. (hywiki-insert-link): Add double-quotes if link contains a space. (hywiki-completion-exit-function): Add. (hywiki-word-add-completion-at-point): Add call to above function in completion exit hooks that support normal completion, company and corfu. (hywiki-maybe-at-wikiword-beginning): Change when non-nil return value to be the preceding char or if at bol, then 0. (hywiki-word-add-completion-at-point, hywiki-completion-at-point): Add support for Corfu with :exit-function. 2026-02-25 Mats Lidell * .github/workflows/docs.yml: New workflow * Makefile (TEXICMD): Fail build on errors (doc-clean): Use make foreach for removing doc build artifacts. (Avoid bash brace expansion.) Remove README.md.html and README.toc.md. 2026-02-25 Bob Weiner * hbut.el (hbut:modify-syntax): Treat # as a symbol constituent to support 'company-mode' completion in for 'hbut:syntax-table' and 'help-mode-syntax-table'. 2026-02-22 Bob Weiner * README.md: Add "The Emacs Hyperbole" great article by Mike Hostetler. * hywiki.el (hywiki-format-reference): Rename to 'hywiki-format-grep-to-reference'; remove autoload. (hywiki-format-reference-to-grep): Add. (hywiki-completion-at-point): Rewrite and simplify. (hywiki-word-highlight-in-buffers): Add call to 'hywiki-word-add-completion-at-point' to ensure has completion hook independent of whether the buffer's major mode changes. (hywiki-word-remove-completion-at-point): Add and call in 'hywiki-word-dehighlight-in-buffers'. (hywiki-display-referent): Interactively, call 'hywiki-word-read' rather than 'hwyiki-page-read-reference'. (hywiki-read-page-reference): Rename to 'hywiki-page-read-reference' and return a HyWiki completion alist of pages when completing to pages only. (hywiki-format-reference-to-consult-grep): Add. 2026-02-21 Bob Weiner * hywiki.el (hywiki-consult-page-and-line): Change output from a list to the unparsed string returned as the selection by 'consult-grep'. (hywiki-consult-page-and-line): Rename to 'hywiki-consult-page-and-headline)'. (hywiki-format-reference): Change arg 'page-and-line' to be an unparsed string returned from the above function. (hywiki-consult-page-and-headline, hywiki-read-page-reference, hywiki-word-read, hywiki-word-read-new, hywiki-page-read, hywiki-page-read-new): Add 'prompt' and 'initial' input arguments. 2026-02-19 Bob Weiner * hywiki.el (hywiki-insert-link): Add optional prefix arg to link to a an existing wikiword only. (hywiki-insert-reference): Remove and merge capability into above function when called with a prefix arg. * hui.el (hui:link-possible-types): Fix to include link-to-wikiword only if an existing referent is found. * hibtypes.el (action): Fix to check for angle bracket delimiters. * hywiki.el (hywiki-read-page-reference): Add and use in 'interactive' calls of several functions. (hywiki-word-is-p): Revert to using all 'string-match' calls to prevent any regressions. (hywiki-page-read): Add to read only existing HyWiki page names. Not all existing WikiWords have page names, as there are other referent types. (hywiki-consult-file-and-line): Rename to `hywiki-consult-page-and-line'. (hywiki-page-exists-p): Add. (hywiki-format-reference): Fix to accept only existing page references. (hywiki-read-reference): Delete, use 'hywiki-word-read' instead. (hywiki-add-page): Fix a number of issues where non-page WikiWords were allowed. (hywiki-page-read-new): Prevent selection of non-page HyWikiWords. * hui.el (require 'hywiki): (hui:link-possible-types): Add 'link-to-wikiword' clause. * hbut.el (ibut:insert-text): Add 'actypes::link-to-wikiword' clause. * man/hyperbole.texi (By Dragging): Add HyWikiWord Reference to referent context table. * hywiki.el (hywiki-consult-file-and-line): Add. (hywiki-format-reference): Add and use with above function. (hywiki-insert-reference): Add. (hywiki-word-is-p): Use 'string-match-p' instead of 'string-match'. (link-to-wikiword): Add this actype. (hywiki-insert-link): Update to search for section links to insert when 'consult' is available. (require 'hui): Change to an 'eval-when-compile' so does not trigger recursive requirements during normal loading. hui-mini.el (hui:menu-hywiki): Unify with "hui-menu.el". Replace use of 'hywiki-add-path-link' with 'hywiki-insert-link'. 2026-02-17 Bob Weiner * hasht.el (hash-make): Fix to trigger an error if key is not given as a string. 2026-02-16 Bob Weiner * hibtypes.el (markdown-follow-inline-link-p): Fix to handle URL arguments sent when point is on the link title and not an included URL (so check if on a URL fails). * README.md: Add Hyperbole Articles section. 2026-02-18 Mats Lidell * hsys-org.el: require 'find-func for find-library--from-load-history. * hui-mini.el (hywiki-mode): * hyrolo.el (hywiki-mode): Defvar. * hywiki.el (hywiki-potential-buffer-p, hywiki-word-from-reference): Fix quotes. 2026-02-17 Mats Lidell * test/hywiki-tests.el (hywiki-tests--verify-removal-of-delimiter-updates-face): (hywiki-tests--wikiword-yanked-with-extra-words): (hywiki-tests--create-wikiword-file-highlights-wikiword): Use hywiki-tests--with-face-test default value. * test/hywiki-yki-tests.el (hywiki--verify-get-buffer-text-with-point-and-highlight-compact): Use hywiki-tests--with-face-test default value. Let hywiki-tests--preserve-hywiki-mode handle wikiword file and hywiki-directory. 2026-02-16 Mats Lidell * test/demo-tests.el: * test/hmouse-drv-tests.el: * test/hui-select-tests.el: * test/hui-tests.el: * test/hyrolo-tests.el: * test/kotl-mode-tests.el: Activate skipped test that can run in batch mode. * In addition to activating the tests some use of hy-test-helpers:consume-input-events has been removed where it is not needed. * A few tests were blocked by checking quoted strings where the quotes differ between batch and interactive. They have been modified to not verify the part of the message that contains the quotes. 2026-02-15 Mats Lidell * hywiki.el (hywiki--org-link-html-format): Use `hpath:dashes-to-spaces-markup-anchor' to make header match target. * test/hywiki-tests.el (hywiki-tests--action-key-moves-to-word-and-section-using-dash-to-space-conversion): Add test for headers with dashes. (hywiki-tests--published-html-links-to-word-and-section): Update test to the dash to space conversion in headers. 2026-02-15 Bob Weiner * hywiki.el (hywiki-word-highlight-in-current-buffer): Fix bug that added highlighting hooks to buffers where HyWikiWords are not highlighted. Previously, this function filtered out only minibuffers. Now it filters out buffers where hywiki-mode is not active. (hywiki-mode-normalize): Add to normalize 'hywiki-mode' args and handle mode toggling. (hywiki-default-mode): Add this customization which determines the state HyWiki is initialized to when Hyperbole is activated. 2026-02-14 Bob Weiner * hsys-org.el (hsys-org-fix-version): Ensure 'org-install-dir' is a dir and not the file found from 'find-library--from-load-history' call. * test/hy-test-dependencies.el (hsys-org-log-and-fix-version): Ignore any version fixing errors due to publishing incompatibilities between versions. Not relevant to run tests. * hywiki.el (hywiki--prior-mode): Rename to 'hywiki--prior-mode' since only used internally. (hywiki-mode): Define and document as a variable now that its minor-mode does not define it but just references it with :variable. * hsys-org.el (hsys-org-fix-version): Use 'find-library--from-load-history' on "org-loaddefs" to get actual dir defs were loaded from, not using current 'load-path'. * hywiki.el (hywiki-maybe-highlight-wikiwords-in-frame): Ignore any child/popup windows such as those used by the posframe package. Vertico and Corfu may also use these. (hywiki-completion-at-point): Fix to use completion tables for use with the Corfu in-buffer completion package. (hywiki-completion-at-point): Fix to return all existing HyWikiWords, not just those with pages but of any referent type. (hywiki-company-hasht-backend): Remove in favor of above generic function. (hywiki-mode): Prevent def of a customizable variable for this mode. Use the 'hwyiki-mode' function to affect the state of the variable of the same name. (hywiki-word-from-reference): Improve doc string. 2026-02-12 Bob Weiner * hywiki.el (hywiki-word-add-completion-at-point): Add in-buffer HyWikiWord reference completion (Complete HyWiki words and sections. Completion requires typing at least two of the first characters of the completion.) (hywiki-word-highlight-buffers, hywiki-word-dehighlight-buffers): Use above func. 2026-02-11 Bob Weiner * hywiki.el (hywiki-word-at): Add optional 2nd arg, 'hash-sign-only-flag' to allow matching to a WikiWord# without any heading name for use when completing on headings. (hywiki-completion-at-point, hywiki-get-page-headings, hywiki-word-from-reference): Add and use in completions. 2026-02-10 Mats Lidell * .dir_locals.el: Project editing settings. Makefile (HYPERBOLE_FILES): MANIFEST: Add .dir_locals.el 2026-02-09 Mats Lidell * test/hywiki-tests.el (hywiki-tests--word-at): Extend verification to verify that the range of the WikiWord and the range of the highlighted text is equal iff a highlighted WikiWord exists. (hywiki-tests--run-test-case): Use pos as given by the step definition. If an illegal position results the test specification is wrong and need to be changed. Give an error message that explains the problem. 2026-02-09 Bob Weiner * test/hywiki-tests.el (hywiki-tests--edit): Report expected errors as messages so CI/CD does not fail. * hypb.el (hypb:eval): Remove running 'post-self-insert-hook' as it triggers a CI/CD error. 2026-02-09 Mats Lidell * test/hywiki-tests.el: Use hywiki-tests--preserve-hywiki-mode where hywiki folder is created. Create less temp-buffers, prefer reuse using erase-buffer between tests. 2026-02-08 Bob Weiner * hywiki.el (hywiki--command-executed-flag, hywiki-ignore-command-hooks-p): Add to prevent multiple calls to hywiki hooks per command. (hywiki-word-store-around-point, hywiki-word-highlight-post-self-insert, hywiki-word-highlight-post-command): Test with above function. (hywiki-word-store-around-point, hywiki-word-highlight-post-command): Add support for 'undo' commands. * hypb.el (hypb:eval): Run 'post-self-insert-hook' when appropriate. * hywiki.el (hywiki-word-store-around-point, hywiki-word-highlight-post-command): When narrowing region to dehighlight a reference, allow for 2 line refs instead of 1. (hywiki-get-delimited-region): Fix this to look for trailing delims first if the current cmd is deletes/kills backward. This fixes the hywiki pre-command-hook where it would not store 'hywiki--buttonize-range' when deleting backward if the following character was a valid opening delimiter, e.g. deleting backward with point after the closing double quote: "HyWikiWord" would return the region of rather than "HyWikiWord". * test/hywiki-tests.el (hywiki-tests--maybe-highlight-page-names): Fix by erasing the buffer before each test is run. * hywiki.el (hywiki-word-highlight-in-current-buffer): Fix to ignore minibuffer so highlighting does not trigger when 'M-x' is typed, for example. (hywiki-get-buffers-in-windows): Exclude minibuffer windows. (hywiki-word-dehighlight-in-buffers): Force buffer dehighlighting to fix issue where turning `hywiki-mode' off would not dehighlight all buffers. (hywiki-get-buffers): Fix to not limit buffers to those displayed in windows since may need to dehighlight buffers not presently displayed. (hywiki-get-buffers-in-windows): Fix to limit to live frames. 2026-02-08 Mats Lidell * hywiki.el (hywiki-word-create): Eliminate redundant term. (hywiki-create-page): Let page-file be the name of the file. User-error when page-file is not created. (hywiki-display-referent-type): Remove unreachable error check. * test/hywiki-tests.el (hywiki-tests--find-page) (hywiki-tests--get-page/wikiword-list, hywiki-tests--org-link-store) (hywiki-tests--create-referent, hywiki-tests--get-buttonize-characters) (hywiki-tests--non-hook-context-p, hywiki-tests--word-create) (hywiki-tests--create-page): New tests. (hywiki-tests--add-referent): Extend test for more coverage. (hywiki-tests--display-referent-type): Error test case. (hywiki-tests--add-global-button): Enable local vars. Avoid prompting user during test. 2026-02-07 Bob Weiner * test/hywiki-tests.el (hywiki-tests--verify-removal-of-delimiter-updates-face): Fix temp dir not being deleted due to scoping issue. (hywiki-tests--verify-hywiki-word): Pass in test step that is running for debugging. (hywiki-tests--verify-removal-of-delimiter-updates-face): Change insertion of double-quote to double-quote plus space to ensure result at point is nil and fix test step. 2026-02-04 Bob Weiner * hywiki.el (hywiki-get-buffers): Use 'seq-filter'. (hywiki-word-highlight-in-frame): Fix 'seq-filter' pred to take a buf argument. 2026-02-03 Mats Lidell * Makefile (%.elc): Use batch-byte+native-compile. 2026-02-02 Bob Weiner * test/hywiki-tests.el (hywiki-tests--edit-string-pairs): Enable two more tests that now pass. * hywiki.el (hywiki-word-at): Near the end, change the string-match to not have to match the entire string since it may contain disallowed characters. Cut the reference string off at the first invalid character. This fixes a problem that prevented highlighting a reference when a trailing double quote was deleted. (hywiki-delimited-p): Remove doc constraint that only delimiters around a single HyWikiWord reference are allowed; also trim any trailing whitespace. (hywiki-delimited-p): Fix to handle matching quotes when checking matching delimiters. 2026-02-02 Mats Lidell * hibtypes.el (hywiki-active-in-current-buffer-p) (hywiki-highlight-word-get-range): Declare public. * hsys-activities.el (activities-tabs-before-resume) (activities-tabs-mode, activities-tabs-before-resume): Declare public. 2026-02-01 Mats Lidell * test/hywiki-tests.el (hywiki-tests--publish-special-cases): Avoid revert query. (hywiki-tests--save-referent-find-use-menu): Use hywiki-tests--preserve-hywiki-mode macro and refactor test to utilize that. 2026-02-01 Bob Weiner * test/hywiki-tests.el (hywiki-tests--word-at): Return HyWikiWord reference at point only if it has a referent. (hywiki-tests--publish-special-cases): Fix matching issues and remove 'ert-info' output of html file as can fail in CI/CD. (hywiki-tests--wikiword-step-check-edit-wikiword-in-emacs-lisp-mode): Fix missing double quote causing failure. * hywiki.el (hywiki-word-store-around-point): Dehighlight only if Emacs is idle and within a hywikiword in a valid context. (hywiki-highlighted-word-at): Rewrite so matches 'hywiki-word-at' behavior based on point but requires that the HyWikiWord be highlighted or returns nil/nil range. (hywiki-word-get-range): Add and use in 'hywiki-highlight-word-get-range'. (hywiki-referent-exists-p) hywiki--maybe-dehighlight-at-point): Get the range but don't highlight the reference. * test/hywiki-tests.el (hywiki-tests--run-test-case): Remove initial 'erase-buffer' since callers set up the buffer prior to this call. Add 'ert-info' so know the exact buffer state when the test is run. * hywiki.el (hywiki-maybe-highlight-references): Remove conditonals at the start aside from whether hywiki-mode is active in this buffer since a page may have been added and references to it need to be rehighlighted so can't depend on previous highlighting having been done. * test/hywiki-tests.el (hywiki-tests--wikiword-identified-in-emacs-lisp-mode, hywiki-tests--face-property-for-wikiword-with-wikipage, hywiki-tests--verify-hywiki-word): Add 'ert-info' to show which test has failed and fix categorization of tests so they all pass. * hywiki.el (hywiki-word-highlight-in-current-buffer): Add for use as an 'after-change-major-mode-hook'. (hywiki-word-highlight-buffers, hywiki-word-dehighlight-buffers): Most major modes inherit from 'fundamental-mode' which clears the hywiki buffer-local hooks, so need to restore these to the current buffer via 'after-change-major-mode-hook'. Setup to do that in above functions. (hywiki-word-dehighlight-in-buffers): Create this function and call from 'hywiki-word-dehighlight-buffers. (hywiki-get-buffers): Optimize to check 'hywiki-mode-status' only once. (hywiki-get-buffers-in-windows): Fix doc to show that this does not filter to only hywiki buffers. Use 'hywiki-get-buffers' for that. (hywiki-word-highlight-in-frame): Fix to highlight in active hywiki buffers only. (hywiki-maybe-highlight-references): Fix that regexp search leaves point after closing string delimiter and then tests if in string. Move point to within string (grouping 1) before testing. 2026-02-01 Mats Lidell (hywiki-tests--wikiword-step-check-verification) (hywiki-tests--wikiword-step-check-verification-with-surrounding-text): Create wikipages, required by hywkii-tests--word-at. (hywiki-tests--wikiword-step-check-verification-with-faces) (hywiki-tests--face-property-for-wikiword-with-wikipage) (hywiki-tests--no-face-property-for-no-wikipage) (hywiki-tests--verify-face-property-when-editing-wikiword) (hywiki-tests--verify-face-property-when-editing-wikiword-first-char) (hywiki-tests--references-to-org-link, hywiki-tests--word-face-at-p): Drop interactive requirement. 2026-01-31 Bob Weiner * hproperty.el (hproperty:char-property-face-p): Rename to 'hproperty:but-face-p' since does not utilize char-properties. hywiki.el (hywiki-maybe-highlight-region-reference): Use new function name above. * hywiki.el: Replace all uses of 'hproperty:char-property-range' with 'hproperty:overlay-range' to avoid interaction with other code that uses text properties. * test/hywiki-tests.el (hywiki-tests--command-execute): Force run of 'post-self-insert-hook' when executing a 'self-insert-command'. * hywiki.el (hywiki-highlight-word-get-range): Fix to highlight only if within a buffer context where HyWiki words are valid. (hywiki-word-store-around-point): For insert commands, capture the 'hywiki--start' position before the insert. Also, dehighlight a wikiword at point if outside a valid context. (hywiki-maybe-dehighlight-reference, hywiki-word-highlight-post-command): Make dehighlight in non-highlight contexts since an edit may have just made the context invalid. (hywiki-non-hook-context-p): Update doc on use with 'post-command-hook' calls. (hywiki-word-highlight-post-self-insert, hywiki-word-highlight-post-command): Rewrite so non-hook context tests are all applied at the proper point. 2026-01-29 Bob Weiner * hywiki.el (hywiki-word-highlight-in-buffers): Change hook depth setting from 95 to -60 to run these hooks nearly first. 2026-01-25 Bob Weiner * test/hywiki-tests.el (hywiki-tests--filename-same-as-wiki-word): Rewrote to correct the tests therein. * hywiki.el (hywiki-potential-buffer-p, hywiki-non-hook-context-p): Comment out 'edebug-active' checks, so can examine same behavior when edebugging. (hywiki-word-set-auto-highlighting): Fix to ensure all hywiki hooks are removed any time 'hywiki-mode' is disabled. * test/hywiki-tests.el (hywiki-tests--interpolate-buffer): Fix to highlight any HyWiki word at point and create its page by activating it. This is separate from processing action buttons. 2026-01-24 Bob Weiner * test/hywiki-tests.el (hywiki-tests--wikiword-identified-in-emacs-lisp-mode, hywiki-tests--wikiword-identified-in-strings-in-emacs-lisp-mode, hywiki-tests--wikiword-identified-in-emacs-lisp-mode, hywiki-tests--filename-same-as-wiki-word, hywiki-tests--verify-removal-of-delimiter-updates-face, hywiki-tests--wikiword-yanked-with-extra-words, hywiki-test--hywiki-mode, hywiki-tests--interactive-hywiki-mode-toggles): Remove unneeded calls due to 'hywiki-tests--preserve-hywiki-mode' macro. (hywiki-tests--verify-removal-of-delimiter-updates-face, (hywiki-tests--maybe-highlight-page-names): Remove expected fail so can debug. (hywiki-tests--nonexistent-wikiword-with-section-should-create-wikiword): Rewrite. * hywiki.el (hywiki-active-in-current-buffer-p, hywiki-get-buffers): Fix minibuffer predicate used to reflect current buffer even if window not selected. Add and use 'hywiki-potential-buffer-p' to share common predicates. (hywiki-get-buffers): Stop filtering out hidden buffers that start with a space since they may be in a text mode and may be shown in a window. Also fix usage of 'hywiki-mode-status' argument so is part of the filtering. (hywiki-in-page-p): Ensure 'buffer-file-name' ends with 'hywiki-file-suffix'. (hywiki-active-in-current-buffer-p): Fix filtering when 'hywiki-mode' is :pages. 2026-01-19 Bob Weiner * test/hywiki-tests.el (hywiki-tests--execute-commands): Manually run 'post-self-insert-hook' when appropriate. 2026-01-19 Mats Lidell * test/kotl-mode-tests.el (kotl-mode--delete-region) (kotl-mode--delete-char): Add tests. * kotl/kotl-mode.el (kotl-mode:delete-char-acc): Accumulate deleted chars to setup kill-ring. (kotl-mode:delete-char, kotl-mode:delete-backward-char): Fix inconsistencies with delete-char - Support transient mark mode. Use kotl-mode:delete-char-acc for saving multiple chars to kill-ring when called with kill-flag. (The latter is implicit when used interactively with a prefix arg.) 2026-01-18 Bob Weiner * hywiki.el (hywiki--get-all-references): Handle ref ordering diffs between Emacs prior to 29 and after so callers do not have to handle. * test/hywiki-tests.el (hywiki-tests--hywiki-face-region-at): Remove, unused. * hywiki.el (hywiki-highlight-word-get-range): Rename to 'hywiki-word-range-at'. (hywiki-get-reference-range): Add and use in tests. (hywiki-word-highlighted-at): Rename to 'hywiki-highlighted-word-at'. * test/hywiki-tests.el (hywiki-tests--word-n-face-at): Remove and replace with calls to 'hywiki-highlighted-word-at'. * hproperty.el (hproperty:char-property-face-p): Fix doc to not refer to HyWiki. (hproperty:but-is-p): Add. * test/hywiki-tests.el (hywiki-tests--preserve-hywiki-mode): Fix to use the actual prior value of 'hywiki-mode' since there are now 3 valid states. Also setup more of the test scenarios and rewrite tests to not duplicate this behavior. (hywiki-tests--face-property-for-wikiword-with-wikipage): Fix this test. * test/hywiki-yki-tests.el (hywiki-test--set-buffer-text-with-point-and-highlight): For clarity change 'hywiki-mode' arg from 1 to :all and move before 'erase-buffer' call. 2026-01-12 Bob Weiner * hywiki.el: (hywiki-word-highlight-in-buffers, hywiki-word-highlight-in-frame): Add to support window-change-based HyWikiWord highlighting. 2026-01-11 Bob Weiner * test/hsys-org-tests.el (hsys-org:org-link-at-p): Fix 4th test by ensuring hywiki-mode is off. 2026-01-07 Mats Lidell * hywiki.el (hywiki-mode): Remove arg value :toggle, not an alternative to 'toggle. * test/hywiki-tests.el (hywiki-test--hywiki-mode): Add test for hywiki-mode. 2026-01-06 Bob Weiner * hywiki.el (hywiki-get-buffers-in-windows): Add and call in 'hywiki-get-buffers'. 2026-01-05 Bob Weiner * hibtypes.el (hywiki-word): Move from "hywiki.el" to here. * hyperbole.el: Add (require 'hywiki). (hyperb:init): (hywiki-mode :pages) at the end. 2026-01-02 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-names): Rename to 'hywiki-maybe-highlight-references'. (hywiki-maybe-highlight-page-name): Rename to 'hywiki-maybe-highlight-reference'. (hywiki-maybe-highlight-between-page-names): Rename to 'hywiki-maybe-highlight-between-references'. (hywiki-maybe-highlight-off-page-name): Rename to 'hywiki-maybe-highlight-off-reference'. (hywiki-maybe-highlight-on-page-name): Rename to 'hywiki-maybe-highlight-on-reference'. (hywiki-maybe-highlight-word): Rename to 'hywiki-maybe-highlight-region-reference'. (hywiki-maybe-dehighlight-page-names): Rename to 'hywiki-maybe-dehighlight-references'. (hywiki-maybe-dehighlight-between-page-names): Rename to 'hywiki-maybe-dehighlight-between-references'. (hywiki-maybe-dehighlight-off-page-name): Rename to 'hywiki-maybe-dehighlight-off-reference'. (hywiki-maybe-dehighlight-on-page-name): Rename to 'hywiki-maybe-dehighlight-on-reference'. (hywiki-maybe-dehighlight-page-name): Rename to 'hywiki-maybe-dehighlight-reference'. 2025-12-31 Mats Lidell * Remove starting asterix from defcustom variable docstrings. 2025-12-30 Bob Weiner * hywiki.el (hywiki-get-buffers): Add to return active hywiki-mode buffers. (hywiki-word-set-auto-highlighting): Rewrite to account for 'hywiki-mode' setting before and after this call. Apply highlighting hooks locally to each buffer. Remove interactive use. (hywiki-word-highlight-buffers, hywiki-word-dehighlight-buffers): Add and use in above function. 2025-12-27 Bob Weiner * hywiki.el (hywiki-word-highlight-flag, hywiki-word-highlight-flag-changed): Remove. (hywiki-mode, hywiki-in-page-p): Remove 'hywiki-word-highlight-flag' and update to support` all 'hywiki-mode' values. (hywiki-maybe-dehighlight-sexp): (hywiki-active-in-current-buffer-p): (hywiki-word-set-auto-highlighting): Replace 'hywiki-word-highlight-flag' with 'hywiki-mode'. test/hywiki-tests.el (hywiki-tests--active-in-current-buffer-p): Change let of 'hywiki-mode' to function call to set the minor mode. * hibtypes.el (hywiki-existing-word): hywiki.el (hywiki-word): Skip if not 'hywiki-active-in-current-buffer-p'. 2025-12-25 Mats Lidell * hywiki.el (hywiki--preparation-function, hywiki--completion-function) (hywiki-org-make-publish-project-alist): Use prepare and complete project attributes to control use of hywiki-org-export-function with org-export-before-parsing-functions. (Used before as advice on org-element--generate-copy-script now removed since it affected other export project.) (hywiki-org-export-function): Remove old stack guard since function is now called in another context. 2025-12-24 Mats Lidell * hywiki.el (hywiki-reference-to-org-link): Refactor to handle pathname and referent in separate functions. (hywiki--pathname-reference-to-org-link): Original function for pathname links. (hywiki--referent-reference-to-org-link): Creates an info message link that export of the referent type is not supported. (hypb-msg): org-link-type for message links. 2025-12-13 Bob Weiner * MANIFEST: Add "HY-TALK/HYPERBOLEQA.kotl" from EmacsConf2025 talk. HY-TALK/HYPERBOLEQA.kotl - Add. 2025-12-11 Mats Lidell * MANIFEST: Makefile (EL_COMPILE): Add hsys-activities.el. * hsys-activities.el (hsys-activities): Add action button support for external package activities. 2025-12-07 Bob Weiner * hpath.el (hpath:shorten): Expand and abbreviate but don't shorten paths if within a global button activation. Otherwise, relative paths may be computed wrong. Still this problem shown with (gbut:act "td") is not yet resolved. * hmouse-tag.el (smart-prog-tag): hui-mouse.el (hkey-alist): Change Assist Key behavior when on a programming symbol/tag. If the symbol is a variable holding an in-memory Hyperbole button, then display a help buffer with the button's attributes. Otherwise, if an Elisp symbol, then display a help buffer with symbol documentation, if any, to match the Hyperbole manual documentation. For any other language symbol, display its definiton, just as the Action Key does. 2025-12-06 Bob Weiner * hpath.el (hpath:absolute-to): Rewrite to fix when given multiple 'default-dirs' to test until find the first one that expands to an existing file before dropping out of the loop. (hpath:call): Fix so when 'path' exists (may have already been expanded), it is used rather than the 'expanded-path' variable. test/hpath-tests.el (hpath--absolute-to): Enable this test; fixed by above changes. (hpath:call): Fix one case where 'mode-prefix' was not prepended. 2025-11-30 Mats Lidell * hpath.el (hpath:find-file-mailcap): Remove unused. (hmail:editor-p): Declare function. * test/hpath-tests.el (hpath--posix-path-p) (hpath--posix-to-mswindows-separators) (hpath--mswindows-to-posix-separators, hpath--posix-to-mswindows) (hpath--mswindows-to-posix, hpath--substitute-posix-or-mswindows) (hpath--substitute-posix-or-mswindows-at-point) (hpath--at-p-prefix-paths, hpath--absolute-to, hpath--remote-p) (hpath--call, hpath--is-path-variable-p, hpath--display-buffer) (hpath--relative-arguments, hpath--relative-to) (hpath--file-line-and-column, hpath--file-position-to-line-and-column) (hpath:trim, hpath--exists-p): Add tests. 2025-11-30 Bob Weiner * hui-menu.el (hui-menu-options): Fix display of 'Org-M-RET' submenu options by adding an extra 'list' call. * hywiki.el (hywiki-mode): Redo 'hywiki-mode' global minor mode to support WikiWords in all editable buffers or just in HyWiki pages. Update doc string accordingly. man/hyperbole.texi (HyWikiWords): Update 'hywiki-mode' doc. hui-menu.el (hui-menu-hywiki): hui-mini.el (hui:menu-hywiki): Add submenu to set 1 of 3 'hywiki-mode' states. (hui:menu-read-from-minibuffer): Highlight selected item from above state menu. * hyrolo.py: Add support for "~/.rolo.org" HyRolo file. Report an error but continue if any given file in the list does not exist. Make Python script executable. 2025-11-29 Mats Lidell * README.md: Add link to stable documentation. Use html version of HY-NEWS. * Makefile: Support pushing the development version to www.gnu.org in preparation for reorganization of the documentation. (website): Prompt for confirmation on dangerous operations. (website-devel): Remove not needed target. 2025-11-29 Bob Weiner * man/im/hywiki-page.png: Add. man/hyperbole.texi (HyWiki): Add image "im/hywiki-page.png". 2025-11-23 Bob Weiner * hpath.el (hpath:shorten): Ignore optional RELATIVE-TO if editing a message, i.e. (hmail:editor-p) => t. (hpath:html-anchor-id-pattern): Fix so only exact matches are found by requiring the trailing quote. test/hmouse-drv-tests.el (hbut-pathname-html-anchor-test): Enable as now passes. * hui.el (hui:link-possible-types): Don't create an ilink to a potential but not yet created HyWikiWord. This prevents such links all over the place, e.g. in Koutlines when on any capitalized word, where a klink should be returned instead. 2025-11-22 Bob Weiner * test/hywiki-tests.el (hywiki-tests--assist-key-on-hywikiword-displays-help): Fix so always works regardless of where Hyperbole Help window is displayed or whether it is the selected window. (hywiki-tests--wikiword-identified-with-delimiters): Set 'hywiki-org-link-type-required' to nil so WikiWords are recognized in Org links without the hy: prefix. * hywiki.el (hywiki-word-at): Fix to respect the 'hywiki-org-link-type-required' setting and ignore HyWikiWord Org links without a 'hy:' prefix when that variable is non-nil. test/hsys-org-tests.el (hsys-org:org-link-at-p): Avoid failure by forcing the setting of 'hywiki-org-link-type-required' to t. * hywiki.el (hywiki-debuttonize-non-character-commands): Elaborate contexts where this hook function fires. Rename to 'hywiki-word-store-around-point'. (hywiki-buttonize-non-character-commands): Rename to 'hywiki-word-highlight-post-command'. (hywiki-buttonize-character-commands): Rename to 'hywiki-word-highlight-post-self-insert'. (hywiki--buttonize-characters): Remove, not used. * hyrolo.el (hyrolo-logical-regexp): Add so regexp can be reused and anchor to start of the search string. Use in 'hyrolo-fgrep' and 'hyrolo-fgrep-logical'. 2025-11-18 Mats Lidell * test/hmouse-drv-tests.el (hbut-find-exec-shell-cmd-test) (hbut-find-exec-window-cmd-test): Pathname with initial whitespace on line. (hbut-pathname-html-anchor-test): Test anchor links in HTML. 2025-11-17 Mats Lidell * test/hywiki-tests.el (hywiki-tests--maybe-highlight-page-names): Add test cases that fail and mark test as expected-result failed. * test/hpath-tests.el (hpath:path-at-point-with-unbalanced-quote-on-same-line): Rename test. Track current behavior. 2025-11-16 Mats Lidell * test/hpath-tests.el (hpath--hpath:delimited-possible-path-in-ls-R): Rename test. (hpath--hpath:delimited-possible-path): Add test using the old name. 2025-11-16 Bob Weiner * test/hywiki-tests.el (hywiki-tests--hkey-help): Rename to 'hywiki-tests--hywiki-help' and stop mocking call to 'documentation'. * hpath.el (hpath:at-p): Solve problem with hpath:prefix-regexp paths where path was expanded without stripping the prefix char. This also led to failures if a space was on a line before the double quoted path with prefix char, e.g. SPC "!/bin/ls" or SPC "!ls". 2025-11-12 Mats Lidell * test/MANIFEST: Add hywiki-yki-tests.el plus older tests missing from MANIFEST: hproperty-test.el, hypb-ert-tests.el and hywiki-tests.el. * test/hywiki-yki-tests.el: Add hywiki yank, kill and insert tests. 2025-11-11 Mats Lidell * test/hpath-tests.el (hpath:path-at-point-finds-path-when-unbalanced-quote-on-same-line): Verify that unbalanced quotes on same line as quoted path does not interfere with finding the path. 2025-11-09 Bob Weiner * hibtypes.el (action): Remove deletion of region on Action Key press when point is in a string. Make Action Button behavior consistent independent of point. 2025-11-07 Mats Lidell * hsys-www.el (eww--dwim-expand-url): Declare function to silence warning. (www-eww-browse-url): Defvar url-allow-non-local-files to silence warning in Emacs 28 where it is not defined. Introduced with Emacs 29. 2025-11-06 Mats Lidell * test/hywiki-tests.el (hywiki-tests--hywiki-face-regions): Helper for verifying generated overlays. (hywiki-tests--maybe-highlight-page-names): Verify overlays created by hywiki-maybe-highlight-page-names. 2025-11-02 Mats Lidell * test/hywiki-tests.el (hywiki-tests--wikiword-step-check-edit-wikiword-in-emacs-lisp-mode): Add test. (hywiki-tests--wikiword-identified-in-emacs-lisp-mode): Update test to verify WikiWord face. 2025-10-31 Mats Lidell * test/hywiki-tests.el (hywiki-tests--publish-special-cases): Add test that triggers problems in publishing. Test is constructed to work by verifying what is produced. Comments point to what is the expected result. 2025-10-29 Mats Lidell * test/hywiki-tests.el (hywiki-tests--org-link-export): Add environment and mock call to hywiki--org-link-html-format. (hywiki-tests--search-section): Helper for finding id strings in generated html. (hywiki-tests--published-html-links-to-word-and-section): Use hywiki-tests--search-section. * hywiki.el (hywiki-org-link-export): Add info parameter for getting the environment. (hywiki-org-link-export): Use hywiki--org-link-html-format. (hywiki-publish-to-html): Simplify function since advice has been removed. (hywiki--org-link-html-format): Add method for link formating in html. (hywiki--org-format-reference): (hywiki--org-export-new-title-reference): (hywiki--org-export-get-reference): Not used, removed. 2025-10-26 Bob Weiner * hycontrol.el (hycontrol-frame-zoom): Fix to check for an autoloaded function, 'zoom-frm-in'. (hycontrol-frame-zoom-reset): Add (require 'zoom-frm). * hywiki.el (hywiki-publish-to-html): Rewrite to use standard Org html ids, not HyWiki-specific ones. * hpath.el (hpath:call): Fix conditional at end to handle empty string for 'expanded-path'. This fixes handling of "#anchor" only references. (hpath:find): Handle encoded file:// URLs. 2025-10-18 Bob Weiner * hypb.el (hypb:in-string-modes-regexps): Change to support Python delimiters in all modes, e.g. Org mode with code embedding so do not miss strings. * hyrolo.el (hyrolo-grep-file): Fix bug#79643. Add a mark at the end point of all record insertions so can be referenced in 'hyrolo-yank' when calls 'hyrolo-yank-reformat-function'. This also allows the user to mark the region yanked with {C-x C-x}. 2025-10-12 Bob Weiner * hywiki.el (hywiki-ignore-face-list): Ignore org-links. (hywiki-maybe-highlight-word): Add and centralize HyWiki referent highlighting within this function. * hpath.el (hpath:at-p): Update doc to reflect that if NON-EXIST is given, a filename can have whitespace only if it is delimited. (hpath:delimited-possible-path): Check for delimited strings only if (hypb:in-string-p) returns non-nil. 2025-10-18 Mats Lidell * test/hywiki-tests.el (hywiki-tests--edit): Added cleanup of hywiki-directory after test. (hywiki-tests--only-file-in-dir-p) (hywiki-tests--delete-hywiki-cache) (hywiki-tests--delete-hywiki-dir-and-buffer): Add safer delete of hywiki-directory so removal of a live hywiki-directory is less likely. The dir must be empty and cache is only removed if it is the last file remaining in the dir. Moved these into hywiki-tests since they are only used with managing hywiki-directory in test cleanup and use it through out the hywiki-directory tests. 2025-10-16 Mats Lidell * test/hywiki-tests.el (hywiki-tests--consult-grep) (hywiki-tests--hkey-help, hywiki-tests--add-path-link-v2) (hywiki-tests--tags-view, hywiki-tests--directory-dired-edit) (hywiki-tests--interactive-hywiki-mode-toggles): Add hywiki tests. 2025-10-13 Mats Lidell * hycontrol.el (hycontrol-frame-zoom, hycontrol-frame-zoom-reset): For Emacs-28 use zoom-frm.el if it is available. Tell user it is required. * hycontrol-zmfrm.el: Makefile (EL_COMPILE): MANIFEST: Remove hycontrol-zmfrm.el 2025-10-08 Mats Lidell * kotl/kotl-mode.el (kotl-mode): hywiki.el (hywiki-add-org-id): Use with-suppressed-warnings. * hload-path.el (hyperb:with-suppressed-warnings): Remove Emacs 26 compatibilty macro. Not needed. 2025-10-06 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers:ert-simulate-keys): Silence warnings for not defined vertico-mode. * test/hmouse-info-tests.el (hmouse-info-build-completions-no-match): Fix unwind-protect with no unwind form. (hy-test-helpers): Require helper functions. (Info-complete-menu-buffer): Define var. 2025-10-05 Bob Weiner * hsys-www.el (eww-browse-url): Stop overloading this 'eww' function and replace it with 'www-eww-browse-url' which is used only when a url is activated via the Action Key (in the defact 'www-url'. (defact www-url): Utilize 'www-eww-browse-url'. * hsys-xref.el (hsys-xref-definitions): In Elisp modes, filter out "(feature " entries if more than one def entry since these can shadow defuns if the same name, e.g. `eww'. * hmouse-tag.el (smart-tags-mode-list): Add this customizable list of major modes to determine where smart tag finding works. By default, includes text and programming modes. (smart-prog-at-tag-p): Use above list. 2025-10-05 Mats Lidell * test/demo-tests.el (fast-demo-outline-section-anchor-and-relative-line-number): Run test using different default major-mode's. 2025-10-04 Mats Lidell * hyrolo.el (custom): hyperbole.el (custom): Drop require of custom due to preload. * hproperty.el: Use declare-function for hattr:get, ibut:map and ebut:map so require of hbut can be removed to cut dependency cycle. (custom): Drop not required dependencies. * Makefile (run-bash): Run bash in docker container for use with the docker target. 2025-10-03 Mats Lidell * test/kotl-mode-tests.el (kotl-mode--add-cell): Add test for nil relative-level, adding plist and no-fill parameter. 2025-09-28 Mats Lidell * hactypes.el (button-series): Add actypes:button-series that runs specified buttons in sequence. (hactypes:buffer-button-list): Return buttons available in current buffer. 2025-09-28 Bob Weiner * hmouse-tag.el (smart-prog-at-tag-p): Fix flashing of entire identifier rather than from current point forward by using 'bounds-of-thing-at-point'. * hmouse-drv.el (hkey-help): If the conditional action call is to 'ignore-errors', change it to the call within the 'ignore-errors' so output is useful. 2025-09-27 Bob Weiner * hpath.el (hpath:to-markup-anchor): Move 'fundamental-mode' support near the end of the cond clause. 2025-09-25 Mats Lidell * hycontrol.el (hycontrol-global-text-scale-adjust): Modification of global-text-scale-adjust for use with hycontrol menu. (hycontrol-frame-zoom, hycontrol-frame-zoom-reset): Use hycontrol-global-text-scale-adjust when Emacs has global-text-scale-adjust. * hycontrol-zmfrm.el (fontset): Require fontset for defining xldf-regexp-* vars. (fontset-info, query-fontset, x-list-fonts): Declare functions. 2025-09-24 Mats Lidell * hpath.el (hpath:to-markup-anchor): Match all-caps filenames including dash and underline characters. Check for markdown before checking if buffer is derived by text-mode since that masks markdown. 2025-09-21 Bob Weiner * hpath.el (hpath:to-markup-anchor): Support 'fundamental-mode' and derived shell modes. 2025-09-20 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers:consume-input-events): Wait longer before terminating consumption of input events. * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): test/hycontrol-tests.el (hycontrol-tests--framemove-direction-error-message): Use cl-letf to mock functions that requires mocks that can act on multiple calls with with different parameters or different responses or both. * test/hywiki-tests.el (hywiki-tests--save-referent-command-use-menu) (hywiki-tests--save-referent-global-button-use-menu) (hywiki-tests--save-referent-info-node-use-menu) (hywiki-tests--save-referent-org-roam-node-use-menu): Add a delay before verifying referent. 2025-09-15 Mats Lidell * hib-debbugs.el (debbugs-gnu-rescan): Declare to silence byte compile warnings. * test/hywiki-tests.el (hywiki-tests--save-referent-org-roam-node-use-menu): Remove extra RET not needed due to mocking of org read functions. * test/hy-test-helpers.el (hy-test-helpers:consume-input-events): Only exit an ongoing recursive-edit. * test/hsys-org-tests.el (hsys-org--org-outside-org-mode-tmp-buffer): Mock org-open-at-point-global to avoid opening the link target. * hycontrol.el (hycontrol-frames-mode-map, hycontrol-frame-zoom): Use hycontrol-zmfrm. * Makefile (EL_COMPILE): MANIFEST: Add hycontrol-zmfrm.el * hycontrol-zmfrm.el (hycontrol-frame-zoom-font-difference) (hycontrol-enlarge-font-tries, hyconytrol-frcmds-enlarged-font-name) (hycontrol-enlarge-font, hycontrol-zoom-frm-unzoom) (hycontrol-zoom-frm-in, hycontrol-zoom-frm-out) (hycontrol-zoom-all-frames-in, hycontrol-zoom-all-frames-out) (hycontrol-zoom-all-frames-unzoom): All frame zoom support based on zoom-frm.el. 2025-09-14 Bob Weiner * hywiki.el (hywiki-create-page-and-display): Replace with updated 'hywiki-create-referent-and-display'. (hywiki-word-create-and-display): Replace call to 'hywiki-create-page-and-display' with 'hywiki-create-referent-and-display'. * hywiki.el (hywiki-create-referent-and-display): Remove null check of 'referent' value already done in previous cond clause. * hpath.el (hpath:find): Remove unneeded second check that (hypb:buffer-file-name) returns non-nil. * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): Temporarily comment out Java handler at line 295 since it is failing. Also, update to new prog-mode clause location and predicate. * hib-debbugs.el (eval-after-load "debbugs-gnu"): Fix Emacs bug#72811 that Mats filed. An infinite recursion in "debbugs-gnu" when 'debbugs-gnu-mode' is invoked that occurred only in Emacs versions prior to 29 due to a 'debbugs-gnu-rescan' being called on 'tabulated-list-revert-hook'. This fixes Hyperbole's support for jumping to Emacs bug discussions via a link like bug#72811. 2025-09-09 Bob Weiner * hui-mouse.el (hkey-alist): Move 'smart-prog-tag' to before specific languages with smart handlers, so always try to call xref before any TAGS-specific language handling clauses. It used to be at the end of 'hkey-alist'. This also adds proper support for use of the dumb-jump package with the Smart Keys. test/hmouse-drv-tests.el (hbut-key-press-on-hyphen-in-elisp-symbol): Rewrite to match above change, remove mock and add test that jumps to definition. * hsys-xref.el (hsys-xref-identifier-at-point): Change 'hpath:at-p' call to check for existing pathnames only. This prevents matching to badly formatted text strings and allows 'smart-prog-at-tag-p' and 'smart-prog-tag' to work properly. 2025-09-14 Mats Lidell * test/hui-tests.el (hui--kill-ring-save--defun): Add test. * test/hypb-tests.el (hypb--in-string-p--max-lines): Update test. (hypb--string-count-matches): Add test. ` 2025-09-08 Bob Weiner * hsys-xref.el (hsys-xref-identifier-at-point): Clarify doc string. * hmouse-tag.el (smart-tags-display): Remove (or tags-table-list tags-file-name) check since xref is now used and many of its backends don't require a TAGS file. Fixes issue gh#rswgnu/hyperbole/776. (smart-tags-find-p): Rewrite to optimize and try xref before tags lookup. 2025-09-07 Bob Weiner * test/hywiki-tests.el (hywiki-tests--published-html-links-to-word-and-section): Skip if Org version is less than 9.7 since org-publish does not work for HyWiki prior to that. Will be skipped for Emacs 28 and 29. * hibtypes.el (action): Fix setting of 'actype-sym' when a variable by adding a call to 'intern-soft'. * hproperty.el (hproperty:but-get-all-in-region): Note in doc string that no ordering is specified; may differ between Emacs versions. test/hywiki-tests.el (hywiki-tests--edit): Handle different ordering of wikiword overlays across major Emacs versions. * hywiki.el (hywiki--extend-region): Fix to extend region to include a whole wikiword reference when not delimited and called from a yank command. * test/hywiki-tests.el (hywiki-tests--wikiword-yanked-with-extra-words): Above fix keeps this test from failing. Enable it now that it works. * test/hywiki-tests.el (hywiki-tests--referent-test): Disable 'vertico-mode' which can cause tests to fail. * hproperty.el (hproperty:but-get-all-in-region): Remove 'nreverse' call so buttons are returned in first to last order as desired. * hibtypes.el (action): Fix 'actype-sym' handling when a regular Emacs function. * hmouse-tag.el (smart-python): Fix to call 'error-message-string' to extract the error from the err 'condition-case' variable. * test/hywiki-tests.el (hywiki-tests--save-referent-find-use-menu): Rewrite to work and disable `vertico-mode' within the test to prevent failure. 2025-08-31 Bob Weiner * test/demo-tests.el (fast-demo-key-series-help-buffer): Check actual key binding and enable 'hyperbole-mode'. * test/kotl-orgtbl-tests.el (kotl-orgtbl-shift-tab-demotes-tree-outside-table): Fix to not use key binding but call function directly. * hib-kbd.el (kbd-key:named-key-list): Add backtab, iso-lefttab and iso-righttab. * hibtypes.el (action): Remove any requirements on chars before or after action type delimiters, so can abut action buttons to other text. * hywiki.el (hywiki-kill-buffer-hook, hywiki-in-page-p): Exit if no 'buffer-file-name'. * test/hywiki-tests.el (hywiki-tests--referent-test): Stop checking existence of cache file since there may be a race condition that makes it not exist yet. * hywiki.el (hywiki-maybe-dehighlight-page-name): Handle when 'last-command-event' is not a character, e.g. 'return. * hibtypes.el (action): Allow for double-quotes before or after action button delimiters. * hbut.el (hbut:label-to-key): Fix to keep any whitespace at the end of a label if follows a ? or a backslash character as these are significant if the label is later read back in as code, e.g. for an action button like: . 2025-08-30 Bob Weiner * hui-mini.el: Replace all (beep) calls with (beep t) so do not exit keyboard macros when meant only as an interactive user alert. * hib-kbd.el (kbd-key:key-series-to-events): Rewrite to execute 'key-series' as a keyboard macro immediately (to reduce race conditions) unless it contains a Hyperbole minibuffer menu in which case continue to queue in `unread-command-events' because the Hyperbole minibuffer menu does not work within keyboard macros. * hywiki.el (hywiki-org-link-resolve): Rename to 'hywiki-reference-to-referent'. (hywiki-reference-to-org-link): Simplify conversion when no 'description' is given to just [[hy:reference]]. 2025-08-29 Bob Weiner * hui-select.el (hui-select-set-region): Fix so selection of a whole narrowed buffer performs the selection and is not treated as a whole buffer selection. * hywiki.el (hywiki-word-to-org-link): Rewrite to minimize text in the Org links created. Use 'hy:' protocol prefix. (hywiki-word-to-org-link): Rename to 'hywiki-reference-to-org-link'. (hywiki-convert-words-to-org-links): Rename to 'hywiki-references-to-org-links'. test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): Rename to 'hywiki-tests--references-to-org-link'. Fix to prefix Org HyWikiWord Org link referents with 'hy:' protocol. (hywiki-tests--org-link-resolve): Rename to 'hywiki-tests--reference-to-referent'. * hsys-org.el (hsys-org-link-at-p): Fix checks to ensure point is within any Org link when trigger. Was missing check that point is after start of match, replace with call to 'hargs:delimited-p' to simplify the code. (hsys-org-link-label-start-end): Add to fix Org link label extraction. Call from 'hsys-org-link-at-p' when in 'org-mode' and use custom code to get proper label when not. * test/hywiki-tests.el (hywiki-tests--org-link-resolve): Fix to use full path of wikipage. (hywiki-tests--org-link-export): Add (find-file wikipage) call to fix that relative directory setting in `hywiki-org-link-export' is set properly. * hib-kbd.el (kbd-key:act): Normalize 'key-series' prior to processing if not already done. Fixes bugs where SPC characters can be removed improperly if called with a non-normalized 'key-series'. * hui-select.el (hui-select-at-delimited-thing-p): Update doc string to say that global 'hkey-value' is set to the function that selects the syntactic thing at point. hbut.el (hbut:is-p): Change to return the hbut symbol passed in, if any. hact.el (actype:doc): Remove unneeded duplicate 'hbut:is-p' call. hui-mouse.el (hkey-at-hbut): Add this boolean to communicate between Smart Key predicates that point is at a Hyperbole button. * hywiki.el (hywiki-get-page-list): Add to return a list of HyWikiWords with existing pages. Use 'hywiki-get-wikiword-list' to include existing WikiWords with referents of all types, not just pages. (hywiki-page-read-new): Add. (hywiki-find-page): Add to mirror 'hywiki-find-referent'. hui-mini.el (hui:menu-hywiki): Change 'EditPages' to 'EditPage' and from command 'hywiki-edirectory-edit' to 'hywiki-find-page'. Add new entry 'DiredHyWiki' with 'hywiki-edirectory-edit' command. * hui-menu.el (hui-menu-hywiki): Rename 'Edit-HyWiki-Pages' to 'Dired-HyWiki-Pages'. Add new entry 'Find-HyWiki-Page' with command 'hywiki-find-page'. * hasht.el (hash-map): Fix that always returned nil when using a lambda function. Second argument to 'push' call was wrong. It was 'key' and should be 'result'. 2025-08-28 Bob Weiner * hproperty.el (hproperty:char-property-face-p): Add. * hywiki.el (hywiki-ignore-face-list): Add constant. (hywiki-maybe-highlight-page-names, hywiki-highlight-word-get-range): Call above function and skip HyWikiWord highlighting if any face in 'hywiki-ignore-face-list' is found. * hui-mouse.el (hkey-alist): Make 'hui-select-thing' and 'hui-select-at-delimited-sexp-p' ignore delimiters in the middle of an hbut, e.g. when on closing paren of "(hyperbole)HyWiki", so that button activation is always consistent. 2025-08-27 Bob Weiner * hargs.el (hargs:search): Add to skip over backquoted search matches. (hargs:delimited): Replace search calls with calls to `hargs:search'. This improves HyWikiWord highlighting when quoted delimiters are used. * hmouse-drv.el (hkey-help): Print hbut attributes only when 'hkey-alist' 'hbut:at-p' clause triggers, not anytime an hbut actype attribute exists. Otherwise, can have hui-select-thing trigger via an Action Key press but also display the hbut attributes that the delimited thing is within. Then user can't tell what action will trigger at point. * hywiki.el (hywiki-word-to-org-link): Remove set of 'path' to nil when no buffer-file-name or when it matches buffer-file-name without a dir. This ensures a valid link is always returned from a valid input. 2025-08-26 Bob Weiner * hywiki.el (hywiki-org-link-resolve): Fix so pathname is expanded relative to 'hywiki-directory' since don't know the 'default-directory' of the caller. 2025-08-25 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-names): Add missing 'save-match-data' and replace check of (and region-start region-end) with 'hywiki-delimited-p' within a widened region (since often narrowed without delimiters in region) to fix yank calls skipping past spaces in HyWikiWord sections without delimiters. Also solves words after spaces not dehighlighting with point after a trailing double quote and then: {M-:(backward-delete-char 1)} 2025-08-20 Mats Lidell * hywiki.el (hywiki--extend-region): Fill long docstring. (hywiki--maybe-de/highlight-sexp): Escape character literals. * hibtypes.el (display-value-and-remove-region): Declare actype as function to silence byte compiler. 2025-08-20 Bob Weiner * test/hywiki-tests.el (hywiki-tests--edit-string-pairs): Add a few more tests based on cases fixed with recent updates. 2025-08-19 Bob Weiner * hywiki.el (hywiki-delimited-p): Fix bug where = was used on a call to 'matching-paren' which can return nil. Change to eq instead. (hywiki--maybe-de/highlight-sexp): Fix to add 1 to region start only when verify that the char after start is an opening delimiter. This fixes the bug where a substring wikiword is highlighted, e.g. if 'AI' is the wikiword, it is highlighted within 'FAI'. 2025-08-19 Mats Lidell * test/hmouse-drv-tests.el (hmouse-drv--hkey-actions): Adopted test case to change in error message. * test/hywiki-tests.el (hywiki-tests--save-referent-bookmark): Visit a file so the bookmark reference can be defined. Needed after the refactoring of the hiwiki-tests--referent-test macro where not needed files were removed. (hywiki-tests--save-referent-info-index-use-menu): Skip test for now. The menu keys work when tested manually but fail to work in the ert test for unknown reasons. (hywiki-tests--wikiword-step-check-verification) (hywiki-tests--wikiword-step-check-verification-with-faces) (hywiki-tests--wikiword-step-check-verification-with-surrounding-text): The default value of `hywiki-tests--with-face-test' has been changed to t which broke the tests that are not doing face checks. The var is now set locally to nil where needed and removed where it does not need to be set. 2025-08-17 Bob Weiner * hywiki.el (hywiki-create-page-and-display): Remove non-prompted referent handling when running an ERT test. * test/hywiki-tests.el (hywiki-tests--hywiki-create-page--adds-no-wiki-word-fails): 'hywikig-add-page' should return nil so no removed the unneeded 'cdr' call. (hywiki-tests--a-wikiword-in-hywiki-directory): Rename AnotherWikiWord to PotentialWikiWord to clarify that it has not been created. (hywiki-tests--referent-test): Further doc clarification. (hywiki-tests--filename-same-as-wiki-word): Simplify with calls to 'ib:test-p' predicate rather than doing string compares. * hui.el (hui:delimited-selectable-thing-and-bounds): Fix so when {M-w} uses 'hui-select-get-region-boundaries' on a matching delimiter, it always returns the same value rather than use the grow region feature. This fixes not all trailing parens being selected when at the start of a defun. * test/hywiki-tests.el (hywiki-tests--referent-test): Clarify behavior in doc string and change wiki-referent to wiki-word-non-page. Fix test cases that create a non-page referent. * hbut.el (ibut:create): Fix error handling and don't switch to *Messages* buffer. 2025-08-16 Bob Weiner * hypb.el (hypb:in-string-p): Remove check of chars prior to string open char. * hywiki.el (hywiki--word-face): Add underlining by default. Helps to see if spaces are highlighted or not. (hywiki-highlight-word-move-range): Add for potential future use. (hywiki--extend-region): Fix to not extend region to include trailing whitespace unless delimited. * test/hywiki-tests.el (hywiki-tests--get-brace-strings, hywiki-tests--insert-by-char, hywiki-tests--execute-commands): Add. * hywiki.el (hywiki-buttonize-character-commands): Fix doc that this runs before 'post-command-hook'. * hmouse-tag.el (smart-tags-find-p): Rewrite to better match `smart-tags-display' behavior which includes case-sensitive tag lookup and using xref hsys-xref to detect more tag types. * test/hy-test-helpers.el (hy-delete-file-and-buffer): Previously just cleared file modified flag without saving it. Now additionally save the file prior to trying to kill it. 2025-08-16 Mats Lidell * hyrolo.el (hyrolo--wconfig): Remove a set of defvar declarations introduces for silencing byte compile warnings that are not needed any more. * hui.el (hui:copy-to-register) hui-select.el (hui-select-thing): Use an optional interactive-flag and use it for calls to called-interactively-p. It captures if function is called interactively and avoids brittleness of called-interactively-p. * hywiki.el (hywiki--buttonize-characters) (hywiki--buttonize-character-regexp) (hywiki--word-and-buttonize-character-regexp) hyrolo.el (hyrolo-match-regexp) hhist.el (*hhist*): Use defvar for const variables that are set later than at their definition. 2025-08-10 Bob Weiner * test/hywiki-tests.el (hywiki-tests--with-face-test): Make default value be t so HyWikiWord face start and end are checked in more tests. * hypb.el (hypb:rgrep): Move and rename to `hui-select-rgrep'; leave an alias for the old name. Extend so if on a matching delimiter, uses the whole delimited text as the default to grep for. (hypb:rgrep-command): Rename to 'hui-select-rgrep-command'. (hypb:eval): Remove 'command-execute' call as it duplicates the normal command flow. * hui-select.el (hui-select-get-thing): Rewrite to match choices in 'hui-select-thing'. * hywiki.el (hywiki-help): Add to display help either for a HyWikiWord at point or HyWikiWords in general. In HyWiki menus replace the Help 'hkey-help' call with a call to this instead. * hibtypes.el (hywiki-existing-word): Add reference to `hywiki-word' ibtype. * test/hywiki-tests.el (hywiki-tests--referent-test): Disable 'hsys-consult-flag' so 'consult' package does not interfere with testing. hsys-consult.el (hsys-consult-active-p): Add and autoload this so can turn on and off use of consult (and vertico) within Hyperbole, e.g. when running ert tests where consults interactivity interferes with batch testing. * hbut.el (ibut:set-name-and-label-key-p): Move recognition of action button angle brackets ahead of string matches so that in a Lisp buffer, the action button label is properly recognized rather than improperly adding the ")\n" characters at the front since double quotes tested before <>: (insert "") * hypb.el (hypb:eval-as-command): Rename to just `hypb:eval' and remove calling of command hooks. 2025-08-07 Mats Lidell * test/hactypes-tests.el (display-boolean-true-test) (display-boolean-false-test): Include Expr in verification. 2025-08-03 Bob Weiner * test/hywiki-tests.el (hywiki-tests--edit-string-pairs, hywiki-tests--edit, hywiki-tests--interpolate-buffer): Add simplified HyWiki string pair ert testing. * hywiki.el (hywiki-mode): Remove explicit call to 'hywiki-word-set-auto-highlighting' because the set of 'hywiki-word-highlight-flag' automatically calls it. (hywiki--maybe-rehighlight-at-point): Remove '(when hywiki--range' around 'hywiki-maybe-highligh-on-page-name' to ensure proper rehighlighting after ending delimiter is removed. (hywiki-debuttonize-non-character-commands): In 'pre-command-hook', don't nullify region markers if edebugging. (hywiki-buttonize-non-character-commands): In 'post-command-hook', nullify region markers after moving to the start of a HyWikiWord ref to prevent rehighlighting entire region after a delimiter is removed. (hywiki-get-delimited-region): Add and call from 'hywiki-at-range-delimiter'. Fix to always return '(nil nil) if no delimited region found and to order start and end properly. (hywiki-at-range-delimiter): Narrow only if no active region. With an active region, expand result range to include any pair delimiters outside the range found at point as well as the active range. (hywiki--extend-yanked-region): Rename to 'hywiki--extend-region' and fix start and end delimited pair extension logic. 2025-07-31 Mats Lidell * test/kotl-mode-tests.el (kotl-mode--add-cell) (kotl-mode--add-after-parent, kotl-mode--add-before-parent) (kotl-mode--add-below-parent, kotl-mode--add-child): Add tests. * test/hsys-org-tests.el (hsys-org:org-link-at-p): Update test. 2025-07-29 Bob Weiner * hywiki.el (hywiki-maybe-dehighlight-between-page-names): Handle when 'hywiki--buttonize-range' is '(nil nil). (hywiki--buts,hywiki--but-end, hywiki--but-start, hywiki--buttonize-end, hywiki--buttonize-start, hywiki--buttonize-range, hywiki--end nil, hywiki--range, hywiki--start): Make these buffer-local so stay set between pre-command-hook and post-command-hook. 2025-07-28 Bob Weiner * hbut.el (hbut:help): Add as an alias of 'hbut:report'. 2025-07-27 Bob Weiner * hypb.el (hypb:function-p): Add and autoload to determine if an obj is a function. (hypb:plist-p): Add and autoload to determine if an obj is a plist. (hypb:map-plist): Trigger errors on invalid args. (hypb:eval-as-command): Add and replace eval calls in defact display functions with this to invoke command hooks. * hpath.el (hpath:external-file-suffixes): Remove old Sun Raster image format .rs suffix which is now used for Rust code files instead. This fixes issue gh#765 where Rust code would open externally from Emacs. 2025-07-21 Bob Weiner * hywiki.el (hywiki--buttonize-range): Add and use in pre- and post- hooks, 'hywiki-maybe-dehighlight-between-page-names' and 'hywiki--maybe-dehighlight-at-point'. (hywiki-highlight-page): Add and autoload to force rehighlighting of an entire HyWiki page. (hywiki--extend-yanked-region): Extend past any HyWiki ref that start or end is within. (hywiki-buttonize-non-character-commands): Add support for insert commands, eval-expression and eval-last-sexp (which may execute edit cmds). 2025-07-20 Bob Weiner * hywiki.el (hywiki-debuttonize-non-character-commands, hywiki-buttonize-non-character-commands): Remove use of 'hywiki-word-highlighted-at-p' since this may lead to improper results if point is on an already highlighted WikiWord that is a substring of a longer WikiWord created by deletion of characters during this command. (hywiki--maybe-rehighlight-at-point): Always call 'hywiki-maybe-highlight-between-page-names' at the end as may need it when in the middle of a HyWikiWord ref as well. (hywiki-buttonize-non-character-commands): Activate this post-command-hook when any of hkey-either, action-key, or assist-key is the command. (hywiki--maybe-dehighlight-at-point, hywiki-maybe-dehighlight-between-page-names): Trigger when hywiki--buttonize-start/end are markers set within the current buffer. * hbut.el (ibtype:ensure-current-hbut-is-set): Add and use in `defib' to allow ibtype invocation without use of the Action Key. 2025-07-13 Bob Weiner * hactypes.el (display-value-and-remove-region): Add. * hibtypes.el (action): With `delete-region' and `kill-region' actions, if no args, either use any active region or when none, use the region of the action button itself, removing it from the buffer. The latter action is typically used in internal HyWiki tests. Also, if 'ert--running-tests' is non-nil, i.e. when running any ert test, don't require spaces around the action button and delete the action button after activation. 2025-07-07 Bob Weiner * hywiki.el (hywiki-map-words): Optimize and improve doc string. (hywiki-get-references, hywiki-get-reference-positions) hywiki--get-all-references): Add for returning all highlighted HyWikiWord references or reference positions in the current buffer. 2025-07-06 Bob Weiner * hproperty.el (hproperty:but-get-all-in-region): Reverse results so buttons come back in buffer order. (hproperty:but-get-all-positions): Add to return positions in region matching 'property' with 'value' * hargs.el (hargs:delimited): Fix bug with regexp delimiters where 'start-pos' was used instead of 'start' and this stop point from moving in a loop when matched to bol. This was seen in a failure of this call in 'hpath:delimited-possible-path': (let* ((space-delimiter "[ \t]")) (setq triplet (hargs:delimited (format "^\\|\\(%s\\|[\]\[()<>\;&,@]\\)+" space-delimiter) "\\([\]\[()<>\;&,@]\\|:*\\s-\\)+\\|$" t t t) p (car triplet))) * hypb.el (hypb:in-string-p): Internally when computing the number of lines in the string match, ignore any leading and trailing newlines. This allows for opening and closing quotes to be on separate lines, useful with multi-line strings. test/hypb-tests.el (hypb--in-string-p--max-lines): Update to allow for quotes on separate lines from the string but don't count these lines when applying 'max-lines'. * test/hy-test-helpers.el (hy-test-helpers:ert-simulate-keys): Add to disable 'vertico-mode' which gets in the way of 'ert-simulate-keys' calls. * hargs.el (hargs:delimited): Use 'hypb:in-string-p' when delimiters indicate a string match. Rewrite to remove the limit that point must be on the first line; can also be on the second line now and string delimiters can be on lines by themselves.. Change so the 'exclude-regexp' arg is compared against the match string without its delimiters, rather than with them as before. Update doc string. test/hargs-tests.el (hargs-delimited-*): Add a bunch of tests for `hargs:delimited'. 2025-07-03 Bob Weiner * hywiki.el (hywiki-word-at): A HyWikiWord reference can contain one set of '\n\r' in it, so fix to allow these characters. * hypb.el (hypb:in-string-p): Allow point to be on the last line of a string when given 'max-lines' arg, i.e. support prior lines. If 'max-lines' is 0, always return a nil-type result. hywiki.el (hywiki-at-range-delimiter, hywiki-maybe-highlight-balanced-pairs, hywiki-maybe-dehighlight-balanced-pairs): Update and document to allow 2-line HyWikiWord references with point on the trailing delimiter, i.e. allow a line before point and one after. (hywiki-delimited-p): Narrow to just a few lines to constrain search for delimiters. The use case for this function does not require looking back to the previous line. 2025-06-26 Mats Lidell * man/.dir-locals.el: Use with-locale-environment to ensure English is used for month names. * man/hyperbole.texi: Insert auto-replace-on-save marker comment for date update on save. Needed for the date in info pages. * hui-mouse.el (smart-magit): Add jump to worktree file when action press on `+' char in magit-status-mode or magit-revision-mode. * man/hyperbole.texi (Smart Key - Magit Mode): Update docs with jump to worktree. 2025-06-24 Mats Lidell * test/hui-tests.el (hui--kill-region-delimited-text-and-yank-back) (hui--select-boundaries): Add tests. * test/hywiki-tests.el (hywiki-tests--create-wikiword-file-highlights-wikiword): Verify creating a file for WikiWord highlights the instances of WikiWord that already is present in other files. 2025-06-22 Bob Weiner * hproperty.el (hproperty:but-get-first-in-region): Change from returning a list of a single button to just the first button when found. Also fix to return nil rather than the list of overlays when no matching overlay is found. (hproperty:but-get): Remove 'car' from its call to the above function. (hproperty:but-add): Fix to move any existing hproperty button within start and end rather than creating a new one every time. (hproperty:but-add): Log to *Message* buffer and beep any time an attempt is made to create a button with start and end the same value. Somehow this is happening in HyWiki when text is yanked back as part of the undo process. (hproperty:but-flash): Use button face is set already. hywiki.el (hywiki-highlight-on-yank): Stop adding an extra character to the highlighted region after a yank as this may be causing creation of overlapping highlighted regions. (hproperty:but-set): Add to set button properties. (hproperty:but-add): Automatically add the 'evaporate t property so if the overlay/button length is ever zero, it is automatically deleted. (hywiki-highlight-word-get-range): Add and replace calls to (hywiki-word-at :range) with this and make it highlight the HyWikiWord. (hproperty:but-get-face): Add. (hproperty:set-but-face): Rename to 'hproperty:but-set-face'. test/hywiki-tests.el (hywiki-tests--action-key-moves-to-word-and-section): Enhance to report the specific HyWikiWord test that fails if any error. * hywiki.el (hywiki-debuttonize-non-character-commands): Set 'hywiki--buffer-modified-tick'. (hywiki-buttonize-non-character-commands): Optimize to do nothing if (eq hywiki--buffer-modified-tick (buffer-modified-tick)) since the buffer was not modified by the current command. (hywiki--flag): Remove this since setting it in the 'post-self-insert-hook' had no effect on 'post-command-hook' since that runs before the self-insert hook. * hycontrol.el (hycontrol-frames-mode, hycontrol-windows-mode): Change from obsolete 'define-global-minor-mode' to 'define-globalized-minor-mode'. 2025-06-21 Bob Weiner * hywiki.el (hywiki-word-at): Remove HyWikiWord highlighting as proper highlighting should be done elsewhere. * hui.el (hui:selectable-thing-priority-list, hui:non-delimited-selectable-thing-and-bounds): Make Hyperbole no region kill and copy commands operate on one or more words forward when on whitespace. * hypb.el (hypb:in-string-p): Fix final and condition so does not fail when point is not 1 character after bol. * kotl/klink.el (klink:create): Rewrite to set missing klink yank handler on any newly created klink. (klink:yank-handler): Fix by making first group optional rather than what is in the group, so it matches to klinks like, <#1>. (klink:set-yank-handler): Add full path 'file-name' property for klink and retrieve it in klink:yank-handler if not a part of the klink string text. Prevent klink yank-handler text properties from being sticky/inherited by neighboring text by adding to 'text-property-default-nonsticky'. (klink:create-link): Add as an autoload to return a klink string. Use in 'klink:create' which inserts the link into the current buffer. 2025-06-20 Bob Weiner * kotl/kotl-mode.el (kotl-mode:kill-region): hui.el (hui:copy-to-register, hui:kill-ring-save): Test that a mark is set in the buffer before calling 'indicate-copied-region' or it will error. * kotl/kotl-mode.el (kotl-mode:kill-region): Add 'kill-ring-save' to 'kill-commands'. * test/hui-tests.el (hui--kill-highlighted-region): Update to only error when on whitespace. * hypb.el (hypb:in-string-p): Fix bug where point was on the end delimiter and the search forward for it skips over it because it requires a non-backslash character ahead of it. Update doc to note that this returns nil if point is on the closing quote(s). * hmouse-drv.el (hkey-throw): Change so selects the window thrown to. Use new 'hkey-throw-and-stay' for old behavior. * hui-select.el (hui-select-get-region-boundaries): Set syntax-table so <> and {} work as balanced pairs. (hui-select-string-p): Rewrite to use string start and end values returned by (hypb:in-string-p nil t) and to use 'hargs:delimited' to simplify the implementation. hui.el (hui:delimited-selectable-thing): Replace call of 'hui-select-get-thing' with (hui-select-delimited-thing-call #'hui-select-thing) so does not select multiple lines due to sexpressions when point is at the start of: "www.google.com". * hpath.el (hpath:url-at-p, hpath:url-p, hpath:www-at-p, hpath:www-p): Clarify in doc string whether leading protocol string is necessary for recognition. * hui.el (hui:kill-region): Rename to 'hui:kill-region-internal' for consistency. (hui-copy-to-register): Rename to 'hui:copy-to-register'. (hui-kill-region): Rename to 'hui:kill-region'. (hui-kill-ring-save): Rename to 'hui:kill-ring-save'. (hui:selectable-thing-priority-list): Add this defcustom; if nil, disables both delimited and non-delimited regional thing selection in 'hyperbole-mode' when no region is active. (hui:non-delimited-selectable-symbol-and-bounds): Add and select a customizable set of non-delimitable symbols using {M-w} and {C-w}. (hui:copy-to-register, hui:kill-region, hui:kill-ring-save): Call above added function. (hui:delimited-selectable-thing-and-bounds): Add to beginning of list returned to match 'hui:non-delimited-selectable-symbol-and-bounds'. (hui:selectable-thing-and-bounds): Add to call both delimited and non-delim thing-and-bounds functions and to include any delimiters. 2025-06-19 Bob Weiner * hui-window.el (hmouse-dired-readin-hook): Fix where to find associated doc. 2025-06-16 Bob Weiner * test/hyrolo-tests.el (hyrolo-tests--forward-same-level-all-file-types-level1): Add 2 entries per file instead of one to better test entry movement keys. 2025-06-15 Bob Weiner * hyrolo.py (highlight_matches): Fix so does not change the case of matches found. (highlight_re_matches): Add for future use for regex searching. * hyrolo.el (hyrolo-update-file-list): Add to update 'hyrolo-file-list' and the cached, fully expanded 'hyrolo--expanded-file-list'. * hyrolo.el (hyrolo-helm-org-rifle, hyrolo-helm-org-rifle-directory, hyrolo-helm-org-rifle-directories): Remove all 'helm-org-rifle' support from HyRolo in favor of 'consult', the much more widely used package today. 'Org-rifle' has not updated to the recent 'helm' development and bugs are showing, so drop it entirely. * hsys-consult.el (hsys-consult--grep-paths): Fix to ensure any env or lisp variables in paths are replaced so grep does not ignore them. (hsys-consult-flag): Add this customization, set to t by default, i.e. use and install the 'custom' package when needed by Hyperbole. (hsys-consult-get-exit-value, hsys-consult--org-roam-call-function, hsys-consult-grep, hsys-consult-grep-headlines-read-regexp, hsys-consult--grep-paths): Conditionalize these calls based on the value of the above flag. * hpath.el (hpath:expand-list): Fix 'hpath:expand' call so it does not require existing paths since its first arg may contain wildcards. Simplify code and expand all readable, non-symlink directories recursively. If a string is mistakenly sent instead of a list, make it a list. (hpath:expand-with-variable): Fix so does not prepend 'hpath:auto-variable-alist' to paths with wildcards in them when 'find-file-wildcards' is non-nil. This expands such paths in the 'default-directory' properly. * hyrolo.el (hyrolo-org, hyrolo-org-roam): Fix in interactive call to expand filenames in 'org-directory' and 'org-roam-directory' respectively. (hyrolo-file-list): Instead of leaving this nil by default, set it to a list of the default .rolo file. (hyrolo-mode-map): Since the *HyRolo* match buffer is read-only, rebind RET to be the 'action-key', so a simple press edits the current record in its source file. (hyrolo-find-file): If reading the file triggers an error, simply log it to the *Messages* buffer and ignore that file so does not get in the way of searching others. (hyrolo-to): Fix so when 'hyrolo-name-entry' has been set if the first line of an entry contains slashes, these are treatee as part of a literal string to find the source match, rather than than as a parent/child delimiter. 2025-06-12 Bob Weiner * hyrolo.el (hyrolo-tags-view): Fix error triggered by 'org-tags-view' call when send non .org file in 'org-agenda-files'. Fix by filtering out non-org files which can't have tags in them anyway. (hyrolo-refresh-file-list): Ensure 'hyrolo-file-list' is set to default file if nil. 2025-06-08 Bob Weiner * hywiki.el (hywiki-buttonize-non-character-commands): Add set of 'hywiki--word-pre-command' in the post command since the command itself may have moved point into a HyWikiWord reference. * hsys-consult.el (hsys-consult-apropos): Add and autoload for interactive selection of apropos symbols. * hui-mini.el (hui:menu-rolo): Remove "HelmFind" as is outdated; use "ConsultFind" instead. * hpath.el (hpath:auto-completing-read-modes): Add 'consult-org-roam-mode', 'icomplete-mode', 'org-roam-mode', and 'vertico-mode'. * hyrolo.el (hyrolo-consult-fgrep): Add and use in 'hyrolo-grep-input' when 'read-function' argument is 'read-string'. 2025-06-07 Bob Weiner * hyrolo.el (hyrolo-org, hyrolo-org-roam, hyrolo-fgrep, hyrolo-grep, hyrolo-word): Add consult completion support. (hyrolo-grep-input): Add to support interactive grep search input via consult when available. * hsys-consult.el (hsys-consult-selected-candidate): Rename to 'hsys-consult-get-exit-value'. Add first arg 'exit-value' to capture any desired value from when consult completion is active. For example, with `exit-value' given as 'vertico--groups, this will the list of files matched during a `consult-grep' call when 'vertico' completion is in use. Use '(car vertico--input) to get the input line sent to grep. 2025-06-07 Mats Lidell * test/hywiki-tests.el (hywiki-tests--published-html-links-to-word-and-section): Do not let test change org-publish-project-alist and update test. 2025-06-06 Mats Lidell * test/hywiki-tests.el (hywiki-tests--wikiword-yanked-with-extra-words): Failing test for yanked in WikiWord. 2025-06-05 Mats Lidell * test/hywiki-tests.el (hywiki-tests--hywiki-face-region-at): Get overlay at pos bounding box. (hywiki-tests--word-n-face-at): Use hywiki-tests--hywiki-face-region-at for verifying WikiWord and overlay matches. (hywiki-tests--verify-removal-of-delimiter-updates-face): Add failing test where WikiWord and overlay does not match. 2025-06-02 Bob Weiner * hyrolo.el (hyrolo-kill): Add consult completion support. (hyrolo-to): Get 'outline-regexp' value from (current-buffer) not (get-buffer hyrolo-display-buffer) to fix bug when display buffer does not exist. * hsys-consult.el (hsys-consult-selected-candidate): Rewrite to fix byte compilation errors. 2025-06-01 Bob Weiner * hyrolo.el (hyrolo-grep-file): Fix to handle regexp-quoted asterisks, i.e. "\\*". This fixes a bug where 'hyrolo-yank' did not match to entries starting with multiple asterisks. (hyrolo-edit): Add consult completion support. * hsys-consult.el (hsys-consult-selected-candidate): Rewrite to allow non-command functions that take arguments (so can send a prompt) and remove 'no-properties-flag'. Use 'substring-no-properties' to handle that in a separate call. (hsys-consult-grep-headlines-read-regexp): Add. hyrolo.el (hyrolo-consult-yank-grep): Generalize and rename to 'hsys-consult-grep-headlines-with-prompt' in "hsys-consult.el". * hyrolo.el (hyrolo--cache-major-mode): Initialize hash table if not done already. Fixes bug when 'hyrolo-grep' is called prior to init. (hyrolo-yank): Fix to get for (fboundp 'consult-grep) rather than (featurep 'consult) so that the consult package can be autoloaded. Also add error handling if invalid 'name' value is given. (hyrolo-consult-yank-grep): Add (require 'consult) before locally disabling 'consult-preview-key' so do not get this error when consult is loaded lower in the call stack: (error "Defining as dynamic an already lexical var") custom-declare-variable(consult-preview-key) 2025-06-01 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers:should-last-message): Change helper to work on captured messages by ert-with-message-capture. Add use of ert-with-message-capture where the helper is used. 2025-05-31 Mats Lidell * hyrolo.el (consult-preview-key): Defvar var from consult. * hsys-consult.el (consult--grep, consult--grep-make-builder) (consult--ripgrep-make-builder): Declare functions from consult. * hibtypes.el (mail-address): Fix docstring single quotes. * hactypes.el (mapc): Require hsys-www. (link-to-compose-mail): Fix docstring typo. * hsys-org.el (org-link): Add interactive spec for prompting user for an org link. 2025-05-27 Bob Weiner * hsys-www.el (www-url): Fix bug where "www.google.com" would not actually be sent to the browser for display even though recognized as a url. Had to add "https://" to the front of any such url. * hywiki.el (hywiki-org-make-publish-project-alist): Add :html-prefer-user-labels t to make Org use normalized headlines as href IDs. * hypb.el (hypb:in-string-p): Fix 'texinfo-mode' string not returning a list when 'range-flag' is given. test/hypb-tests.el (hypb--in-string-p): Enable this test since fixed now. * kotl/kotl-mode.el (kotl-mode:setup-keymap): Remap 'goto-line' and 'goto-line-relative' keys to 'kotl-mode:goto-line-relative'. (kotl-mode:goto-line, kotl-mode:goto-line-relative): Add to goto a relative line number in the Koutline. * test/hyrolo-tests.el (hyrolo-tests--mail-to): Fix to latest action updates in ibtype 'mail-address' which 'hyrolo-mail-to' relies on. * test/hywiki-tests.el (hywiki-tests--published-html-links-to-word-and-section): Bug is fixed, so remove expected fail and enable this test. * hywiki.el (hywiki-word-is-p): Save match data so when returns it represents the match to the whole HyWikiWord referent, if any. This fixes a bug that created HyWikiWord page files with the section name attached. * hsmail.el (mail-send-hook): Remove this setting since 'message-send-hook' has replaced it in modern Emacs. * hpath.el (hpath:display-buffer): When given a buffer name, create the buffer if it doesn't exist. 2025-05-27 Mats Lidell * test/hywiki-tests.el (hywiki-tests--sections-with-dash-space): Add test for section with # character. (hywiki-tests--action-key-moves-to-word-and-section): (hywiki-tests--at-wikiword-finds-word-and-section): Use commented out test. It is supported now. (hywiki-tests--nonexistent-wikiword-with-section-should-create-wikiword): Add test for a new WikiWord when initially given with a section. (hywiki-tests--sections-with-space-and-delimited-string): Add test of space in #section while delimited string. 2025-05-26 Bob Weiner * hactypes.el (link-to-compose-mail): Add new actype. Compose email inside Emacs or in default web browser if 'mail-user-agent' is set to 'browse-url'. hsys-www.el (www-url-compose-mail): Add and call this from above actype. hibtypes.el (mail-address): Call above actype allowing any email address to compose mail in a user's default external web browser. Add to doc string how to configure mail composition, {C-x m}, to use this external browser. * hyrolo.el (hyrolo-set-display-buffer): Don't enable 'hyrolo-mode' when within a `hyrolo-yank' command so that the yanked-to-buffer's mode is not changed (since 'hyrolo-display-buffer' is set to this). (hyrolo-add-match): Don't highlight any matches inserted by 'hyrolo-yank'. (hyrolo-yank): Add support for fast completion via 'consult-grep'. (hyrolo-consult-yank-grep): Add to support above function. 2025-05-25 Bob Weiner * hsys-consult.el (hsys-consult-selected-candidate): Add autoloaded function to return the candidate selected from commands like 'hyrolo-consult-grep'. (hsys-consult--grep-paths, hsys-consult-grep): Add additional arg 'prompt' to change the first part of the 'consult-grep' prompt. (hsys-consult-org-roam-grep): Pass in a prompt to 'hsys-consult--grep-paths' call. hyrolo.el (hyrolo-consult-grep): hywiki.el (hywiki-consult-grep): hsys-org.el (hsys-org-consult-grep): Optionally pass in a prompt for the 'hsys-consult-grep' call. 2025-05-24 Mats Lidell * test/hypb-tests.el (hypb--in-string-p--max-lines): Add test of max-lines. * test/hypb-tests.el (hypb--in-string-p): Add basic test of quote handling. 2025-05-23 Bob Weiner * hywiki.el (hywiki-word-with-optional-suffix-regexp): Change #section expression ordinality from "??" to "?" to get longest rather than shortest match. (hywiki-word-with-optional-suffix-exact-regexp): Fix to not allow # within a section. (hywiki-word-at): Fix to allow spaces in #section only if the delimited string is a single HyWikiWord reference. 2025-05-22 Bob Weiner * hypb.el (hypb:in-string-p): Doc optional MAX-LINES arg. Add optional RANGE-FLAG arg that returns (string-matched start-pos end pos) for a match. * hywiki.el (hywiki-delimited-p): Ensure string check is limited to 2-lines to match limit in the documentation. Make any non-nil value returned be a list of (string-matched start-pos end-pos). 2025-05-20 Mats Lidell * test/kotl-mode-tests.el (kotl-mode--add-prior-cell): Add test. 2025-05-19 Bob Weiner * test/demo-tests.el (fast-demo-elisp-or-env-vars): Fix to move past opening brace so does not trigger hui-select. (demo-smart-mouse-keys-ref-test, demo-man-apropos-test): Make similar fixes. test/hmouse-drv-tests.el (hbut-rfc-test): Make similar fixes. * hypb.el (hypb:in-string-p): Fix open quote detection heuristics including subtracting quoted delimiters from overall counts. 2025-05-18 Bob Weiner * hui-mouse.el (hkey-alist): Move hui-select clauses up before (hbut:at-p) call so for example, if on the trailing delimiter surrounding a HyWikiWord, the delimited whole is marked rather than activating the HyWikiWord. man/hyperbole.texi (Smart Key - Magit Mode, Smart Key - Delimited Things): Reorder to comde before (Smart Key - Hyperbole Buttons). * hypb.el (hypb:in-string-p): Make heuristic to optimize performance; search back only until the beginning of the first line prior to point that contains a non-quoted double quote mark. Also add support for 'texinfo-mode' strings where both "String1" and ``String2'' may be used. Add support for 'python-mode' single and triple string delimiters as well. (hypb:in-string-modes-regexps): Add for use in 'hypb:in-string-p'. Allows customization of major modes with unique string delimiters. * kotl/kotl-mode.el (kotl-mode:add-prior-cell): Fix to send raw C-u value with (interactive "*P") instead of "p". 2025-05-12 Mats Lidell * test/hmouse-drv-tests.el (hmouse-drv--hkey-actions): Test hkey-actions. (hmouse-drv--hkey-execute): Test hkey-execute. (hmouse-drv--hkey-execute-called, hmouse-drv--hkey-execute-action) (hmouse-drv--hkey-execute-assist): Helpers used in hkey-execute verification. 2025-05-08 Mats Lidell * hui-mouse.el (hkey-alist): Use deprecated but still supported calling convention for backwards compatibility. * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): Udate test to cover all predicates in hkey-alist. * hmouse-drv.el (hkey-actions): Return nil when no predicate is non-nil. 2025-05-04 Bob Weiner * kotl/kotl-mode.el (kotl-mode:add-after-parent): Add back in to add successive sibling cells of a parent cell or if at the top-level, as the first cells in the outline. test/kotl-mode-tests.el (kotl-mode-tests--sanity-check-function-list): Add 'kotl-mode:add-after-parent'. 2025-05-03 Bob Weiner * kotl/kotl-mode.el (kotl-mode:add-cell): Update doc string and handling of negative prefix args to add that many cells prior to the current cell. Also, change 0 arg to add a single cell as the parent's first child. (kotl-mode:add-child): Use prefix arg to add a sequence of child cells. (kotl-mode:add-below-parent): Rename from 'kotl-mode:add-after-parent'. Use prefix arg to add a sequence of initial children cells below the parent of the current cell. (kotl-mode:add-prior-cell): Use prefix arg to add a sequence of prior sibling cells or with C-u, add as the initial cells at the start of the current cell level (first children of its parent). 2025-05-01 Mats Lidell * test/hbut-tests.el (hbut-tests--hattr-is-p) (hbut-tests--hattr-ibtype-is-p, hbut-tests--hattr-actype-is-p): Unit tests. 2025-04-29 Bob Weiner * kotl/kotl-mode.el (kotl-mode:add-prior-cell): Add optional prefix arg flag to add that many prior sibling cells unless on a level 1 cell or when given a single C-u prefand when given insert cell as the the parent's first child. Bind this to {C-c p}. (kotl-mode:add-before-parent): Add prior sibling to parent cell. If on top-level, add first cell at that level. kotl/kmenu.el (kotl-menu-common-body): Add above function to Koutline menu as well as 'kotl-mode:add-below-parent'. 2025-04-28 Mats Lidell * man/.dir-locals.el: Add before-save-hook for automating date updates. 2025-04-27 Mats Lidell * hywiki.el (hywiki-word-face-at-p): hibtypes.el (smerge): Use or instead of setq. Thanks Stefan Monnier for * man/hyperbole.texi (Implicit Button Types): Add anchor to all ibtypes. * hywiki.el (hywiki-word-face-at-p): * hibtypes.el (smerge): Use or instead of setq. Thanks Stefan Monnier for the suggestion. * man/hyperbole.texi (Implicit Button Types): smerge ibut. (Smart Key - Magit Mode): Merge conflict lines. 2025-04-27 Bob Weiner * hypb.el (hypb:in-string-p): Add missing 'save-match-data' so when used with another search, this does not overwrite the matches. This fixes HyWikiWords in yanked regions not highlighting. * hyrolo.el (hyrolo-grep-file): Disable 'hywiki-mode' highlighting when reading in HyRolo search buffers to maintain speed and not have all the HyWikiWords distracting from matches found in the *HyRolo* match buffer. * test/hywiki-tests.el (hywiki-tests--save-referent-keyseries-use-menu): Rewrite and enable this test. * hywiki.el (hywiki-referent-exists-p): Fix to stop using global which could be overwritten and cause failures; use let of 'save-input-word' instead. 2025-04-26 Bob Weiner * test/hywiki-tests.el (hywiki-tests--verify-face-property-when-editing-wikiword): Rewrite and eliminate false wikiword highlighting. (hywiki-tests--save-referent-bookmark-use-menu): This test was unstable and unneeded (could not read the Hyperbole minibuffer menu prompts properly), so I removed it. 'hywiki-tests--save-referent-bookmark' is enough of a test. * hywiki.el (hywiki-word-at): When called with :range flag, ensure any existing HyWikiWord reference is highlighted before returning. This helps with wikiword highlighting taking precedence over 'font-lock-mode'. * hywiki.el (hywiki-add-bookmark): Fix to actually create the bookmark and to not prompt for a bookmark name when called non-interactively. test/hywiki-tests.el (hywiki-tests--add-bookmark): Fix (hywiki-tests--save-referent-bookmark): Fix to use 'wiki-referent' from 'hywiki-tests--referent-test' call. (hywiki-tests--referent-test): Fix to return buffer string with no properties to simplify comparisons. (hywiki-add-referent): This may create a new HyWikiWord so highlight any occurrences of it in all windows across all frames. * hbut.el (ibut:insert-text): Remove duplicate 'actypes::link-to-file' clause. * hpath.el (hpath:file-position-to-line-and-column): Fix to shorten path in the current directory, not within the buffer of path. 2025-04-26 Mats Lidell * hibtypes.el (smerge): Add ibut smerge. * hui-mouse.el (smart-magit): Add smerge support in magit-status-mode. * hywiki.el (hywiki-word-face-at-p): Add optional pos to enable reuse. * test/hy-test-helpers.el (hy-test-word-face-at-region): Simplify by reusing hywiki-word-face-at-p. * test/hywiki-tests.el (hywiki-tests--wikiword-step-check-verification-with-faces): Add missing WikiWord, Hiho, required by the test. Enable the test for CI. * test/hywiki-tests.el: * test/hui-tests.el: * test/hmouse-info-tests.el: * test/hmouse-drv-tests.el: * test/hargs-tests.el: Use ert-simulate-keys. Replaces external dependency on with-simulated-input. * test/hy-test-dependencies.el: Remove dependency on with-simulated-input. 2025-04-25 Mats Lidell * hsys-org.el: Require 'warnings to get definition of variables `warning-minimum-level' and `warning-suppress-log-types' else causing byte compilation warnings. * test/MANIFEST: Add resource folders. * test/hmouse-drv-resources/test-data.el: test/hmouse-drv-resources/TAGS: test/hibtypes-resources/test-data.el: test/hibtypes-resources/TAGS: Test resources. * test/hmouse-drv-tests.el (hbut-ctags-vgrind-test, hbut-etags-test): Use test resources. * test/hibtypes-tests.el (ibtypes::ctags-vgrind-test) (ibtypes::etags-test): Use test resources. 2025-04-23 Mats Lidell * test/hywiki-tests.el (hywiki-tests--word-n-face-at): Verify that point is at a WikiWord where WikiWord has hywiki--word-face set. (hywiki-tests--with-face-test): Control type of WikiWord check. (hywiki-tests--word-at): Use either hywiki-word-at or hywiki-tests--word-n-face-at controlled by hywiki-tests--with-face-test. (hywiki-tests--verify-hywiki-word): Use hywiki-tests--word-at. (hywiki-tests--wikiword-step-check-verification-with-faces): Run the step-check test verifying WikiWords and faces. Test is behind failure flag. * test/hy-test-helpers.el (hy-test-word-face-at-point): Check if hywiki--word-face is set at point. (hy-test-word-face-at-region): Check that region has hywiki--word-face set. 2025-04-21 Mats Lidell * test/hywiki-tests.el (hywiki-tests--wikiword-step-check): Update test sequence. * hywiki.el (ibtypes::pathname, ibtypes::pathname-line-and-column): Declare functions from hpath. * hsys-org.el (hsys-org-link-at-p): Reinsert let binding of label-start-end. * hbut.el (ibut:insert-text): Remove shadowed pcase. 2025-04-20 Mats Lidell * test/hywiki-tests.el (hywiki-tests--filename-same-as-wiki-word): Add test for filename being the same as a WikiWord. 2025-04-20 Bob Weiner * test/hui-tests.el (hui--link-possible-types): Change Outline Heading to use 'link-to-file' now. (hui--ibut-link-directly-to-org-header-second-column): Fix to new handling of outline headings. * test/demo-tests.el (fast-demo-display-kotl-starting-from-cell): Fix to use Hyperbole source EXAMPLE.kotl rather than per user file which may have been edited. Also add check of count of visible lines in the current cell. * kotl/kotl-mode.el (kotl-mode:add-prior-cell): Add to insert a cell prior to the current cell at the same level as the current cell. * kotl/kmenu.el (kotl-menu-common-body): Change 'Add-Parent' to two commands: 'Add-After-Parent and 'Add-Below-Parent'. * kotl/kotl-mode.el (kotl-mode:add-parent): Rename to 'kotl-mode:add-below-parent'. 2025-04-19 Bob Weiner * kotl/kotl-mode.el (kotl-mode:add-cell): Fix handling of 0 and negative prefix args. 0 on a level 1 cell means add as the first child of the parent root cell, i.e. as the first outline cell. 0 at any lower level means add as the next sibling of the parent cell. (kotl-mode:down-level, kotl-mode:up-level, kotl-mode:backward-cell, kotl-mode:forward-cell, kotl-mode:previous-cell, kotl-mode:next-cell): Trigger error only if called interactively; if not interactive and cannot move to any expected cell, return nil. * hui.el (hui:actype): Fix to ensure only interactive actypes are returned so when an explict button is created, it can prompt for the parameters associated with the actype (otherwise, it will just get nil). (hui:link-possible-types): Update link to outline heading handler to use 'link-to-file' instead of 'link-to-string-match'. Ignore the column number of point and for instance number of the #section, count only matches to heading lines, i.e. with 'outline-regexp'. hbut.el (ibut:insert-text): Add support for 'link-to-file'. * hibtypes.el (hywiki-existing-word): hywiki.el (hywiki-word): Fix so if point is on an existing pathname that is also a WikiWord, it jumps to the pathname rather than displaying the WikiWord referent. Also add (require 'hibtypes) to support this. * hywiki.el (hywiki-referent-exists-p): Remove (hywiki-word-at :range) call since this did not also check for whether a referent exists. This fixes a bug in 'hywiki-existing-word'. 2025-04-18 Bob Weiner * hywiki.el (hywiki-word-at): Remove unneeded clause that checks for opening delimiters a second time within a delimited set of WikiWords. This fixes an error of returning the prior WikiWord within a delimited group due to moving back past leading whitespace. * hypb.el (hypb:in-string-p): Fix by removing `syntax-ppss' calls and using regexp searches for double quoted delimiters instead. 2025-04-17 Mats Lidell * test/hywiki-tests.el (hywiki-tests--wikiword-identified-in-strings-in-emacs-lisp-mode): Add test for WikiWords in strings in emacs-lisp-mode. Test is behind failure flag. * man/im/*.eps: Remove embedded postscript files. * HY-TALK/improve-performance.png: Not used. * man/im/wgrid4x3.png: Not used. 2025-04-15 Bob Weiner * hypb.el (hypb:in-string-p): Add optional 'max-lines' arg to limit the search to that many full buffer lines starting with the line beginning 2025-04-15 Mats Lidell * test/hywiki-tests.el (hywiki-tests--command) (hywiki-tests--save-referent-command) (hywiki-tests--save-referent-command-use-menu) (hywiki-tests--save-referent-find-use-menu) (hywiki-tests--save-referent-info-index-use-menu): Clean up hywiki-tests.el from FIXME comments and add the related tests. * hui-mouse.el (hkey-alist): Cleanup. Remove whitespace. * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): Defvar vertico-mode for bound-and-true-p to see the let value. 2025-04-14 Bob Weiner * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): Update with new vertico hkey-actions. * hui.el (hui:hbut-operate): Add an unwind-protect to code that restores point in cases where calling the `operation' triggers an error. Fixes improper point movement in hywiki-display-page with a #section ref where the section is not found and an error is raised. * hbut.el (ibut:create): hmouse-drv.el (hkey-execute, hkey-actions, hkey-help): Change so point moved error is thrown for any ibtype predicate tested, not just the one selected; this will simplify tracking down bad ibtypes. Also ensure pred-point marker is always set to nil after use. 2025-04-13 Bob Weiner * test/hsys-org-tests.el (hsys-org--meta-return-on-end-of-line): Add mocks back in to prevent scrolling eob or bob errors. * test/hmouse-drv-tests.el (hbut-man-apropos-test, hbut-info-node-test, hbut-ib-url-with-label, hbut-mail-address-test, hbut-pathname-test, hbut-pathname-lisp-variable-test, hbut-pathname-env-variable-test, hbut-pathname-emacs-lisp-file-test, hbut-pathname-line-test, hbut-pathname-line-test-duplicate, hbut-pathname-anchor-test, hbut-pathname-anchor-trailing-text, hbut-pathname-anchor-line-test, hbut-pathname-line-column-test, hbut-pathname-load-path-line-column-test, hbut-pathname-with-dash-loads-file-test, hbut-pathname-directory-test, hbut-pathname-dot-slash-in-other-folder-should-fail-test, hbut-ctags-vgrind-test, hbut-etags-test, hbut-dir-summary-test): Test for ibtype match after calling (action-key). * hui-mouse.el (hkey-alist): When (smart-eolp), use hact instead of funcall to run action/assist-key-eol-functions. * test/hsys-org-tests.el (hsys-org--org-outside-org-mode-tmp-buffer, hsys-org--org-outside-org-mode-tmp-file): Test for ibtype match instead of actype. * test/hmouse-drv-tests.el (hbut-rfc-test): test/hsys-org-tests.el (hsys-org--meta-return-on-end-of-line, hsys-org--meta-return-on-end-of-line): Replace all mock calls with hattr:actype-is-p checks instead. * hbut.el (hattr:is-p): Add to abstract testing of hattr values. (hattr:actype-is-p, hattr:ibtype-is-p): Add these convenience functions for testing for specific ibtype and actype activations. * hsys-org.el (hsys-org-thing-at-p): Fix to work outside of Org mode by suppressing warnings and ignoring Org regex errors. This fixes two hsys-org tests where the 'www-url' ibtype fired instead of 'org-link-outside-org-mode'. (hsys-org-link-at-p): Rewrite to fix sending back (start . end) positions when on a link, to be used as an implicit button label. * hywiki.el (hywiki-section-to-headline-reference): Add to convert #section dashes to spaces for matching to Org headlines. (org-link-set-parameters): Set HyWiki's link type to call the above function on HyWiki links so they properly match Org headlines. 2025-04-12 Bob Weiner * hywiki.el (hywiki-cache-save): Change to save any modified cache rather than triggering an error (which can occur during regression testing). This fixes the `hywiki-tests--save-referent-info-node-use-menu' test. (hywiki--buttonized-region-p): Add so buttonized region tests are always handled correctly. Use in the functions below. (hywiki-convert-words-to-org-links, hywiki-maybe-dehighlight-balanced-pairs, hywiki-maybe-highlight-balanced-pairs, hywiki-maybe-dehighlight-page-name, hywiki-maybe-highlight-page-name, hywiki--maybe-dehighlight-at-point, hywiki--maybe-rehighlight-at-point): Fix to avoid using region markers in a buffer other than the current one. This also fixes a bug when doing HyWiki exports to html and referencing the wrong buffer. * test/hywiki-tests.el (hywiki-tests--wikiword-step-check): Fix to not expect closing paren delimiter as part of the WikiWord. * hywiki.el (hywiki-at-range-delimiter): Handle if scan-sexps returns nil then return '(nil nil). * hypb.el (hypb:in-string-p): Update to handle change-log-mode which disables syntax parsing and so is handled with a string search. * hmouse-drv.el (hkey-actions): Add for use in Hyperbole testing and call from "test/hui-mouse-tests.el". * hui-mouse.el (hkey-alist): Ignore 'ivy-mode' if 'vertico-mode' is actively prompting for an argument and allow for this outside of the minibuffer since vertico may prompt within another buffer. Also, ignore the value of hargs:reading-type here, otherwise, it will not catch all uses of 'vertico-mode'. 2025-04-07 Mats Lidell * test/MANIFEST: Add hui-mouse-tests.el * test/hui-mouse-tests.el (hui-mouse-tests--hkey-alist): Verify a predicate setting leads to the proper action. (hui-mouse-tests--hkey-get-action): Helper that gets primary action and assist action from hkey-alist for the predicates in effect. 2025-04-06 Bob Weiner * test/hywiki-tests.el (hywiki-tests--wikiword-identified-in-emacs-lisp-mode): Add this test from Mats with one correction. * hywiki.el (require cl-lib): Remove use. (hywiki--org-export-new-title-reference): Remove use of 'cl-incf'. (hywiki-maybe-at-wikiword-beginning, hywiki-maybe-dehighlight-page-name, hywiki-maybe-highlight-page-name hywiki-word-at): Replace 'cl-find' with 'string-match' for speed. (hywiki-buttonize-character-commands): Fix 'post-self-insert-hook' so it highlights wikiwords after a closing delimiter is inserted. (hywiki--maybe-rehighlight-at-point): Remove nullifying of 'hywiki--word-pre-command', 'hywiki--buttonize-start', 'hywiki--buttonize-end' and move this to the start of the hywiki 'pre-command-hook' (hywiki-debuttonize-non-character-commands) so they are not nullified by 'post-command-hook' before they can be used by 'post-self-insert-hook'. (hywiki-delimited-p): Add support for strings as well. 2025-04-06 Mats Lidell * test/hy-test-helpers.el (hy-test-run-failing-flag): Set to non-nil to activate failing test cases. Used by HYPB_ERT_FAILURE. * Makefile (HYPB_ERT_FAILURE): Command line controlled macro that tells if failing test cases should be run. * test/hywiki-tests.el (hywiki-tests--run-test-case): Remove per char verification in DSL. Just verify after each insert or remove as whole. (hywiki-tests--wikiword-step-check): Simplify tests after DSL change. (hywiki-tests--verify-hywiki-word): Add verification that hywiki-word-is-p agrees with hywiki-word-at. 2025-04-05 Bob Weiner * hywiki.el (hywiki-word-at, hywiki-word-is-p): If has a #section, ensure there are no invalid chars. (hywiki-word-at): Fix missing test for double quote as an opening delimiter. * test/hywiki-tests.el (hywiki-tests--sections-with-dash-space): Update code to ensure #section cannot contain quote marks. 2025-03-30 Bob Weiner * test/hywiki-tests.el (hywiki-tests--wikiword-step-check): Fix by removing matching to trailing delimiters, since that is now fixed. * hywiki.el (hywiki-word-at): Fix so if not in a delimited HyWikiWord reference or if such a reference contains more than one non-section word, then disallow spaces in section names. (hywiki-delimited-p): Add and use in above function. (hywiki--get-delimited-range-backward, hywiki--get-delimited-range-forward): Clarify required point position and inclusion of delimiters in the range. (hywiki-word-highlighted-at-p): Add to return any highlighted wikiword ref at point. 2025-03-30 Mats Lidell * test/hywiki-tests.el (hywiki-tests--add-find): Remove hywiki-directory at end of test case. 2025-03-23 Mats Lidell * test/hywiki-tests.el (hywiki-tests--run-test-case): Run DSL for testing HywikiWords. (hywiki-tests--lorem-ipsum): Surrounding test text. (hywiki-tests--verify-hywiki-word): DSL verification helper. (hywiki-tests--wikiword-step-check-verification) (hywiki-tests--wikiword-step-check-verification-with-surrounding-text): DSL based tests of WikiWords. 2025-03-20 Mats Lidell * Makefile (DOCKER_VERSIONS): Include 30.1. (docker-run): Use a volume for the elpa folder to reuse between docker runs. (recompile-docker-elpa): Recompile elpa folder to ensure files are compiled with the same Emacs as used. (docker-clean): Remove the elpa volume, useful for starting with a fresh download of the required packages. 2025-03-18 Mats Lidell * test/hywiki-tests.el (hywiki-tests--published-html-links-to-word-and-section): Fix should check. 2025-03-17 Mats Lidell * test/hywiki-tests.el (hywiki-tests--add-hywiki-hooks) (hywiki-tests--remove-hywiki-hooks, with-hywiki-buttonize-hooks) (with-hywiki-buttonize-and-insert-hooks): Remove helpers for running hooks, replaced by hywiki-tests--command-execute. (hywiki-tests--preserve-hywiki-mode): Macro that restores the current state of hywiki-mode so test case will not change users setting. Use it for all tests setting hywiki-mode. (hywiki-tests--verify-preserve-hywiki-mode): Unit test of the macro. * test/hywiki-tests.el (hywiki-tests--command-execute): Function that runs command while also executing the pre and post command hooks. Use it instead of the with-hywiki-buttonize macros. 2025-03-17 Bob Weiner * hywiki.el (hywiki-maybe-dehighlight-between-page-names): Fix to dehighlight at point if on a highlighted prior WikiWork. (hywiki--buttonize-characters): Add missing double quote char as a match char to fix "WikiWord" not highlighting in a file when read in. 2025-03-16 Bob Weiner * hywiki.el (hywiki--rehighlight-at-point): Fix to dehighlight when the first char of a wikiword is deleted. (hywiki--maybe-rehighlight-at-point): Add maybe to the name. (hywiki-maybe-dehighlight-page-name): Extract from above function and use this standalone. * HY-ABOUT: MELPA-RECIPE.el: README.md: man/hyperbole.texi: hyperbole-pkg.el ("hyperbole"): Update requirement to Emacs version 28 from 27.2 since Markdown mode now requires this. 2025-03-14 Bob Weiner * hypb.el (hypb:in-string-p): Made return the start position of the string * hywiki.el (hywiki--page-name): Rename to 'hywiki--word-only'. (hywiki--word-pre-command): Add for use in command hooks. (hywiki-debuttonize-non-character-commands, hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Rewrite all of these to capture the first HyWikiWord and then only dehighlight in post hooks if the HyWikiWords has changed. 2025-03-13 Bob Weiner * hywiki.el (hywiki-word-at): Clarify :range return value in doc string. 2025-03-08 Bob Weiner * hywiki.el (hywiki-word-at): Fix so hy:WikiWord is recognized without any delimiters. hsys-org.el (hsys-org-link-at-p): Fix to handle Org links without square or angle brackets, e.g. file:WikiWord.org. (hsys-org-thing-at-p): Add to test if point is on a specific org construct type, e.g. a link. (hsys-org-link-at-p): Remove 'with-suppressed-warnings' since inner call to 'hsys-org-thing-at-p' is now run only when in org mode. * test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): Fix expected value to be [[WikiWord]] not [[file:WikiWord.org][WikiWord]]. 2025-03-07 Bob Weiner * test/hywiki-tests.el (hywiki-tests--wikiword-identified-with-delimiters): Fix to show which wikiword item fails. * hywiki.el (hywiki-maybe-highlight-page-name): Fix to eliminate narrowing of region that hides any balanced delimiters around a HyWikiWord. Also generalize HyWikiWord range finding using updated 'hywiki-word-at'. (hywiki-word-at): Fix to allow whitespace between delimiters and between #section words when delimited. Also, if not on a wikiword and 'range-flag' is non-nil, return '(nil nil nil). 2025-03-06 Bob Weiner * hywiki.el (hywiki-maybe-highlight-between-page-names): Allow for whitespace after opening delimiter. 2025-03-02 Bob Weiner * test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): Fix expected link match strings. * hsys-xref.el (hsys-xref-identifier-at-point): Fix to return nil if xref returns a pathname as an identifier. This fixes a problem with the Action Key triggering the wrong action; it should recognize it as a pathname. * test/hywiki-tests.el (hywiki-tests--add-org-roam-node): Mock variable, `cl-struct-org-roam-node-tags' needed when org-roam package is not installed. 2025-02-27 Bob Weiner * hywiki.el (hywiki--maybe-de/highlight-sexp): Fix to narrow to region of current HyWikiWord range before calling 'func'. (hywiki--maybe-de/highlight-sexp): Add optional 'sexp-start' and 'sexp-end' args when known; range should include delimiters. (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Pass 'hywiki--buttonize-start' and 'hywiki--buttonize-end' positions to 'hywiki--maybe-de/highlight-sexp' when known rather than recomputing. * hproperty.el (hproperty:but-move): Add and use in "hywiki.el". * hywiki.el (hywiki-get-delimited-range): Rename to 'hywiki-at-range-delimiter'. (hywiki-referent-exists-p): Fix return value doc when given :range arg. Fix to send word string rather than tuple to 'hywiki-get-referent'. 2025-02-25 Bob Weiner * hywiki.el (hywiki-word-with-optional-spaces-suffix-exact-regexp): Remove use in 'hywiki-word-is-p' and replace with 'hywiki-word-with-optional-suffix-exact-regexp' which actually allows spaces. (hywiki-word-at): Add support for finding delimited WikiWords with #sections that contain multiple space separated words and returning the wikiword, start and end. (hywiki-word-at): Fix last 'looking-at' expression to not match to end of buffer. (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands, hywiki-debuttonize-non-character-commands): Rewrite and simplify. 2025-02-24 Bob Weiner * hywiki.el (hywiki--maybe-de/highlight-sexp): Ensure return the result of calling 'func'. (hywiki-buttonize-non-character-commands): Remove insert commands handled by 'hywiki-buttonize-character-commands' attached to 'post-self-insert-hook'. (hywiki-non-hook-context-p): Add. 2025-03-07 Mats Lidell * hywiki.el (hywiki-convert-words-to-org-links) (hywiki--org-export-get-reference): Fix docstrings. * hui-select.el (hbut:syntax-table): Public declare var. * test/hpath-tests.el (hpath--spaces-to-dashes-markup-anchor) (hpath--dashes-to-spaces-markup-anchor): Add tests. 2025-03-04 Mats Lidell * test/hywiki-tests.el: test/hycontrol-tests.el: test/hui-mini-tests.el: test/hproperty-tests.el: test/hactypes-tests.el: Add local-variable section disabling byte-compilation to avoid error message during user installation. The message comes from these files depend on el-mock which is not a package dependency. * .github/workflows/main.yml (jobs): Add 30.1 to CI 2025-03-03 Mats Lidell * Makefile (DOCKER_VERSIONS): Remove 27.2. * test/hywiki-tests.el (hywiki-tests--word-face-at-p): Add unit test. (with-hywiki-buttonize-and-insert-hooks): Move debuttonize before body. * hywiki.el (hywiki-word-face-at-p): Add predicate for hywiki-word-face and use it in hywiki-tests. 2025-03-02 Mats Lidell * test/hywiki-tests.el (hywiki-tests--referent-test): Add macro with boiler plate code for the reference save and restore tests. (hywiki-tests--save-referent-keyseries) (hywiki-tests--save-referent-keyseries-use-menu) (hywiki-tests--save-referent-bookmark) (hywiki-tests--save-referent-bookmark-use-menu) (hywiki-tests--save-referent-find) (hywiki-tests--save-referent-global-button) (hywiki-tests--save-referent-global-button-use-menu) (hywiki-tests--save-referent-hyrolo) (hywiki-tests--save-referent-info-index) (hywiki-tests--save-referent-info-node) (hywiki-tests--save-referent-info-node-use-menu) (hywiki-tests--save-referent-path-link) (hywiki-tests--save-referent-org-id) (hywiki-tests--save-referent-org-roam-node) (hywiki-tests--save-referent-org-roam-node-use-menu): Save and restore referent tests. 2025-02-28 Mats Lidell * .github/workflows/main.yml (jobs): Remove 27.2 from the versions to test in the CI. 2025-02-24 Mats Lidell * test/hywiki-tests.el (hywiki-tests--action-key-moves-to-word-and-section): Test action-key on WikiWords with section and line info. (hywiki-tests--published-html-links-to-word-and-section): Verify html links to sections are generated. 2025-02-23 Bob Weiner * hywiki.el (hywiki-referent-menu): Re-add accidentally deleted "Keys" key series referent type in the menu. (hywiki-set-directory): Call as part of loading hywiki.el to ensure HyWiki Org project publish settings are initialized. (hywiki--org-export-new-title-reference): Replace '--any' call from dash.el package with 'cl-some'. (hywiki-buttonize-character-commands): In prog modes, limit to comments and strings. If within a delimited pair, highlight #sections with multiple words. * test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): Fix to not expect 'hy:' prefix in HyWiki Org links. (hywiki-tests--add-org-roam-node): Handle all calls to 'org-roam-node-title'. * hywiki.el (hywiki-get-referent): Fix suffix match to use group 3 and add suffix to referent-value here. (hywiki-display-referent): Remove adding suffix to referent-value here. 2025-02-22 Bob Weiner * hywiki.el (hywiki-publish-to-html): Advise 'org-export-get-reference' to use modified Org headings as html ids. (hywiki--org-export-get-reference, hywiki--org-export-new-title-reference, hywiki--org-format-reference): Add to implement the above new html id generation scheme. * hui-select.el (hui-select-punctuation): Add 'hui-select-markup-pair' so if on the opening char of an HTML tag for example with punctuation syntax, it is treated as a markup pair from `hui-select-thing'. (hui-select-thing): Change return value to be the region selected so can be used as a delimited regional selection predicate like so: (hui-select-delimited-thing-call #'hui-select-thing). * hui-mouse.el (hkey-alist): Change action for 'hui-select-at-delimited-thing-p' condition to call 'hui-select-thing' instead of 'hui-select-delimited-thing' so does not include extra whitespace and matches the result when 'hui-select-thing' is called interactively. * hywiki.el (hywiki-referent-exists-p): Fix bug where 'word' was given as the symbol :range to use as a flag but then the call to 'hywiki-strip-org-link' mistakenly set it to nil. (hywiki-word-set-auto-highlighting): Add so can call interactively to restore HyWikiWord auto-highlighting after a command hook error. Call when enabling 'hywiki-mode'. Fix bug where :range flag was not passed to 'hywiki-word-at' call; manifested as selecting an entire string rather than the wikiword at point. * hsys-ert.el (ert-should): Constrain matches for this ibtype to the current line when not in 'ert-results-mode'. This fixes a problem of having this ibtype trigger in the "*scratch*" buffer for example where an 'ert-test-failed match is found but it is far way and unconnected to the current point. * hmouse-drv.el (hkey-help): Update {C-h A} Hyperbole help so button information is displayed at the top before long Action/Assist Key behavior description. In cases like the multi-context 'smart-org' handler where a specific action type is triggered without defining an implicit button, display the action type information at the top as well, so it is clear the specific action that will be taken at point. Fix bug where 'categ' is nil and 'htype:names' returns a list of all type names to 'concat' since expecting only a single name. When displaying Assist Key help, remove actype and action attributes from button or actype display. * hywiki.el (hywiki-directory-dired-edit): Remove bash-specific file filtering since names the dir after the filter regex and this is unattractive. Using directory-files to filter instead works fine. Also, use 'hywiki-word-regexp' to match to page names rather than a hardcoded regexp. * hycontrol.el (require 'zoom-frm): Wrap in an 'ignore-errors' so if its required library, 'frame-cmds' is not installed, no error occurs and HyControl behaves works without the library. * test/hact-tests.el (hact-tests--action-params-with-lambdas): Eliminate byte compiler 'unused args' errors by starting args with underscore. 2025-02-21 Mats Lidell * test/hywiki-tests.el (hywiki-tests--delete-parenthesised-char): Verify reported delete char issue for elisp mode. 2025-02-19 Bob Weiner * hywiki.el (hywiki-maybe-dehighlight-page-name, hywiki-maybe-highlight-page-name, hywiki-maybe-highlight-page-names): In non-'hywiki-highlight-all-in-prog-modes', highlight only in strings as well as comments. (hywiki-buttonize-non-character-commands, hywiki-debuttonize-non-character-commands): Don't trigger these pre- and post-command hooks in non-'hywiki-highlight-all-in-prog-modes' when outside of strings and comments. (hywiki-word-at): Whe match to wikiword via face highlight, ensure it matches to the wikiword format regexp. * hyrolo.el (hyrolo-expand-path-list): Fix to include a default file name even when the file does not yet exist. * test/hyrolo-tests.el (hyrolo-tests--expand-path-list): Expand matching filename. * hyrolo.el (hyrolo-expand-path-list): Use default "~/.rolo.org" when it exists and is readable. Fixes gh#rswgnu/hyperbole/672 and bug#76424. (hyrolo-get-file-list): Return a default rolo file when `hyrolo- file-list' is nil. 2025-02-16 Bob Weiner * hui-select.el (hui-select-punctuation): Add (hui-select-string pos) call when on a double quote since sometimes double quotes have punctuation syntax, e.g. text-mode. (hui-select-string-p): Fix off-by-one error when scan-sexps backwards with point after an ending double quote. When compile, add (require 'hbut) for 'hbut:syntax-table'. Fix string selection in 'text-mode' by using 'hbut:syntax-table'. * hywiki.el (hywiki-org-link-export): In html and markdown conversion, call 'hpath:spaces-to-dashes-markup-anchor'. (hywiki-referent-menu): Fix missing s typo in 'hywiki-add-sexpression'. (hywiki-convert-words-to-org-links, hywiki-org-link-export): Update doc string with specific formatting. (hywiki-org-link-resolve): Rewrite to return full referent when not a pathname. (hywiki-referent-menu): Rename 'LinkPath' to 'pathLink' and properly alphabetize entries by invocation character (first capital letter). (hywiki-word-to-org-link): Add to convert a single HyWikiWord reference to an Org link for use during publishing. Use in `hywiki-convert-words-to-org-links'. 2025-02-09 Bob Weiner * hpath.el hpath:spaces-to-dashes-markup-anchor): Add. (hpath:normalize-markup-anchor): Rename to 'hpath:dashes-to-spaces-markup-anchor'. 2025-02-08 Mats Lidell * hywiki.el (hywiki--sitemap-file): Helper function for getting the sitemap file-name. (hywiki-org-export-function): Only use org publishing for the sitemap file. (hywiki-convert-words-to-org-links): Highlight wiki page names so overlays are defined before looking for them. 2025-02-07 Mats Lidell * test/hywiki-tests.el (hywiki-tests--save-referent) (hywiki-tests--save-referent-use-hyperbole-menu): Tests for using the cached page and referent data. * hywiki.el (hywiki-make-referent-hasht): Return hasht when rebuilding from load data. 2025-02-07 Bob Weiner * hywiki.el (hywiki--extend-yanked-region): Add and call in 'hywiki-highlight-on-yank' to extend a yanked region to include the rest of a delimited pair or string. * hui-select.el (hui-select-string-p): Fix to make multi-line string selection work properly whether on the opening or closing double quote mark, using 'scan-sexps'. Update doc string. 2025-02-06 Bob Weiner * hywiki.el (hywiki-debuttonize-non-character-commands, hywiki-buttonize-non-character-commands): Add support for 'kill' commands and fix that removing a trailing delimiter did not rehighlight HyWikiWords properly. 2025-02-05 Mats Lidell * hywiki.el (hywiki-add-org-id): Suppress byte compile warnings for calling org-id-get with different number of args. Later versions have a fourth optional arg that we use. 2025-02-02 Mats Lidell * test/hui-tests.el (hui--kill-highlighted-region-default-settings): Add test for hui-kill-region with the default settings for transient-mark-mode and mark-even-if-inactive. 2025-02-02 Bob Weiner * hywiki.el (hywiki-buttonize-non-character-commands): Simplify to improve HyWikiWord reference highlighting when remove a balanced delimiter. This requires that if a closing delimiter is removed that the opening delimiter is temporarily removed so highlighting can proceed properly. Then the opening delimiter is reinserted, invisibly to the user. (hywiki-buttonize-non-character-commands): One more fix to highlight with point at the beginning of the previously delimited region. * hui.el (hui-kill-region): Fix to default 'beg' arg to (mark) only when 'interactive-flag' is non-nil. (hui-kill-ring-save): Fix to set 'beg' and 'end' to (mark) and (point) when needed and called interactively. Also, set 'this-command' to 'kill-ring-save'. * test/hui-tests.el (hui--kill-empty-region-twice): Remove assume failure. * hui.el (hui-kill-region): Remove use of (not mark-even-if-inactive) in 2nd cond clause since we want to be able to select a delimited region regardless of any mark setting when Hyperbole is active. Fix error when mark is set and mark-even-if-inactive is t and hyperbole-mode is t, but no highlighted region, then two C-w calls in a row used to trigger an error but should just do nothing silently if not on a delimiter. * hywiki.el (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Don't run these hook functions if in the active minibuffer or if edebugging and a minibuffer is active. (hywiki-maybe-highlight-balanced-pairs): Fix to return t unless no opening or closing pair syntax is found. (hywiki-maybe-highlight-page-name): Use return value of 'hywiki-maybe-highlight-balanced-pairs'; this fixes improper highlighting of #section with spaces within a delimited pair after such a HyWikiWord link is activated. (hywiki-buttonize-non-character-commands hywiki-debuttonize-non-character-commands): Fix to catch cmds that have '-delete-' in their names but don't start with 'delete'. (hywiki-buttonize-non-character-commands): Fix to re-highlight any HyWikiWords within a delimited region whose delimiter is removed by calling 'hywiki-maybe-highlight-page-names' with the previously delimited region. * hpath.el (hpath:normalize-markup-anchor): Add to separate out normalization of markup anchors to match the display form of the anchor's referent based on the enabled modes in the current buffer. * hyperbole.el (hyperbole--mark-even-if-inactive): Remove, not used. * hywiki.el (hywiki-get-file): Rename to 'hywiki-get-page-file'. 2025-02-01 Mats Lidell * test/hui-tests.el (hui--kill-empty-region-twice): Unit test. 2025-01-30 Mats Lidell * test/hui-mini-tests.el (hui--menu-read-from-minibuffer): Unit test. * test/MANIFEST: Added hui-mini-tests.el. * test/hui-mini-tests.el: New file. Test for hui-mini. * hui-mini.el (hui:menu-read-from-minibuffer): Use replace-regexp-in-string for compatibility with Emacs 27.2. 2025-01-29 Mats Lidell * Makefile (HYPB_GEN, HYPB_ELC, HYPB_ELC_ELN, HYPB_at): Verbosity macros. (VERSIONFLAGS, emacs-environment): Extract to own target to reduce noise in regular builds. (HYPB_BIN_WARN): Set default to 'all. 2025-01-27 Mats Lidell * hywiki.el (hywiki-cache-save): Shorten docstring. 2025-01-26 Mats Lidell * .github/workflows/static.yaml: Remove deploy static content to pages action. Default deploy is all we need. 2025-01-26 Bob Weiner * test/hywiki-tests.el (hywiki-tests--action-key-on-wikiword-and-section-displays-page, hywiki-tests--action-key-on-wikiword-and-line-column-displays-page): Fix both of these so they no longer fail. * test/hy-test-helpers.el (hy-delete-dir-and-buffer): Add support for deleting automatically created HyWiki cache .hywiki.eld file before trying to delete directory. * hui-select.el (hui-select-at-delimited-sexp-p): Correct doc. * hywiki.el (hywiki-get-referent-hasht): Load/build referent hash table t if invalid or empty. * hasht.el (hash-prin1): Add 'reverse' arg and use in 'hywiki-cache-save'. * hywiki.el (hywiki-maybe-highlight-page-names, hywiki-maybe-highlight-wikiwords-in-frame, hywiki-add-page): Replace calls to 'hywiki-directory-set-mod-time' and 'hywiki-directory-set-checksum' with 'hywiki-env-save'. (hywiki--referent-alist): Add. (hywiki-cache-default-file, hywiki-cache-file, hywiki-cache-default-file, hywiki-cache-edit, hywiki-cache-save): Add to save HyWikiWord referent relations in a persistent cache. This makes HyWikis with multiple referent types work across Emacs sessions. (hywiki-make-referent-hasht): Add load from persistent cache. * README.md: Update to show HTML, Info and PDF links to the Hyperbole Manual as the first section in this file for easy reference. * hmouse-tag.el (smart-emacs-lisp-mode-p): Add 'lisp-data-mode' support for .eld files. * hywiki.el (hywiki-set-directory): Ensure hash table has been created if skip call 'hywiki-make-referent-hasht'. * hasht.el: Change to use lexical scope. (hash-make): Speed up by referencing 'reverse' value only once. (hashp): Remove, use builtin 'hash-table-p' instead. 2025-01-20 Mats Lidell * test/test-helpers-tests.el (test-helpers-tests--make-random-wikiword): Add test. * test/MANIFEST: Test file for the test helpers. * test/hy-test-helpers.el (hy-make-random-wikiword): Helper for making random WikiWords. 2025-01-20 Bob Weiner * hsys-ert.el (require 'hbut): For 'defib'. * test/hui-tests.el (hui--kill-highlighted-region, hui--kill-non-highlighted-region): Separate and rename these tests. Rearrange letters in each subtest so can find which should is being called. * hui.el (hui:validate-region): Add to check for valid region args. (hui-kill-ring-save): Call above function. * test/hui-tests.el (hui--kill-region, hui--kill-region-multiple-kill): Add let of 'mark-even-if-inactive'. Also, interactively, set beg and end only if 'mark-active' is non-nil. 2025-01-19 Bob Weiner * hui.el (hui:kill-region): Complete doc string. Set 'region' arg to nil when killing a delimited region at point. Also use 'hui-select-at-delimited-thing-p' instead of 'hui-select-delimited-thing'. (hui:delimited-selectable-thing) hui:delimited-selectable-thing-and-bounds): Fix so doesn't create an in-memory Hyperbole button at point if already doing so in a prior stack frame. The latter is used in 'hui-kill-ring-save' bound to {M-w} in 'hyperbole-mode'. (require 'hversion): Since 'hyperb:stack-frame' is defined there and used herein. * hsys-ert.el (ert-should): Add this new file and implicit button type. See the Commentary therein for details. hibtypes.el (load "hsys-ert"): Load above ibtype at near lowest priority. hui-mouse.el (hkey-alist): Move priority of ert-results-mode to after (hbut:at-p) so can define implicit buttons in this mode that override the standard behavior. man/hyperbole.texi (Smart Key - ERT Results Mode): Update order in the Hyperbole manual. Also add `ert-should' ibtype. MANIFEST, Makefile (EL_COMPILE): Add "hsys-ert.el". * hypb.el (hypb:with-marker): Add context macro for setting a buffer marker and automatically setting it to nil at the end of the context. * hui.el (hui:kill-region): Update to only apply completion behavior when 'dynamic-completion-mode' is enabled and call subfunctions interactively in interactive flag is set. (hui-kill-region): Simplify 'hui-select-delimited-thing'. 2025-01-19 Mats Lidell * test/hui-tests.el (hui--kill-region-multiple-kill, hui--kill-region): Test hui-kill-region. 2025-01-18 Bob Weiner * hywiki.el (hywiki-get-referent-hasht): Fix when building 'hywiki--any-wikiword-regexp-list', allow for either or both #section and :Lnum:Cnum. This fixes not highlighting "WikiWord:L2". * hyrolo.el (hyrolo-refresh-file-list): Add to refresh internal expanded list of HyRolo search files. test/hyrolo-tests.el (hyrolo-tests--get-file-list): Fix this test by using the above function. * hproperty.el (hproperty:but-get-first-in-region): Add so is clear when want only the first button matching 'property' and 'value'. Call in 'hproperty:but-get'. (hproperty:but-get-all-in-region): Change to return all matches for 'property' and 'value' to fix major HyWiki problem with not dehighlighting WikiWords when a page is deleted. * test/hywiki-tests.el (hywiki-tests--add-org-roam-node): Fix mocks. * hui-mini.el (hui:menu-hywiki): Change HyWiki/Create to call 'hywiki-word-create-and-display'. * hywiki.el (hywiki-display-referent-type): Help user with an error if 'referent-type' is invalid. (hywiki-allow-suffix-referent-types): Add to specify referent types that support suffixes. (hywiki--add-suffix-to-referent): Uncomment and use in 'hywiki-display-referent'. (hywiki-add-prompted-referent): Rename to 'hywiki-create-referent'. (hywiki-create-referent-and-display): Add. (hywiki-word-create-and-display): Add and use for HyWiki/Create. (hywiki-add-page): Display message about HyWikiWord page being added or existing when called interactively. (hywiki-create-referent): Display message showing referent when called interactively or with new optional prefix arg 'message-flag'. (hywiki-create-page): Alias to 'hywiki-add-page' for consistency with 'hywiki-create-referent'. (hywiki-word-at): Fix to utilize 'range-flag' when on a highlighted wikiword. (hywiki-display-referent-type): If point is on a HyWikiWord that matches the one given as an argument, then set the current implicit button attributes of referent-type and referent-value. Specific types of referent display functions can override the value setting if need be. (hywiki-page-strip-section): Rename to 'hywiki-word-strip-suffix'. (hywiki-word-at-point): Add to return wikiword stripped of any suffix. (hywiki-get-singular-wikiword): Strip any suffix from wikiword. (hywiki-referent-exists-p): Let 'hywiki-get-referent' make word singular and remove suffix. (hywiki-word-read, hywiki-word-read-new): Update doc to use referent instead of page and call 'hywiki-word-at-point' instead of 'hywiki-word-at'. (hywiki-word-create): Add and autoload to create but not display a referent for a HyWikiWord. Useful as a key binding. (hywiki-add-org-roam-node): Fix to set referent-value to node title rather than the node itself. (hywiki-add-org-roam-node, hywiki-display-org-roam-node): Fix to use Org Roam node title/headline rather than the node itself. (hywiki-mode): Improve doc. (hywiki-display-info-node): Use 'link-to-Info-node' action type. 2025-01-12 Mats Lidell * test/hywiki-tests.el (hywiki-tests--action-key-on-hywikiword-displays-page): Rename so hy:WikiWord is mentioned. Fix removal of temp files. (hywiki-tests--assist-key-on-hywikiword-displays-help): Rename so hy:WikiWord is mentioned and refactor to verify help buffer is shown. (hywiki-tests--action-key-on-wikiword-displays-page) (hywiki-tests--action-key-on-wikiword-and-section-displays-page): New tests for verifying display of pages with and without sections. (hywiki-tests--wikiword-identified-with-delimiters): Add test for WikiWord with a single hash mark. (hywiki-tests--action-key-on-wikiword-and-line-column-displays-page): Test line and column specifiers with WikiWords. 2025-01-09 Mats Lidell * test/MANIFEST: Add hycontrol-tests.el * hycontrol.el (hycontrol-framemove-direction): Quit hycontrol before displaying error message. * test/hycontrol-tests.el (hycontrol-tests--framemove-direction-error-message): Test. 2025-01-05 Bob Weiner * hywiki.el (hywiki-org-link-resolve, hywiki-org-link-export): Handle :Lnum:Cnum at the end of a link. (hywiki--add-section-to-referent): Rename to 'hywiki--add-suffix-to-referent'. (hywiki-get-referent, hywiki-display-referent): Handle :Lnum:Cnum at the end of a HyWikiWord reference. (hywiki-word-suffix-regexp): Add. (hywiki-word-with-optional-spaces-section-exact-regexp): Add. (hywiki-word-*-section-*-regexp): Rename to 'hywiki-word-*-suffix-*-regexp'. * hui-mini.el (hui:menu-hyperbole-prefix): Remove outer 'kbd' call so returned value stays as a string. (hui:menu-this-command-keys): Add to produce a string sequence of keys that invoke a Hyperbole menu command. (hui:menu-act, hui:menu-choose, hui:menu-item): Fix bug#75380 by handling when 'hyperbole' command is bound to a non-string key. Allow 'hui:menu-items' to be a vector rather than only a string. * hypb.el: Add 'hypb:buffer-file-name' to handle indirect buffers whose file name is only in its base buffer and replace all uses of the variable 'buffer-file-name' with this call. This allows creation of explicit buttons in indirect buffers. hbmap.el, hmail.el, hmoccur.el, hmouse-info.el, hsys-org.el, hsys-org-roam.el: Add (require 'hypb) for 'hypb:buffer-file-name’ definition. * hyperbole.el (hkey-initialize): Override {C-w} in 'hyperbole-mode-map' as has long been done with {M-w}. hui.el (hui:kill-region, hui-kill-region): Add to kill delimited things at point without the need to visually select them. 2025-01-04 Bob Weiner * hbut.el (ibut:create): hywiki.el (hywiki-display-page): hbdata.el (hbdata:ebut-build): Change referent to referent-type and referent-value. * hbut.el (ibut:label-set): Set 'loc attribute and 'save-match-data'. * hib-debbugs.el (debbugs-query:at-p): Simplify to use word separators and thus support double quoted "bug#123". * hycontrol.el (hycontrol-framemove-direction): If "framemove.el" is not manually installed (no package available), trigger an error that shows where to get it from. * hbut.el (ibut:set-name-and-label-key-p): Revert some changes to avoid failures in recognition of ibuttons. * hywiki.el (hywiki-word-line-and-column-numbers-regexp): Add and use in 'hywiki-word-with-optional-section-regexp' and 'hywiki-word-with-optional-section-exact-regexp'. (hywiki-get-referent, hywiki-page-strip-section): Update to handle optional line and col numbers. (hywiki--word-and-buttonize-character-regexp): Update to make Group 1 be all but any last delimiter character. (hywiki-get-buttonize-characters, hywiki-maybe-dehighlight-page-name, hywiki-maybe-highlight-page-name, hywiki-word-at)): Add : to list of excluded chars that do not end a HyWikiWord reference. hpath.el (hpath:line-and-column-numbers): Add to match line and column numbers without including any anchoring to the end of a larger regexp. Use in 'hpath:line-and-column-regexp' and "hywiki.el". * hbut.el (ibut:set-name-and-label-key-p): Rewrite to not set any hbut:current attributes unless find a valid 'lbl-start', so do not end up with a partial set of insufficient attributes. 2025-01-02 Mats Lidell * test/hactypes-tests.el (hactypes-tests--link-to-Info-index-item): Verify actypes::link-to-Info-index-item. * test/hywiki-tests.el (hywiki-tests--add-info-index): Update test to verify Info index display. * hywiki.el (hywiki-display-info-index): Use link-to-Info-index-item. 2024-12-30 Mats Lidell * test/hypb-tests.el (hypb--verify-info-index-is-correct): Ensure info index is correct. 2024-12-28 Bob Weiner * hywiki.el (hywiki-convert-words-to-org-links): Error if called within a read-only buffer. (hywiki-map-words): Widen buffer before gathering all wikiwords. (hywiki-org-make-publish-project-alist): Add :html-link-home, :html-preamble, :sitemap-filename, and :with-date properties. (hywiki-get-file): Fix to handle #section suffix which fixes navigating to sections from HyWikiWord#section links. 2024-12-27 Mats Lidell * hywiki.el (hywiki-add-to-referent): Use when-let*. * hproperty.el (hproperty:char-property-start) (hproperty:char-property-end): Use when-let*. 2024-12-27 Bob Weiner * test/hywiki-tests.el (hywiki-tests--add-activity, hywiki-tests--add-org-roam-node): Change 'require' to 'hypb:require-package' so prompt user to install package when needed. * hywiki.el (hywiki-word-read, hywiki-word-read-new): Fix by replacing call to 'hywiki-get-wikiwords-obarray' with 'hywiki-get-referent-hasht'. (hywiki-get-wikiwords-obarray): Remove, no longer used. (hywiki-display-*): Fix to take referent-value rather than referent since already know the type when such functions are called. * hywiki.el (hywiki-display-referent): Stop removing any #section from wikiword sent to referent functions. (hywiki-add-prompted-referent): Remove #section from wikiword before creating hywiki-referent-menu prefix string. (hywiki--add-section-to-referent): Add to insert #section into referent value. Use in 'hywiki-get-referent'. (hywiki-display-page , hywiki-display-referent, hywiki-get-referent): Exclude # from 'section' for consistency. (hywiki-add-activity, hywiki-add-org-roam-node): Use 'hypb:require-package' to install activity or org-roam package as required when invoking these functions. 2024-12-26 Bob Weiner * test/hywiki-tests.el (hywiki-tests--add-activity, hywiki-tests--add-org-id): Fix Mats prior updates to work with new typed referents. * hywiki.el (hywiki-add-path-link): Add optional FILE and POS arguments to better evaluate intermittent test bug in 'hywiki-tests--add-path-link'. It fails on a call to this function only when all tests are run; never fails interactively. * test/hy-test-dependencies.el (load "pcomplete"): Only on rsw's linux system, load this library to eliminate cyclic dependency errors in 11 tests. * hasht.el: Rewrite to use Emacs built-in hash tables while keeping the same calling interace as before. (hash-map): Fix bug where 'func' was not quoted when embedded within lambda function. (hash-resize, hash-resize-p, hash-next-prime, hash-obarray, hash-prime-p): Remove, no longer needed nor used in Hyperbole. (hash-deep-copy): Add deep copy of cons cells. * hbut.el (ibut:create): When debug on error, display *Messages* buffer with error message. * hywiki.el (hywiki-make-referent-hasht): Optimize when no non-page entries. * hywiki.el (hywiki-add-page): Return '(page . "") rather than just "". Update doc string. (hywiki-add-to-referent): Update doc string. (hywiki-display-referent): Remove unneeded clauses due to new typed referents. Update doc string. (hywiki-find-referent): Update doc string. (hywiki-display-referent-type): Update doc string with computed display function name. (hywiki-get-referent): Rewrite to handled typed referents. (hywiki-display-page): Fix to allow both typed referents and file-name alone as referent input. (hywiki-add-referent): Trigger error if 'hash-add' call fails and fix doc string to cover all return values. (hywiki-validate-referent): Add to validate referents before adding to the HyWiki hash table. Use in 'hywiki-add-referent'. 2024-12-25 Bob Weiner * hywiki.el (hywiki-org-link-resolve): Fix doc to include all possible return value types and rewrite to new typed referents. 2024-12-24 Bob Weiner * hywiki.el: Rename all 'page(s)-hasht' to 'referent-hasht'. (hywiki-non-page-elts): Rewrite to new typed referents and inline the function. Rename 'hywiki--any-page-regexp-list' to 'hywiki--any-wikiword-regexp-list'. Rename 'hywiki-maybe-highlight-page-names-in-frame' to 'hywiki-maybe-highlight-wikiwords-in-frame'. Rename 'hywiki-get-page-list' to 'hywiki-get-wikiword-list'. 2024-12-24 Mats Lidell * test/hywiki-tests.el (hywiki-tests--a-wikiword-in-hywiki-directory) (hywiki-tests--wikiword-identified-with-delimiters): Add tests for HyWikiWords with delimiters. 2024-12-23 Bob Weiner * test/hywiki-tests.el (hywiki-tests--add-*): Rewrite to handle typed referents. * hywiki.el (hywiki-add-link): Rename to 'hywiki-add-path-link'. (hywiki-add-page): Document optional 'force-flag' arg. (hywiki-add-page-and-display): Improve doc on prompting for a referent type. (hywiki-add-page-and-display): Rename to 'hywiki-create-page-and-display'. (hywiki-referent-prompt-flag): Add this new customization. (hywiki-create-page-and-display): Set prompt-flag t if call-interactively and 'hywiki-referent-prompt-flag' is non-nil. (hywiki-display-referent-type): Add to display referents other than pages. (hywiki-display-referent): Call above function. (hywiki-add-*): Rewrite all referent add functions to just store the referent value and add hywiki-display-* functions to perform the referent display instead. This allows for easy addition of new referent types. (hywiki-display-page-function): Fix doc to say function takes a pathname, not a HyWiki page name. (hywiki-create-page): Add type to hash value so is a cons of (page . ). 2024-12-23 Mats Lidell * test/hywiki-tests.el (hywiki-tests--add-activity) (hywiki-tests--add-org-roam-node): Add tests. 2024-12-22 Bob Weiner * hywiki.el (hywiki-find-referent): Fix doc string to describe how a prefix arg prompts for the type of referent to link to. (hywiki-add-prompted-referent, hywiki-referent-menu): Set 'hkey-value' to wikiword to pass to expressions in this menu, invoked via the Smart Keys. * test/hywiki-tests.el (hywiki-tests--add-org-id): Fix so :type argument is a list as required, not a symbol. * hact.el (action:param-count): Add and use in 'hywiki-add-org-id'. hywiki.el (hywiki-add-org-id): Pre-9.7 versions of org-id-get did not accept the 4th optional INHERIT arg, so fix by conditionally sending this argument. * hui-mouse.el (smart-magit-tab): Change 'if-let' (now obsolete) to 'if-let*'. * test/hywiki-tests.el (hywiki-tests--add-org-id): Fix final test to just look for prefix of "ID: ". * hywiki.el (hywiki-clear-pages-hasht): Also clear 'hywiki--any-page-regexp-list'. (hywiki-add-org-id): Fix first two lines of doc string. * test/hywiki-tests.el (hywiki-tests--add-org-id): Fix to not compare error string values since when compiled may not be a string but just a pair of indexes into one. * hywiki.el (hywiki-let-directory, hywiki-set-directory, hywiki-directory-changed): Add to support 'let' changes of 'hywiki-directory'. (hywiki-clear-pages-hasht): Simplify to nullify hywiki hash table and not try to reuse a previously build table. 2024-12-16 Mats Lidell * test/hywiki-tests.el (hywiki-tests--sections-with-dash-space) (hywiki-tests--get-singular-wikiword) (hywiki-tests--get-plural-wikiword, hywiki-tests--add-referent) (hywiki-tests--add-bookmark, hywiki-tests--add-command) (hywiki-tests--add-find, hywiki-tests--add-global-button) (hywiki-tests--add-hyrolo, hywiki-tests--add-info-index) (hywiki-tests--add-info-node, hywiki-tests--add-key-series) (hywiki-tests--add-link, hywiki-tests--add-org-id) (hywiki-tests--get-page-list-for-new-wiki-directory-after-added-referent): Tests. 2024-12-16 Mats Lidell * Makefile (docker-all-tests, docker-batch-tests): No byte compiling to speed up running tests. 2024-12-16 Bob Weiner * test/hbut-tests.el: Change most "/tmp" to "/tmp/" for ease of comparison with 'default-directory'. 2024-12-15 Bob Weiner * test/hywiki-tests.el (hywiki-tests--action-key-on-wikiword-displays-page): Change mocklet call from 'hywiki-add-page' to newer 'hywiki-display-referent' to fix the test. * test/hywiki-tests.el (hywiki-tests--active-in-current-buffer-p): Force 'hywiki-mode' nil when testing that hywiki is not active. * hpath.el (hpath:shorten): Fix to normalize directory paths to end with a dir separator char so compare properly to `default-directory'. * hbut.el (ebut:get): Remove unneeded local 'actype'. * test/hywiki-tests.el (hywiki-tests--assist-key-on-wikiword-displays-help): Update to not use mocklet and to check WikiWord returned. * hywiki.el (hywiki-word, hywiki-word-at): Rewrite to get the proper start and end buffer positions of any wikiword string, accounting for Org link complexities much better than before. * hbut.el (hbut:source): Update doc to reflect that the caller must have successfully searched for 'hbut:source-prefix' prior to calling this. (ibut:set-name-and-label-key-p): Add set of ibut 'loc attribute needed by a number of tests. * hmouse-tag.el (smart-tags-file-list, smart-ancestor-tag-files): Fix to handle a list of directories as the first argument in which to look for TAGS files, as used by 'smart-man-c-routine-ref' in "hui-mouse.el". hui-mouse.el (smart-man-c-routine-ref): Update to support use of newer 'Man-header-file-path' variable. 2024-12-02 Bob Weiner * hywiki.el (hywiki-clear-pages-hasht): Add and use in defcustom :set method of `hywiki-directory' to ensure hash table is emptied including all non-page referents when 'hywiki-directory' is changed. 2024-12-01 Bob Weiner * hmouse-drv.el (action-key-depress, assist-key-depress, hkey-help): Add calls to (hattr:clear 'hbut:current) to clear 'hbut:current' button attributes before depress, * hbut.el (ibut:create): Move setting of 'hbut:current HyWiki 'referent attribute from 'hkey-help' to this function, so works with all ibutton reports. Also, remove 'name-and-lbl-key-flag' from check of whether to set attributes to the current button values. Also, move call of 'hbut:report' when called interactively to here from 'ibut:set-name-and-label-key-p' so works with all ibutton reports. (ibut:set-name-and-label-key-p): Fix to return non-nil only when 'lbl-key' or 'name' are set. (ebut:get): Remove Hyperbole V1 setting of 'referent' attribute from (hbdata:referent) so as not to confuse new use of same attribute for HyWiki referents. hibtypes.el (action): Add :name arg to 'ibut:create' call. * hywiki.el (hywiki-display-page): Set 'referent' attribute for current button. * hsys-org.el (hsys-org-link-at-p): Change to ignore [[hy:MyWikiWord]] links. hywiki.el (hywiki-word-at): Change to handle [[hy:MyWikiWord]] links. (hywiki-strip-org-link): Also strip hy: prefix from a link. * hywiki.el (hywiki-get-plural-wikiword): Return non-nil iff 'hywiki-allow-plurals-flag' is set. (hywiki-get-page-hasht): Remove any nil return values from calling 'hywiki-allow-plurals-flag'. (hywiki-allow-plurals-flag): Reset 'hywiki--any-page-regexp-list' whenever this variable is set. * test/hywiki-tests.el (hywiki-tests--action-key-on-wikiword-displays-page, hywiki-tests--assist-key-on-wikiword-displays-help): Update to test Action and Assist Key behavior. * hywiki.el: Add additional require, defvar and declare-function to remove byte-compiler warnings. 2024-11-25 Bob Weiner * hywiki.el (hywiki-referent-menu): Make all menu calls interactive and update all hywiki-add-* interactive specs to take any wikiword at point and if not, then prompt with completion for one. * hui-mini.el (hui:menu-hywiki): HyWiki menu replace FindPage with FindReferent. (hui:menu-act): Fix improper closing parens before end of setq causing a bug where always returned nil. 2024-11-25 Mats Lidell * kotl/kmenu.el (kotl-menu-common-body): Use kotl-kview. * .github/workflows/static.yaml: Static workflow for publishing the manual to a static site using GitHub Pages. 2024-11-24 Bob Weiner * hywiki.el (hywiki-add-page-and-display): Add optional prefix arg PROMPT-FLAG for use in 'hywiki-find-referent' call. Rewrite. Update doc. This allows setting custom referent types when passing a prefix arg to the the HyWiki/Create menu item. (hywiki-display-page, hywiki-get-referent): Call 'hywiki-get-file' to expand page file path, rather than doing it manually. Return referent. * hmouse-drv.el (hkey-help): If a HyWikiWord ibut, save its referent as an attribute. * hui-menu.el (hui-menu-hywiki): Rename 'Add-HyWiki-Link' to 'Insert-HyWiki-Link'. hywiki.el (hywiki-add-link): Rename to 'hywiki-insert-link'. * hywiki.el (hywiki-read-new-page-name, hywiki-read-page-name): Rename to 'hywiki-word-read-new' and 'hywiki-word-read'. Change prompt from "HyWiki Page Name" to "HyWikiWord" since not all referents are pages any more. (hywiki-word-grep): Add to compute and perform HyWikiWord grep. (hywiki-get-page): Rename to 'hywiki-get-referent'. (hywiki-get-singular-page-name): Rename to 'hywiki-get-singular-wikiword'. (hywiki-get-plural-page-name): Rename to 'hywiki-get-plural-wikiword'. (hywiki-page-exists-p): Rename to 'hywiki-referent-exists-p' and improve doc string. (hywiki-display-referent): Fix to use existing referent if any before calling 'hywiki-add-page'. (hywiki-referent-menu): Change 'Path' to 'Link' and add 'Page' to reset to a standard HyWiki Page link. (hywiki-add-path): Rename to 'hywiki-add-link'. (hywiki-add-page): Remove unused 'prompt-flag' arg and replace with optional 'force-flag' to force overwriting an existing HyWikiWord referent. (hywiki-add-to-page): Rename to 'hywiki-add-to-referent' and rewrite to handle referents. Change arg 'start-flag' to 'position' of insert. * hactypes.el (link-to-buffer-tmp, link-to-file): Fix 'point' arg to accept markers. * hywiki.el (hywiki-make-pages-hasht): Fix to maintain non-page referent elements when rebuild the hash table. * hibtypes.el (hywiki-word:help): Add so Assist Key on a HyWikiWord customizes its referent type and link. 2024-11-24 Mats Lidell * Makefile (website-local-devel): Update the website files locally for development version. (website-devel): Push local updates to go live at https:/www.gnu.org/software/hyperbole/devel. 2024-11-23 Bob Weiner * hui.el (hui:link-possible-types): Allow for :CUSTOM_ID: in addition to :ID: matches for Org IDs. * hib-kbd.el (kbd-key:normalize): Fix interactive expr to read a string rather than a single key sequence. * hywiki.el (hywiki-get-wikiwords-obarray): Add. (hywiki-read-new-page-name, hywiki-read-page-name): Replace 'hywiki-get-page-list' completion table with 'hywiki-get-wikiwords-obarray' which is more efficient. (hywiki-find-page): Rename to 'hywiki-find-referent'. Rename 'hywiki-find-page-hook' to 'hywiki-find-referent-hook'. (hywiki-word-activate): Change so automatically creates pages that do not exist, except for the first HyWiki page, in which case, prompts before creation. (hywiki-display-page-function): Add this customization function that displays HyWiki pages. (hywiki-display-page): Add to use above variable to display HyWiki pages. (hywiki-word): Update doc with first page prompting. (hywiki-maybe-highlight-page-names): Return nil so 'hywiki-display-referent' returns nil when this is called. (hywiki-get-file, hywiki-display-referent): Improve #section matching to ignore #autosave# file names. (hywiki-allow-plurals-flag): Add new customization, defaults to t to treat plural HyWikiWords the same as singular ones. (hywiki-get-page): Handle HyWikiWord plurals based on the above flag. * hactypes.el: Document potential second arg of referent (point) when referent is already read into a buffer and user wants to link to the current point. * hywiki.el (hywiki-add-*): Add to allow each HyWikiWord to have a custom referent when created with a prefix argument. Referent type is prompted for, similar to when creating other Hyperbole buttons. (hywiki-add-prompted-referent): Add to prompt for and link a HyWikiWord to a custom referent or action type. (hywiki-referent-menu): New minibuffer menu used by the above function. (hywiki-get-page): Expand to return all new possible referent types. (hywiki-display-referent): Add to display all of the new referent types. (hywiki-read-new-page-name): Use any potential WikiWord at point as the default. 2024-11-23 Mats Lidell * Makefile (BATCHFLAGS): Use debug-on-error's default value nil. Emacs 31 introduces calling man using with-demoted-errors which causes an error when requiring man when debug-on-error is set to t. 2024-11-22 Bob Weiner * hywiki.el (hywiki-find-page): Add missing second interactive arg value, current-prefix-arg. Rewrite to allow for different actions per HyWikiWord or a single overriding function. 2024-11-19 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-name): Fix that adding numbers to the middle of a HyWikiWord did not dehighlight it; see updates at the end of this function. 2024-11-18 Bob Weiner * hactypes.el (require): Remove require of 'man' and do it only in man-show where needed. This may allow CI/CD build of docker Emacs master branch that lacks 'man' package. * hui-tests.el (hui--ibut-link-directly-to-org-header-first-column): Remove dir from fileb when comparing to in-buffer filename and do the same for other tests in this file. 2024-11-17 Bob Weiner * hpath.el (hpath:call): Allow for # sections with # chars embedded. * hpath.el (hpath:shorten): First make path relative to any optional RELATIVE-TO path (default = 'default-directory') and expand both paths. This makes inserting a link from the other window display the minimal path to produce the link relative to the source path. * hui.el (hui:link-possible-types): Ensure outline modes trigger only when 'buffer-file-name' is non-nil since is used in the return value. Simplify 'link-to-string-match' and other link types. * hpath.el (hpath:variables): Add 'hywiki-directory' for use in path substitutions. * hywiki.el (hywiki-word-at, hywiki-maybe-dehighlight-page-name): Fix to exclude any char after the HyWikiWord, if any. * hproperty.el (hproperty:but-get-all-in-region): Return only overlays that still point to some buffer (may have overlay references that have been deleted and point to no buffer). * test/hywiki-tests.el (hywiki-tests--verify-face-property-when-editing-wikiword-first-char): Fix middle test after delete-char from HyWikiWord. * hui-mouse.el (smart-eobp): Trigger only if eobp = eolp or if only whitespace on line preceding eobp. 2024-11-16 Bob Weiner * hywiki.el (hywiki-debuttonize-non-character-commands): Remove (let ((hywiki-word-highlight-flag))) which was preventing dehighlighting at the start of a WikiWord when the first character was deleted. 2024-11-17 Mats Lidell * Makefile (run-emacs): Run Emacs as a make target for use with docker. 2024-11-16 Mats Lidell * test/hsys-org-tests.el (hsys-org--meta-return-on-end-of-line): Add test case for eol action in org-mode. * hui-mouse.el (hkey-alist): Guard action-key-eol-function from acting when we should delegate to org-mode. 2024-11-13 Bob Weiner * hywiki.el (hywiki-maybe-dehighlight-page-name, hywiki-maybe-highlight-page-name): Fix that newline was not being skipped back over to see HyWikiWord since in Org mode it has end-comment syntax (>) rather than whitespace syntax (-). test/hywiki-tests.el (hywiki-tests--face-property-for-wikiword-with-wikipage): The above fixes the 2nd test case here. test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): The above fixes this test. * hywiki.el (hywiki-highlight-on-yank): Fix off-by-one error when string extends to (point-max). 2024-11-10 Bob Weiner * hui-window.el (action-key-modeline-left-edge-function, action-key-modeline-left-edge-function, assist-key-modeline-left-edge-function, action-key-modeline-right-edge-function): Add these customizations. (action-key-modeline-click-left-edge, assist-key-modeline-click-left-edge, action-key-modeline-click-right-edge, assist-key-modeline-click-right-edge): Add these functions as defaults for the above customizations. (hmouse-modeline-default-help-echo): Replacement for default 'mode-line-default-help-echo' function that produces mode line hover doc for the Smart Mouse Keys. hyperbole.el (hyperbole--enable-mode): Update mode-line hover doc in blank areas for button-2 and button-3 if using unshifted Smart Keys. * hui-jmenu.el (hui-menu-modeline): Add HyWiki-Edit-Pages to display a list of HyWiki page files either in dired or Treemacs. * hui-treemacs.el (require): Prompt to install package if not yet installed. * hui-window.el (hmouse-horizontal-assist-drag): Fix doc when one window only. * man/hyperbole.texi (HyWiki Menu): Add index entries per menu item. * hywiki.el (hywiki-directory-edit): Rename to 'hywiki-directory-dired-edit'. (hywiki-directory-edit): Make a new version that supports 'treemacs' when 'action-key-modeline-buffer-id-function' is set to 'smart-treemacs-modeline. * hui-treemacs.el (smart-treemacs): Simplify and no longer call 'treemacs-node-buffer-and-position' which can trigger a marker error. (smart-treemacs-edit): Add to edit/display a dir in Treemacs. (smart-treemacs-modeline): Call above function. hywiki.el (hywiki-directory-treemacs-edit): Add and call above function. * hycontrol.el (hycontrol-window-display-buffer): Fix to ignore any dedicated windows and prevent an error typically generated when calling this from 'walk-windows' called within 'hycontrol-windows-grid'. Makes window grids work with Treemacs display, for example. * hui-treemacs.el (smart-treemacs): Fix invocation of TAB command on first line entry (treat it like any other line except at eol). Also, actually invoke latest treemacs TAB command when defined rather that calling the default command normally configured to the TAB key. Ensure all func calls are wrapped with 'hact'. (smart-treemacs-modeline): Ensure always displays just the dir associated with the current buffer. Wrap all func calls with 'hact'. man/hyperbole.texi (Smart Key - Treemacs): Update doc to match above change. (smart-treemacs-quit): Add to ensure treemacs-quit is run within the Treemacs window. * hywiki.el (hywiki-directory-edit): Support non-bash shells that cannot handle character classes. 2024-11-10 Mats Lidell * test/hywiki-tests.el (hywiki-tests--add-hywiki-hooks) (hywiki-tests--remove-hywiki-hooks, with-hywiki-buttonize-hooks) (with-hywiki-buttonize-and-insert-hooks): Add functions and macros for mimicking redisplay hook behavior and use these in the highlighting tests. (hywiki-tests--face-property-for-wikiword-with-wikipage) (hywiki-tests--no-face-property-for-no-wikipage) (hywiki-tests--verify-face-property-when-editing-wikiword) (hywiki-tests--verify-face-property-when-editing-wikiword-first-char): Tests using the hook mimicking functions. 2024-11-03 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-name, hywiki-maybe-dehighlight-page-name): Change to use function (hywiki-get-buttonize-characters) rather than the variable, hywiki--buttonize-characters, so do not move back over whitespace when at the beginning of a HyWikiWord. * hyrolo.el (hyrolo-grep-file): Don't set grepped file to read-only since this can later make org-capture fail. (gh#rswgnu/hyperbole/599) 2024-11-02 Bob Weiner * man/hyperbole.texi: Change all @url to @uref so display properly in Info-format output. 2024-11-02 Mats Lidell * test/hywiki-tests.el (hywiki-tests--word-is-p) (hywiki-tests--directory-edit) (hywiki-tests--verify-face-property-when-editing-wikiword) (hywiki-tests--verify-face-property-when-editing-wikiword-first-char): Add hywiki tests. * test/hywiki-tests.el (hywiki-tests--word-is-p): Add hywiki test. 2024-10-28 Bob Weiner * hibtypes.el (hywiki-existing-word): Call action with the singular version of the page name but leave the in-buffer page name version as the button label. * hywiki.el (hywiki-get-plural-page-name, hywiki-get-singular-page-name): Add to convert HyWiki page names between singular and plural. (hywiki-get-page-hasht): Add plurals to the page name hash table so are included when highlighting wikiwords in buffers. (hywikig-get-file): Add check for null or empty string values and make page name singular. (hywiki-get-page): Remove call to 'hywiki-add-page' as it can cause an infinite loop. (hywiki-add-page, hywiki-make-pages-hasht): Reset 'hywiki--any-page-regexp-list' whenever hasht is rebuilt. Otherwise, highlighting might not include new wikiwords in hasht. 2024-10-27 Bob Weiner * hywiki.el (hywiki-directory-edit): Add this command. (hywiki-get-page-files): Fix so returns file names sans directory. No subdirectories are allowed. (hywiki-make-pages-hasht): Speed this up by removing now unneeded 'file-name-nondirectory' call. (hywiki-directory): Ensure customization ends with a dir separator. hui-mini.el (hui:menu-hywiki): Add 'EditPages'. hui-menu.el (hui-menu-hywiki): Normalize menu names and add 'Edit-HyWiki-Pages'. man/hyperbole.texi (HyWiki Menu): Add EditPages doc. (hywiki-add-page): Change 'hash-get' call to 'hywiki-get-page' call to improve abstraction and plural handling. (hywiki-get-page): Update to expand page-file-name since stored as a relative name now. (hywiki-highlight-between-page-names-after-word): Remove conditional (when (and (char-before) (/= (char-syntax (char-before)) ?w))) so that WikiWords are highlighted immediately when typed, including first or middle characters after deleted and then replaced. Remove this function and call 'hywiki-maybe-highlight-between-page-names' directly instead. (hywiki-get-page-hasht): Add HyWikiWord optional plural support. 2024-10-27 Mats Lidell * Makefile (TEXI2HTML, HYPERBOLE_FILES, $(html_dir)/hyperbole.html), $(man_dir)/hyperbole.html): Use texinfo-7.css, replaces texinfo-klare.css. (doc-clean, doc-regenerate): Convenience targets for working with docs. * man/hyperbole.texi (Top): Add top node so contents section is generated. 2024-10-25 Bob Weiner * Makefile (info): Replace any use of 'texi2any' in first line to 'makeinfo' so Hyperbole Info index links work properly since Info checks for 'makeinfo'. 2024-10-22 Bob Weiner * Makefile: Use texi2any instead of makeinfo as is more likely to grab the latest version. Also add ASCII_PUNCTUATION option everywhere. 2024-10-21 Bob Weiner * hywiki.el (hywiki-highlight-on-yank): Add extra char at end to support highlighting any last HyWikiWord. 2024-10-20 Bob Weiner * hywiki.el (hywiki-maybe-highlight-between-page-names, hywiki-maybe-highlight-off-page-name, hywiki-maybe-highlight-on-page-name): Add for use in 'post-self-insert-hook' idle HyWikiWord highlighter (setup from 'hywiki-buttonize-character-commands'). (hywiki-maybe-dehighlight-between-page-names, hywiki-maybe-dehighlight-off-page-name, hywiki-maybe-dehighlight-on-page-name): Add for use in 'pre-command-hook' called via 'hywiki-debuttonize-non-character-commands'. (hywiki-debuttonize-non-character-commands, hywiki-maybe-dehighlight-sexp, hywiki-maybe-highlight-page-names): Enable dehighlighting in HyWiki pages by letting 'hywiki-word-highlight-flag' be nil. (hywiki-maybe-highlight-page-names): Fix that were skipping forward for section words even if # symbol was not found. (hywiki-maybe-highlight-balanced-pairs): Make result a boolean value, t if any balanced pair was found. 2024-10-19 Bob Weiner * hywiki.el (hywiki--maybe-de/highlight-org-element-backward): Add to handle both highlighting and dehighlighting with public callers named: (hywiki-maybe-dehighlight-org-element-backward, hywiki-maybe-highlight-org-element-backward). (hywiki--maybe-de/highlight-org-element-forward): Add to handle both highlighting and dehighlighting with public callers named: (hywiki-maybe-dehighlight-org-element-forward, hywiki-maybe-highlight-org-element-forward). (hywiki--maybe-de/highlight-sexp): Add to handle both highlighting and dehighlighting sexps with public callers named: (hywiki-maybe-dehighlight-sexp, hywiki-maybe-highlight-sexp). (hywiki-maybe-dehighlight-balanced-pairs): Add to dehighlight. (hywiki-maybe-dehighlight-page-name): Add as inverse to highlight any page name at point function. (hywiki-maybe-highlight-page-name): Change to work when point is within a wiki word as a any point of a word may be edited, turning it to or from a valid page name. * hywiki.el (hywiki-highlight-between-page-names-after-word): Add to highlight any HyWikiWords between point after inserting a non-word character. (hywiki-buttonize-character-commands): Remove conditionals and . change to using an idle timer with a 0.3 second default delay. (hywiki-maybe-highlight-page-names): Remove dehighlighting of HyWikiWords between [] and <> brackets. (hywiki-debuttonize-non-character-commands): Fix to dehighlight non-WikiWord at point after a delete char command. * kotl/kfile.el (kfile:create): Remove unneeded insertion of extra 2 newlines after end of first cell as 'kview:add-cell' handleds this. 2024-10-13 Bob Weiner * hproperty.el (hproperty:but-get-all-in-region): Optimize so val-list is created only once per call. * hbut.el (ibut:insert-text): Convert (link-to-texinfo-node "/home/bw/Dropbox/emacs/hyperbole/man/hyperbole.texi" "Implicit Button Types") and insert something like "man/hyperbole.texi#Implicit Button Types" so works properly. * FAST-DEMO (Introduction): Improve this section and add how to globally bind a Hyperbole minibuffer command to another key sequence. * hui-mini.el (hui:menu-hywiki): Rename 'Edit' to 'FileFind'. (hui:menu-rolo): Rename 'Edit' to 'FindPage'. hui-menu.el (hui-menu-hywiki): Rename 'Edit' to 'Find-HyWiki-Page'. man/hyperbole.texi (HyWiki Menu): Rename 'Edit' to 'FindPage'. * hyrolo.el (hyrolo-find-file): Fix that interactive conditions for when to choose among all files (no prefix arg) versus selecting the first, were inverted. Fixes Rolo/File menu item. 2024-10-08 Bob Weiner * man/hyperbole.texi: Remove duplicate manual title display in HTML output. Makefile (TEXI2HTML): Modernize HTML css style via the "texinfo-klare.css" style sheet; change body font size to be responsive to screen size with: font-size: clamp(1rem, 2vw + 0.5rem, 2rem); Add this file to the Makefile. Also make "man/hyperbole.css" font-size responsive for use with Koutline and HyWiki exports. 2024-10-07 Bob Weiner * man/hyperbole.texi (Binding Minibuffer Menu Items): Document how to programmatically bind a global key to a Hyperbole minibuffer menu item. (Highlight Menu Key Toggle): Add doc for this customization. * test/hywiki-tests.el (hywiki-tests--get-page-list-after-add-and-delete): Add and update this test from Mats. * hywiki.el (hywiki-strip-org-link): Remove any Org link around HyWikiWord#section. (hywiki-page-exists-p): Call above function. (hywiki-word-is-p): Clarify in doc that hy:WikiWord returns nil since Org mode handles such links. (hywiki-word-at): Remove optional arg 'range-flag' since never used and too complicated to always return a list with the range when given. 2024-10-06 Bob Weiner * hywiki.el (hywiki-word-at): Update to handle HyWiki Org-type links with descriptions, e.g. [[WikiWord][Description Text]]. * hargs.el (hargs:delimited): Update doc of 'as-key' argument on use of 'none. * hasht.el (hash-map): Speed up by not consing key and value when don't need to. * hywiki.el (hywiki-add-page): Replace 'make-empty-file' with lower-level 'write-region' for efficiency. (hywiki--directory-mod-time): Use nil as default value instead of 0. (hywiki-directory-get-mod-time): Return nil if no mod-time or a list that includes microseconds (previously integer return was only precision of seconds). test/hywiki-tests.el (hywiki-tests--directory-get-mod-time, hywiki-tests--directory-modified-p): Update to handle new list format for mod-time. 2024-10-05 Bob Weiner * hywiki.el (hywiki-kill-buffer-hook): Change to return t iff 'hywiki-directory' change 2024-09-30 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-names): Don't widen the buffer by default as modes like the Koutliner and mail readers narrow to keep certain data hidden from display or editing. 2024-09-29 Bob Weiner * hywiki.el (hywiki-maybe-dehighlight-page-names): Add support for passing markers as 'region-start' and 'region-end' args. * hproperty.el (hproperty:but-get-all-in-region): Fix to exit with first match if 'property' arg is given. * hypb.el (hypb:in-string-p): Add. * hywiki.el (hywiki-word-activate): If on a HyWikiWord without a wiki page, then prompt before creating the page. (hywiki-maybe-highlight-balanced-pairs): Fix to handle HyWikiWords within double quotes and re-highlight balanced expressions before and after point since don't know if command is moving point forward or backward. Also limit buffer region to 'hywiki--buttonize-start' and 'hywiki--buttonize-end' markers when set by 'pre-command-hook'. (hywiki-maybe-highlight-page-names): Allow for whitespace in section names when 'region-start' and 'region-end' are given. And allow these two args to be markers. (hywiki-word-highlight-flag-changed): Add dehighlighting of HyWikiWords after special commands like deletion to 'pre-command-hook'. Leave highlighting to 'post-command-hook'. This allows dehighlighting of an an entire balanced delimited HyWikiWord with a section that contains whitespace before the delimiter is removed. (hywiki-debuttonize-non-character-commands): Add to dehighlight HyWikiWords for 'pre-command-hook'. (hywiki--get-delimited-range-backward, hywiki--get-delimited-range-forward, hywiki-get-delimited-range): Add to compute delimited range before or after point that surrounds a HyWikiWord#section button, if any. (hywiki-get-delimited-range, hywiki-maybe-highlight-balanced-pairs): Fix to handle all cases of point being before or after delimiters since for example can delete a delimiter forward or backward. 2024-09-22 Bob Weiner * test/hywiki-tests.el (hywiki-tests--get-page-list-when-new-wiki-directory): Remove 'hash-empty-p' test that fails exclusively on Emacs master. * hywiki.el (hywiki-find-page): Move prompt tests to 'hywiki-add-page'. (hywiki-add-page): Add and run 'hywiki-add-page-hook'. Add optional second arg 'prompt-flag' that 'hywiki-find-page' passes. (hywiki-directory-get-checksum): Update to use 'hywiki-get-page-files'. (hywiki-get-files): Remove, essentially duplicate of 'hywiki-get-page-files'. * test/hywiki-tests.el (hywiki-tests--directory-modified-p): Update to set checksum which is needed now and expand test scenarios. (hywiki-tests--wikiword-with-prefix-creates-a-new-page): Update to add optional 2nd arg of nil to 'hywiki-add-page' call. (hywiki-tests--hywiki-add-page--adds-file-in-wiki-folder): Actually create empty file and then delete it, fixing hywiki-add-page call failure. hywiki.el (hywiki-add-page): Fix issue where hash table value was set before empty page file is created so did not have correct value. * hywiki.el (hywiki-maybe-highlight-page-names-in-frame, hywiki-maybe-highlight-page-names): Move set of mod-time and checksum here from 'hywiki-get-page-hasht' to make work with 'hywiki-kill-buffer-hook'. 2024-09-21 Bob Weiner * hywiki.el (hywiki-kill-buffer-hook): Add for use as a global 'kill-buffer-hook'. hypb.el (hypb:empty-file-p): Add and use in 'hywiki-kill-buffer-hook'. * hywiki.el (hywiki-maybe-highlight-page-names): Dehighlight HyWikiWords before re-highlighting new set. * hywiki.el (hywiki-find-page): Prompt when creating the first HyWiki page so user is not surprised by this Action Key behavior. (hywiki-maybe-highlight-page-names): Add 3rd optional arg, 'skip-lookups-update-flag'. (hywiki-maybe-highlight-page-names-in-frame): Add optional 2nd arg, 'skip-lookups-update-flag' (hywiki-get-page-hasht): Call above function when update lookup tables so use new data to highlight HyWikiWords. * man/hyperbole.texi (Manual Overview): Add links for HyWiki and HyNote. * hywiki.el (hywiki-maybe-highlight-balanced-pairs): Separate balanced pair delimited expression highlighting into this function to allow for more general handling. Expand range from one line to two. (hywiki-maybe-highlight-page-name): Call above function. (hywiki-get-page): Auto-link standard pluralizations of HyWikiWords that end 's' when not preceded by an 's' or in 'es'. (hywiki-directory-set-mod-time): Add. (hywiki--directory-checksum): Add for checking if any HyWiki page file names have changed. (hywiki-directory-get-checksum, hywiki-directory-set-checksum): Add. (hywiki-directory-modified-p): Additionally test if dir checksum changed. (hywiki-get-page-hasht): Fix to update pages hash table and page name and page name regexp lookups if any page file name changes. (hywiki-maybe-highlight-page-names): Force rebuild of pages hash table if any page file names have changed in 'hywiki-directory' and move mod-time update to 'hywiki-get-page-hasht'. 2024-09-16 Bob Weiner * hsys-org.el {C-c C-@} Bind this key in Org mode to 'hycontrol-windows-grid' unless already bound. hycontrol.el (hycontrol-windows-grid): Fix infinite recursive call when 'mode-binding' is the same as the current command, e.g. org-mode. 2024-09-11 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--get-file-list): Verify `hyrolo--expanded-file-list' is updated when a file is added. 2024-09-10 Bob Weiner * hywiki.el (hywiki-org-make-publish-project-alist): Add new option 'hywiki-org-publishing-broken-links' with a default value of 'mark. This is used to set 'org-export-with-broken-links' so HyWiki will simply mark and include broken links when exporting rather than failing. Otherwise, exporting will often fail due to a few invalid links. With this setup, just search for 'BROKEN LINK' in the output to repair each issue. 2024-09-09 Bob Weiner * hywiki.el: Add additional autoloads. (hywiki-add-page): Update doc and interactive prompt to indicate this adds or edits an existing page. (hywiki-find-page): Fix interactive expression without a prefix arg to accept a non-existing page name to be created. With a prefix arg or programmatically with PROMPT-FLAG equal to :existing, find existing pages only. * hui-select.el (hui-select-syntax-table): Fix that # was registering as an opening quote to an sexp rather than punctuation. 2024-09-08 Bob Weiner * hui-mini.el (hui:menu-highlight-flag): Add this new customization. (hui:menu-item-highlight-key): Add to highlight with 'read-multiple-choice-face' the key to press for each menu item if `hui:menu-highlight-flag' is non-nil. (hui:menu-read-from-minibuffer): Call above function. (hui:menu-item-toggle-highlight): Add and use in Cust/ menu. 2024-09-08 Mats Lidell * test/hibtypes-tests.el (ibtypes::hyp-manual-test): Add test. 2024-09-07 Mats Lidell * Makefile (docker, docker-run): Use "--rm" option so the short lived container and its volumes are removed on exit. 2024-09-02 Bob Weiner * man/hyperbole.texi (Action Button Link Types): Change PYTHONLIBPATH to PYTHONPATH to match the example definition of 'pylib' in the 'defal' macro documentation. * hui-select.el (hui-select-delimited-thing-call): FIX: Add setting of missing 'hui-select-syntax-table' that was preventing the Action Key from selecting markup pairs in HTML/Web modes. 2024-09-01 Bob Weiner * man/dir (File): Narrow width to better fit with out Info entries. * hyrolo.el (hyrolo-org-mode): Prioritize Org 9.7 folding-spec config over earlier versions to fix a bug that used the wrong version. * hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menu-hywiki): Allow customizing the HyWiki menus and define its Consult items only when consult-grep is fboundp. * hynote.el (hynote-get-file): Add secondary markdown file suffixes. (hynote-file-suffix-list): Add this variable and use in above function. (hynote-file-suffix-regexp): Add this variable and use in `hynote-get-files'. (require 'hyrolo): Remove. * man/hyperbole.texi (Glossary): Add HyNote entry and HyWiki entry reference to its two ibtypes. (HyNote): Add a short chapter on this. 2024-08-30 Bob Weiner * hibtypes.el (hyp-manual): Fix to strip spaces around section for both .html and .texi files. * hywiki.el (hywiki-word-at): Add optional arg 'range-flag' and when non-nil return (wikiword word-start word-end). (hywiki-word-activate): Fix call to 'hywiki-word-at'. 2024-08-29 Bob Weiner * hywiki.el (hywiki-page-exists-p): Use 'range only if 'word' is non-nil. Add 'start' and 'end' optional args to record 'word' position range. * hibtypes.el (hywiki-existing-word): Fix to set label when a word is given but no position is known for the word. * hactypes.el (link-to-texinfo-node): If 'node' is not a string, set it to "Top", the first node. If 'file' equals "hyperbole.texi", make the file name absolute. hibtypes.el (hyp-manual): Add new ibtype to display Hyperbole HTML and .texi manual sections using syntax: "hyperbole.suffix#section". The same syntax for "hyperbole.info" is handled elsewhere. man/hyperbole.texi (Implicit Button Types): Add 'hyp-manual' doc. 2024-08-28 Bob Weiner * hibtypes.el (hywiki-existing-word): Fix label set to use start and end rather than (match-beginning 0) (match-end 0) which yielded wrong positions. * hui.el (hui:link-possible-types): Fix bug in link-to-texinfo-node where node name was grabbed outside of save-excursion when not at a node name, so wrong value was used. 2024-08-25 Bob Weiner * man/hyperbole.texi (Implicit Button Types): Add doc for 'hywiki-existing-word', 'hywiki-word' and 'hynote-file'. 2024-08-24 Mats Lidell * man/hyperbole.texi: Remove not useful @indent. * Makefile (HYPB_ERT_BATCH_BT): Control abbreviation of backtrace. 2024-08-24 Bob Weiner * hpath.el (hpath:to-Info-ref): Add. (hpath:is-p, hpath:at-p): hactypes.el (link-to-Info-node): hibtypes.el (Info-node): Add support for Info refs in a regular pathname format, e.g. "hyperbole.info#Smart Keys". hibtypes.el (pathname): Exclude Info paths without parens handled by Info-node, e.g. "emacs.info#Windows". 2024-08-23 Bob Weiner * hbut.el (ibut:label-p): Handle when lbl is nil. * hyperbole.el: Require Emacs 27.2 minimum. 2024-08-23 Mats Lidell * hibtypes.el (ripgrep-msg): Add check of file exist. * test/hibtypes-tests.el (ibtypes::ripgrep-msg-test): Test ripgrep-msg. 2024-08-19 Bob Weiner * README.md: Add HyWiki description. * man/hyperbole.texi (HyRolo Searching, HyRolo Menu): Add TagFind menu item. * hyrolo-menu.el: Add "Tag-Find". hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): In HyWiki> menu, change Toggle to ModeToggle so can add TagFind item. (hui:menu-read-from-minibuffer): Add to allow customization of minibuffer read arguments such as 'initial-content' that minibuffer menus generate. (hui:menu-rolo): Add TagFind. man/hyperbole.texi (HyWiki Menu): Add TagFind menu item doc. * hsys-org.el (hsys-org-enable-smart-keys): Change 'buttons option to :buttons so don't have to quote and works in assq/rassq lookups. 2024-08-18 Bob Weiner * hywiki.el (hywiki-maybe-at-wikiword-beginning): Fix to handle word preceded by a single square bracket. * hibtypes.el (hywiki-existing-word): Add this new ibtype to match to HyWikiWords with an existing page at a higher priority than those without an existing page, so can be handled separately. Must be defined in this file to set its priority at a high level. * hywiki.el (hywiki-is-wikiword): Rename to 'hywiki-word-is-p'. (hywiki-word-activate , hywiki-page-strip-section, hywiki-page-exists-p): Add. (hywiki-word-consult-grep): Rename from `hywiki-word-search'. hui-mini.el (hui:menus): Change "Act" item from 'hui:ibut-act' to new 'hywiki-word-activate'. * hui-menu.el (infodock-hyperbole-menu): hui-mini.el (HyWiki, IButton): Change help function from 'hui:hbut-help' to 'hkey-help' so handles more contexts without erroring. * hui-menu.el (hui-menu-org-meta-return-options): Remove wrong extra parens. 2024-08-18 Mats Lidell * kotl/klink.el (klink:ignore-modes, klink:c-style-modes): * hui-select.el (hui-select-brace-modes) (hui-select-brace-def-or-declaration): * hui-mouse.el (hkey-alist): * hmouse-tag.el (smart-java-cross-reference): * hibtypes.el (annot-bib): Add corresponding tree-sitter modes for the modes supported by Hyperbole. 2024-08-17 Bob Weiner * hui-mini.el (hui:menus): Org-M-RET/ Customization menu, add doc to items and add this menu to the HyWiki menu. Also add Toggle 'hywiki-mode' item. (hui:menus): Change Org-M-RET/All-Programmed-Contexts to All-Smart-Org-Contexts. Add HyWiki Toggle-HyWiki-Mode. man/hyperbole.texi (HyWiki Menu): Doc above changes in the manual. (HyWikiWords): Explain new HyWikiWord page creation. * hact.el (hact): Document that this returns t instead of nil when action type return value is nil; this ensures that implicit button types register the performance of the action. * man/hyperbole.texi (HyWiki Menu): hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): Change 'Grep' to 'GrepConsult' and 'Search' to 'WikiWordConsult' so know they use the Consult package. * hsys-consult.el (hsys-consult-grep): Add missing autoload for this function. 2024-08-16 Bob Weiner * hbut.el (hbut:map): Remove args 'start-delim' and 'end-delim' and fix to work for both ebuts and named ibuts. (hbut:map-type): Create and use old logic from 'hbut:map' and use in 'ebut:map', 'ibut:map' and 'ibut:label-map'. 2024-08-15 Mats Lidell * test/hywiki-tests.el (hywiki-tests--org-set-publish-project) (hywiki-tests--org-get-publish-project) (hywiki-tests--org-link-resolve) (hywiki-tests--org-link-export): Add publish and export tests. 2024-08-15 Bob Weiner * hui.el (hbut:alist, hbut:list): Add to match but type-specific functions. (hui:hbut-help): Change 'hargs:read-match' completion table to use 'hbut:alist' instead of 'ebut:alist'. * Makefile (HYPERBOLE_FILES): Add all Org files under the hywiki dir. 2024-08-14 Bob Weiner * FAST-DEMO: Add HyWiki section and associated hywiki pages sub-directory. 2024-08-13 Bob Weiner * man/hyperbole.texi (Menus): Add description of Doc/ and HyWiki/ menus. (Glossary): Add History and HyWiki entries. (HyWiki): Add a chapter documenting HyWiki. * hui-mini.el (hui:menus): Add HyWiki menu to 'h' and move Hist to historY, selectable with 'y' instead of 'h'. man/hyperbole.texi (Default Hyperbole Bindings): Update hist to 'y' binding. DEMO (History): Update binding to {C-h h y}. * hywiki.el (hywiki-word-search): Add to search for HyWikiWord occurrences. (hywiki-read-new-page-name): Add and use in 'hywiki-add-page'. (hywiki-add-page): Update so returns nil if page-name is invalid, unless called interactively, then trigger an error. 2024-08-12 Bob Weiner * hywiki.el (hywiki-read-page-name): Add mainly for use in interactive calls that require an existing HyWikiWord (same as its page name). (hywiki-add-link): Add to prompt and link to HyWiki pages. 2024-08-11 Bob Weiner * hywiki.el (hywiki-maybe-highlight-page-names-in-frame): Reduce sit-for to 0 since just want to trigger redisplay. (hywiki-publish-to-html): Retrieve HyWiki project by name. (hywiki-directory): Change to a defcustom so can set this before loading Hyperoble. (hywiki-org-get-publish-property): (require 'ox-publish). (hywiki-org-maybe-add-title): Add title to HyWiki pages without one using the file or buffer name. (hywiki-org-export-function): Fix to trigger only in the copy of the HyWiki Org buffer that we want to modify with a Title and [[hy:link]] markup. (hywiki-org-get-publish-project): Initialize alists if not set. (hywiki-org-set-publish-project): Add and use in above function. (hywiki-directory, hywiki-org-publishing-directory, hywiki-org-publishing-function): Add :initialize and :set properties so that changes trigger updates in 'org-publish-project-alist'. (hywiki-org-maybe-add-title): Add to add the HyWikiWord as the title for each HyWiki page. (hywiki-org-make-publish-project-alist): Add :sitemap-title property.. (hywiki-org-publishing-sitemap-title): Add to set above property. (hywiki-is-wikiword): Add not 'string-empty-p' test. (hywiki-add-page): Add interactive spec. 2024-08-10 Bob Weiner * hynote.el: Update commentary to current functionality. (hynote-get-file): Add ".otl" and ".outl" suffixes for Emacs outline and HyRolo files. * hywiki.el (hywiki-org-export-function): Add and use as advice on 'org-element--generate-copy-script'. (hywiki-get-page): Fix so just returns nil if page name is invalid or not found. (hywiki-org-link-resolve , hywiki-org-link-export): Handle nil as a 'link' arg value. In resolve function, remove any hy: prefix and return nil if wiki page is not found. In export function, return 'link' arg with no markup if wiki page is not found. (hywiki-org-publishing-directory): Add as location to exported HyWiki pages to. (hywiki-org-publishing-function): Add as Org function used to export each HyWiki page. (hywiki-org-publish-project-alist): Add with properties for exporting a HyWiki. (hywiki-org-get-publish-project, hywiki-org-get-publish-property): Add to simplify HyWiki Org publish property handling. (hywiki-publish-to-html): Add to export HyWiki pages to html. With a prefix argument, regenerate all html pages. 2024-08-08 Mats Lidell * test/hibtypes-tests.el (elisp-compiler-msg-test): Add test. 2024-08-06 Mats Lidell * test/hproperty-tests.el: Test file for hproperty. (hproperty-tests--but-add): Add test. * test/hywiki-tests.el (hywiki-tests--convert-words-to-org-link): Add test. 2024-08-05 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--expand-path-list) (hyrolo-tests--at-tags-p): Add tests. 2024-07-31 Bob Weiner * hibtypes.el (org-uuid-regexp): Add variable def for when missing in certain earlier Org versions. * test/hsys-org-tests.el (hsys-org---agenda-tags-string): Fix to current tag handling code. 2024-07-28 Bob Weiner * hproperty.el (hproperty:but-add): Add a button only when a button with the same property value, start, and end does not already exist, to prevent duplicates. * hywiki.el (hywiki-maybe-highlight-page-name): Fix to dehighlight wiki words only if within double square or angle brackets (leaving these to Org to handle). (hywiki-buttonize-non-character-commands): Add 'delete-' commands. (hywiki--highlighting-done-flag): Add and use in 'hywiki-maybe-highlight-page-name'. (hywiki-maybe-highlight-org-element-backward, (hywiki-maybe-highlight-org-element-forward): Add these two functions. (hywiki-maybe-highlight-page-names): Fix to not use whole buffer highlight flag when given a region. * hsys-org-roam.el (hsys-org-roam-tags-view): hsys-org.el (hsys-org-tags-view): hywiki.el (hywiki-tags-view): hyrolo.el (hyrolo-tags-view): Add doc for 'match' arg. * hsys-org.el (hsys-org-get-agenda-tags): Rename arg from 'org-consult-agenda-function' to 'agenda-tags-view-function' since does not require the consult package and don't want to override any org package name. Improve doc string. (hsys-org--agenda-tags-string): Improve doc string and fix to return non-nil only when point is within a tag string. Simplify return value creation. 2024-07-28 Mats Lidell * test/hibtypes-tests.el (ibtypes:org-id-test): Test org-id ibut. 2024-07-27 Mats Lidell * test/hsys-org-tests.el (hsys-org--get-agenda-tags): Test hsys-org-get-agenda-tags. 2024-07-26 Mats Lidell * hsys-org.el (hsys-org--agenda-tags-string): Update docstring. * test/hsys-org-tests.el (hsys-org--mode-p): Test hsys-org-mode-p. (hsys-org---agenda-tags-string): Test hsys-org--agenda-tags-string. * test/hywiki-tests.el (hywiki-tests--at-tags-p): Test hywiki-at-tags-p. * test/hsys-org-tests.el (hsys-org--directory-at-tags-p): Test hsys-org-directory-at-tags-p. 2024-07-15 Bob Weiner * hywiki.el (hywiki-in-page-p): Change to use 'default-directory' instead of 'buffer-file-name' so works with temp buffers created during Org export to other formats, e.g. html. 2024-07-15 Mats Lidell * test/hsys-org-tests.el (hsys-org--at-tags-p): Test hsys-org-at-tags-p. * test/hpath-tests.el (hpath--to-markup-anchor): Test hpath:to-markup-anchor. * test/hui-tests.el (hui--link-possible-types): Add test for single-line region. 2024-07-14 Mats Lidell * Makefile (DOCKER_VERSIONS): Use 29.4 for local docker builds. 2024-07-14 Bob Weiner * hywiki.el (hywiki-convert-words-to-org-links, hywiki-map-words): Add. * hibtypes.el (Info-node): Handle decoding of Info node names in Hyperbole Help buffer lbl-key: lines, eliminating excess underscores. * hmouse-tag.el (smart-lisp-mode-p): Add 'help-mode', e.g. for output of {C-h A} to make Hyperbole cross-references work. 2024-07-13 Bob Weiner * hywiki.el (hywiki--range): Add to hold (start . end) range values. (hywiki-word-at): If word is already highlighted with 'hywiki-word-face', use that as a shortcut to get the word. 2024-07-12 Mats Lidell * test/hywiki-tests.el (hywiki-tests--maybe-at-wikiword-beginning): Fix set of acceptable chars and use escaped notation. 2024-07-10 Bob Weiner * hywiki.el (hywiki-org-link-export): Add as [[hy:WikiWord]] link-export property. (hywiki-org-link-resolve): Add to resolve HyWikiWord link to its page. (hywiki-org-link-store): Change :description property to be just the 'page-name' itself. 2024-07-07 Bob Weiner * hibtypes.el (elisp-compiler-msg): Fix to handle both of these cases: skipped 13/15 hywiki-tests--no-face-property-for-no-wikipage (0.000121 sec) SKIPPED hywiki-tests--face-property-for-wikiword-with-wikipage * hywiki.el (hywiki-word-highlight-flag-changed): Ensure highlighting via 'window-buffer-change-functions' is properly reset when toggling this flag. Also ensure highlighting/dehighlighting of HyWikiWords. Remove separate setting of this functions variable since this function is called on load. * hpath.el (hpath:expand-list): Change 3rd arg from 'exists-flag' to 'filter', a predicate function that allows filtering the list of returned paths, e.g. 'file-readable-p'. It t is sent, then file 'file-exists-p' is used. hyrolo.el (hyrolo-expand-path-list): Update to return only readable files. (hyrolo-at-tags-p): Add to test if point is within HyRolo Org tags. (hyrolo-tags-view): Add to display HyRolo Org tags using Agenda search. hsys-org.el (hsys-org-hyrolo-agenda-tags): Add. (hsys-org-agenda-tags-p): Add calls to above new functions. hsys-consult.el (hsys-consult-hyrolo-grep-tags): Add. (hsys-consult-org-grep-tags-p): Add calls to above new functions. * hsys-org-roam.el (hsys-org-roam-tags-view, hsys-org-roam-consult-grep): Prompt whether to install needed package when not yet installed. * hbut.el (ibut:create): Improve messages and traceback generation on ibtype error. 2024-07-07 Mats Lidell * .github/workflows/main.yml (jobs): Use update 29 to 29.4 in CI workflow. * Makefile (HYPB_ERT_INTERACTIVE): New macro for supplying the test specifier as given by the command line test to the all-tests target. 2024-07-06 Bob Weiner * hibtypes.el (org-id): Fix bug in older versions of Org where 'org-uuid-regexp' was not bound. * hbut.el (ibut:create): Improved when err occurs in type to print the err before triggering a backtrace when in batch mode. * man/hyperbole.texi (Implicit Button Types): smart-org add new Org tags view handling and improve index entries. 2024-07-05 Bob Weiner * hui-mouse.el (smart-org): Update to handle when point is on Org tags and then search for matching Org tags with 'hsys-org-agenda-tags-p'. With Assist Key, instead prompt and search with consult grep functions for appropriate tag matches via 'hsys-org-consult-grep-tags-p'. hsys-org-roam.el (hsys-org-roam-tags-view): Add. hsys-org.el (hsys-org--agenda-tags-string, hsys-org-agenda-tags-p, hsys-org-get-agenda-tags, hsys-org-hywiki-agenda-tags, hsys-org-agenda-tags, hsys-org-roam-agenda-tags, hsys-org-tags-view): Add to match to display matching Org tags, including inheritance, using Org agendas. * hsys-org.el (hsys-org-directory-at-tags-p, hsys-org-at-tags-p): Add. hsys-org-roam.el (hsys-org-roam-directory-at-tags-p): Add. hywiki.el (hywiki-at-tags-p): Add. hsys-consult.el (hsys-consult--grep-paths): Change to use "[ \t]*" instead of "[ \t]+" so handles space afterwards included to support Orderless. (hsys-consult--org-match-tags-string, hsys-consult-org-grep-tags-p, hsys-consult-grep-tags, hsys-consult-hywiki-grep-tags, hsys-consult-org-grep-tags, hsys-consult-org-roam-grep-tags): Add to consult-grep based on dir and buffer name. Use in 'smart-org'. hui-mouse.el (smart-org): Update doc for above change. 2024-07-04 Bob Weiner * hsys-consult.el: Add and move/rename hyrolo consult support functions to hsys-consult functions in here so they can be used in other parts of Hyperbole. hyrolo.el (hyrolo-org-roam-call-function): Rename to 'hsys-consult-org-roam-call-function'. (hyrolo-consult-org-roam-title): Rename to 'hsys-consult-org-roam-title'. (hyrolo-consult-org-roam-grep): Rename to 'hsys-consult-org-roam-grep'. And move all to "hsys-consult.el". hywiki.el (hywiki-consult-grep): Rewrite to use 'hsys-consult-grep'. and add optional arguments to allow more flexibility in usage. hsys-org.el (hsys-org-consult-grep): Rewrite to use 'hsys-consult-grep'. and add optional arguments to allow more flexibility in usage. (hsys-org-consult-grep-func): Remove this customization; 'hsys-consult-grep' automatically selects the grep function to use. 2024-07-03 Bob Weiner * hywiki.el (hywiki-grep-tags): Rename to 'hywiki-tags-view' to align with Org command with similar name. 2024-07-02 Bob Weiner * hsys-org.el (hsys-org-meta-return): Trigger an error if called in an Org read-only buffer. * hibtypes.el (org-id): Tighten match to uuids only to prevent false matches, e.g. if matching to any custom id, my-list-function-name would match as an id. * hywiki.el (require 'thingatpt): Add. 2024-06-30 Bob Weiner * hpath.el (hpath:find-line): Allow line-num and col-num to be strings. hibtypes.el (hib-link-to-file-line): Add to share among multiple grep file ibtypes. hibtypes.el (ipython-stack-frame, ripgrep-msg, grep-msg): Standardize by using above new function. 2024-06-30 Mats Lidell * Makefile (internal-docker-all-tests-ert-output): Target for running all tests using ert from within docker used by docker-all-tests. (VERSIONS_VERSIONS): List of Emacs versions to run batch-tests and all-tests to check same versions as the CI/CD run locally. (docker-all-tests, docker-batch-tests): Targets for running batch-tests and all-tests for all DOCKER_VERSIONS. Update developer target documentation. 2024-06-30 Bob Weiner * hibtypes.el (grep-msg): Fix bug where 'find-library-name' was called on a non-Elisp library file and stripped its suffix and replaced it with a different one; now uses only if file lacks a suffix or the suffix matches one from 'get-load-suffixes'. So "hyperbole.texi" will not lead to a path ending in "hyperbole.el". * hbut.el (defib): Remove requirement for call to 'hact' since sometimes the action includes this instead. * hibtypes.el (annot-bib, gnus-push-button, hyp-address, elink, glink, ilink, python-tb-previous-line, debugger-source): Add 'ibut:label-set' call. * man/hyperbole.texi (Programmatic Implicit Button Types): Expand doc on 'at-p' argument and explain its 'ibut:label-set' and 'hact' calls. * hib-kbd.el (kbd-key): Add support for key sequences in Texinfo mode. 2024-06-29 Bob Weiner * hbut.el (ibut:to-text): Add current ibtype to the error when lbl-key attr is nil. hib-debbugs.el (debbugs-version-sufficient-p): Update to get version number from either the package pathname or from "debbugs.el" or "debbugs-gnu.el". Fixes bug where debbugs is installed bug not used so bug ibuts are not active. (defib debbugs-gnu-mode, defib debbugs-gnu-query): Add `ibut:label-set' call. (defib): Improve doc to mention requirement for call to 'ibut:label-set'. * test/hui-tests.el (hui-ebut-create-link-to-info-index-using-completion): When finished, kill all *info*<#> buffers. * hui-em-but.el: Rename to "hproperty.el". * hui-em-but.el (hproperty:char-property-start, hproperty:char-property-end, hproperty:char-property-range, hproperty:overlay-range) hproperty:char-property-contains-p): Add char-property and overlay utility functions and use in "hsys-org.el" and "hsys-org-tests.el"; adds compatibility with Org mode 9.7 and earlier. 2024-06-25 Bob Weiner * hibtypes.el (hynote): Add for Org and Org Roam links by name. MANIFEST (hynote.el): Add. Makefile (EL_COMPILE): Add hynote.el. * hynote.el (hynote-directory-list, hynote-find-file-stem): Add. * hbut.el (ibut:create): Add debugging to show the type name if an ibtype evaluation fails. hmouse-drv.el (hkey-execute, hkey-help): Change 'eval' to 'hypb:eval-debug' to show a backtrace whenever an error occurs. 2024-06-24 Mats Lidell * Makefile (docker, docker-run, docker-update): Use simpler "docker" for the docker targets. Make docker and docker-run depend on docker-update to ensure we always use the latest version of the docker image. 2024-06-23 Bob Weiner * hynote.el (hynote-get-files, hynote-get-file-stem-list, hynote-find-file, hynote-file-stem-start-end-at): Add these functions to find non-HyWikiWord files in `hywiki-directory' when referenced by stem name, e.g. Action key on Non-Wiki-Word displays Non-Wiki-Word.org. (hynote-file): Add ibtype to display non-HyWikiWord files in hywiki-directory'. * Makefile: (docker-run): Add to interactively run docker versions of Emacs with Hyperbole. Update Commentary to summarize docker targets that build, byte-compile and run Hyperbole. 2024-06-22 Mats Lidell * test/hywiki-tests.el (hywiki-tests--get-page-list-when-new-wiki-directory): Verify cache is empty for a new hywiki-directory. * Makefile (dockerized-update): Target to update (pull) the Emacs docker image. (dockererized): Copy source to docker so not local workspace is affected when running targets in the docker environment. 2024-06-22 Bob Weiner * hyrolo.el (hyrolo-org-mode): Fix Org mode breakage with Emacs 30 and Org 9.7 and up by removing internal variable ref in 'org-fold-core-set-folding-spec-property' call and using 'org-link symbol instead. * hywiki.el (hywiki-active-in-current-buffer-p): Fix to highlight HyWikiWords in 'kotl-mode' which is a special class buffer. (Commentary): Update this documentation, focusing on use. 2024-06-21 Bob Weiner * hywiki.el (hywiki-word-at): Fix to use 'hywiki-word-with-optional-section-regexp' instead of 'hywiki-word-regexp' so handles sections properly. (hywiki-word-highlight-flag): Improve documentation. (hywiki-get-page-file): Allow name to include 'hywiki-file-suffix' for non-HyWikiWord files. Also, rename to 'hywiki-get-file'. 2024-06-20 Mats Lidell * test/hywiki-tests.el (hywiki-tests--at-wikiword-finds-word-and-section) (hywiki-tests--maybe-at-wikiword-beginning, hywiki-tests--in-page-p) (hywiki-tests--active-in-current-buffer-p) (hywiki-tests--directory-get-mod-time) (hywiki-tests--directory-modified-p, hywiki-tests--get-page-list) (hywiki-tests--get-page-list-multiple-words): Add hywiki tests. 2024-06-19 Bob Weiner * test/hywiki-tests.el (hywiki-tests--face-property-for-wikiword-with-wikipage, hywiki-tests--no-face-property-for-no-wikipage): Basic improvements. * hywiki.el (hywiki-highlight-page-name): Ensure either 'hywiki-mode' or (hywiki-in-page-p) is true and not in the minibuffer. (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Move most checks to 'hywiki-highlight-page-name'. (hywiki-page-flag): Add as internal buffer-local flag set when current buffer is a HyWiki page. (hywiki-highlight-page-name): Rename all such prefixed functions to 'hywiki-maybe-highlight-page-name'. (hywiki-active-in-current-buffer-p): Exclude minibuffer. (hywiki-maybe-highlight-page-name): Test with 'hywiki-active-in-current-buffer-p'. (hywiki-dehighlight-page-names): Rename to 'hywiki-maybe-dehighlight-page-names'. (hywiki-mode): Remove auto-HyWikiWord highlighting/dehighlighting from the minor mode and associate it with the setting of 'hywiki-word-highlight-flag' so that the same hooks can be used for HyWikiWord page highlighting as are used in all buffers when 'hywiki-mode' is enabled. (defib hywiki-word): (hywiki-find-page): Move call of (hywiki-maybe-highlight-page-name t) here from the defib since may need to create the page before highlighting will work properly. (hywiki-maybe-highlight-page-name): Skip back over buttonize-chars only when 'on-page-name' is nil. Also, remove sanity check line which fails when called from control-key cmds like C-o (open-line): (eq (char-before) last-command-event) ;; Sanity check (hywiki-word-at): Fix doc to explain when this returns non-nil. (hywiki-maybe-highlight-page-names): Fix setting of hywiki--start/end and prevent infinite looping due to wrong positions. (hywiki-word-highlight-flag-changed): Fix remove-hook from 'post-command-hook' to remove the correct function. 2024-06-17 Bob Weiner * hywiki.el (hywiki-mode): Require 'hyperbole. (find-file-hook): Remove 'hywiki-find-page hook and just highlight when any frame window changes what buffer it displays. (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Do this only if not in an active minibuffer window. 2024-06-16 Bob Weiner * hywiki.el (hywiki--buttonize-characters): Remove setting from `hywiki-mode' and set when hywiki library is loaded. (hywiki--word-and-buttonize-character-regexp): Add. (hywiki-highlight-page-name, hywiki-word-at, hywiki-highlight-page-names) Use above regexp. (hywiki--buttonize-character-regexp): Add and use in 'hywiki--word-and-buttonize-character-regexp'. 2024-06-09 Bob Weiner * hywiki.el (hywiki-word-highlight-flag-changed): Disable 'hywiki-mode' when disabling this global flag. (hywiki-at-wikiword): Rename to 'hywiki-word-at' for consistency. (hywiki-mode): When enabling, enable `hywiki-word-highlight-flag' too. (hywiki-word-with-optional-section-exact-regexp): Fix doc to reflect that regexp allows spaces and tabs. (hywiki-buffer-highlighted-state): Add to skip HyWikiWord highlighting/ dehighlighting per buffer if already done. Set it in 'hywiki-maybe-highlight-page-names' and 'hywiki-maybe-dehighlight-page-names'. 2024-06-08 Bob Weiner * hypb.el (hypb:split-seq-into-sublists): Add for use with hywiki. * hywiki.el (hywiki-grep-tags): Fix so `org-redo-cmd' works properly. 2024-06-02 Bob Weiner * hywiki.el (hywiki--pages-directory): Add to track changes in 'hywiki-directory'. (hywiki-make-pages-hasht, hywiki-get-page-hasht): Use above new variable to rebuild hash table whenever directory changes. * 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 * test/hywiki-tests.el (hywiki-tests--hywiki-add-page--adds-file-in-wiki-folder) (hywiki-tests--hywiki-add-page--adds-no-wiki-word-fails) (hywiki-tests--wikiword-with-prefix-creates-a-new-page) (hywiki-tests--not-a-wikiword-unless-in-hywiki-mode) (hywiki-tests--face-property-for-wikiword-with-wikipage) (hywiki-tests--no-face-property-for-no-wikipage): Add test cases for hywiki. * test/hpath-tests.el (hpath--hpath:delimited-possible-path): Add test for hpath:delimited-possible-path. 2024-05-31 Mats Lidell * test/hui-tests.el (hui--gbut-should-execute-in-current-folder): Add test for verifying global button executes in current folder. 2024-05-29 Bob Weiner * hsys-org.el (hsys-org-consult-grep-func): Prefer ripgrep over grep. * hywiki.el (hywiki-consult-grep): Add as an autoloaded function to grep HyWiki pages interactively with live page previews. (hywiki-grep-tags): Add as an autoloaded function to grep HyWiki page sections with matching Org tags. 2024-05-28 Bob Weiner * hui-mouse.el (smart-org): Also fix when in a read-only Org-related buffer but not org-mode and not on a button, do what the key does but respect Hyperbole display settings. (smart-org-agenda-item-action): Add so user can override this. * hyperbole.el (hyperb:init): Fix to use any customized or saved value of 'hsys-org-enable-smart-keys' when unset. * hui-mouse.el (smart-org): Fix when in an Org-related buffer, e.g. agenda, but not org-mode, don't call (hsys-org-get-value :language) as this will fail with a warning: ‘org-element-at-point’ cannot be used in non-Org buffer #. * hsys-org.el (hsys-org-todo-at-p): Similarly, check that are in 'org-mode' to avoid triggering the same warning from a call to 'org-context'. (hsys-org-meta-return): Do nothing if called outside of 'org-mode', e.g. in an Org Agenda. 2024-05-27 Bob Weiner * hyrolo.el (hyrolo-org-roam-call-function): Add to install Org Roam and then call an Org Roam-related function. (hyrolo-consult-grep): Add optional 3rd arg 'path-list' so can be used with hywiki as well. * hywiki.el (hywiki-at-wikiword): Change 'hywiki-mode' test to 'hywiki-active-in-current-buffer-p'. (hywiki): Move above test into 'hywiki-at-wikiword'. (hywiki-get-buttonize-characters): Filter out "-_*#" chars allowed in #section references. (hywiki-at-wikiword, hywiki-highlight-page-names): Allow _ chars in #section patterns. (hywiki-highlight-page-name): Fix to highlight page#section where section contains any of "-_*" characters. (hywiki-get-page-files, hywiki-get-page-file): Create 'hywiki-directory' if it does not exist. (hywiki-directory-get-mod-time, hywiki-directory-modified-p): Add. (hywiki-highlight-page-names): Use above functions to cache expensive to compute 'hywiki--any-page-regexp'. 2024-05-26 Bob Weiner * hywiki.el (hywiki-highlight-page-names): Add skip over asterisk in section to match expression in 'hywiki-at-wikiword'. (hywiki-word-optional-section-regexp): Rename to 'hywiki-word-with-optional-section-regexp'. (hywiki-word-org-link-regexp): Rename to 'hywiki-word-with-optional-section-exact-regexp'. (hywiki-mode): Change all defcustom groups in this library to 'hyperbole-wiki. (hywiki-excluded-major-modes): Add to exclude major modes and their descendents from highlighting and activation of HyWikiWords. Default is nil. (hywiki-active-in-current-buffer-p): Add and use in 'hywiki' ibtype. (hywiki-in-page-p): Add and use where buffer's file is tested against 'hywiki-directory'. * hargs.el (hargs:delimited): Change returned value from 'string' to 'result'. If 'as-key' arg eq 'none, return t or nil as result rather than matching string. (hargs:delimited-p): Add to all 'hargs:delimited with 'as-key' arg set to 'none. * hywiki.el (hywiki-highlight-on-yank): Add and add to 'yank-handled-properties'. (hywiki-find-page): Don't turn on `hywiki-mode', let the user do that. Call `hywiki-highlight-page-names' when finding a regular file too. (hywiki-highlight-page-names): Fix so in-comment test is within the loop searching for each match. (hywiki--but): Rename to 'hywiki--buts' since will store a potential list of HyWiki highlight buttons here. (hywiki-highlight-page-names-in-frame): Allow frame arg of 't to mean highlight/dehighlight across all frames. (hywiki-dehighlight-page-names): Do this in buffers other than HyWiki pages when 'hywiki-mode' is turned off. Do it to HyWiki page buffers when `hywiki-word-highlight-flag' is set to nil. (require 'hargs): Add. (hywiki-highlight-page-name): Allow for <> syntax as delim syntax. (hywiki-maybe-at-wikiword-beginning): Allow for '<' as preceding char. (hywiki-buttonize-character-commands): Replace seq-find with cl-find. (hywiki-mode): Add all open delimiter characters to 'hywiki--buttonize-characters'. (hywiki-highlight-all-in-prog-modes): Add and use to specify major modes in which to highlight HyWikiWords outside of comments. (hywiki-highlight-page-name, hywiki-highlight-page-names): Clear highlighting within square or angle brackets since these might be Org links or targets. (hywiki-highlight-page-name): Trigger on symbol syntax chars except "#_-". (hywiki-find-page): Mention 'hywiki-find-page-hook' in doc. (hywiki-buttonize-character-commands, hywiki-buttonize-non-character-commands): Ignore unless 'hywiki-word-highlight-flag' is non-nil (the default). (hywiki--org-mode-syntax-table): Add to avoid loading Org mode for HyWikiWord testing. (hywiki-get-buttonize-characters): Use above new variable. (hywiki-highlight-page-names): Highlight only in region if active or given as arguments. (require 'outline): And remove (require 'ol) which is now loaded after org is loaded and then HyWiki's `org-link-set-parameters' is lazily run. (hywiki-mode): Make global minor mode. (hywiki-at-wikiword): Don't require Org mode to test if at a HyWikiWord. (hywiki-highlight-page-name, hywiki-highlight-page-names): Make an autoload for use in hywiki defib. (hywiki): Move defib to "hibtypes.el". * hyrolo.el (window-buffer-change-functions): Use 'add-to-list' instead of 'push' to prevent duplicates. (hyrolo-normalize-mode-function): Apply to all windows in the given frame, not just the selected one. 2024-05-25 Bob Weiner * hbut.el (ibtype:delete): Fix interactive call. * hywiki.el (hywiki-remap-buttonize-characters): Add . (hywiki-highlight-page-name): Fix to highlight page name regardless of how much whitespace comes after the name. (hywiki-mode): Expand doc and add/remove 'post-self-insert-hook' call of 'hywiki-buttonize'. (hywiki-remap-buttonize-characters, hywiki-initialize-mode-map): Remove these and move keymap init into 'hywiki-mode' definition. (hywiki-buttonize): Rewrite to highlight HyWikiWord to the left of point iff last inserted char is in the set of 'hywiki--buttonize-characters'. Rename to 'hywiki-buttonize-character-commands'. (hywiki-buttonize-non-character-commands): Add. * hbut.el (gbut:act): Set 'loc to current-buffer, not the gbut's source buffer. (hbut:key-src-set-buffer): Clarify doc. (hbut:funcall): Change to use 'hbut:key-src-set-buffer' to temporarily set current-buffer to button's loc attribute. * hywiki.el (hywiki-get-page-files): Check that 'hywiki-directory' exists and is readable. (hywiki-is-wikiword): Make case-sensitive. (hywiki-at-wikiword): Remove optional 'org-link-flag' arg use 'ibut:label-p' to get HyWikiWord. 2024-05-23 Bob Weiner * hact.el (actype:delete): Fix interactive spec, eliminating use of 'hui:htype-delete'. * hui.el (hui:htype-delete): Fix doc. 2024-05-19 Bob Weiner * hywiki.el (hywiki-remap-buttonize-characters): Move initialization of 'hywiki--buttonize-characters' here instead of at variable definition to eliminate circular load dependency. (find-file-hook): Remove add-hook on 'org-mode-hook'. (hywiki-find-page): Add post 'hywiki-find-page-hook' and return absolute path to the found page. * hibtypes.el (grep-msg): Fix that when no source-loc, file path was not expanded. (find-func): Add require of this library for native compiler grep-msg library name expansion. * hywiki.el (hywiki-initialize-mode-map): Fix call of old function name. (hywiki-remap-remap-buttonize-characters): Remove extra remap-. (hywiki-find-page): Remove unused let of 'page-buffer'. 2024-05-18 Bob Weiner * test/hyrolo-tests.el (hyrolo-tests--goto-kotl-header-with-slash-match): Start to try to fix this test. * hpath.el (hpath:find, hpath:to-markup-anchor): Fix for directory pathnames so properly handles anchors, line numbers, column numbers and 'hpath-find' returns the buffer found. Also, make 'hpath:to-markup-anchor' handle any special buffer types without attached buffers. * hywiki.el (hywiki-get-org-insertion-punctuation-keys): Allow for symbol syntax chars and rename to 'hywiki-get-buttonize-characters'. (hywiki-remap-org-insertion-punctuation-keys): Rename to 'hywiki-remap-buttonize-characters'. (hywiki--buttonize-characters): Add as a computed string of single characters that each trigger prior HyWikiWord highlighting when it is enabled. (hywiki-highlight-page-name, hywiki-highlight-page-names): Don't skip back over symbol chars. (hywiki-find-page): Use this function as the 'find-file-hook' instead of 'hywiki-highlight-page-names'; make 'page-name' optional for this use since the current buffer will be the page, so the page name can be derived. If calling this function creates the page buffer, then enable hywiki-mode and call 'hywiki-highlight-page-names'. * hui-em-but.el (hproperty:but-clear-all-in-list, hproperty:but-get-all-in-region): Add. * hywiki.el (org-mode-hook): Don't make 'find-file-hook' buffer local, as this is not recommended. (hywiki-pages-hasht): Rename to 'hywiki--pages-hasht'. (hywiki-at-wikiword): Allow preceding char to be whitespace or additionally any of these chars: (["'`' ((hywiki-highlight-page-names, hywiki-at-wikiword, hywiki-highlight-page-name): Don't limit to files within 'hywiki-directory'; use whenever 'hywiki-mode' is enabled. (hywiki-at-wikiword): Remove 'hywiki-allowed-modes' since now test that hywiki-mode is enabled. (hywiki-initialize-mode-map): Add and make punct. and non-square-bracket and non-angle-bracket balanced expressions highlight HyWiki page name references. 2024-05-18 Mats Lidell * hypb.el (hypb:configuration): Add info about Emacs native comp. * hargs.el (hargs:action-get): Add Emacs 30 closure support. 2024-05-17 Mats Lidell * Makefile (dockerized): Add quotes so make is executed in the container. 2024-05-16 Mats Lidell * test/hact-tests.el (hact-tests--action-params-with-lambdas) (hact-tests--actype-act-with-lambdas): Verify closures. * hact.el (actype:act): Add Emacs 30 closure support. 2024-05-15 Bob Weiner * hywiki.el (org-mode-hook): Remove 'post-self-insert-hook' and instead highlight HyWikiWords via new 'hywiki-mode' minor-mode and its SPC and RET key bindings bound to hywiki-buttonize. 2024-05-12 Bob Weiner * hact.el (actype:act, action:params): Add Emacs 30 closure support. 2024-05-06 Bob Weiner * hyrolo.el (hyrolo-name-at-p): Fix to test point is in 'hyrolo-display-buffer'. 2024-05-05 Bob Weiner * hpath.el (hpath:delimited-possible-path): Rewrite to expand both delimited and non-delimited shell pathnames. For non-delimited strings, remove any leading or trailing spaces; otherwise, may prepend a dir with an extra space in there when extracting paths from an ls command that are indented to match the column indent of filenames with quotes around them. Also, remove requirement that shell buffer filenames be tab delimited and require that filenames with spaces in their names have quotes around them. (hpath:at-p): If file is readable, ignore whether it has "::" in it. * hui-em-but.el: Comment out non-load when non-interactive so does not created errors when used in "hywiki.el". 2024-04-23 Bob Weiner * hywiki.el: Remove autoload from defib and 'hywiki-open', fixing autoload error. (hywiki-company-hasht-backend): Complete words, not symbols (no punctuation). (hywiki-open): Rename to 'hywiki-find-page' and automatically create any non-existent page unless optional 'prompt-flag' is t, then prompt whether to create. If 'prompt-flag' is 'exists, return an existing page only, else nil. (hywiki-complete): Rename to 'hywiki-org-link-complete'. Insert `hywiki-org-link-type' only when 'hywiki-org-link-type-required' is non-nil. (hywiki-store-link): Rename to 'hywiki-org-link-store'. Insert `hywiki-org-link-type' only when 'hywiki-org-link-type-required' is non-nil. (hywiki-org-link-type): Change value from 'hy:' to 'hy'. (hywiki-page-list): Rename to 'hywiki-get-page-list'. (hywiki-get-pages): Rename to 'hywiki-get-page-hasht'. (hywiki-word-section-regexp): Add. (hywiki-get-page-files): Add missing '+' for multiple chars in file suffix. (hywiki-at-wikiword, hywiki-highlight-page-names): Allow for numerics in #section references. (hywiki--word-face): Change foreground of HyWikiWord to 'orange' when on a dark background. 2024-04-22 Bob Weiner * hywiki.el: Add new auto-wikiword note-taking system with `hywiki' ibtype. hasht.el: Temporarily add this for hywiki hash table support. hibtypes.el (load "hywiki"): Add at lowest ibtype priority. hsys-org.el (hsys-org-link-at-p): Support HyWikiWord handling. Makefile (EL_COMPILE): MANIFEST: Add hywiki.el and hasht.el. * hui-em-but.el (hproperty:but-start, hproperty:but-end, hproperty:but-delete): Add these functions and use in hywiki.el. 2024-04-21 Bob Weiner * hui-em-but.el (hproperty:but-clear): Add optional args 'property' and 'value'. When 'property' is given, clear the button only when property's value matches 'value'. (hproperty:but-p, hproperty:but-get): Add optional args 'property' and 'value', matching only when 'property' equals 'value', if given. 2024-04-20 Bob Weiner * hui-select.el (hui-c++-defun-prompt-regexp): Add to eliminate an Emacs hang in c++-mode caused by setting 'defun-prompt-regexp'. Update provided by Alan Mackenzie. Fixes Emacs bug#61436 from 2023 and gh#rswgnu/hyperbole/issue-518 from 2024. 2024-04-16 Bob Weiner * hyrolo.py: For Org files, create hyrolo match file header from all initial buffer-level '#+PROPERTY:' lines. * hib-social.el (github-reference): Allow for a - character following commit, issue or pull keywords; already supported / and = characters. (gitlab-reference): Allow for a - character following any ref-type keyword. * hui-select.el (hui-select-initialize): Disable C++ defun selection regexp until regexp is rewritten to prevent Emacs hangs. See Emacs bug#61436 from 2023 and gh#rswgnu/hyperbole/issue-518 from 2024. 2024-04-14 Mats Lidell * test/hbut-tests.el (hypb--gbut-act-with-web-link): Test for gbut:act on a web link. 2024-04-14 Bob Weiner * hyrolo.py: Add this file for command-line search for string matches in HyRolo files. Makefile (HYPERBOLE_FILES): Add hyrolo.py. * hui-mouse.el (hkey-alist): hmouse-tag.el (smart-prog-at-tag-p, smart-prog-tag): Add default handlers for programming languages that have xref support but no other specific Hyperbole features. * hsys-xref.el (hsys-xref-identifier-at-point, hsys-xref-item-at-point): Add so do not expose any internal xref call outside of this library. hui-mouse.el (hsys-xref): Switch to using 'hsys-xref-item-at-point' and add (require 'hsys-xref). * hbut.el (ibut:create): Set 'name-start' and 'name-end' location attributes when previously set in call of 'ibut:set-name-and-label-key-p'. * hbut.el (hbut:act): Fix to set current buffer to button 'loc attribute and to not set delim-text-start/end to use name start/end but only label. (hbut:funcall): Fix to set button's 'loc attribute to 'key-src' when given. Otherwise, activation of a global button from another buffer would not set the actual location of the button. * hsys-org.el (hsys-org-link-at-p): Org treats URLs with and without angle brackets as Org links but Hyperbole handles such links separately. Fix to match only to Org links within square brackets. This also fixes a problem where activating a URL global button fails because the Org open link code could not handle having point originally in another buffer. * hbut.el (ibtype:delete): hact.el (actype:delete): Make interactive with completion. Remove call to 'symtable:delete' since following call to 'htype:delete' does that. 2024-04-13 Bob Weiner * hsettings.el (hyperbole-web-search-alist): man/hyperbole.texi (Implicit Button Types, Menus): hib-social.el (social-reference): Update to use 'x' anywhere 'twitter' was previously allowed; either one is now usable for the same service name. * man/hyperbole.texi (Action Types): hib-social.el (github-reference): Github links have largely moved from using 'tree' to 'blob', so fix this. Also fix doc so that if not given a ref-type keyword, assume ref-type is to a file. 2024-04-10 Bob Weiner * hbut.el (ibut:insert-text): Fix when given a command-name to output proper action button, not a nil with nil arguments. 2024-04-09 Bob Weiner * hmouse-tag.el (smart-python-tag): Rewrite to just try to display a tag and signal an error if fail. Return non-nil if succeed. (smart-python): Rewrite to call 'smart-python-tag' first so uses xref backend which may be something like 'eglot' or a TAGS file in preference to 'jedi' and other Python def lookup methods. (smart-tags-display): Fix for newer versions of 'xref' which return an 'xref-match-item' sometimes rather than an 'xref-item'. Document this function. (smart-asm, smart-javascript, smart-python-tag, smart-java-tag) smart-c++-tag, smart-c, smart-fortran, smart-objc-tag): Remove searching messages to match other languages. 2024-04-08 Mats Lidell * test/hsys-org-tests.el (hsys-org--org-outside-org-mode-tmp-buffer) (hsys-org--org-outside-org-mode-tmp-file): Tests for org-links outside of org-mode. 2024-04-07 Bob Weiner * hyrolo.el (hyrolo-consult-grep-paths): Fix handling of zero 'max-matches' arg which triggers headline only searches. (hyrolo-move-to-entry-end): Handled named signals as well as errors. * hibtypes.el (org-link-outside-org-mode): Fix by removing this test: (eq hsys-org-enable-smart-keys t) since should follow Org links outside Org modes independent of this setting, as long as the Hyperbole mode is active. * Makefile (version, HYPERBOLE_FILES, TEXINFO_SRC): test/hpath-tests.el (hpath:prepend-shell-directory-test): man/hyperbole.texi: Remove "version.texi" file and include here to simplify doc build recipes. 2024-04-05 Mats Lidell * test/hmouse-drv-tests.el (hbut-defil-verbatim): Add test for reported issue gh#rswgnu/hyperbole/503. 2024-04-01 Mats Lidell * test/hpath-tests.el (hpath:prepend-shell-directory-test): * test/demo-tests.el (demo-manifest-test): Replace COPYING with DEMO since it is not exported in all installations, i.e. MELPA. (hpath:prepend-shell-directory-test): Use kotl-mode.el instead of version.texi which is not exported. 2024-04-01 Bob Weiner * hyrolo.el (hyrolo-consult-grep-paths): Add this support function for hyrolo-consult commands. (hyrolo-consult-grep): Rewrote to select files to search within the grep command itself for greatly increased speed. (hyrolo-consult-org-roam-grep, hyrolo-consult-org-roam-title): Add. 2024-03-31 Bob Weiner * hyrolo.el (hyrolo-consult-grep): Convert any non-nil prefix arg 'max-matches' to a number so it is utilized. * test/hbut-tests.el (hbut-tests--ibut-at-p-identifies-a-remote-pathname): Code now fixed so this test passes; remove expected failure clause. 2024-03-31 Mats Lidell * Makefile (coverage): Make target to use the coverage function from the command line. * test/hy-test-coverage.el: New test file for producing test coverage data. Uses the testcover package. (hy-test--count-coverage): Count the test splotches. (hy-test-coverage-file): Run tests and produce coverage date. * .github/workflows/main.yml (jobs): Add Emacs 29.3 to versions used for the CI builds. * test/hyrolo-tests.el (hyrolo-tests--grep-count): Verify hyrolo match count. 2024-03-31 Bob Weiner * hbut.el (defil): Fix bug gh#rswgnu/hyperbole/503 with change at "hbut.el:L3058:C21" to add lbl-key when referent is extracted from grouping 1 rather than the entire delimited string. * man/hyperbole.texi (Top): man/version.texi: Update version to 9.0.2pre. * hibtypes.el (mail-address): Move so lower priority than 'pathname' ibtype so that Tramp paths with embedded email addresses don't trigger as 'mail-address' but as 'pathname'. man/hyperbole.texi (Implicit Button Types): Change priority here too. Add 'org-id', 'org-link-outside-org-mode' and 'python-tb-previous-line' ibtypes doc. * hyrolo.el (hyrolo-grep-file): Remove this line that was skipping past the beginning of the first matching entry regexp and making matching entry count too low by 1: (re-search-forward hyrolo-hdr-and-entry-regexp nil t) * hpath.el (hpath:expand-list): Fix to properly expand a dir when 'exists-flag' is t. 2024-03-30 Bob Weiner * hyrolo.el (hyrolo-highlight-matches): Limit search to within 'end' bound. (hyrolo-add-match): Add 'headline-only' flag to limit match highlighting to within the headline of an entry only (its first line). (hyrolo-grep-file): Send 'hyrolo-add-match' the 'headline-only' flag; this fixes match highlighting to just within headlines when the flag is given. * hyrolo (hyrolo-grep-file): Fix to highlight only the original pattern match, not the bol-anchored search-pattern used when 'headline-only' non-nil is used. * hyrolo.el (hyrolo-next-match-function): Change doc so function takes only one arg now and not a second arg of 'headline-only'. That arg is now only sent to the higher level 'hyrolo-grep-file' function for efficiency. (hyrolo-next-regexp-match): Remove second 'headline-only' flag. (hyrolo-grep-file): With 'headline-only' flag, anchor pattern to match headline lines only and don't send 'headline-only' flag to 'hyrolo-next-match-function' call. This fixes headline-only searching which previously did not work properly. hyrolo-logic.el (hyrolo-): No longer send a nil second arg to the 'hyrolo-next-match-function' call; no longer needed. 2024-03-29 Mats Lidell * Makefile: Add install-melpa target. Used to validate hyperbole can be installed from melpa. * install-test/melpa/.emacs: .emacs used for the melpa install test. 2024-03-24 Mats Lidell * test/hui-tests.el (hui--ibut-link-directly-to-file) (hui--ibut-link-directly-to-org-body, hui--gbut-link-directly-ibut): Use L and C format for pathnames. * test/hpath-tests.el (hpath--hpath:line-and-column-regexp): Verify hpath:line-and-column-regexp. * hpath.el (hpath:section-line-and-column-regexp): Add optional line and column chars, L and C, to regexp. (hpath:file-position-to-line-and-column): Use L and C as standard format for pathnames with line and column. 2024-03-23 Mats Lidell * test/hui-tests.el (hui--ibut-link-directly-to-org-header-first-column) (hui--ibut-link-directly-to-org-header-second-column) (hui--ibut-link-directly-to-org-body): Add tests for ibut links to org mode files. 2024-03-21 Mats Lidell * .github/workflows/main.yml (jobs): Ensure grep for warnings does not fail the build if there are none. 2024-03-21 Bob Weiner * hpath.el (hpath:line-column-instance-regexp): Add and use in addition to 'hpath:line-and-column-regexp'. (hpath:find): Add above variable and instance handling logic. (hpath:to-markup-anchor): Add optional arg 'instance-num'. (hpath:is-p): Fix to handle paths with instance-num, line and col num. (hpath:to-markup-anchor): Change to leave point at the start of the anchor. * hbut.el (ibut:insert-text): Use anchor format in link-to-string-match when given an instance-num. * hyrolo.el (hyrolo-normalize-mode-function): Add and attach to `window-buffer-change-functions' to ensure normal modes are used when editing Org or Markdown files. * hui.el (hui:link-possible-types): When a single-line region is active in the referent buffer, create a link-to-string-match link to the text in the region. * hload-path.el (hyperb:generate-autoloads): Kill autoload buffers after generating them so does not interfere with package manager builds which may also generate these autoload files. 2024-03-17 Mats Lidell * Makefile (dockerized): Add target to run make with a dockerized Emacs. 2024-03-16 Mats Lidell * test/hbut-tests.el (hbut-tests--ibut-at-p-identifies-a-remote-pathname): Add test for ibut:at-p on remote path names. 2024-03-15 Mats Lidell * hycontrol.el (hycontrol-blank-buffer-name): Make name of the blank buffer customizable. 2024-03-14 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--goto-org-match) (hyrolo-tests--goto-kotl-body-match) (hyrolo-tests--goto-kotl-header-match) (hyrolo-tests--goto-kotl-body-with-slash-match) (hyrolo-tests--goto-kotl-header-with-slash-match): Test action key on a hyrolo match. 2024-03-12 Bob Weiner * hypb-maintenance.el (hypb:web-repo-update): Add "hib-doc-id.el". 2024-03-10 Bob Weiner * test/hyrolo-tests.el (hyrolo-tests--outline-hide-show-heading): Change two calls of 'next-line' to 'forward-visible-line'. * test/hy-test-dependencies.el (hy-test-ensure-package-installed): Fix to both install and require the package. * hactypes.el (org-fold-show-context): Declare Org function available in some versions of Emacs to suppress byte-compiler warning. * test/kotl-mode-tests.el (hy-test-dependencies): test/hyrolo-tests.el (hy-test-dependencies): test/hypb-ert-tests.el (hy-test-dependencies) test/demo-tests.el (hy-test-dependencies): Add to ensure el-mock is installed. ============================================================================== V9.0.2pre changes ^^^^: ============================================================================== * hversion.el: hyperbole.el: Release version 9.0.1 * Makefile (version): Add version check for file HY-ANNOUNCE. * hload-path.el (make-directory-autoloads): Remove 'ext:' since this is an Emacs built-in library available in version 28 and above. * hvm.el: Remove from Hyperbole as VM (the mail reader) is a very old package that is not available in normal package distributions today. * hsys-org.el (hsys-org-search-internal-link-p, hsys-org-search-radio-target-link-p): hactypes.el (link-to-org-id-marker): Conditionalize call of 'org-fold-show-context' on whether 'org-fold' feature exists. 2024-03-08 Mats Lidell * test/hmouse-drv-tests.el (hmouse-drv--hmouse-choose-link-and-referent-windows--two-windows-same-frame) (hmouse-drv--hmouse-choose-link-and-referent-windows--two-windows-different-frame): Add tests for choosing the windows non interactively. * hmouse-drv.el (hmouse-choose-link-and-referent-windows): Only pick next window from the selected frame when there are two windows in the frame. 2024-03-04 Bob Weiner * hibtypes.el (elink): Change "elink_" arg to "" so button lbl-key is set properly. (glink): Change "glink_" arg to "" so button lbl-key is set properly. (ilink): Change "ilink_" arg to "" so button lbl-key is set properly. hactypes.el (link-to-ibut): 'hbut:current may be the prior ilink that invoked this action for the ibut at point; before activating the button, call 'ibut:at-p' to ensure attributes are properly set. Fixes ilink bug. hbut.el (ibut:to-text): Rewrite to assume 'hbut:current has been set by the caller. 2024-03-03 Bob Weiner * hbut.el (hbut:act): If arg 'hbut' is given as a symbol, ensure its properties are copied to 'hbut:current so subcalls can reference them. * hactypes.el (link-to-ibut): Fix to use 'ibut:to-text' instead of 'ibut:to'. * hbut.el (ibut:label-start, ibut:label-end, ibut:label-regexp, ibut:label-instances-regexp, ibut:next-occurrence, ibut:previous-occurrence): Fix doc strings to refer to ibut name. (ibut:label-instances-regexp): Rename to 'ibut:name-instances-regexp'. (ibut:label-regexp): Rename to 'ibut:name-regexp'. * hyrolo.el (hyrolo-install-markdown-mode): Centralize install of this package. (hyrolo-install-markdown-mode): Add 'package-refresh-contents' call so CI/CD tests pass when installing this. * HY-NEWS: Updated with Hyperbole changes since 2024-01-07. * hyrolo.el (hyrolo-any-file-type-problem-p): Use 'nongnu' archive instead of 'melpa' for 'markdown-mode' package. 2024-03-02 Mats Lidell * test/hyrolo-tests.el: Create temp files in tests without setting temporary-file-directory. It can interfere with native code compilation. 2024-02-27 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-tests--gen-kotl-outline) (kotl-mode-tests--func, kotl-mode-tests--sanity-check-function-list) (kotl-mode--sanity-check-function) (kotl-mode--sanity-check-key-bound-commands): Sanity check kotl-mode user level commands. 2024-02-25 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--mail-to) (hyrolo-tests--location-movement): More hyrolo tests. 2024-02-25 Bob Weiner * FAST-DEMO: Add ERT multiple test run example. * hui.el (hui:ibut-link-directly): Fix doc to say 'Action Key' instead of 'Assist Key' and on error to go to Action Key depress buffer, not Assist one. (hui:ebut-link-directly): Fix doc to say 'Assist Key' instead of 'Action Key'. and on error to go to Assist Key depress buffer, not Action one. 2024-02-24 Bob Weiner * Makefile (lint): Rename 'package-lint' target to 'lint' and doc in comments. * hyrolo.el (hyrolo-isearch-for-regexp): Update to use minibuffer hook instead of unread-command-events since that was not working. Including a newline in the regexp which 'hyrolo-hdr-and-entry-regexp' does, may also cause the 'hyrolo-locate' command bound to {l} to fail. * man/hyperbole.texi (HyRolo Searching): Update this section with doc on auto-expansion and how to hide entries again. * MANIFEST (HYPERBOLE INTERNALS): Makefile (HYPERBOLE_FILES): Add .mailmap. 2024-02-22 Mats Lidell * test/MANIFEST: Add hywconfig-test.el. 2024-02-21 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--hyrolo-reveal-mode-kotl-file): Add test for reveal mode with kotl file. * Makefile (HYPERBOLE_FILES): Do not require README. It has been removed. (website, release, git-tag-release, ftp): Add confirmation of successful operation. ============================================================================== V9.0.1 changes ^^^^: ============================================================================== 2024-02-19 Mats Lidell * .mailmap: Add git .mailmap for mapping name and emails for commit authors. 2024-02-19 Bob Weiner * hyrolo.el (hyrolo-show-post-command): Add. (hyrolo-outline-minor-mode): Toggle use of 'hyrolo-show-post-command'. * hyrolo.el (hyrolo-mode): Set these two missing variables: 'hyrolo-entry-group-number' and 'hyrolo-entry-trailing-space-group-number'. (hyrolo-outline-level): Fix to use the length of match to 'hyrolo-entry-group-number'. (hyrolo-min-matched-level): Fix 'hyrolo-top-level'. First 'outline-regexp' match was ignored when computing min-level; fix to include. test/hyrolo-tests.el (hyrolo-tests--top-level-outline-for-all-file-types): Fix kotl-mode match string to include only the top-level entry line. 2024-02-18 Mats Lidell * Fix flycheck/flymake warnings. 2024-02-18 Bob Weiner * test/hyrolo-tests.el (hyrolo-demo-show-overview, hyrolo-tests--hyrolo-reveal-mode): ): Fix to handle that {TAB} now auto-expands the whole subtree of the matching entry. * hyrolo.el (hyrolo-next-match, hyrolo-previous-match): Temporarily add 'hyrolo-outline-show-subtree' call. (hyrolo-markdown-mode, hyrolo-outline-mode, hyrolo-org-mode): Change all `reveal-mode' calls to new `hyrolo-reveal-mode', which is temporarily a no-op until its functionality can be debugged in *HyRolo* buffers. 2024-02-12 Bob Weiner * hsys-org.el (hsys-org-fix-version): Reorder to have `org-macs' near front. * hbut.el (hbut:act-label): Add to match same func for ebuts and ibuts. 2024-02-12 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--modify-test-data): Helper for modifying org test data for outline and markdown files. (hyrolo-tests--outline-content-otl) (hyrolo-tests--outline-content-md): Use hyrolo-tests--modify-test-data. (hyrolo-tests---org-expected-outline-for-top-level) (hyrolo-tests---org-expected-outline-for-overview): Add expected outline for org test data. (hyrolo-tests--top-level-outline-for-all-file-types): Test top level outline. (hyrolo-tests--overview-outline-for-all-file-types): Test overview outline. 2024-02-11 Mats Lidell * test/hbut-tests.el (hbut-tests--ebut-act-calls-hbut-act) (hbut-tests--ibut-act-calls-hbut-act): Add test for new act functions with error cases. * hui-menu.el (hui-menu-explicit-buttons): Use ebut:act-label. * hbut.el (ibut:act-label, ebut:act-label): Rename 'ebut:act' and 'ibut:act' since they take a label as arg. (ebut:act, ibut:act): Add new act functions taking an hbut as an arg. Allow calling only with an ebut or ibut respectively. If falling back on 'hbut:current', check that it is of the same type as the call. 2024-02-08 Mats Lidell * test/hyrolo-tests.el: Make hide tests more forgiving about hiding section headers. Allows test cases to be used with different versions of org. Expand test verification strings so it is easier to view the expected outcome. 2024-02-05 Bob Weiner * Makefile (README.md.html): Rewrote to use md_toc and pandoc programs for greater reliability. (README.toc.md, README.md.html): Add to git repo for package distribution. * MANIFEST, Makefile: Add README.toc.md and remove README. 2024-02-04 Bob Weiner * man/hyperbole.texi (Hyperbole Overview): Update summary to include all newly supported file formats. (HyRolo Concepts): Remove comment that HyRolo entries can begin with optional whitespace; the code does not support this. * hyrolo.el (hyrolo-add): Ensure when matching for initial # characters, do not match to those later in the line. (hyrolo-markdown-mode): Fix to match only to lines starting with # as an entry prefix; don't use `markdown-regex-header' since that allows '- ' as an entry prefix. * hsys-org.el (hsys-org--set-fold-style): Add and use in 'hsys-org-fix-version'. 2024-02-03 Mats Lidell * test/demo-tests.el (fast-demo-key-series-shell-apropos): Skip test if apropos command is not available. Useful for running test-all using silex docker-emacs images. 2024-02-03 Bob Weiner * hyrolo.el (hyrolo-move-to-entry-end): Add doc string; add 'condition-case' in case of 'outline-before-first-heading' error (see advice from "org-compat.el"). hui-mouse.el (smart-outline-to-entry-end): Reverse parts of if clause; add 'condition-case' in case of 'outline-before-first-heading' error (see advice from "org-compat.el"). (hyrolo-cache-get-major-mode-from-pos): Fix error msg to reflect >= not >. 2024-02-01 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--hyrolo-section-header): Helper that returns a HyRolo section header. (hyrolo-tests--hyrolo-reveal-mode): Add reveal mode test. 2024-02-01 Bob Weiner * hyrolo.el (hyrolo-hdr-move-after-p): Updated to skip over trailing empty lines. * test/hyrolo-tests.el (hyrolo-demo-no-following-same-level-heading, hyrolo-demo-move-between-entries-on-same-level): No longer need to go to next record after moving past a header followed by a blank line. 2024-01-31 Bob Weiner * hyrolo.el (hyrolo-move-to-entry-end): Handle potential error raised if called with point before the first entry. 2024-01-30 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--outline-as-string): Add helper that returns how the buffer looks to the eye. (hyrolo-tests--outline-hide-other) (hyrolo-tests--outline-hide-sublevels) (hyrolo-tests--hyrolo-outline-show-subtree): Add tests for hyrolo outline show and hide commands. 2024-01-28 Bob Weiner * hyrolo.el (hyrolo-org-outline-level): Fix to not move point; was causing errors when moving forward to next sibling. (hyrolo-org-outline-level): Remove and use 'hyrolo-outline-level' instead to centralize any issues. * hmouse-tag.el (find-ert-test-regexp): Change ert test definition lookups to use the path stored in each test symbol's 'ert--test' property by changing from using the 'xref-find-definitions' in 'find-function-regexp-alist' to using this newly defined regexp instead. * hyrolo.el (hyrolo-reveal-open-new-overlays, hyrolo-reveal-close-old-overlays): Wrap 'funcall' in 'hyrolo-funcall-match' so uses HyRolo outline settings. (hyrolo-markdown-mode): Add missing (require 'markdown-mode). (hyrolo-show-levels): Remove call to 'hyrolo-outline-hide-subtree' to ensure reveal-mode does not expand current entry, since if point is within file header this displays the first entry on the final visible line of the file header rather than the next line. Callers of this function should instead set 'hyrolo-reveal-ignore-this-command' to t (which was already being done). (hyrolo-outline-hide-subtree, hyrolo-outline-hide-body) hyrolo-outline-hide-entry, hyrolo-outline-hide-leaves, hyrolo-outline-hide-other, hyrolo-outline-hide-sublevels, hyrolo-outline-show-branches, hyrolo-outline-show-children, hyrolo-outline-show-entry, hyrolo-outline-show-subtree): Add '(setq hyrolo-reveal-ignore-this-command t)' to these hide/show commands. (hyrolo-funcall-match): Fix edge-case of bob and eob off by one error in 'hyrolo-cache-set-major-mode' argument. (hyrolo-boolean-only-flag): Declare this so 'boundp' test passes. 2024-01-27 Bob Weiner * hyrolo.el (hyrolo-google-contacts-insert-data): Remove local let of (child nil). (hyrolo-edit, hyrolo-add): Call '(set-auto-mode t)' to change from any HyRolo-specific major-mode for quick reading to the file's normal mode for editing. (hyrolo--funcall-with-outline-regexp): Add to avoid setting 'outline-regexp' with a 'let' and call from 'hyrolo-map-matches' and 'hyrolo-funcall-match'. * hyrolo.el (hyrolo-auto-mode-alist): Add new variable to control major modes used by files read in for HyRolo searches. (hyrolo-find-file-noselect): Remove Org mode-specific logic and instead utilize 'hyrolo-auto-mode-alist'. (hyrolo-outline-mode): Add for use with .ou?tl files with HyRolo. (hyrolo-min-matched-level): Ensure never returns less than 1. (hyrolo--cache-major-mode): Use `hyrolo-auto-mode-alist' to override the default `major-mode' used on file entry matches within the *HyRolo* buffer. hypb.el (hypb:major-mode-from-file-name): Rename to 'hyrolo-major-mode-from-file-name' and move to "hyrolo.el". Prefix 'auto-mode-alist' values with those in 'hyrolo-auto-mode-alist'. hyrolo.el (hyrolo-any-file-type-problem-p): Rename call here of above function. hyrolo-logic.el (hyrolo-logic): Change call from 'hyrolo-find-file' to 'hyrolo-find-file-noselect' to enable use of 'hyrolo-auto-mode-alist'. 2024-01-23 Bob Weiner * hyrolo.el (hyrolo-reveal-ignore-this-command, hyrolo-reveal-open-new-overlays, hyrolo-reveal-close-old-overlays, reveal-post-command): Enable Hyperbole extended version of 'reveal-mode' that supports 'org-fold'. 2024-01-21 Bob Weiner * hypb.el (hypb:add-to-invisibility-spec): Add and use wherever 'add-to-invisbility-spec' was. * hload-path.el (auto-mode-alist): hyrolo.el (hyrolo-file-suffix-regexp): Allow for suffix .outl to invoke outline mode in addition to .otl. * hmouse-tag.el (smart-emacs-lisp-mode-p ,smart-lisp-mode-p): Change to use 'derived-mode-p' rather than checking for 'major-mode' matches directly. (smart-emacs-lisp-mode-p): Add optional 'skip-identifier-flag'. hsys-xref.el (hsys-xref-definitions): Use above flag to fix improper cyclic calling of 'smart-emacs-lisp-mode-p'; visible as very slow Elisp tag finding in ChangeLog mode. * hsys-org.el (hsys-org-log-and-fix-version): Add to log state when fixing a mixed Org mode installation. test/hy-test-dependencies.el: Remove require of 'pp' library and move logging into "hsys-org.el". * hyrolo.el (hyrolo-map-matches, hyrolo-funcall-match): Move 'sit-for' to the end of the function to ensure happens last. * hui-window.el (hmouse-alist-add-window-handlers): hui-mouse.el (outline-mode-hook): hui-menu.el (hui-menu-about): hmouse-tag.el (smart-emacs-lisp-mode-p, smart-tags-noselect-function): hib-debbugs.el (debbugs-gnu): hbut.el (hbut:ibut-key-list): Remove # quoting around function lists as edebug cannot handle this. * test/hy-test-dependencies.el (hsys-org-fix-version): Improve log msgs for this function. 2024-01-20 Bob Weiner * hsettings.el (hyperbole-web-search, hyperbole-read-web-search-arguments): Update to not prompt for search-term if the service is a function rather than a string. In such cases, the function should prompt for the search term. (hyperbole-web-search-alist): Add 'ducKduckgo' search engine. 2024-01-20 Mats Lidell * hmouse-sh.el (hmouse-move-point-eterm): Remove unused function. * Cleanup using flycheck resolving info and warning messages. * Update copyright date of latest updated version to be 2024 for all files with copyright string that so far have been updated in git under 2024. * test/hsettings-tests.el: New test file for hsettings. (hsettings-tests--hyperbole-web-search): Test hyperbole-web-search. * Makefile (package-lint): Add explicit loading of package-lint from Melpa for this target. Only needed there. * test/hy-test-dependencies.el: Do not load package-lint for running tests. (string-replace): Remove not needed compatibility code. * test/hyrolo-tests.el (hyrolo-tests--outline-content-otl) (hyrolo-tests--outline-content-md): Use replace-regexp-in-string for compatibility with old Emacs versions. 2024-01-17 Bob Weiner * test/hy-test-dependencies.el (org-reloaded): Show Org src dir. (string-replace): Conditionally define this from "compat" package, since is from Emacs28 and not available in Emacs27. * hsys-org.el (hsys-org-fix-version): Rewrite to reload any Org libraries previously loaded from the wrong builtin Org path, if a newer user-installed Org version exists on the 'load-path'. (hsys-org-get-libraries-to-reload): Add to compute wrong Org libraries loaded and use in above function. 2024-01-16 Mats Lidell * Makefile (eln): Use echo target for showing build info as part of the eln build. (echo): Show Emacs location and version in build environment info. 2024-01-15 Bob Weiner * hyrolo.el (hyrolo-to-entry-beginning): Rewrite to move properly. (hyrolo-move-backward): Remove, no longer used. 2024-01-16 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--forward-same-level-all-file-types-level1-depth2) (hyrolo-tests--forward-same-level-all-file-types-level2): Add test with more file types and second level headings. (hyrolo-tests--outline-content-org, hyrolo-tests--outline-content-otl) (hyrolo-tests--outline-content-md); Add test content constants. (hyrolo-tests--gen-kotl-outline): Add depth arg to kotl to generate child cells in test data. 2024-01-15 Bob Weiner * test/hyrolo-tests.el (hyrolo-tests--forward-same-level-all-file-types-level1): Fix test error by removing last forward list element so does not move past. * hyrolo.el (hyrolo-map-matches, hyrolo-funcall-match): Disable 'orgtbl-mode' only if enabled. * man/hkey-help.txt: Add ref to Org Meta Return. * hui-mouse.el (smart-hyrolo): Extend to edit source location from any line within the header, not just the @loc> line. man/hyperbole.texi (Smart Key - HyRolo Match Buffers): Document above change. * kotl/kotl-mode.el (kotl-mode): Set 'outline-level' to 'hyrolo-outline-level' which works for all HyRolo supported modes. * hyrolo.el (hyrolo-mode-map): Change {b} to 'hyrolo-outline-backward-same-level'. Change {f} to 'hyrolo-outline-forward-same-level' and rewrite. (hyrolo-outline-get-last-sibling, hyrolo-outline-get-next-sibling): Add to support {f} and {b} commands. (hyrolo-mode): Add set of buffer read-only to ensure no editing. Any commands that change text therein need to also update the buffer caches. (hyrolo-forward-same-level, hyrolo-backward-same-level): Remove, duplicates of above hyrolo-outline-* functions. (hyrolo-outline-next-visible-heading): Change to return whether any next heading/header is found. (hyrolo-outline-forward-same-level, hyrolo-outline-backward-same-level): Rewrite based on 'hyrolo-outline-next-visible-heading'. (hyrolo-outline-get-level): Add and call from above 2 functions. (hyrolo-markdown-outline-level): Remove and use 'hyrolo-outline-level'. (hyrolo-outline-level): Fix to handle kotl-mode properly. (hyrolo-outline-move-subtree-up, hyrolo-outline-move-subtree-down, hyrolo-outline-insert-heading, hyrolo-outline-demote, hyrolo-outline-promote): Barf if buffer is read-only for these cmds. 2024-01-15 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--forward-same-level-all-file-types-level1) (hyrolo-tests--forward-same-level-org-level2): Add tests for hyrolo forward and backward movement on same level. 2024-01-14 Bob Weiner * hypb.el (require 'org): Add to define 'org-show-all'. Fix typo missing leading h in 'hsys-org-enable-smart-keys'. * hsys-org.el (hsys-org-fix-version): Remove unused 'org-dir-version'. * hsys-xref.el (smart-emacs-lisp-mode-p): Declare this function. * hycontrol.el (hycontrol-windows-grid-buffer-list): Remove use of free variable, 'mode', since this is never called when a specific 'major-mode' is set. * hsys-org.el (package): Add (require 'package). * hmouse-tag.el (smart-tags-display): Fix missed rename of 'hsys-xref-item-buffer' and 'hsys-xref-item-position'. * hui.el (hui:ebut-act, hui:ebut-act): Fix 'hui:hbut-operate' call to use 'hbut:act' which takes a button argument as opposed to 'ebut:act' and 'ibut:act' which each take a label argument. 2024-01-13 Mats Lidell * test/hbut-tests.el (ebut-program-link-to-directory): Remove test in favor of almost identical copy but keep the simpler name. (ebut-program-link-to-directory-in-non-file-buffer) (ebut-program-link-to-directory-in-message-mode-buffer) (ebut-delete-removes-ebut-in-non-file-buffer) (ebut-delete-removes-ebut-in-message-mode-buffer): Add tests for non-file buffer and non-file in message-mode buffer. 2024-01-13 Bob Weiner * test/hy-test-dependencies.el: Print status of resolving any multi-version/mixed Org installations. * hyrolo.el (hyrolo-any-file-type-problem-p): Disable printing output if 'hyrolo-boolean-only-flag' is non-nil, used in testing. test/hyrolo-tests.el (hyrolo-tests--get-file-list-wrong-suffix): Use above flag. * Makefile (test-ert): Do not ellide any stack traces, i.e. set 'ert-batch-print-length' to nil. Change test SELECTOR= to test= and document how to run. * hyrolo.el (hyrolo-any-file-type-problem-p): Disable printing of any output when 'hyrolo-boolean-only-flag' is non-nil, typically used for testing purposes. * hui.el (hui:ebut-unmark): Fix to handle a non-file-based buffer as 'key-src'. * hsys-org.el (hsys-org-fix-version): Add. Add .org suffix to 'auto-mode-alist' as it may be removed in this function. Return t when Org is reloaded, nil if not. Require Org libraries even when no reload is done. Handle when 'org-version' differs from version number in 'org-dir'. hyperbole.el (hyperb:init): Add call to 'hsys-org-fix-version' when detect a mixed version installation of Org, typically part of built-in Org loaded before loading a newer packaged version. * hargs.el (hargs:at-p): Fix 'no-default' arg handling to not select non-existent dirs and files when no-default is true. * hsys-xref.el (hsys-xref-definitions): Fix to pass symbol, not string to 'ert-test-boundp'. * hmouse-drv.el (hkey-help-show): Rename local var from 'org-help' to 'hkey-org-help' to eliminate any confusion that this is an Org variable. * hyrolo.el (hyrolo-any-file-type-problem-p): Print error buffer to stdout when run noninteractively (batch mode). * hyrolo.el (hyrolo-org-mode): Conditionalize org-fold usage as it is only available in newer Org versions. Add missing forward declarations. * hyrolo.el (hyrolo-org-mode): Add newer Org 9.7-pre hide/show support. test/hyrolo-tests.el (hyrolo-tests--outline-hide-show-heading, hyrolo-tests--outline-show-when-moving-out-of-hidden-line): The above change fixes these tests, so they have been re-enabled. * hmouse-tag.el (smart-lisp-identifier-chars): Add @ char as advised functions use the orig-function@advice-wrapper-name to refer to the advice. * hpath.el (hpath:variables): Move 'load-path' and 'exec-path' before 'Info-directory-list' as they should be higher priority matches. Remove old 'Info-directory'. 2024-01-12 Bob Weiner * hypb.el (hypb:display-file-with-logo): Expand any folded headings in the file. Improve use in tests by doing the following when in batch mode (noninteractive): Kill off any non-modified buffer showing the file to display before freshly reading it. 2024-01-10 Bob Weiner * hui-mouse.el (hkey-alist): Move 'smart-eolp' to immediately before 'smart-org' clause. hsys-org.el (hsys-org-cycle-bob-file-list): Add to list files auto set to 'org-mode' with minor 'view-mode' that allow org global cycling of headings with {TAB} when at the beginning of buffer and not on a heading. hyrolo.el (hyrolo-verify): Allow buffers associated with files from 'hsys-org-cycle-bob-file-list' as well. hui-mouse.el (smart-org-bob-and-non-heading-p): Check whether {TAB} or {M-RET} should org-global-cycle at point." (smart-eolp): Allow for org global cycling at start of buffer on a non-heading line in Hyperbole doc files when displayed from Hyperbole menu items. hypb.el (hypb:insert-hyperbole-banner): Update so Hyperbole logo link does not include the first blank line, allowing for a different action on {RET} there. * hyrolo.el (hyrolo-verify): Remove mentions of HyNote (not in this release). * hypb.el (hypb:display-file-with-logo): Remove call (skip-syntax-forward "-") so point stays at the beginning of buffer for Org global display cycling. Replace 'id-browse-file' and 'view-mode' with 'hyrolo-mode'. * hsys-flymake.el (repeat-mode): Add missing (require 'repeat) since 'repeat-mode' function used herein is not autoloaded. (flymake-mode-hook): Check whether `repeat-mode' is fboundp or not before trying to enable it (should be autoloaded when it exists, probably in Emacs 28 or greater). 2024-01-09 Bob Weiner * hsys-xref.el: Add forgotten file. 2024-01-09 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--outline-next-visible-heading-md) (hyrolo-tests--outline-next-visible-heading-all) (hyrolo-tests--outline-next-visible-heading-kotl) (hyrolo-tests--outline-next-visible-heading-all-file-types) (hyrolo-tests--outline-show-when-moving-out-of-hidden-line): Add more test cases for hyrolo outline show, hide and movement. (hyrolo-tests--gen-kotl-outline, hyrolo-tests--verify-hidden-line) (hyrolo-tests--verify-not-hidden-line): Add helper functions and use. 2024-01-09 Bob Weiner * hact.el (htype:def-symbol, htype:names, actype:def-symbol): Change call from 'make-symbol' to 'intern' for efficiency. 2024-01-07 Bob Weiner * hbut.el (hbut:actype, ibut:type): Add for Hyperbole API use. (ibut:at-type-p): Rewrite using 'ibtype:elisp-symbol' and 'ibut:type'. (ibut:is-type-p): Add to give both an ibut and a type for comparison and API use. (ibtype:def-symbol, hattr:report): Change call from 'make-symbol' to 'intern' for efficiency. * hmouse-tag.el (smart-tags-noselect-function): Change function reference to new name, 'hsys-xref-definition'. * MANIFEST: Makefile (EL_COMPILE): hsys-xref.el (hsys-xref-definitions): Move xref utility functions from "hmouse-tag.el" to here and add Hyperbole unique hsys- prefix. * test/hy-test-helpers.el (hy-delete-files-and-buffers): Add helper for cleaning up multiple files and buffers. 2024-01-06 Mats Lidell * Makefile (HYPB_ERT_BATCH, HYPB_ERT_BATCH_BT): Add command line arg to run test specified by selector. Example to run all hyrolo tests make test SELECTOR=hyrolo Bonus. Control size of backtraces so that we get more info on errors. For full backtrace add command line argument FULL_BT= make test SELECTOR=hyrolo FULL_BT= 2024-01-06 Bob Weiner * Makefile (test-all): Revert to use 'ert-run-tests-interactively' again instead of 'ert-run-tests-batch' so get interactive *ert* features including {b} to show backtraces for failed tests. With new updates, now can run a previously run test from its definition with the Action Key and it will simply update the result in the existing buffer rather than overwriting the buffer with just that test. * test/hypb-ert-tests.el (hypb-ert-tests--edebug-is-called): Fix this test by removing mock of `edebug-defun' which is necessary to set the symbol property that registers the name as an ert test. Without this, `hypb-ert-run-test-at-definition' will not run the test. 2024-01-05 Bob Weiner * test/hypb-ert-tests.el (hypb-ert-tests--edebug-is-called): hypb-ert.el (hypb-ert-run-test-at-definition, hyperbole-run-test-definition, hyperbole-run-test-definition:help): Remove 'test-name' arg and find any name at point instead. Return t if run a test, else nil. Simplify logic. * hmouse-tag.el (smart-emacs-lisp-mode-p): Include 'ert-results-mode'. (smart-lisp-find-tag): Allow 'tag' arg to be a symbol, not just a string. This allows it to be used as a target function in 'find-function-regexp-alist' which is used in the ert results buffer with the {.} command to jump to the ert test definition at point. (xref-definitions, xref-definition): Rewrite to handle ert-deftests. * Makefile (test-all): Change 'ert-run-tests-interactively' to 'ert-run-tests-batch' because this shows tracebacks of any tests that fail in the *Messages* buffer, speeding debugging. Although it does have the side-effect of not producing the interactive *ert* buffer that lets you jump to test source. However, you can paste the test results into another Emacs and use Hyperbole to jump to test/symbol definitions. (test-all-output): Save outputs including backtraces written to *Messages* buffer in file "ERT-OUTPUT". * test/hib-kbd-tests.el (kbd-key-hy-demo-factorial-test): Remove use of *ert* buffer which may not exist if run in batch mode. * hyrolo.el (hyrolo-any-file-type-problem-p): If problem occurs within a 'let', then show backtrace so know where the let-binding was set. 2024-01-04 Bob Weiner * hyrolo.el (hyrolo-org-mode): Force font-lock-mode off in this major mode for speed. (hyrolo-funcall-match): Add optional arg 'backward-flag' to select proper major mode for a *HyRolo* match file when moving backwards. test/hyrolo-tests.el (hyrolo-tests--outline-next-visible-heading, hyrolo-tests--outline-next-visible-heading-two-sections): Fix tests to work with fixed {n} and {p} commands. * hui-mouse.el (hsys-flymake): Move loading of this library here from "hibtypes.el". hsys-flymake.el (hsys-flymake-issue-at-point, hsys-flymake-issue-at-point:help): Remove this ibtype and its :help function. Hyperbole uses 'hkey-alist' Smart Key invocations of functions from this file instead now. Also, add documentation of all commands and key bindings. * test/hyrolo-tests.el: Changed all 'header' to 'heading'. (hyrolo-tests--generate-heading-contents-for-tests): Generalized to take a 'heading-prefix-char' argument, to allow for markdown outline generation as well. * hyrolo.el (hyrolo-hdr-move-after-p): Fix and improve to handle point anywhere within a file header, not just on delim or loc lines. (hyrolo-outline-next-visible-heading, hyrolo-outline-previous-visible-heading): Fix to handle file headers properly when moving more than one entry at a time. 2024-01-03 Bob Weiner * hui-mouse.el (smart-eolp): Change 'hsys-flymake-get-issue-at-point' to correct 'hsys-flymake-get-issue-at-position' call. (hkey-alist): If in the flymake linter list of issues buffer, jump to or show issue at point. man/hkey-help.txt: man/hyperbole.texi (Implicit Button Types): Remove 'hsys-flymake-issue-at-point' ibtype (use {C-c C-l g} command instead. Document new 'hkey-alist' behavior from above. * man/hyperbole.texi (Smart Key - Occurrence Matches): Move to proper priority order. (Smart Key - Flymake Mode): Add and add table of Hyperbole key bindings in source buffer 'flymake-mode'. (Glossary - Flymake): Add. (Implicit Button Types): Remove hsys-flymake ibtype since would only apply if no other type applies and this could be confusing and inconsistent to users. Leave it commented out in the code so a user can enable it at a higher priority if desired. * hypb-ert.el (hypb-ert-run-test-at-definition): Fix to edebug function when not previously defined. test/hypb-ert-tests.el (hypb-ert-tests--edebug-is-called): Make edebug test work. * hib-debbugs.el (declare-function): Revert declarations to use "ext:debbugs-gnu" from "ext:debbugs" since the newer package does not have many of the functions that Hyperbole presently uses. * MANIFEST: man/hkey-help.txt: man/hyperbole.texi (Implicit Button Types): hibtypes.el (hsys-flymake): Makefile (EL_COMPILE): Add "hsys-flymake.el" to Hyperbole. 2024-01-02 Bob Weiner * hibtypes.el (text-toc): Fix doc on whitespace handling before and after TOC header and TOC entry lines. hactypes.el (text-toc): Fix not handling different whitespace in TOC entry vs. section header. * hui.el (hui:hbut-help): Return custom button help function symbol if any; otherwise, return the function used, 'hbut:report. This is used in Smart Key help which previously was not displaying the proper action for the Assist Key when on a Hyperbole button. hmouse-drv.el (hkey-help): Update to display proper Assist Key help. 2023-01-02 Mats Lidell * test/hyrolo-tests.el (hyrolo-tests--level-number) (hyrolo-tests--generate-header-contents-for-tests) (hyrolo-tests--gen-outline): Add helper for constructing org files for tests. (hyrolo-tests--outline-next-visible-header) (hyrolo-tests--tab-through-matches) (hyrolo-tests--outline-hide-show-heading) (hyrolo-tests--outline-up-header, hyrolo-tests--edit-entry) (hyrolo-tests--outline-next-visible-header-two-sections): Add test for working with hyrolo matches. (hyrolo-tests--get-file-list-change) (hyrolo-tests--get-file-list-wrong-suffice): Add hyrolo tests for get-file-list. * test/hypb-ert-tests.el (hypb-ert-tests--def-at-p) (hypb-ert-tests--edebug-is-called): Add tests for hypb-ert. 2024-01-01 Bob Weiner * hypb-ert.el (hypb-ert-def-at-p): Update doc. Fix grouping ref that was 1 that should have been 2 since optional "\\(-async\\)" added to the regexp. 2023-12-31 Bob Weiner * hbut.el (ibut:create, ibut:at-p): Change to call 'smart-eolp' instead of 'eolp' so can handle flymake issues where an overlay/char-property is added at the end of a line only and we want an implicit button created for this. * hui-mouse.el (hkey-alist): Add logic for new hsys-flymake library to handle diag issues at the end of the line where we want an implicit button to fire rather than typically eol handling. * hbut.el (ibtype:test-p, ibtype:act): Add these to mirror actype functions. (ibtype:elisp-symbol): Add alias similar to existing actype one. So that (ibtype:act ) executes the ibtype action if the current buffer context supports it. * hyrolo.el (hyrolo-file-list): Add 'hyrolo-set-file-list' after loading the hyrolo library (at the end of the file) if 'hyrolo-file-list' has been set by the user or the customization system prior to loading HyRolo. 2023-12-30 Bob Weiner * hyrolo.el (hyrolo-show-levels): Add top-level save-excursion so point does not move. (hyrolo-outline-next-visible-heading): Rename 'hyrolo-next-visible-heading' to this. * FAST-DEMO (Action Buttons): Update to include ert test definition within the file so do not have to load all of the test files to run the demo. * hbut.el (ebut:label-p): For buttons, allow unlimited length button labels since might be an entire long sexpression. * hib-debbugs.el (debbugs-gnu-query:list): Debbugs support libary has been renamed from 'debbugs-gnu' to just 'debbugs'. 2023-12-29 Bob Weiner * test/hui-tests.el (hui--link-possible-types): Make use .otl rather than .outl file suffix which automatically invokes 'outline-mode'. * hyrolo.el (hyrolo-to-entry-end): Fix bug where HyRolo fgrep would get stuck in Org buffers without any outline delimiters due to this function moving backwards. * HY-ANNOUNCE: README.md: FAST-DEMO (Introductory Videos): Add 3 EmacsConf 2023 videos on Hyperbole. * hui-mouse.el (hkey-alist): Add 'ert-results-mode' support using rsw's new "ert-results.el" library. Add 'smart-ert-results' and 'smart-ert-results-assist' support functions. Fix many flycheck warnings. * hmouse-tag.el (smart-lisp-find-tag): Fix issue where 'hkey-value' was used as tag when it was not a string, causing failures on known function lookups. 2023-12-29 Mats Lidell * test/demo-tests.el (fast-demo-markdown-anchor-with-spaces) (fast-demo-elisp-or-env-vars, fast-demo-elisp-library-in-load-path) (fast-demo-info-manual-references, fast-demo-grep) (fast-demo-python-trace-back, fast-demo-man-k) (fast-demo-action-button-shell, fast-demo-action-button-fill-column) (fast-demo-display-demo-using-action-buttons) (fast-demo-display-kotl-starting-from-cell) (fast-demo-outline-section-anchor-and-relative-line-number) (fast-demo-markdown-anchor-with-spaces) (fast-demo-elisp-library-in-load-path) (fast-demo-elisp-or-env-vars): Add remaining test cases for fast-demo. 2023-12-28 Bob Weiner * kotl/kotl-mode.el (kotl-mode:pre-self-insert-command): Add these kotl-mode commands: kill-line, kill-region, kill-sentence, kill-or-copy-region, yank, yank-from-kill-ring, yank-pop, and yank-rectangle. (kotl-mode:to-valid-position-commands): Make list of commands modifiable. * hypb-ert.el (hypb-ert-def-at-p): Add support for `ert-deftest-async' from the "ert-async.el" package. * hactypes.el (text-toc): Tighten section matching by ensuring it matches to the beginning of the text of the line aside from any initial whitespace. Previously, it could match to any part of the line and was not regexp-quoted, leading to occasional mis-matches. * hmouse-tag.el (smart-lisp-at-non-htype-tag-p): Fix to remove any action button trailing '>' character. Already removed any leading '<'. Match to symbol and word chars between <> to handle all action button labels. hibtypes.el (action): Add support for executing ert-deftests and update doc string for this. man/hyperbole.texi (Action Buttons): DEMO (Using Action Buttons): FAST-DEMO (Action Buttons): Add example action button of a Hyperbole ert test. man/hyperbole.texi (By Dragging): Eliminate repeated paragraph and update mouse key references. 2023-12-27 Bob Weiner * hmouse-drv.el (hkey-window-link): Invert the meaning of the prefix arg, so without one, creates implicit buttons and with creates explicit buttons. This is the new V9 standard as then by default there is no need to prompt for a button name. hui-window.el (hmouse-alist-add-window-handlers): Invert drag between windows so without a prefix arg, creates implicit buttons and with, creates explicit ones. hui.el (hui:ibut-link-directly): FAST-DEMO (Implicit Buttons): DEMO (Creation via Dragging, Creation via Ace Window): man/hyperbole.texi (Keyboard Drags, Smart Mouse Drags between Windows): man/hkey-help.txt: Update doc on above. 2023-12-26 Mats Lidell * test/hmouse-drv-tests.el: test/hibtypes-tests.el: test/hib-kbd-tests.el: test/demo-tests.el: Set enable-local-variables to nil for test cases where DEMO and FAST-DEMO is loaded to avoid getting queried. 2023-12-26 Bob Weiner * hpath.el (hpath:to-markup-anchor): If 'referent-regexp' starts with '^', add "[ \t]*" instead of "[ \t]+" to the expression in case it matches the whole line. * hui.el (hui:link-possible-types): Change outline heading line link to trigger only for outline, org and kotl modes when point is anywhere on the heading line. Include non-zero column in pathname so returns to the original point. Produce a 'link-to-string-match' type. hbut.el (ibut:insert-text): Change 'actypes::link-to-string-match' to use a pathname format ibut rather than a action button when the occurrence number is 1. * hui-select.el (hui-select-scan-sexps): Don't use 'hui-select-syntax-table' in Lisp modes as its use of matching angle brackets prevents proper sexp selection when on the opening parentheses of anything with angle brackets inside, e.g. (< 2 3). * hyrolo-logic.el (hyrolo-fgrep-logical): Fix quoting for Lisp read and regexp operator handling. hyrolo.el (hyrolo-fgrep): Fix to handle 'r-' regexp logic operators. man/hyperbole.texi (HyRolo Searching): Add doc for regular expression-based logic operators. * hyrolo-logic.el (hyrolo-map-logic): Update to handle multi-file formats in 'hyrolo-display-buffer'. (hyrolo-map-entries, hyrolo-map-kotl): Add doc string. (hyrolo-fgrep-logical): Rename arg 'whole-buffer-flag' to 'koutline-flag' to match its purpose. Does not seem to be sent as true anywhere in the existing code base. * hyrolo.el (hyrolo-hdr-in-p): Add to test if in a HyRolo file header. (hyrolo-hdr-to-first-line-p): Add to move to file header start. (hyrolo-outline-hide-subtree): If point is on a file header in the 'hyrolo-display-buffer', then collapse the entire file from the current end-of-line forward. This makes {h} work within file headers. (hyrolo-hdr-move-after-p): Handle point on single text line between header delimiters. (hyrolo-outline-show-subtree): If point is on a file header in the 'hyrolo-display-buffer', then show/expand the entire file. This makes {s} work within file headers. man/hyperbole.texi (HyRolo Keys): Update to document latest {h} and {s} behavior. hbut.el (hbut:get-key-src): Call (hyrolo-hdr-move-after-p) so if in a file hdr, backwards search finds its @loc line rather than going to prior one. * hyrolo.el (hyrolo-outline-level): Fix to return level 1 when on a file header separator or @loc> line. (hyrolo-outline-up-heading): Rewrite and fix to handle edge cases. (hyrolo-name-at-p): Fix to store the current line and col in a text property when possibly hierarchical name is found/used so can jump to the specific line within an entry when editing. (hyrolo-to): Fix to jump to stored current line and col after finding a possibly hierarchical name in HyRolo. * man/hyperbole.texi (HyRolo Keys): Update doc for 'hyrolo-edit', {e} key, and how it handles datestamps. Mention 'hyrolo-date-format'. * hactypes.el (link-to-kcell): Fix to use any source location, e.g. in HyRolo display matches buffer. * hsys-org.el (hsys-org-agenda-item-at-p): hui-mouse.el (smart-org): man/hyperbole.texi (Smart Key - Org Mode): Update doc to note the context is an Org agenda item within an Org agenda view, not the item in its source context. * test/hy-test-helpers.el (hy-test-helpers:ensure-link-possible-type): Add. test/hui-tests.el (hui--link-possible-types): Use above function to ensure 'hui:link-possible-types' returns one given type only for each test herein. 2023-12-26 Mats Lidell * test/hy-test-helpers.el (hy-delete-dir-and-buffer): Add test helper for removing buffers for temp folders. * test/hui-tests.el (hui--link-possible-types): Add test for hui:link-possible-types. 2023-12-26 Bob Weiner * test/hyrolo-tests.el: Fix with-simulated-input where prompting for 'y'. * hyrolo.el (hyrolo-map-matches, hyrolo-funcall-match): Ensure point ends up on a visible point so that reveal-mode does not force and unhide of the entry. Remove the above logic from 'hyrolo-show-levels' since it calls 'hyrolo-map-matches'. (hyrolo-mode): For now, stop enabling 'reveal-mode' until can get it working right with the enabling of 'outline-minor-mode' when switch major modes in "*HyRolo*", typically using 'hyrolo-funcall-match' or 'hyrolo-map-matches'. * test/hyrolo-tests.el (hyrolo-sort-test): Enable this test. hyrolo.el (hyrolo-add): Fix this function to insert sub-entries in the right location so 'hyrolo-sort-test' passes. 2023-12-25 Bob Weiner * hyrolo.el (hyrolo-entry-regexp): Rename to 'hyrolo-hdr-and-entry-regexp' and in 'hyrolo-mode' extend its value to include all multiple trailing whitespace chars after the entry delimiter. Add new variable `hyrolo-entry-regexp' which does not match to file headers. * hyrolo.el (require 'reveal): Add since overload its functions now. * kotl/kotl-mode.el (kotl-mode:reveal-toggle-invisible): Fix by adding 'get-buffer' call around 'hyrolo-display-buffer'. Otherwise, the buffer comparison would always fail. * hyrolo.el (hyrolo-hdr-move-after-p): Modify to handle when point is not at the start of but is on a hdr separator or loc line. (hyrolo-to-entry-beginning): Fix to move past any file hdr. (hyrolo-map-matches): Fix calls to this that are mode-specific by adding second arg of t. (hyrolo-show-levels): Rewrite so handles all behavior for {t} and {o} key bindings. (hyrolo-overview, hyrolo-top-level): Simplify for new version of 'hyrolo-show-levels'. (outline-mode-hook): Fix to capture only one whitespace char in 'outline-regexp' so 'hyrolo-outline-level' function works properly. (hyrolo-grep-file): Require a final blank line so that 'outline-hide-sublevels' won't hide it and combine with any next file header. (hyrolo-min-matched-level): Fix to start with max val rather than min val. * man/hyperbole.texi (HyRolo Keys): Document [ and ] keys to move to prev and next buffer/file @loc> line. * hyrolo.el (hyrolo-to-entry-end): Don't move back one char if on end of line. * hbut.el (hbut:source-prefix): hmoccur.el (moccur-source-prefix): Clarify doc. * hyrolo.el (hyrolo-markdown-suffix-regexp): Add and use in `hyrolo-file-suffix-regexp' to capture all Markdown suffixes. (hyrolo-any-file-type-problem-p): Use above regexp here. Separate out invalid files due to invalid suffixes from files with invalid major modes due to not being in 'auto-mode-alist'. (outline-mode-hook): Add to configure outline-mode for use with HyRolo. (hyrolo-org-mode): Update to set all local hyrolo variables. * kotl/kotl-mode.el (kotl-mode): Set 'outline-regexp' to match 'hyrolo-hdr-and-entry-regexp' to account for file headers in 'hyrolo-mode' (multi-format major-mode). 2023-12-24 Bob Weiner * hyrolo.el (hyrolo-any-file-type-problem-p): Add to handle file suffixes that HyRolo cannot handle and to install the markdown-mode package as necessary when a Markdown file is specified in 'hyrolo-file-list'. (hyrolo-let-file-list, hyrolo-set-file-list): Call above function. This fixes failures with Markdown files improperly put into fundamental-mode which means their headings are not recognized properly. (hyrolo-to-previous-loc, hyrolo-to-next-loc): Add and bind to [ and ] keys in 'hyrolo-mode-map'. (hyrolo-hdr-prefix-regexp): Add so do not repeat expression multiple places and add this to `outline-regexp' in all major-modes supported by HyRolo. * hload-path.el (auto-mode-alist): Setup to invoke 'outline-mode' on ".otl" suffixed files. * man/hyperbole.texi (HyRolo Concepts): hyrolo.el (hyrolo-file-list): Update doc to specify allowable file suffixes and types. 2023-12-23 Mats Lidell * test/hpath-tests.el (hpath--expand-no-wildcards-existing-path) (hpath--expand-variations-non-existing-path) (hpath--expand-elisp-variable, hpath--expand-environment-variable) (hpath--expand-auto-variable-alist, hpath--resolve-auto-variable-alist) (hpath--expand-list-return-a-list, hpath--expand-list-match-regexp): Add tests for hpath:expand and hpath:expand-list. 2023-12-23 Bob Weiner * hypb.el (hypb:major-mode-from-file-name): Add for initial use in "hyrolo.el". * hactypes.el (link-to-regexp-match): Fix to use arg 'n' in the regexp search. * kotl/kotl-mode.el (kotl-mode): Ensure local vars are set if current buffer is HyRolo display matches buffer. * hypb.el (hypb:remove-from-plist, hypb:do-remove-from-plist): Add for use in "hywconfig.el". hywconfig.el (hywconfig-add-by-name, hywconfig-delete-by-name, hywconfig-restore-by-name): Fix all wconfig by name functions which were storing only unnamed window configs. Change all to return a boolean value based on whether the operation succeeds or not. (hywconfig-set-names): Replace with 'hywconfig-named-set-entries'. (hywconfig-named-get-entries, hywconfig-named-put, hywconfig-named-get): Add. (hywconfig-get-names): Replace with 'hywconfig-named-get-names'. (hywconfig-set-window-configuration): Add doc. (require 'set): Remove, no longer used. * kotl/kotl-mode.el (kotl-mode): Disable 'change-major-mode-hook' addition of 'kotl-mode:show-all' if in the HyRolo display buffer. * hyrolo.el (hyrolo-hdr-and-entry-regexp): Add 'hyrolo-hdr-regexp' and 'hbut:source-prefix' so are not skipped during hide/show operations. Also do this in 'markdown-mode-hook' and 'kotl-mode'. * test/hyrolo-tests.el (hyrolo-demo-move-between-entries-on-same-level, hyrolo-demo-no-following-same-level-heading): Fix header skipping by using 'hyrolo-hdr-move-after-p'. (hyrolo-fgrep-find-all-types-of-files): Fix by adding proper headling structure to each file type. (hyrolo-fgrep-and-goto-next-visible-md-heading): Fix by removing one '#' from expected heading level. * kotl/kotl-mode.el (kotl-mode:reveal-toggle-invisible): May be in the 'hyrolo-display-buffer', so wrap a 'hyrolo-funcall-match' call around 'outline-reveal-toggle-invisible' call to ensure proper match buffer mode is set for koutline matches. * hyrolo.el (hyrolo-grep-file): Remove 'backward-search-limit' as may miss prior entry starting positions. (hyrolo-add-match): Remove first arg, 'hyrolo-matches-buffer' and use global 'hyrolo-display-buffer' instead. (hyrolo-grep-file): Remove first arg from call to 'hyrolo-add-match'. Remove unused local 'curr-entry-level-len' which would not work for Markdown 'outline-regexp' anyway. 2023-12-21 Bob Weiner * hyrolo.el (hyrolo-funcall-match, hyrolo-map-matches): Use (1- (point-max)) when 'end' is nil, i.e. only a single file has been found and the start of of the next one used to determine the end of this one has not yet been added. * man/hyperbole.texi (Implicit Button Types): Add doc for 'hib-python-traceback' and 'hyrolo-stuck-msg'. * hibtypes.el (Info-node): Tighten match to limit valid chars after closing paren. (hyrolo-stuck-msg): Add to jump to the position where a HyRolo match became stuck, if ever happens, when point is on the error. hyrolo.el (hyrolo-grep-file): Update 'Stuck looping in buffer' msg so can be used in 'hyrolo-stuck-msg' ibtype. * hyperbole.el: The 'describe-package' function fails under Emacs 28 when multiple maintainers are listed under the 'Maintainer' header but later Emacs versions support a 'Maintainers' header, so include both. Change to using 'Authors' instead of 'Author'. 2023-12-20 Bob Weiner * hyrolo.el (hyrolo-edit-entry, hyrolo-locate): Wrap in 'hyrolo-funcall-match' call to fix these functions to work with multiple modes. (hyrolo-funcall-match): Ensure 'unwind-protect' end forms are run within 'hyrolo-display-buffer'. * kotl/kview.el (kview:outline-regexp): Add grouping for kcell label matches; used in `hyrolo-display-buffer'. kotl/kotl-mode.el (kotl-mode): Add local settings of 'hyrolo-entry-group-number' and 'hyrolo-entry-trailing-space-group-number'. 2023-12-18 Bob Weiner * hyrolo.el (hyrolo-move-backward, hyrolo-move-forward): If FUNC is a lambda (not a function symbol), then temporarily narrow to the current match buffer before applying FUNC. (hyrolo-to-entry-end): Remove unused arg '_curr-entry-level-len'. (hyrolo-grep-file): Remove unneeded passing of 'curr-entry-level-len' arg to (hyrolo-outline-previous-visible-heading, hyrolo-next-visible-heading): Fix doc strings to mention stops at match buffer headers. 2023-12-17 Bob Weiner * hyrolo.el (hyrolo-move-backward, hyrolo-move-forward): If on a kotl-mode entry, ensure move to a valid position. 2023-12-16 Bob Weiner * hpath.el (hpath:expand-list): If path comes back nil from 'hpath:expand', then ignore any potential file wildcards. 2023-12-15 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Fix check of 'kotl-previous-mode' to not set local vars if prior mode was the same, i.e. kotl-mode. * hyrolo.el (hyrolo-hdr-move-after-p): Add to move after any hdr lines in any buffer. (hyrolo-grep-file, hyrolo-map-level, hyrolo-map-level, hyrolo-show-levels: Change to call 'hyrolo-hdr-move-after-p'. (hyrolo-move-forward, hyrolo-move-backward): Rewrite. (hyrolo-up-heading): Remove, use 'hyrolo-outline-up-heading'. (hyrolo-map-matches, hyrolo-funcall-match): Add optional 'narrow-flag' to narrow to the current file of matches. (hyrolo-outline-previous-heading): Add. (hyrolo--cache-major-mode): Fix so stored matched buffer major-mode rather than hyrolo-mode from the display matches buffer. Also, reused cached major-mode-index values when the major-mode is the same and increment index only when not reused. (hyrolo-map-matches, hyrolo-funcall-match): Eliminate save-restriction calls. (hyrolo-cache-get-major-mode-from-pos): Add and use in 'hyrolo-cache-set-major-mode'. (hyrolo-previous-visible-heading): Remove, use 'hyrolo-outline-previous-visible-heading'. 2023-12-14 Bob Weiner * hyrolo.el (hyrolo-grep): Remove '(set-buffer display-buf)' since call to 'hyrolo-display-matches' does this. (hyrolo-mode-map): Fix bindings of hyrolo-* overloads of 'outline-mode-prefix-map' (outline-minor-mode). 2023-12-13 Bob Weiner * hyrolo-logic.el (hyrolo-map-logic): Add doc for last arg, whole-buffer-flag. (hyrolo-logic): Add calls to 'hyrolo--cache-initialize' and 'hyrolo--cache-post-display-buffer'. Also add temporary disabling of 'magit-auto-revert-mode-enable-in-buffers' in 'after-change-major-mode-hook' to speed file processing. (hyrolo-map-entries, hyrolo-map-kotl): Add call to 'hyrolo--cache-major-mode'. hyrolo.el (hyrolo-grep-file): Change 'delq' to 'remove' so does not permanently modify the 'after-change-major-mode-hook'. * hyrolo.el (hyrolo--cache-initialize, hyrolo--cache-major-mode): Ensure all settings apply to `hyrolo-display-buffer' local variables. (hyrolo-find-file): Fix doc string. (hyrolo-set-file-list, hyrolo-let-file-list): Remove call to 'hyrolo--cache-initialize'. * test/hyrolo-tests.el (hyrolo-demo-move-to-beginning-and-end-of-file): Move to {,} and {.} tests to sep test, 'hyrolo-demo-move-to-beginning-and-end-of-entry'. 2023-12-12 Bob Weiner * hyrolo.el (hyrolo-mode): Add trailing space to default `outline-regexp'. (hyrolo-org-mode): Add quick enable of basic Org mode for use in HyRolo display match searches and use in 'hyrolo-helm-org-rifle'. (hyrolo-org-outline-level): Add to not widen the buffer when computing the Org outline level when in the display match buffer. * kotl/kotl-mode.el (kotl-mode): hyrolo.el (hyrolo-mode): Change 'run-hooks' to 'run-mode-hooks'. 2023-12-11 Bob Weiner * hyrolo.el (hyrolo-mode): Add 'hbut:source-prefix' and 'hyrolo-hdr-regexp' as level 1 outline entries in outline-heading-alist. (hyrolo-mode-outline-level): Delete, use default 'hyrolo-outline-level' or per matched file function in 'outline-level'. * test/hibtypes-tests.el (ibtypes::text-toc-test): Regexp-quote * and allow for preceding whitespace. * kotl/kotl-mode.el (require 'hyrolo): Add. * hyrolo.el (hyrolo-grep-file): Change 'insert-buffer-substring-no-properties' to 'insert-buffer-substring' to keep properties, as need Koutline 'kcell properties to navigate them properly. * kotl/kview.el (kcell-view:to-label-end): kotl/kotl-mode.el (kotl-mode:to-valid-position): Fix to handle file headers in HyRolo display match buffer when displaying parts of Koutlines. * hyrolo.el (hyrolo-cache-set-major-mode): Move to this function the addition of 'hyrolo-hdr-regexp' to both 'hyrolo-hdr-and-entry-regexp' and 'outline-regexp' within the *HyRolo* display match buffer. (hyrolo-markdown-outline-level, hyrolo-cache-set-major-mode): Fix markdown 'outline-level' function to always return a non-nil level. 2023-12-10 Bob Weiner * hyrolo.el (hyrolo-grep): Remove unused local 'hyrolo-buf'. (hyrolo-outline-minor-mode): Define and enable in 'hyrolo-mode'. * hyrolo-menu.el (hyrolo-menu-common-body): hyrolo.el (hyrolo-mode-map): Change to 'make-sparse-keymap', name it and inherit from a copy of 'outline-mode-prefix-map' where its command bindings are overriden with hyrolo- prefixed ones. * hyrolo.el (hyrolo-move-backward): Change 'outline-previous-heading' call to 'hyrolo-outline-previous-heading'. 2023-12-09 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers:consume-input-events): Remove not needed recursion-depth check. 2023-12-09 Bob Weiner * hyrolo.el (hyrolo-funcall-match, hyrolo-map-matches): Add these functions to wrap function calls in the HyRolo display matches buffer that require the original major mode of the location, e.g. outline commands. * hyrolo.el (hyrolo-outline-show-subtree): Add to replace usage of 'outline-show-subtree'. (hyrolo-outline-hide-subtree): Rename from 'hyrolo-hide-subtree'. (hyrolo-outline-hide-subtree, hyrolo-overview, hyrolo-top-level, hyrolo-move-backward, hyrolo-move-forward): Add a wrapper call to 'hyrolo-funcall-match' or 'hyrolo-map-matches' which sets appropriate major mode per location in the match buffer. (hyrolo-outline-*): Add new functions emulating all 'outline-minor-mode' key bindings with above wrapper calls and add to 'hyrolo-mode-map' keys. * hyrolo-*.el (outline): Change all (outline-*) calls to (hyrolo-outline-*) calls. This supports different major modes within the HyRolo match display buffer. 2023-12-08 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Update to be usable in `hyrolo-display-buffer'. 2023-12-07 Bob Weiner * hyrolo.el (hyrolo--cache-*): Add caching of each 'major-mode' to use for the buffer from which a matching HyRolo record is drawn. (hyrolo-let-file-list, hyrolo-set-file-list): Add calls to `hyrolo--cache-initialize'. (hyrolo-grep): Add calls to 'hyrolo--cache-initialize' and to 'hyrolo--cache-post-display-buffer' when not 'count-only'. (hyrolo-grep-file): Add call to 'hyrolo--cache-locals'. (hyrolo-grep): Remove concatenated 'outline-regexps' and 'hyrolo-entry-regexps'. They are no longer used. Move header matching in `outline-regexp' and `hyrolo-hdr-and-entry-regexp' to 'hyrolo--cache-matched-buffer'. 2023-12-07 Mats Lidell * test/hywconfig-tests.el (hywconfig-tests--remove-ring) (hywconfig-tests--remove-names): Support functions for clearing the window config per frame. (hywconfig--inital-ring-is-empty, hywconfig--not-empty-if-ring-save) (hywconfig--number-of-configs-are-store-up-to-a-max) (hywconfig--empty-after-pop-ring-with-one-config) (hywconfig--max-minus-one-after-pop-ring-with-max-config) (hywconfig--get-not-existing-config-fails, hywconfig--add-by-name) (hywconfig--delete-by-name): Tests. 2023-12-04 Bob Weiner * Makefile (HY-TALK/HYPER*.org): Add Hyperbole talk slides from EmacsConf presentations. MANIFEST: Update with org files used in talks. * hsys-org.el (org-link): Expand this actype to open Org links that are in non-Org-mode buffers. 2023-12-03 Bob Weiner * hibtypes.el (annot-bib): Lower priority below 'org-link-outside-org-mode' as this can be mistaken for an org link outside an org buffer. * hactypes.el (link-to-regexp-match): Fix typo. * hui.el (hui:link-possible-types): Set no-default when checking if at a filename; otherwise, will match at any point in a file-based buffer, which is only supposed to trigger at the end of the possible matches when 'buffer-file-name' is checked. * test/hyrolo-tests.el (hyrolo-sort-test): Temporarily set to known :failing, as is a known bug. 2023-12-02 Bob Weiner * hyrolo.el (hyrolo-expand-path-list): Eliminate any non-existing entries after expansion. (hyrolo-date-format): Allow empty string to disable date adding/updating in entries. (hyrolo-set-date): Add optional 'edit-only-flag' when non-nil, replaces existing dates but does not add new ones; use as part of an edit command. Do nothing if 'hyrolo-date-format' is an empty string. These changes support the new file formats that HyRolo supports where you don't want a date added when jumping to and editing entries. (hyrolo-edit-date): Add for use with 'hyrolo-edit-hook'. (hyrolo-edit-hook): Set to 'hyrolo-edit-date'. (hyrolo-toggle-datestamps): Use 'hyrolo-edit-date'. (hyrolo-to): Handle entries of all file types now supported by HyRolo. If kotl-mode, move to first valid position on the line. * kotl/kotl-mode.el (kotl-mode:example): Fix to prompt to save in home directory, not the current directory. 2023-12-01 Mats Lidell * hmouse-tag.el (ibtype:def-symbol): Declare function to silence warning. * test/hyrolo-tests.el (hyrolo-sort-test): Set default date format so the format used is well defined. (hyrolo-fgrep-and-goto-next-visible-md-heading): Use level one heading so that heading hierarchy is respected. 2023-12-01 Bob Weiner * hyrolo.el (hyrolo-add): Fix that narrow-to-region was narrowing to a zero-sized region when point was not on an entry start character. Also fix that when moved to point-max trying optimized insertion but failing, never moved point back to point-min, so insertion would occur at the buffer end rather than the proper point. * 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 * 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 * 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. 2023-11-29 Mats Lidell * test/hyrolo-tests.el (hyrolo-fgrep-and-goto-next-visible-org-heading) (hyrolo-fgrep-and-goto-next-visible-kotl-heading) (hyrolo-fgrep-and-goto-next-visible-outl-heading) (hyrolo-fgrep-and-goto-next-visible-md-heading) (hyrolo-fgrep-and-goto-next-visible-kotl-heading-level-2) (hyrolo-fgrep-and-goto-next-visible-kotl-heading-cell-2): Add test for moving to next header and that action-key then brings you to the matching header. 2023-11-25 Mats Lidell * test/hyrolo-tests.el (hyrolo-fgrep-find-all-types-of-files): Test that all files types are searched, matches and give proper @loc>-header. * hyrolo.el: Move private variables before their first use to remove warnings. * Remove warnings for unknown functions by using declare-function. 2023-11-23 Bob Weiner * 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 * test/demo-tests.el (fast-demo-key-series-dired-other-window): Add test from demo key series. 2023-11-22 Bob Weiner * 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. * 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 * hui-select.el (hui-select-initialize): Fix to set 'syntax-table-sym' and 'keymap-sym' locally within the function rather than globally which would affect modes beyond those in 'hui-select-markup-modes'. (hui-select-goto-matching-delimiter): If the key that invokes this command in hyperbole's minor-mode is also bound in the current major mode map, then interactively invoke that command instead. Typically prevents clashes over {C-c .}. Previously did this only for 'org-mode' but 'kotl-mode' also has a conflict that this fixes. (hui-select-thing): Apply the same above fix for {C-c RET}, {C-c C-m}. hui-mini.el (hui-search-web): Apply the same above fix for {C-c /}. hycontrol.el (hycontrol-windows-grid): Apply the same above fix for {C-c @} and fix 'outline-minor-mode' handling as a prefix keymap. HY-NEWS (HYPERBOLE SYSTEM): Document the above fix. 2023-11-19 Bob Weiner * test/demo-tests.el: Fix a number of these tests to be a bit more robust and/or simpler. * TAGS: Remove from git but keep including in packages and tarballs. * hycontrol.el (hycontrol-windows-grid): Update to defer to outline mode keybindings in much fewer contexts. Most windows-grid prefix args cannot be used by these modes, so execute the windows-grid command rather than deferring to these modes. * hypb.el (hypb:display-file-with-logo): Fix banner insertion if buffer is read-only when created. * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Fix to error when num-files or grid-size is zero. * FAST-DEMO (Implicit Buttons, Hyperbole Explicit and Global Buttons): Update to document implicit and explicit link button creation with two or more windows on screen. * man/hyperbole.texi (HyRolo Settings): Document hyrolo-file-list support for wildcards, variables and directories. * hyrolo.el (hyrolo-expand-path-list): hpath.el (hpath:expand-list): Expand file wildcards only when 'find-file-wildcards' is non-nil and document this. * hmouse-tag.el (smart-lisp-at-known-identifier-p, smart-lisp-find-tag, smart-lisp-at-definition-p): Add support for 'ert-deftest' definitions. (smart-entire-tags-table-list): Add to compute full list of tags tables to use. Use in 'smart-tags-display' and in 'smart-tags-find-p'. (smart-tags-find-p): Fix that an existing 'tags-table-list' was overriding 'smart-tags-file-list'. HY-NEWS (ERT Test Case Symbols Jump to Definition): Document new smart tags support for ert test case symbols. * Makefile (LET_VARIABLES): Add to batch tests to automatically enable local variables in Hyperbole files that are tested. * kotl/kotl-mode.el (kotl-mode:split-cell): Remove any whitespace around point before splitting the cell. * HY-CONCEPTS.kotl: Expand and improve button descriptions FAST-DEMO: Add pointers to "HY-CONCEPTS.kotl", default to Org mode with Smart Keys active. 2023-11-17 Bob Weiner * test/hyrolo-tests.el (hyrolo-sort-records-at-different-levels): Add 'hyrolo-find-file' call to ensure current buffer is the first hyrolo file. (hyrolo-sort-test): Change to use 'hyrolo-find-file'. * hyrolo.el (hyrolo-mode-outline-level): Fix to handle all file formats that HyRolo now supports but ignore Emacs outline entry matches without trailing whitespace or of formfeeds, as these can cause a hang in HyRolo search. (hyrolo-outline-level): Add to handle 'outline-level' calculation unique to standard HyRolo entries (asterisk with a following whitespace character). (hyrolo-find-file): Improve 'outline-regexp' handling and set 'outline-level' function if an Emacs outline. (hyrolo-add): Compare entry-regexp against default-value of 'hyrolo-hdr-and-entry-regexp' rather than a literal string. 2023-11-14 Bob Weiner * hyrolo.el (hyrolo-sort): Fix bug where 'hyrolo-sort-level' had assumed the file to sort was in the current buffer but 'hyrolo-sort' had not read in that file. (hyrolo-map-level, hyrolo-sort-level): Remove 'hyrolo-file' arg since had already been using current buffer instead. * test/hpath-tests.el (hpath:find-report-lisp-variable-path-name-when-not-exists): Update test and doc to simply verify that 'hpath:find' errors when called with a non-existent path. 2023-11-13 Bob Weiner * hbut.el (hbut:source): Add save-excursion so does not move point to the beginning of the source name. 2023-11-12 Bob Weiner * hpath.el (hpath:file-position-to-line-and-column): Add to translate character positions to an implicit link to line and column. hbut.el (ibut:insert-text): Simplify using the above function. * hui-mouse.el (hkey-alist): Comment out unreleased hynote-mode clause. * hyrolo.el (hyrolo-buffer-exists-p): Fix for improved buffer-name matching by using 'get-buffer' instead of 'get-file-buffer'. (hyrolo-next-match-function): Update to require return of the position of the beginning of the match. (hyrolo-next-regexp-match): Change to return (match-beginning 0) rather than the end. (hyrolo-grep-file): Fix to handle when no entry delimiters, then use the current line as the entry. (hyrolo-name-at): Rename to 'hyrolo-name-at-p'; change return value to a cons of ( . ). If no entry delimiters, use the current, non-empty line as and add a 'hyrolo-line-entry text property to it. (hyrolo-to): Add support for non-delimited single line entries. (hyolo-edit): Fix to search only over a specified file. (hyrolo-helm-org-rifle): Fix to filter out any non-file buffers. (hyrolo-kill): Change to not switch buffers since shows whether the record was killed or not. * hpath.el (hpath:expand, hpath:expand-list): Add optional exists-flag to return nil if expanded path does not exist. * hyrolo.el (hyrolo--expanded-file-list, hyrolo-set-file-list, hyrolo-file-list-changed): Finish support for recursively searching dirs and expanding file wildcards in 'hyrolo-file-list' by adding the above and caching the expanded list in 'hyrolo--expanded-file-list'. HY-NEWS (HYROLO): Document the above new feature. (hyrolo-edit): Improve 'completing-read' prompt. (rolo-display-buffer, rolo-file-list, rolo-entry-regexp): Remove all of these variables that have been obsolete since V6. Use hyrolo- prefix instead. (hyrolo-grep): Rewrote for compatibility with new caching scheme. 2023-11-11 Bob Weiner * hyrolo.el (hyrolo-initialize-file-list): Completely remove this function, obsolete since V8.0.1. Use `hyrolo--initialize-file-list' instead. (:group 'hyperbole-hyrolo): Change from 'hyperbole and 'hyperbole-hyrolo. (hyrolo-get-file-list): Add and change refs to `hyrolo-file-list' to use this instead, so can get the expanded version of the file list. (hyrolo-expand-path-list): Add to expand a list of paths containing env or lisp variables, directories and file patterns with wildcards into a final list of files. 2023-11-08 Bob Weiner * hpath.el (hpath:expand): Add doc for ${variable} expansion. (hpath:expand-list): Add to recursively expand matching files within a list of directories. 2023-11-07 Bob Weiner * test/hui-tests.el (hui--ibut-link-directly-to-dired): Fix to handle alternative dired formats with text after the last colon on the first line. * hbut.el (hbut:at-p): Document interactive call help display. 2023-11-06 Bob Weiner * hui.el (hui:link-possible-types): Fix CI/CD build error where ilink was inserted when pathname was expected due to batch diff when referent is in dired-mode. Fix to skip button type clauses in this case. test/hui-tests.el (hui--ibut-link-directly-to-dired): Check that looking at a string before trying to (read (current-buffer)); otherwise, 'read' will fail. 2023-11-05 Bob Weiner * test/hyrolo-tests.el (hyrolo-demo-show-overview): Fix by adding needed (forward-line 1) before testing for a collapsed node. * test/kexport-tests.el (kexport:koutline-calls-kexport:html): Fix to have proper file suffixes, now required. * kotl/kexport.el (kexport:koutline): Trigger proper error if called outside of .kotl file. * hyrolo.el (hyrolo-google-contacts-grep, hyrolo-grep-file): Ignore case. 2023-11-04 Bob Weiner * hui.el (hui:link-possible-types): At end of any line in a dired buffer, return (link-to-directory default-directory). 2023-11-01 Bob Weiner * test/hui-tests.el (hui--ibut-link-directly-to-dired): Fix to be compatible with Emacs 27.1 and dependable regardless of what is in the dired buffer. * hpath.el (hpath:substitute-var-name): Fix to not elide variable name from path unless path contains an Emacs loadable file name suffix. * hui-mouse.el (smart-dired): If hit default cond clause and no filename on the current line, run dired on the current directory rather than triggering an error with a null filename value. (smart-dired-pathname-up-to-point): Always return dir as a full path ending in a forward slash. Add optional 'no-default' arg and use in 'hargs:at-p' when reading a directory and in 'dired-mode'. * hui.el (hui:link-possible-types): Fix so when checking if a file ref at point, link to the file without any position arg and don't default to the current 'buffer-file-name', instead drop through to further conditional clauses. * hbut.el (ibut:insert-text): Fix 'actypes::link-to-file' to shorten arg1 path relative to source dir, not referent dir. 2023-10-30 Mats Lidell * hversion.el (hyperb:mouse-buttons): hpath.el (hpath:get-external-display-alist): Add mac as possible window-system on Mac OS. 2023-10-29 Bob Weiner * hpath.el (hpath:find): hactypes.el (link-to-file-line-and-column): Change so when in a Koutline, col num is relative to the cell indent (in addition to). (hpath:find-line): Add 3rd optional argument of 'col-num'. * kotl/klink.el (klink:parse, klink:create, klink:replace-label, klink:update-label, klink:yank-handler, klink:absolute): Update to new file#cell-ref|viewspec syntax. * hsys-org.el (hsys-org-consult-grep-func): Add customization. (hsys-org-consult-grep): Add function. man/hyperbole.texi (Glossary:Consult): Document the above. HY-NEWS: Add recent updates such as 'hsys-org-consult-grep' and refill paragraphs to a common width. * hui-em-but.el (eval-when-compile (require 'hyrolo)): Comment this out because it causes klink ibtype to load with the wrong priority (before hibtypes.el loads it). See comment in the file. hinit.el: Fix so hibtypes is loaded before hui-menu to prevent klink defib priority from being set improperly. * kotl/kcell.el (kcell:ref-to-id): Handle string labels at the beginning of cells. kotl/kview.el (kcell-view:cell-from-ref): Fix to handle strings returned from 'kcell:ref-to-id' with idstamp and viewspec and to handle string labels at the beginning of cells. 2023-10-28 Bob Weiner * hpath.el (hpath:find): Fix off-by-one (too high) error with relative line numbers. A relative line number of 1 means the first line, not the line after the first line, i.e. don't move at all, which of course can be left off but that way, a line number of 2 goes to the second line, which is more natural than moving down 2 lines, as a call to forward-line would. This matches up with absolute line numbering, as well. test/hibtypes-tests.el (ibtypes::pathname-anchor-line-test): test/hmouse-drv-tests.el (hbut-pathname-anchor-line-test, hbut-pathname-line-column-test): Fix relative line numbers to match fix for off-by-one error. * kotl/kotl-mode.el (requires): Remove 'kvspec' and 'kcell' which are already required by 'kfile'. Add 'klink' which is missing. (kotl-mode:goto-heading): Add to go to a string heading at the beginning of a cell. Must end with a colon or a newline. (kotl-mode:goto-cell): Handle cell headings and tighten idstamp and relative label checks. kotl/kcell.el (kcell:parse-cell-ref): Handle cell headings. * kotl/klink.el (klink:act): Fix doc to reflect that 'start-pos' arg refers to the start of the cell-ref in the link, not to the link's referent. (klink:at-p): Limit matches to .kotl? files. * hpath.el (hpath:find): * kotl/klink.el (link-to-kotl, klink:parse, klink:at-p, klink:replace-label, klink:update-label): Support # anchor refs that use cell-refs to kotl files. kotl/kotl-mode.el (kotl-mode:goto-cell-ref): Add for use in kotl anchored pathname refs and in 'link-to-kcell' actype. 2023-10-25 Mats Lidell * test/hui-tests.el (hui--ibut-link-directly-to-file) (hui--ibut-link-directly-to-dired) (hui--ibut-link-directly-with-label): Test cases for ibut-link-directly 2023-10-22 Mats Lidell * hui-select.el (hui-java-defun-prompt-regexp): Add prompt regexp as separate defconst. Update provided by Alan Mackenzie. Thanks. (hui-select-initialize): Use new java regexp. * test/hui-tests.el (hui-gbut-number-of-gebuts-from-mail-mode): Remove expected to fail. * hbut.el (gbut:ebut-key-list): Use hbdata:to-entry-in-file for global button file data. * hbdata.el (hbdata:is-but-data-stored-in-buffer) (hbdata:to-entry-in-buffer, hbdata:to-entry-in-file): Refactor into three methods to separate out button data stored in a file. (hbdata:to-entry-buf): Use new methods. 2023-10-22 Bob Weiner * hbut.el (gbut:save-buffer): Add function to use after global button file is edited. * hui.el (hui:gbut-delete, hui:gbut-rename, hui:gbut-link-directly): Save global button file after create/edit. (hui:link-possible-types): Fix missing `no-default' arg when testing if on a directory or file name. 2023-10-21 Bob Weiner * hibtypes.el (markdown-follow-inline-link-p): Fix to process anchored path links rather than dropping through to another ibtype since that would trigger an error since point would have been moved in order to leave it on the path and not the name part of a markdown link. Remove need to move point by calling 'markdown-link-url'. * hmouse-tag.el (smart-lisp-find-tag): Fix that some tags were not found by xref because this function turned on xref-etags-mode in Elisp files rather than using its elisp backend. Remove that code. (tags-fix): Remove optional load of this very old file. 2023-10-11 Mats Lidell * test/hui-tests.el (hui-gbut-number-of-gbuts-with-no-buttons) (hui-gbut-number-of-gibuts-when-one-button) (hui-gbut-number-of-gebuts-when-one-button) (hui-gbut-number-of-gibuts-from-mail-mode) (hui-gbut-number-of-gebuts-from-mail-mode): Verify number of global ibuts and ebuts. 2023-10-09 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-kill-contents) (kotl-mode-kill-contents-all): Add kotl-tests for cell contents removal. 2023-10-07 Mats Lidell * hsys-org-roam.el: Byte compile. Warning is handled by declaration. * Makefile (EL_SRC): Add macro for all el-files, both compiled and not compiled. * hui-mini.el: Update defcustom type for hui-mini menus. 2023-10-05 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-kview-buffer-local) (kotl-mode-kvspec-saved-with-file) (kotl-mode-kvspec-independent-between-files): Add test for buffer local kotl-kview. 2023-10-04 Mats Lidell * kotl/kview.el (kotl-kview): Add kotl prefix to kview and use defvar-local. * General removal of warnings by using defvar and declare-function for variables and functions not covered by requires. 2023-10-03 Mats Lidell * Makefile: Compile each el file in a separate Emacs process so that the compilation environment is clean and produces relevant warning messages. 2023-10-02 Bob Weiner * hycontrol.el (hycontrol--blank-buffer): Add a space in front of buffer name so it is hidden from buffer listings. * test/demo-tests.el (demo-annotated-reference-test): test/hmouse-drv-tests.el (hbut-annot-bib-test): test/hibtypes-tests.el (ibtypes::annot-bib-test): DEMO (Annotated Bibliography Buttons): Remove since won't work when DEMO is displayed in 'org-mode'. * hibtypes.el (annot-bib): Fix doc to mention modes excluded. * hypb.el (hypb:display-file-with-logo): Temporarily disable use of 'org-mode' until can fix broken tests by setting 'hsys-org-enable-smart-keys' to t. 2023-10-01 Bob Weiner * man/hyperbole.texi (Keyboard Drags): DEMO (Creation via Ace Window): Doc prefix args to {M-o w} ace-window link button creation. * hargs.el (hargs:at-p): Fix when on a two part menu item to use the more specific part to link to the correct location, e.g. on Index entries. * HY-ABOUT: MANIFEST: Format for org-mode display. hypb.el (hypb:display-file-with-logo): Add use of 'org-mode' to supplement view minor mode. * hui.el (hui:link-possible-types): When reading a dir or file and not on such a string, use the 'default-directory' or 'buffer-file-name'. Previously just returned nil in such circumstances. * hmail.el (hmail:hbdata-to-p): Add 'widen' call when hbdata is in the button source buffer and no file is attached, so that it is temporarily made visible/searchable. 2023-09-19 Bob Weiner * test/hibtypes-tests.el (ibtypes::pathname-load-path-line-column-test): Fix to handle when a prior hypb.el buffer exists. * hpath.el (hpath:normalize): Fix arg name to match name in doc. Fix to trigger an error if arg is anything but a readable filename. (hpath:shorten): Add and use in 'ibut:insert-text'. * hibtypes.el (pathname-line-and-column): Fix label selection to always include whole delimited path. Previously, only a part of the path might flash as a button. 2023-09-18 Bob Weiner * man/hyperbole.texi (Menus): hui-mini.el (hui:menu-choose): When on the initial Hy9> prompt of the top-level menu and press RET: Remove extra call to 'hyperbole-minibuffer-menu'. Change so quits the minibuffer menu and leaves Smart Key update message in the minibuffer. * hversion.el (hyperb:path-being-loaded): Remove; no longer used. * hbut.el (ebut:operate): Add error checks similar to 'ibut:operate'. * hmouse-drv.el (hkey-window-link): man/hyperbole.texi (Keyboard Drags): Add prefix arg doc for {M-o w} where ibuts are created. * hui.el (hui:ibut-link-directly): This may be invoked via 'hkey-either' which runs the Assist Key when given a single C-u prefix argument. In such a case, don't use the prefix argument as a flag to prompt for the ibutton name as we want to just insert the appropriate ibut without any prompting. (hui:ebut-link-directly): Change "Create button" to "Create ebutton". * hpath.el (hpath:to-markup-anchor, hpath:to-line): Update to find matches outside narrowed area. 2023-09-17 Bob Weiner * hbut.el (ebut:operate): Fix that ebut metadata was not hidden after an 'hui:ebut-create' call by adding a conditionalized call to 'hmail:msg-narrow'. 2023-08-29 Bob Weiner * hbut.el (ibut:operate): Fix to ensure point is within button after name deletion or new button insertion. * hui.el (hui:ibut-link-directly, hui:ebut-link-directly, hui:gbut-link-directly): Start by clearing 'hbut:current attributes. 2023-08-28 Bob Weiner * hargs.el (hargs:delimited): Fix to add full length (rather than -1) chars of opening delimiter to search forward limit so match to opening delimiters when point is immediately before. * hbut.el (ibut:create): Fix to move point within ibut text only if found a matching ibut at point. If point is in front of the text delimiter and no name, don't move point. * hpath.el (hpath:at-p): Fix to not send a string with "::" in it to 'file-readable-p' which will trigger a no read method found error otherwise. Also, return nil if path is an empty string. * hibtypes.el (org-id): Tighten match to just Org ID characters and restore buffer mode to prior mode when necessary after 'org-id-find' switches it to Org mode. * hui.el (hui:ibut-link-create): Fix to handle name attributes properly. * hargs.el (hargs:iform-read): Reset global 'hargs:defaults' to nil when not used to prevent errant values in any future calls. * test/hsys-org-tests.el (hsys-org:cycle-on-header-cycles-visibility): Fix to handle any moving over invisible lines properly. * test/hmouse-drv-tests.el (hbut-pathname-env-variable-test): Fix to match dir exactly, not just prefix. * hui-mouse.el (smart-eobp): Autoload so don't have to require for 'completion' actype. * kotl/kotl-mode.el (kotl-mode:to-valid-position): Autoload so don't have to require for 'hui-select-indent-def'. * hload-path.el (make-directory-autoloads): Declare function for when it doesn't exist (Emacs 27). kotl/kotl-mode.el (kotl-mode:copy-region-to-buffer): Use 'with-current-buffer' to prevent warning. test/hpath-tests.el (hpath:substitute-value-test): Locally bind hypb:*-var to prevent free var reference warning. hyrolo.el (hyrolo-google-contacts-insert-data): Locally bind 'child' to prevent free var reference warning. * kotl/kotl-orgtbl.el (kotl-mode:transpose-lines-up): Fix to restore point. (kotl-mode:transpose-lines-down): Implement this command. * test/hyperbole-tests.el (hyperbole-key-bindings): Fix to handle all variants of M-RET. * test/kotl-mode-tests.el (kotl-mode-move-up-to-first-line): Add non-failing test. 2023-08-27 Bob Weiner * test/hui-register-tests.el (hui-register-tests--register-val-insert-ibut): Fix this test. * hbut.el (ebut:to): Simplify so if 'lbl-key' is nil, look only for ebutton at point. (ibut:to): Simplify so if 'name-key' is nil, look only for ibutton at point. Fix so finds any matching name-key without using attributes of hbut:current. * hsys-www.el (eww-browse-url): Remove unused '(let ((url-allow-non-local-files t))'. * hbdata.el (hyperb:user-email): Declare to avoid byte compiler warning. * hypb.el (hypb-mail-address-tld-regexp, hypb-mail-address-regexp): Moved from "hibtypes.el" and renamed to 'hypb:mail-address-tld-regexp', 'hypb:mail-address-regexp'. (mail-address-mode-list): Moved from "hibtypes.el" and renamed to 'hypb:mail-address-mode-list'. hibtypes.el (mail-address) kotl/kexport.el (kexport:html-replacement-alist): Update use of above variables. hib-social.el: hibtypes.el (require 'hypb): Add for defs of above variables. hyrolo.el (hyrolo-mail-to): Ref above new var name. * hib-kbd.el (hui-mini): Add (require 'hui-mini) and move private vars before first usage to remove byte-compiler warnings. * hsys-org.el (hsys-org-at-read-only-p): hbut.el (ibut:org-at-read-only-p, ibut:operate): Trigger errors when point is on read-only text, read-only Org contexts, explicit buttons, or emacs push-buttons. * hyperbole.el (hyperbole--enable-mode, hyperbole--disable-mode): Stop setting 'mark-even-if-inactive' to nil as this is no longer needed. As a result, remove 'hyperbole--mark-even-if-inactive'. * hui.el (hui-kill-ring-save): Fix interactive args to match comment, passing (mark) and then (point) rather than (region-beginning) and (region-end). 2023-08-25 Bob Weiner * hbut.el (ibut:operate): Skip past any inserted comment chars prior to ibut at point. * hbut.el (ibut:operate): Before call 'ibut:at-p', leave point after any opening ibut delimiters, since may have just deleted the button name, for example. * hbut.el (ibut:delete): Also clear in-memory version of the button. (ibut:rename): Clear any in-memory current button attributes so cannot reference any invalid buffer locations after rename. Also, improve doc string. * hbut.el (ibut:to): Replace 'ibut:at-p' calls with 'hbut:current since button should have been recoginized and created in-memory before this is called. 2023-08-23 Bob Weiner * hbut.el (ibut:create): Comment out clear of 'hbut:current attributes to prevent failure from 'ibut:at-p' calls when using 'ert-deftest'. 2023-08-22 Bob Weiner * hypb-ert.el (hypb-ert-def-at-p): With optional 'start-end-flag', return list of (test-name test-name-start-pos testname-end-pos). (hyperbole-run-test-definition): Use above flag and set name as button label to flash in this ibtype. * hui.el (hui:hbut-operate): Fix so point is temporarily moved to the start of the button text before flashing an activating a button. * test/hmouse-drv-tests.el (hbut-pathname-path-variable-with-three-colons-is-a-path-test): test/smart-org-tests.el (smart-org-mode-with-smart-keys-buttons-on-hypb-button-activates) smart-org-mode-with-smart-keys-on-hypb-button-activates): test/hui-register-tests.el (hui-register-tests--register-val-insert-ebut): test/hypb-tests.el (hypb:installation-type-test): Make work under Windows where path root is "c:/". * kotl/klink.el (klink:at-p): Fix to not confuse Windows path drive prefixes with URL protocol prefixes. * hargs.el (hargs:iform-vector): Fix 'D' to read a dir name, not a file name. * hbut.el (ibut:program): Capture existing ibut name at point in any error. 2023-08-20 Bob Weiner * hbut.el (ibut:operate): Call ibut:insert-text only when hbut:current 'actype attribute is non-nil. (ibut:operate): Remove appending of 'instance-flag' to hbut:current 'name and replace with 'ibut:at-p' call. 2023-08-13 Bob Weiner * hbut.el (ibut:set-name-and-label-key-p): Save both name-start and name-end pos. (ibut:delete-occurrence): Use above button attributes and remove 'name' argument. (ibut:delete): Fix to delete ibut name and text. 2023-08-10 Bob Weiner * hbut.el (ibut:set-name-and-label-key-p): Fix to find preceding name when point is within delimited text; previously was not accounting for text opening delimiter. (ibut:label-p): Clarify doc string. * hui.el (hui:hbut-delete): Improve doc on which implicit button key is used. * hbut.el (ibut:delete): Fix to delete all occurrences of the same ibut in current buffer. (ibut:delete-occurrence): Add to delete a single named or unnamed ibut if buffer is not read-only. (ibut:to): Change 'hbut:label-regexp' to 'ibut:label-regexp'. 2023-08-08 Bob Weiner * hui-mini.el (hui:menus): Remove delq from top-level menu where never dynamically delete entries. * hibtypes.el (parse-label-and-file): Rename to 'hlink:parse-label-and-file' to prevent prefix byte-compiler warning. * kotl/klink.el (klink:create): Fix interactive spec. * test/hmouse-drv-tests.el (hbut-ib-create-label): Fix by allowing recursive minibuffers. * kotl/kotl-mode.el (kotl-mode:self-insert-command): Remove special kotl-mode auto-filling is handled by regular 'self-insert-command'. This fixes improper hanging indent auto- filling in kcells due to narrowing kcell to text contents only, hiding the cell prefix. (kotl-mode:pre-self-insert-command): kotl/kotl-orgtbl.el (kotl-mode:setup-overriding-orgtbl-keymap): Remove reference to 'kotl-mode:self-insert-command'. 2023-08-06 Bob Weiner * hbut.el (ibut:create): Fix to move point inside the delimited text of an ibut rather than just outside. (ibut:set-name-and-label-key-p): Make interactive so can call and have 'hbut:current attributes displayed. * hargs.el (hargs:iform-extensions-vector): Fix kcell read to not use a completion collection but just a type. * hargs.el (hargs:reading-symbol): Remove, not needed, use 'hargs:reading-type'. * hyperbole.el: Remove '(hyperbole-mode 1)' call upon loading this file; was for compatibility with prior Hyperbole versions but since V8, instructions have been to add that to personal init. Remove it as loading an Elisp file should not enable a minor mode. * hargs.el (hargs:make-iform-vector): Move saving of prev `hargs:reading-type' to here so does not have to be done in multiple places elsewhere. (hargs:iform-extensions-vector, hargs:iform-extensions-vector, hargs:iform-read): Remove saving of prev `hargs:reading-type' here. * hargs.el (hargs:iform-extensions-vector): Remove setting of 'prev-reading-p' used to restore 'hargs:reading-symbol' value after 'unwind-protect' code block runs for Info-node and Info-index-item. Should be 'hargs:reading-type' instead and this is handled automatically by 'hargs:iform-read'. * hui-mouse.el (hkey-alist): Deprioritize `smart-org' to after hargs argument or minibuffer menu reading. * hactypes.el (link-to-kcell, link-to-mail): Fix interactive call with Hyperbole extension format to use `hargs:iform-read'. * hargs.el (hargs:at-p): kotl/klink.el (klink:create): Fix storage of button source buffer default-directory since dynamically bound let was not working due to shift to lexically-bound code. Instead store this value in the 'hbut:current 'dir property. * kotl/kfill.el (kfill:fallback-fill-paragraph): Add '(not (eq fill-paragraph-function t))' to fix no function, basic fill case. 2023-08-02 Mats Lidell * .github/workflows/main.yml (jobs): Add version 29.1 to CI workflow. 2023-07-30 Bob Weiner * hyperbole.el (hyperb:init): Fix potential unbound use of vertico-mouse-mode. * kotl/kotl-mode.el (kotl-mode:next-line, kotl-mode:previous-line): Fix that moving from 2nd line to first triggers a begin-of-buffer error and the same at the end of the buffer. * kotl/kfill.el (kfill:forward-line): Fix to report number of lines left to move relative to N. * hmouse-tag.el (smart-tags-display): Replace obsolete 'find-tag' call with 'xref-find-definitions'. * hargs.el (hargs:at-p): FIX: Ensure 'vertico-mouse--index' is fboundp before calling it. Also fix to return whole string rather than the empty string when point is at the end of the minibuffer. (hargs:select-p): Clarify potential use of 'value' argument in doc str. Also fix so during completion, minibuffer contents are not used unless they match a valid completion or are empty and default can be used. (hargs:match-p): Add for when vertico.el is not available and use in `hargs:select-p'. * hmouse-drv.el (action-key, action-key-internal): FIX: Set 'action-key-depressed-flag' to t when executing keyboard action-key actions. (assist-key, assist-key-internal): FIX: Set 'assist-key-depressed-flag' to t when executing keyboard assist-key actions. * hsys-org.el (hsys-org-global-cycle, hsys-org-cycle): FIX: Temp move point to beginning of heading so TAB invocations cycle through all states properly. 2023-07-24 Mats Lidell * Makefile (install-elpaca): install-test/MANIFEST: install-test/elpaca/.emacs: Add elpaca install test. 2023-07-22 Bob Weiner * hargs.el (hargs:at-p): Make Action Keyboard Key behave the same as the Action Mouse Key when in the minibuffer, deleting any characters to the right of point. 2023-07-17 Bob Weiner * hypb-ert.el (require): Wrap 'eval-and-compile' call around this to force require of "hbut" which defines 'defal' and prevents compilation error when "hibtypes" tries to load this. 2023-07-14 Mats Lidell * test/hmouse-drv-tests.el (hbut-pathname-line-test) (hbut-pathname-line-test-duplicate): Add tests for pathname with line number specification. 2023-07-13 Mats Lidell * test/hmouse-drv-tests.el (hbut-pathname-anchor-must-match-all) (hbut-pathname-anchor-trailing-text): Add tests for pathname with anchor. 2023-07-11 Mats Lidell * Makefile (version, $(pkg_parent)/hyperbole-$(HYPB_VERSION).tar): Do not include hyperbole-el.pkg. It is generated by elpa and not needed for a plain tar archive of the package. 2023-07-10 Mats Lidell * hargs.el (hargs:at-p): hmouse-drv.el (hmouse-choose-link-and-referent-windows): Use let to define free vars. * hyrolo.el (hyrolo-add-hook, hyrolo-edit-hook): Defvar the hooks. * hycontrol.el: hui-mouse.el: hmouse-drv.el: hyrolo.el: Add public declarations for multiple libraries. * hargs.el: Add public declarations for vertico and ivy. * hactypes.el (link-to-org-id, link-to-org-id-marker): Do not quote as functions they are defact and not understood as functions by the byte compiler. 2023-07-09 Bob Weiner * hbut.el (ibut:delimit): Add name separator after delimiting name if not already there but ensure point stays at end of the delimited name. (ibut:operate): Update doc string with caller responsibilities. (ibut:program): Fix to send 'edit-flag' to 'ibut:operate' call when point is on an existing ibutton. Remove 'cannot nest error' since 'ibut:operate' will now modify the existing ibutton. (ibut:insert-text): Don't insert name separator if looking at one in the buffer. (ibut:operate): Fix to not trigger an error when adding a name to an ibut that does not have one. * hypb-ert.el (hypb-ert-*): Change all calls of 'ert' to disable ert's messages so that any test's message is displayed after an hypb-ert test case run. (hypb-ert): Change 'ert' calls to use 'hypb-ert' and centralize 'message' function override when possible to deal with different 'ert' calling conventions in different Emacs versions. * hbut.el (ibut:operate): Update doc of each state. * test/hbut-tests.el: Finish adding all ibut:operate tests; still need to update ibut:operate to conform to all tests. * test/demo-tests.el (demo-annotated-reference-test): Fix to always search from buffer start. 2023-07-08 Bob Weiner * test/demo-tests.el (demo-implicit-button-action-button-boolean-function-call-test): Rename to 'demo-implicit-button-action-button-display-boolean-test' so can find when search for use of 'display-boolean'. * hactypes.el (display-boolean): Improve clarity of output message. test/hactypes-tests.el (display-boolean-true-test, display-boolean-false-test): Update to new output message format. * hpath.el (hpath:absolute-arguments): Fix to process only string arguments. * hibtypes.el (action): Fix 'args' not being set right after add display-* actypes. Stop storing unneeded ibutton 'action attribute. * hact.el (actype:action): Fix doc to say may return actype's fboundp symbol. Use 'actype:action-body' if always need the body of the function. (symtable:actype-p): Fix to return Elisp function symbols as well since 'actype:elisp-symbol' is an alias to this defsubst. (symtable:hyperbole-actype-p): Add to exclude Elisp function symbols. (actype:act): Use above new function. * DEMO (Completion Selection): man/hkey-help.txt: man/hyperbole.texi (Smart Key Argument Selection): Update to new minibuffer argument handling including Vertico support. 2023-07-05 Bob Weiner * hpath.el (hpath:markdown-section-pattern, hpath:outline-section-pattern): Fix to allow for opening pair chars after matching anchor (previously had to be a :punct: character only). 2023-07-04 Bob Weiner * hyperbole.el (hyperb:init): Activate 'vertico-mouse-mode' when 'vertico-mode' is used so that the Action Key properly selects completions from the candidate list. Since Vertico displays completions automatically, must initialize this before Vertico is invoked so cannot wait until a Smart Mouse Key is first pressed. hargs.el (hargs:select-p): (hargs:at-p): When 'hargs:reading-type' is nil, rather than a string, return a list of (completion-so-far exact-completion-match), for consumption by 'hargs:select-p'. Add feature to kill to end of minibuffer line and refresh completions when not inserting a fully matching completion (works for regular and vertico completions if 'vertico-mouse-mode' has been enabled prior to using). * hmouse-sh.el (hmouse-posn-set-point): Avoid setting point to a read-only location when vertico-mode is active. 2023-07-03 Bob Weiner * hmouse-drv.el (hkey-help): Remove ref to XEmacs 'help-selects-help-window'. * hargs.el (hargs:select-p): Add vertico and ivy completion support. (hargs:at-p): Add vertico support. hui-mouse.el (hkey-alist): Remove ivy support; move above. * hact.el (actype:act): Fix error when 'args' are null. * hbut.el (hbut:action): Fix error when 'atype' is not a symbol. * hmouse-sh.el (hmouse-drag-region): Disable Hyperbole-specific functionality when hyperbole-mode is nil. 2023-07-02 Bob Weiner * hui.el (hui:ibut-create): hbut.el (ibut:program): Prevent from creating a new ibut within a named or labeled Hyperbole button. * hui.el (hui:ibut-create): Call (hattr:clear 'hbut:current) before creating in-memory button. * hib-social.el (hibtypes-social-default-service): Pluralize defgroup name to 'hyperbole-buttons' to match other files. Remove duplicate unneeded :group from each defcustom. 2023-07-01 Bob Weiner * hui.el (hui:link-possible-types): If in a .texi but not within a node, don't raise error, just use a link-to-file-line instead. * hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): Add Link item calling 'hui:gbut-link-directly'. man/hyperbole.texi (Global Buttons): Add doc for new Gbut/Link item. hui.el (hui:gbut-link-directly): Add to create named global link buttons based on current windows. (hui:gbut-create): Update to prompt for ibut name when called interactively. Also, prompt if 'lbl' arg is nil and prompt for ibut text when called with a prefix argument, 'ibut-flag'. Also check that start and end buffers are the same when creating an ibut. (hui:ebut-edit, hui:gbut-edit, hui:hbut-label): Fix to not allow blank labels. (hui:ebut-link-directly, hui:ibut-link-directly): In body, clear Smart Key variables if not called interactively (since interactive clause also clears these variables). Also, if a button already exists at point, return t else nil. This lets the caller know what type of create/edit msg to display. If not editing an existing button, when prompting for a name or label, use any active and highlighted region as the name or label. 2023-07-01 Mats Lidell * hui.el: hpath.el: hbut.el: hbdata.el: Fix single quotes in docstrings. * kotl/kview.el (kcell-view:to-label-end): Add missing point to error message. * hactypes.el (require): Load hsys-org for org-fold-show-context. (link-to-org-id-marker): Use org-fold-show-context. (org-roam-id-find): declare-function. * hyperbole.el: Preload `kotl-autoloads`. Submitted by Stefan Monnier. Thanks Stefan. Align header fields consistently with other files. 2023-06-30 Bob Weiner * hmouse-drv.el (hkey-window-link): Move action/assist-key-clear-varriables calls into hui:*but-link-directly calls so happens every time they are called. * man/hyperbole.texi (Glossary): Fix to note gbut:file is a function, not a variable. 2023-06-29 Mats Lidell * hyrolo.el: Remove redundant `:group` args. Remove obsolete `*` in `defcustom` docstrings. Contribution from Stefan Monnier. Thanks Stefan. * hbut.el (defib): Remove redundant indent property. Change by Stefan Monnier. 2023-06-27 Bob Weiner * test/hbut-tests.el (hbut-tests:should-match-tmp-folder): Change to use a regexp 'string-match-p' to a string input rather than a 'member' test to a list of lists. 2023-06-25 Bob Weiner * hbut.el (ibut:to-name, ibut:at-p, ibut:to-text): Remove test call to 'hbut:outside-comment-p' since ibuts don't have to be within programming comments. This fixes ibtype 'hyperbole-run-test-definition' failing to match and thus action-key not running an ert def when pressed within a test def. * hibtypes.el (annot-bib): Fix missing check that annot-bib is between square brackets. hactypes.el (annot-bib): Beep/fail if when search for citation, point ends up within the ibut reference rather than the citation itself. * hibtypes.el (org-link-outside-org-mode): Revert to pre-Stefan changes since not yet integrating variable check instead of 'hyperb:stack-frame' calls. * hactypes.el (rfc-toc): Fix wrong 'select-buffer' call by replacing with 'switch-to-buffer' for permanent return to original buffer. 2023-06-24 Bob Weiner * hui.el (hui:ibut-link-create): Fix name attribute not getting set when creating a new ibutton. Rename 'but-edit' to 'edit-flag' and always send name arg to 'ibut:operate' call so that button name attribute is always set when given. (hui:ebut-link-directly, hui:ibut-link-directly): Change 'but-edit' to 'edit-flag'. hbut.el (ibut:operate): Add 2nd edit-flag parameter; when non-nil, means modifying an existing ibut at point. 2023-06-23 Mats Lidell * Makefile (LOAD_EL): Avoid the trailing quotation mark. 2023-06-22 Mats Lidell * test/demo-tests.el (hypb-should-browse-demo-was-called) Add check that url was called. (demo-www-test-with-quotes): Test for url in quotes. 2023-06-22 Bob Weiner * man/hyperbole.texi (By Menu): Add section similar to that of Ibuts, documenting new Ebut/Link command. (By Dragging): Move to after By Menu and add paragraph similar to Ibut one. (By Link): Add this as a separate subsection. 2023-06-21 Bob Weiner * hibtypes.el (texinfo-ref): Replace 'match-string' with 'match-string-no-properties'. * hbut.el (ibut:at-type-p): Remove dynamic binding of 'types' for 'hact' which no longer uses it. * test/hy-test-dependencies.el: Require hyperb:dir def and add test/ dir to load-path. * kotl/kview.el (kview:char-invisible-p): Remove and use '(invisible-p (point))'. (kview:char-visible-p): Remove and use '(not (invisible-p (point)))'. (kview:first-invisible-point, kview:first-visible-point, kview:previous-visible-point): kotl/kotl-mode.el (kotl-mode:eolp, kotl-mode:eolp, kotl-mode:to-visible-position): Make the above updated calls in these functions. 2023-06-20 Bob Weiner * hui-window.el (hmouse-pulse-iterations): Add to temporarily override `pulse-iterations' with this for hmouse operations and use in hmouse-pulse-* functions. hui.el (hui:ebut-link-directly, hui:ibut-link-directly): Add hmouse-pulse-line to highlight referent line linked to. 2023-06-21 Mats Lidell * Makefile (LOAD_EL): Use gnu make pattern substitution. 2023-06-19 Bob Weiner * hactypes.el: (link-to-regexp-match): Replace 'find-file-noselect' with 'hpath:find-noselect' so relative Elisp paths are resolved properly. * hbut.el (ibut:insert-text): Add 'actypes::link-to-string-match' support. * hpath.el (hpath:substitute-var-name): Remove matching path rather than adding the variable to the path when the variable is one for Elisp files. These can be resolved without the variable being included in the path. * hui.el (hui:ebut-link-directly, hui:ibut-link-directly): Fix so does not use Smart Key depress/release windows when called interactively. (hui.el (hui:ibut-link-directly): With prefix arg, name-arg-flag, prompt for a name for the ibut and insert it. * man/hyperbole.texi (Implicit Buttons): Document the Ibut menu changes below. hui-mini.el (hui:menus): In Ibut menu, add Link which runs 'hui:ebut-link-directly'. In Ibut menu, rename Label to Name and add Link which runs 'hui:ibut-link-directly'. Change all doc string tense from 'Displays' to 'Display'. hui-menu.el (infodock-hyperbole-menu): Do the same as above for pulldown Explicit-Button and Implicit-Button menus. * hui.el (hui:link): Rename to 'hkey-link' and move to "hmouse-drv.el" since only ever used in 'hmouse-choose-windows' call. Make an autoload. * hmouse-tag.el (smart-emacs-lisp-mode-p): Change 'string-match' to 'string-match-p' since don't use match groupings. (smart-lisp-at-known-identifier-p): Fix missing open paren pair in last cond clause. * kotl/kotl-mode.el (kotl-mode:add-cell): Fix that when inserting a child cell in a tree with hidden/collapsed cells, 'kcell-view:forward' was called with a 't arg that skipped over invisible cells, moving to the end of a tree rather than just the next invisible cell. This made 'klabel-type:update-labels' miss updating all the invisible cells after the insertion point. * kotl/kview.el (kview:outline-regexp): Fix that 'kview:default-label-separator' was not regexp-quoted here, leading to false label matches at the beginnings of lines and wrong computation of the location of the start of cells. Somehow this fix was lost from when applied before on 2022-08-20. (kcell-view:to-label-end): Fix to use 'kview:outline-regexp' only after failing to find a 'kcell property to mark end of label since this can lead to false matches that move cursor improperly at times, i.e. when a line of text starts with a label-matching pattern, e.g. '3a.' * hpath.el (hpath:to-markup-anchor): Fix doc. 2023-06-18 Bob Weiner * hpath.el (hpath:at-p): If path at point is just an hpath:prefix-regexp char, then don't set non-exist to t. * hibtypes.el (pathname): Don't match to a path of a single "-". * hmouse-drv.el (hmouse-choose-link-and-referent-windows): Add to choose link and referent windows for hui:*but-link-directly commands. (hmouse-keyboard-choose-windows): Add to choose start and end windows from the keyboard. NOT YET WORKING. * hypb.el (hypb:count-visible-windows): Add. * hui.el (hui:ebut-link-directly, hui:ibut-link-directly): Trigger an error if there is only one visible window. Use ace-window package to select referent window when available; otherwise select the referent window by clicking the mouse. (hui:ibut-link-directly): Fix was using Action windows instead of Assist. * FAST-DEMO (Introductory Videos): Add video snippets of Hyperbole Overview talk in first table so users can see and hear about Hyperbole in couple minute bursts. * hbut.el (ibut:label-separator-regexp): Add '|' as a separator character so can have ibut names and text in separate Org table columns. * hmouse-drv.el (hkey-debug): Add Action and Assist Key depress and release window information. 2023-06-17 Bob Weiner * hui.el (hui:ibut-link-directly): Document new inter-window Assist Mouse Key handling. * hui-window.el (hmouse-alist-add-window-handlers): Separate checks of dragging items to modeline from dragging within a window when not on a modeline with a release on a modeline. This clarifies the context when {C-h A} is used. * kotl/klink.el (klink:act): Improve doc; update link node label only if point is within a koutline. * hpath.el (hpath:delimited-possible-path): Skip if at end of line since paths cannot span lines and therefore cannot be within one. * hibtypes.el (rfc): Set lbl-start and lbl-end attributes. * hbut.el (ibut:set-name-and-label-key-p): Improve doc and return 't when just lbl-start is found for named, non-delimited ibuts. (ibut:label-p): Ensure match does not contain delimiters, as it may have run past the beginning of another button. (ibut:label-set): Improve doc. (ibut:operate): Improve instance handling. (ibut:insert-text): Fully handle klinks, add 'man' actype support, and handle error when actype is nil. (ibut:program): Remove condition-case around whole function so that errors can be seen with tracebacks. * hargs.el (hargs:delimited): Update to handle regexps with match to bol that does not move point forward; move forward a char each iteration * test/hui-tests.el (hui-gibut-create-link-to-file-line, hui-gibut-create-link-to-file-line-and-column): Improve readability and add check of 'name attribute. test/hy-test-helpers.el (hy-test-helpers-verify-hattr-at-p): Add support for 'name attribute. test/hibtypes-tests.el (ibtypes::annot-bib-test): Fix. test/hbut-tests.el: Fix some free variable scoping issues; remove unused local variables (hbut-tests-actypes-list): Separate out ibutton test data and add data to test ibtype is correct. (hbut-tests-ibut-insert-text-temp-buffer): Rename to 'hbut-tests-ibut-insert-links'; rewrite to simplify and make more reusable. (hbut-tests-ibut-insert-text-temp-file): Deleted this and merged into 'hbut-tests-ibut-insert-links'. * kotl/klink.el (klink:act): Improve doc. Fix to not try to update link label if 'link-to-kotl' fails to display a koutline. * hbut.el (ibut:insert-text): Add clear error when no matching actype is found. Update klink handling. 2023-06-13 Bob Weiner * hbut.el (ibut:operate): Update to handle more scenarios from the doc table. * hbdata.el (hbdata:ibut-instance): Replace with 'hbdata:ibut-instance-next'. (hbdata:ibut-instance-last): Improve doc. 2023-06-11 Bob Weiner * man/hyperbole.texi (Smart Mouse Drags between Windows): Update appendix doc to latest behavior. * hbut.el (ibut:operate): Drop 'name' arg and get it from 'hbut:current attrs. Improve name handling and buffer insertion. Use 'ibut:set-name-and-label-key-p' to set 'lbl-key. (ibut:set-name-and-label-key-p): Set 'lbl-start attribute. (ibut:insert-text): With kbd-key actypes, allow for whitespace inside of braces. (ibut:program): hui.el (hui:ibut-create, hui:ibut-link-create): Change calls to 'ibut:operate' and improve moving to button text. * test/hbut-tests.el (hbut-tests-ibut-insert-annot-bib): Allow for 0 or more whitespace at end of buffer. (hbut-tests-ibut-insert-kbd-key): Independently test without and without a name. * hbdata.el (hbdata:instance-next): Improve doc. (hbdata:ibut-instance): Fix inverted logic when orig-name-key is given. * hbut.el (ibut:label-instances-regexp, ebut:label-instances-regexp, hbut:label-instances-regexp): Add to search for hbut label matches of all numbered instances. (ibut:label-key-match): Call 'ibut:label-instances-regexp'. 2023-06-10 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-move-between-lines) (kotl-mode-move-up-to-first-line-shall-message-and-beep) (kotl-mode-trying-to-move-down-from-last-line-shall-message-and-beep) (kotl-mode-move-down-to-last-line-shall-not-beep) (kotl-mode-move-cursor-forward-over-ellipsis) (kotl-mode-move-cursor-backward-over-ellipsis) (kotl-mode-end-of-visible-portion): Add cursor movement tests for kotl-mode. 2023-06-10 Bob Weiner * hbut.el (ibut:create): Invoke 'ibut:set-name-and-label-key-p' prior to finding ibtype when 'but-sym' is not given. man/hyperbole.texi (Programmatic Implicit Button Types): Note that above call automatically sets up to flash delimited implicit buttons when activated. (ibut:edit): Embed this whole function into 'ibut:operate'. (ebut:map): Use defaults for start and end delims. (ibut:label-map): Remove unused delim args and use two optional args. * kotl/klink.el (klink:act): Document. (klink): Remove 'ibut:set-label' as replaced with global invocation of 'ibut:set-name-and-label-key-p' in 'ibut:create' call. * hbdata.el (hbdata:ibut-instance-last): Remove unused 2nd and 3rd params. * hui-mouse.el (hkey-alist): Save found smart-lisp identifier to 'hkey-value' for use in 'smart-lisp-find-tag' call. hmouse-tag.el (smart-lisp-at-change-log-tag-p): Fix to return identifier. (smart-lisp): Optimize to send any previously found tag stored in 'hkey-value' to 'smart-lisp-find-tag' call. (smart-lisp-at-known-identifier-p): Caches and return any identifier found. * man/hyperbole.texi (Smart Key - Identifier Menu Mode): hui-mouse.el (smart-imenu-item-at-p): Move to after programming mode handlers so don't have to test for any such modes here and so it does not override their behaviors. * hmouse-tag.el (smart-lisp-find-tag): Widen buffer, goto tag location and return t only when 'hpath:display-buffer' returns non-nil. * hbut.el (ibut:operate): Improve doc. 2023-05-29 Bob Weiner * hact.el (hact): Set 'hbut:current 'actype property from first arg. * hbut.el (ibut:operate): Improve create/modify error message. (ibut:at-p): Change so when given name-key-only arg, returns name field as a key, not the text field, lbl-key. If no name, return nil. * hactypes.el (link-to-ibut): hui.el (hui:ibut-create, hui:ibut-link-create, hui:gibut-create): hbut.el (ibut:program, ibut:operate, ibut:to, ibut:to-text): Start replacing args named 'label' and 'lbl-key' which represent an ibut name with 'name' and 'name-key'. (ibut:to): Change to use 'hbut:current attr 'name' instead of 'lbl-key'. * hbut.el (ibut:program): Fix/generalize error handling. (ibut:create): Fix doc string to reflect return of button instance num string or t for first instance or nil for failure, rather than returning the button symbol. See 'hbdata:ibut-instance' for details. * hibtypes.el (action, annot-bib): Call 'ibut:set-name-and-label-key-p)' instead of 'ibut:label-p' so can tell name from label text. * hbut.el (ibut:operate): Make 2nd arg optional when creating new buttons. 2023-05-28 Mats Lidell * test/hy-test-helpers.el (hy-delete-file-and-buffer): Add helper that removes file and buffer even if in modified state. * hibtypes.el (hypb-mail-address-tld-regexp) (hypb-mail-address-regexp): Use hypb prefix. 2023-05-28 Bob Weiner * hbut.el (ibut:operate): Fix to set ibut name property from 'new-lbl-key'. (ibut:create): Fix logic to match doc when but-sym is not given; then prefer args given over any ibut at point (hbut:current); add new internal 'but-sym-flag' to achieve this. (ibut:label-p): Fix doc to indicate can be used to find either the optional name or the text of an implicit button. (ibut:at-p): If in a prog mode and outside of a comment, don't look for button at all, just return nil. Also, greatly simplify with most functionality left in the 'ibut:create' call. (ibut:set-name-and-label-key-p): Add; extracted from prior 'ibut:at-p'. Use in 'ibut:create'. hargs.el (hargs:delimited): Update to include delims when testing with 'exclude-regexp' flag but return the string without delimiters. This allows ignoring matches to <[str]> when just looking for [str]. Also, Add optional arg at end, as-key; when non-nil return string as a Hyperbole label key (no spaces). Use in 'ibut:label-p'. * kotl/kview.el (kview:char-invisible-p, kview:char-visible-p): Simplify by using 'get-char-property' which handles text properties and overlays. * kotl/kotl-mode.el (kotl-mode:pre-self-insert-command): Remove this test since know we are in kotl-mode now that this is added as a mode-specific pre-command hook: (eq major-mode 'kotl-mode). Also, comment this test out since call should not be on the stack since this is a pre-command hook: (not (hyperb:stack-frame '(kcell-view:to-label-end))). 2023-05-27 Bob Weiner * kotl/kotl-mode.el (kotl-mode:setup-keymap): Create this function instead of setting up keymap at library load time so that key rebindings occur when in kotl-mode with orgtbl-mode active, for example, so keys from it that need rebinding are active when kotl-mode-map is setup. Call from 'kotl-mode' but runs only when kotl-mode-map is nil. (kotl-mode) Replace local binding of 'minor-mode-alist' with 'minor-mode-overriding-map-alist'. kotl/kotl-orgtbl.el (orgtbl-meta-return): Rename to 'kotl-mode:orgtbl-meta-return' and use only in 'kotl-mode'. (kotl-mode:org-self-insert-command, kotl-mode:self-insert-command, kotl-mode:setup-overriding-orgtbl-keymap): Add to fix overriding keys in 'orgtbl-mode-map' within 'kotl-mode'. (kotl-mode:backward-char, kotl-mode:forward-char): Fix to handle when point is outside of a valid outline position. (kotl-mode:eocp): Change to call (kotl-mode:eolp t) so does not trigger eoc when at eol but cell is collapsed. (kotl-mode:pre-self-insert-command): Remove unneeded second check of whether point is in a valid koutline position and run during kotl-mode:*self-insert-command calls. 2023-05-22 Bob Weiner * hbut.el (hbut:comment): Comment only when major mode is derived from `prog-mode' or `sgml-mode'. * man/hyperbole.texi (By Dragging, Swapping Buffers, Displaying Items): Update to the new Smart Mouse Key handling. (Creation): Update and clarify that dragging creates only explicit link buttons whereas the Ebut/Create menu item creates any type. (Implicit Buttons): Add doc for Ibut/Rename and document implicit link creation via an Assist Mouse Key drag between windows. 2023-05-21 Bob Weiner * kotl/kotl-mode.el (kotl-mode:yank-pop): Fix: change "\\0" to proper "\\&". (kotl-mode:add-indent-to-region): Fix 'search-forward' bound arg that was given as t but should be nil. * DEMO (Displaying File and Buffer Items and Moving Buffers): Rename this section to "Displaying Items via Drags and Moving Buffers". man/hyperbole.texi (Displaying File and Buffer Items): Rename to "Displaying Items". * hui-mouse.el (hkey-alist): Move . operator to beginning of line for font lock support and add missing . in gnus modes. * hmouse-drv.el (hkey-mouse-help): Ensure call to hkey-help clears both Action and Assist Key variables, so mouse key help always works. * man/hkey-help.txt: FAST-DEMO (Implicit Buttons): DEMO (Implicit Buttons, Creation via Dragging, Creation via Ace Window): Update to describe implicit button creation via drags. hui-window.el (hmouse-alist): Make change to long-time Assist Mouse Key drag between windows behavior. Assist Mouse Key drag from an item to another window now displays the item in the release window, just as the Action Key does. Prior to Hyperbole V9, this would swap window buffers. * hmouse-key.el (hmouse-update-smart-keys): Ensure reload "hui-window" library so 'hmouse-alist' is redefined. * hsys-org.el (hsys-org-search-internal-link-p) hsys-org-search-radio-target-link-p): Replace 'org-show-context' with newer 'org-fold-show-context' and alias this when necessary. (hsys-org-radio-target-link-at-p): Remove test of (hsys-org-link-at-p) since does not have link delimiters and already verified uses link-face. * hactypes.el (link-to-ibut): Remove save-excursion and save-restriction calls so if ilink refers to an ibut in a different file, point is left there before the action is invoked. Fixes ilinks like: * hsys-org.el (hsys-org-link-at-p): Suppress display of *Warnings* backtrace. 2023-05-20 Bob Weiner * hpath.el (hpath:normalize): Improve doc. * hui.el (hui:ibut-create, hui:ebut-create, hui:ibut-link-create, hui:ebut-link-create): hbut.el (ebut:program, ibut:program): Set categ property, needed for 'ebut:is-p' and 'ibut:is-p' tests. (ibut:is-p): Update to handle (eq categ 'implicit). (ibut:create): If categ arg is not given and ibtype is found from the given button, use that. Otherwise, set to 'implicit. * kotl/klink.el (klink:at-p): Ignore <[ibut name]> and msg attachments like <#part ...>. * hsys-org.el (hsys-org-link-at-p): Stop using (org-in-regexp org-link-any-re nil t) to avoid rx warnings. Use (eq (org-element-type (org-element-context)) 'link) instead. * hibtypes.el (grep-msg): Add support for *Warning* buffer entries like: Warning (comp): hbut.el:224:10: Warning: reference to free variable... * hbut.el (ibut:insert-text): Add actype:elisp-symbol call to ensure all actype symbols are expanded to Hyperbole internal namespace. This fixes some link-to-rfc tests. * hui.el (hui:ibut-create): Add name property from label to ibut. * hpath.el (hpath:find): Simplify and fix so noselect argument is always handled properly and findable path is used in places instead of pathname. This fixes an issue with ilinks that include a pathname where hpath:find was switching the current buffer improperly. (hpath:display-buffer-alist, hpath:display-where-alist): Fix 'other-frame-one-window' option to return found buffer by adding a 'prog1' call. hbut.el (hbut:funcall): Update to use '(current-buffer)' when both buffer and key-src args are null. hbut.el (ebut:to, ibut:to, ibut:to-name, ibut:to-text): Send (current-buffer) as _buffer arg to hbut:funcall so does not try to use _key-src arg and end up in the wrong buffer. * hui-mouse.el (smart-imenu-item-at-p): Fix so only returns non-nil when smart-menu-item-p call is non-nil. Stops from triggering when not on an imenu item. 2023-05-20 Mats Lidell * test/MANIFEST: Add missing hargs-tests.el. 2023-05-19 Bob Weiner * hui.el (hui:ebut-link-directly, hui:ibut-link-directly): Display msg at the end only when called interactively. * hmouse-drv.el (hkey-window-link): With prefix arg, create an ibut link rather than an ebut link. * hui.el (hui:ibut-link-directly): Add. 2023-05-18 Bob Weiner * man/hyperbole.texi (Keyboard Drags): Rename 'hui:link-directly' to 'hui:ebut-link-directly'. (ibut:insert-text): Add 'hpath:substitute-var' calls to substitute variables into link paths. hmouse-drv.el (hkey-window-link): Call 'hui:ebut-link-directly'. 2023-05-17 Bob Weiner * hui-window.el (hmouse-alist-add-window-handlers): Move cons . operators to start of line to avoid syntax highlighting errors when at eol. * hbut.el (ibut:insert-text): Fix to match to long form of actype symbol name since short form is not part of obarray and so will not match. Also, add link-to-file handler with position mapping to line:col. (ibut:operate): Fix to increment ibut instance number properly. 2023-05-15 Bob Weiner * hbut.el (hbut:action): Fix to handle ibuts properly (no diff than ebuts). * hui-window.el (hmouse-at-item-p): Make two changes: 1. Return non-nil if on a Hyperbole button 2. Switch back to start-window rather than just the buffer; so always utilize correct point. (hmouse-item-to-window): Make change to long-time ebut behavior. Previously, a drag from an ebut across windows links it to the new location; now such a drag executes the button's action in the drag release window; ibuts behave the same. DEMO: HY-NEWS: man/hkey-help.txt: Document above change. * hsys-org.el (hsys-org-link-at-p): Simplify to use org-link-any-re and require an Org version with this. 2023-05-14 Mats Lidell * hypb.el (hypb:oct-to-int): mapc takes two args. * test/hypb-tests.el: Add tests for hypb:oct-to-int. 2023-05-14 Bob Weiner * hui-window.el: Change context-specific commentary to refer to "man/hkey-help.txt". * hibtypes.el (action): Remove unneeded comma before args that triggered byte compilation error. * hsys-youtube.el: Add magic autoload comments for internal functions since defact and defalias autoloads do not actually load the library but simply define themselves. * hypb.el (hypb:oct-to-int): Change mapconcat to mapc since don't use result. Silences byte-compiler warning. * kotl/kexport.el (kexport:font-awesome-css-include-with-menus): Fix font size at 20px for all elements, so is large enough by default. * hui-window.el (hmouse-drag-item-mode-forms): Fix treemacs-mode paren error that had error clause outside if statement. * hib-debbugs.el (debbugs-gnu-mode:help): hui-window.el (hmouse-kill-and-yank-region, hmouse-yank-region): hargs.el (hargs:sexpression-p): hpath.el (hpath:cache-mswindows-mount-points): hvm.el (vm-edit-message-end): kotl/kotl-mode.el (kotl-mode:transpose-lines): kotl/kfile.el (kfile:is-p, kfile:print-to-string): hsys-org.el (hsys-org-link-at-p): hbut.el (ebut:label-p, gbut:ebut-key-list, hbut:ebut-key-list): hui-select.el (hui-select-mark-delimited-sexp, hui-select-brace-def-or-declaration, hui-select-sexp-start, hui-select-sexp-end, hui-select-sexp, hui-select-sexp-up): hui-select-punctuation, hui-select-sentence): hmouse-tag.el (smart-cc-mode-initialize, smart-lisp-find-tag, smart-lisp-at-known-identifier-p, smart-lisp-bound-symbol-def, smart-tags-find-p): Replace nil error handler condition-case with ignore-errors macro. 2023-05-13 Bob Weiner * hmouse-drv.el (hmouse-depress-inactive-minibuffer-p): Fix doc to say window is returned rather than buffer. * hui.el (hui:link-create, hui:link-directly): It is rarely possible that a *Warnings* buffer popup might have displaced `but-loc' in the window, so switch to it to be safe. hmouse-drv.el (action-key-depress-buffer, assist-key-depress-buffer) action-key-release-buffer, assist-key-release-buffer): Add to handle when a buffer popup changes the buffer associated with a window between depress and release. (action-key-depress, assist-key-depress, action-key-clear-variables, assist-key-clear-variables): Set depress-buffer and release-buffer variables. (hmouse-key-release-buffer): Add to return any buffer of Smart Mouse Key release. * hsys-youtube.el (require 'hact): Autoload for defact macro. (yt-info, yt-play, yt-search, yt-url): Change from aliases to defact, so are properly registered as actypes. man/hyperbole.texi (Action Types): Add yt-* actypes. * hpath.el (hpath:cache-mswindows-mount-points): Catch and ignore any shell command error. Can be triggered when default-directory is set to a URL, as in RFC display buffers. This in turn would lead hyperbole-mode activation to fail. * man/hyperbole.texi (HyRolo Keys): Updates to match HY-NEWS. * DEMO (Org Mode): Update Action Key handling writeup. * hui-menu.el (infodock-hyperbole-menu): Sync Documentation menu to minibuffer Doc/ Makefile (HYPERBOLE_FILES): MANIFEST (HY-CONCEPTS.kotl): hui-mini.el (Doc/Concepts): HY-CONCEPTS.kotl: Add to explain how Hyperbole concepts connect to one another and Emacs. Add to minibuffer menu on {C-h h d c}. * hbut.el (hbut:comment): Remove nil-valued if clauses. 2023-05-12 Bob Weiner * hui-mouse.el (smart-dired): Fix 'dired-get-filename' so works on . and .. entries. * hui-mini.el (hui:menu-choose): Action Key press on the top-level menu prefix reloads Hyperbole minibuffer menus and Smart Key handlers to reflect any recent changes. man/hyperbole.texi (Menus): Add doc for above update. 2023-05-11 Bob Weiner * hui-mini.el (hui:menus): Rename DeleteIbutType to DeleteType. 2023-05-11 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-append-cell): Add kotl-mode test. 2023-05-07 Bob Weiner * Makefile (manual): Add manual target to build manual without building other doc outputs. * test/kimport-tests.el: Improve all these tests and add `kimport--aug-post-outline'. * hypb-ert.el (hyperbole-run-test-definition): Add ibtype that when on the first line of an `ert-deftest' and not at eol nor on a grouping symbol, evaluates the current version of the test and then runs it. Assist Key press in the same spot steps through the test with edebug. (hyperbole-run-test-definition:help, hypb-ert-def-at-p, hypb-ert-run-test-at-definition): Support functions. 2023-05-06 Bob Weiner * kotl/kimport.el (kimport:aug-post-outline, kimport:text): Update to match `kimport:star-outline'. (kimport:aug-post-statements): Update to match `kimport:star-entries'. * kotl/EXAMPLE.kotl: kotl/kotl-mode.el (kotl-mode): man/hyperbole.texi (Promoting and Demoting): Update so {Shift-TAB} within an Org table in a Koutline moves to the previous field to complement the behavior of {TAB}. This leaves {M-TAB} as the only consistent way to promote trees. * man/im/action-key-animation.gif: Update this animated gif. 2023-04-30 Mats Lidell * test/hui-tests.el (hui--ebut-rename) (hui--ebut-rename-only-button-with-that-label) (hui--ebut-rename-nonumbered-label, hui--ebut-rename-numbered-label) (hui--ebut-rename-all-copies) test/hbut-tests.el (hypb:program-create-ebut-in-buffer-with-same-label): Test for ebut label rename. 2023-04-30 Bob Weiner * hsys-www.el (require 'eww): Add. (eww-browse-url): Override this function so it utilizes Hyperbole's choice of where to display the browser. * hui-mouse.el (smart-push-button-help, hkey-alist): Update to handle Emacs text-property push-buttons, for which button-activate does not work. hbut.el (hattr:emacs-button-attributes): Fix to handle Emacs text-property push-button attributes. hmouse-drv.el (hkey-help): Fix to handle text property push-buttons that return a buffer marker object (no attributes to print then). (smart-push-button): Add and reference in hkey-help to trigger push-button-specific help output. * hbut.el (hbut:label-regexp): If label does not contain an instance number and 'no-delim' arg is nil, don't add a regexp matching to instance numbers, use exact label match only. hbdata.el (hbdata:write, hbdata:ebut-build): Add third arg, 'new-lbl-key' for use when doing ebut renames. hbut.el (ebut:edit, ebut:operate): Call above with third arg. * hbut.el (ebut:operate): Fix bug that caused hui:ebut-rename to rename all numbered instances of a given label rather than just the particular instance of a label because was using instance-flag from 'curr-label' instead of 'new-label'. 2023-04-29 Bob Weiner * man/hyperbole.texi (HyRolo Concepts): Document all supported types of rolo files. (Glossary): Add entry for Helm and Org Rifle packages. Mention 'hyrolo-helm-org-rifle'. * hui.el (hui:ebut-rename): Do nothing if curr and new labels are the same. * man/hyperbole.texi (HyControl): Add I/J/K/M key documentation. * HY-NEWS: Update for V9 release. 2023-04-23 Bob Weiner * kotl/klink.el (klink:at-p): hbut.el (hbut:outside-comment-p): Make the inside of comment prog mode tests in each of these use the same conditional tests. * Makefile (version): Fix so this outputs the list of files whose versions are wrong, shows the proper version number and prints a clearer message. If no problem, generates no output. * hpath.el (hpath:delimited-possible-path): Remove unneeded 'format' call for end delim of space-delimited matches since now use "\\s-". * README.md: Add Action Key animated gif. man/im/action-key-animation.gif: Add. * hui-mini.el (hui:menus): Disable "To/" menu; not yet ready. 2023-04-23 Mats Lidell * Silence various byte compiler warnings. 2023-04-22 Mats Lidell * test/hbut-tests.el (hypb--ebut-at-p-should-not-insert-hbdata-section-in-non-file-buffers): Add test to verify that no but data section is inserted. 2023-04-16 Bob Weiner * hui.el (hui:link-possible-types): Fix link to outline heading where search-backward was given an empty string argument and would loop infinitely without moving. This was because movement to eol was done in the wrong place. 2023-04-15 Mats Lidell * test/kimport-tests.el (kimport--text-file) (kimport--text-file-two-lines-per-paragraph, kimport--star-outline) (kimport--star-outline-two-lines-per-star-heading) (kimport--star-outline-with-siblings): Test cases for kimport. 2023-04-15 Bob Weiner * kotl/kotl-mode.el (kotl-mode:cell-help): Fix to keep current buffer as Koutline buffer and only set standard-output to the help buffer. (kotl-mode:is-p): Update to show buffer that is not a Koutline. * kotl/kfile.el (kfile:create): Fix to handle when 'inhibit-read-only' is set rather than just testing the 'buffer-read-only' flag. 2023-04-15 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-cell-help-displays-help-in-temp-buffer) (kotl-mode-cell-help-displays-help-from-root) (kotl-mode-cell-help-displays-help-for-all-cells) (kotl-mode-kill-tree-and-reopen) (kotl-mode-kill-tree-on-empty-file-creates-new-cell): kotl-mode test cases. 2023-04-09 Bob Weiner * kotl/kimport.el (kimport:initialize): Change test from 'kview:is-p' to 'kfile:is-p' as view may get set before file is fully formatted. (kimport:aug-post-statements, kimport:star-entries): Remove (goto-char start) after each entry is imported as this was causing a duplicate at the end of the import. (kimport:star-entries): Add 'max-pos' arg at end and change to return a cons of (max-position . count-of-top-level-imports). Add support for reusing initial, empty cell in Koutline. (kimport:star-outline): Update to new return protocol for above function. * hui-em-but.el (hproperty:but-get): Add hproperty:ibut-face support. (hproperty:but-clear): Replace with new, more efficient 'hproperty:but-clear-all' to clear all button colorized faces in in current buffer. (hproperty:but-delete): Rename to 'hproperty:but-clear'. (hproperty:but-flash): Fix ibut flashing where text of ibut is not highlighted prior to flashing. * man/hyperbole.texi (Menus): Add doc for minibuffer menu X and Q keys. * hyrolo-menu.el (infodock-hyrolo-menu): Make HyRolo menu a customizable list and conditionally add Consult-Find and Helm-Find when requisite packages are installed. * hbut.el (gbut:ebut-key-list, hbut:ebut-key-list): Move 'save-restriction' before call to 'hbdata:to-entry-ref' to capture all restriction changes. Fixes a bug that could leave the in-buffer hbdata separator exposed. * hui-mini.el (hui:menu-backward-item, hui:menu-forward-item): Fix skip past menu name search to be regexp search, not string search, since pattern is a regexp. (hui:menu-name-at-p): Add and use in above functions. 2023-04-08 Bob Weiner * hui-em-but.el (hproperty:color-list, hproperty:good-colors): Fix to work on all types of color frames rather than just X. (ibut-face): Change color for more contrast with color of ebut labels. (hproperty:but-clear, hproperty:but-create-all, hproperty:but-create): Add hproperty:ibut-face support and remove delimiter override parameters which were never used. (hproperty:but-p, hproperty:but-flash): Add hproperty:ibut-face support. * FAST-DEMO: Add EmacsConf 2022 videos. * man/hyperbole.texi (Smart Key - Lisp Source Code): hmouse-tag.el (smart-emacs-lisp-mode-p): Add support for "*Warnings*", "*Flymake log*" and "*Flymake diagnostics..." buffers. * hui-mini.el (hui:menu-rolo): Make HyRolo menu a customizable list and conditionally add ConsultFind and HelmFind when requisite packages are installed. * hsettings.el (hyperbole-update-menus): Make a command/interactive. * hyrolo.el (hyrolo-helm-org-directory-rifle): Rename to 'hyrolo-helm-org-rifle-directory' for consistency. * hbut.el (hattr:emacs-button-attributes, hattr:emacs-button-is-p): Add (hattr:list): Return Emacs push-button attributes. hact.el (actype:doc): Add support for Emacs push-buttons. hmouse-drv.el (hkey-help): Print attributes of Emacs push-buttons and doc for button's action, just as with Hyperbole buttons. Display whether a Hyperbole button is EXPLICIT or IMPLICIT. Also, for implicit buttons, add display of both ibtype doc and its actype doc. * hyrolo.el (hyrolo-isearch-regexp): Fix 'arg' conditions were reversed. 2023-04-08 Mats Lidell * test/hpath-tests.el (hpath--at-p-checks-files-with-hash-in-name-exists) (hpath--at-p-checks-file-that-with-hash-that-does-not-exist-returns-nil): Add tests for pathnames with hash characters. 2023-04-07 Mats Lidell * test/hui-tests.el (hui--ibut-create-interactive) (hui--ibut-create-interactive-label-using-region) (hui--ibut-create-interactive-add-comment-char) (hui--ibut-create-interactive-create-label) (hui--ibut-rename-label-at-point, hui--ibut-rename-label) (hui--ibut-rename-label-not-in-buffer-errors): Add tests for ibut with labels. 2023-04-07 Bob Weiner * kotl/kimport.el (kimport:suffix-alist): Change car of alist items from a regexp to a string to simplify lookups. (kimport:file): Simplify kimport:suffix-alist handling. (kimport:star-outline): Fix 'total' matching expr to match top-level entries only. This fixes kimport:file infinite loop, kfile:narrow-to-kcells error and broken cell counts. 2023-04-02 Bob Weiner * HY-NEWS: Add EmacsConf 2022 videos. INSTALL: (Invocation): README.md (Videos): man/hyperbole.texi (Invocation): Add link to Hyperbole videos in README.md. 2023-03-29 Bob Weiner * man/hyperbole.texi (Implicit Buttons): Add paragraph on the use of Ibut/ menu. * hui.el (hui:ebut-create, hui:ibut-create): Remove prompting for button buffer and always use current buffer. * hui-menu.el (infodock-hyperbole-menu): Add item Implicit-Button/Create. hui-mini.el (hui:menus): Add minibuffer item Ibut/Create. 2023-03-28 Bob Weiner * hbut.el (def-edebug-spec cl-defun): Add to make 'cl-defun' edebuggable. 2023-03-27 Bob Weiner * hbut.el (ibut:label-separator): Change from " " to " - " for better separation visibility. (ibut:insert-text): Add. hypb.el (hypb:format-args): Add and use in 'ibut:insert-text'. 2023-03-26 Bob Weiner * hbdata.el (hbdata:ibut-instance-last): Add. (hbdata:ibut-instance): Add. hbut.el (ibut:create): Improve doc and add but-sym arg which can supply all other arguments in its properties. (hbut:map): Rewrite handling of 'regexp-match' arg so it always applies to the button label and not its text, to accomodate named implicit button filtering. (hbut:label-regexp): Ensure label is wrapped as grouping 1 and an optional instance number is matched. (ibut:map): Utilize 'start-delim' and 'end-delim' when non-nil. (hbut:map): Remove properties from 'lbl' as not needed. (ibut:label-key-match): Add to return filtered list of ibut labels. (ibut:label-sort-instances): Add to sort label key instance numbers. 2023-03-16 Bob Weiner * hbdata.el (hbdata:build): Rename to hbdata:ebut-build and call in hbdata:write. (hbdata:instance-last): Rename to hbdata:ebut-instance-last. * hbut.el (hbut:label-list): Use in ibut:edit. hui-em-but.el (ibut-face, hproperty:ibut-face): Add and use in ibut:delimit. * hbut.el (ebut:instance-sep): Rename to 'hbut:instance-sep'. * hui.el (hui:ibut-create): hbut.el (ibut:create, ibut:delimit, ibut:edit, ibut:operate): Add interactive, labeled implicit button creation. * ebut:start, ebut:end: Rename to ebut:label-start and ebut:label-end. 2023-03-15 Bob Weiner * hui.el (hui:ebut-buf): Rename to 'hui:hbut-buf' since not ebut-specific. (hui:ebut-create, hui:ibut-create): Update call to above function. 2023-03-13 Bob Weiner * test/hui-tests.el (require 'hibtypes 'klink): Force defib loads so klinks have a higher priority than pathname links and tests always pass. 2023-03-12 Bob Weiner * hmouse-drv.el (action-mouse-key, assist-mouse-key, hmouse-release, hmouse-function): Add 'hmouse-release' and separate from hmouse-function so release args are set in all cases of release. Should fix issue where 'hmouse-drag-outside-all-windows' triggers when simply pressing the Action Key without any mouse press. * hyrolo.el (hyrolo-get-consult-version): Add. (require 'package): Add. (hyrolo-consult-grep): Add optional parameters to specify initial regexp and max-matches per file. Also ensure necessary version of consult package is installed. Update doc. * man/hyperbole.texi (By Dragging): Add doc for link-to-org-id. (Glossary): Add Ace Window, Consult, Org Mode, and Org Roam entries. hui.el (hui:link-possible-types): If an Org ID, use it exclusively and handle IDs in any mode. 2023-03-12 Mats Lidell * kotl/kexport.el (kexport:label-html-font-attributes): Don't use font attributes in HTML export. * kotl/kexport.el (kexport:princ-cell): Export contents from a cell. * test/kexport-tests.el (kexport:html-creates-list-hierarchy): Check that exported lists format has equal start and stop tags. 2023-03-11 Bob Weiner * hibtypes.el (org-id): Set ibut label and return id when at id def so can drag to direct link to an org id definition (or reference). * hbut.el (ibut:at-to-name-p): Fix to handle when 'start' of name is not found. * hibtypes.el (org-id): hactypes.el (org-id-marker-display): Rename to 'link-to-org-id-marker'. (link-to-org-id): Add to jump to an org id referent location. hui.el (hui:link-possible-types): Add 'link-to-org-id' support. * hpath.el (hpath:delimited-possible-path): Add support for HTML " quoting and embedded double quotes. hibtypes.el (Info-node): Better handle embedded double quotes and add support for HTML " quoting. 2023-03-10 Bob Weiner * hyrolo.el (hyrolo-find-file): Prevent 'outline-regexp' getting stuck matching to *word* at the beginning of lines and hanging hyrolo-fgrep because keeps moving to within an entry rather than past it. (hyrolo-grep-file): If above happens, trigger an error and display the problematic file with point at the errant entry. 2023-03-08 Bob Weiner * hibtypes.el (grep-msg): Trigger only if filename exists. Prevents matching to parts of filenames, e.g. from grep -A. 2023-03-07 Bob Weiner * hibtypes.el (org-id, org-id:help): Fix logic and inhibit-messages from org-id-find calls. * hibtypes.el (hib-python-traceback): Tighten matches by requiring final file char to not be a whitespace char. * hpath.el (hpath:find, hpath:call): If 'path' exists, don't treat its # hash marks as section markers, notably for #autosave# files. (hpath:delimited-possible-path): Allow for unquoted filenames with spaces in them in ls listings in shell buffers (assume tab-delimited). 2023-03-02 Bob Weiner * hibtypes.el (hib-social): Move these ibtypes to lower priority than pathname so autosave files like '#file.md#' are not mis-handled as social links with hashtags. Fix bug#61918. 2023-03-01 Bob Weiner * man/hyperbole.texi (Smart Key - Org Mode): man/hkey-help.txt: Add Org/Roam ID description. * hibtypes.el (org-id): hactypes.el (org-id-marker-display): Add to display Org Roam and Org ID referents. Set this context to one of the lowest priorities. * hui-mouse.el (smart-outline, smart-outline-assist): man/hyperbole.texi (Smart Key - Emacs Outline Mode): Remove calling of eol functions when not at the end of line, e.g. when on a non-heading line. This was just too unexpected a behavior in outline-minor-mode contexts. 2023-02-28 Bob Weiner * hyperbole.el (hyperbole--enable-mode): Run (hyperb:init) to enable Hyperbole key bindings if not run already (when user init is not run). 2023-02-27 Bob Weiner * Makefile (TEXI2INFO): Ensure punctuation generated by makeinfo is ascii, not unicode (requires makeinfo 7.0 or above). 2023-02-26 Bob Weiner * hpath.el (hpath:prepend-shell-directory): Fix issue that was grabbing first filename after command line since multi-line whitespace was used rather than limiting search to find current directory to the same line as the command. * hmouse-drv.el (hkey-help): Move button attributes earlier in help doc, {C-h A} output. * hui-select.el (hui-select-markup-modes): Add Emacs builtin mhtml-mode. * hactypes.el (display-boolean, display-value, display-variable): Add interactive specs, so can be used as button actypes. * hargs.el (hargs:iform-vector): Add 'i' interactive spec (ignored arg). * MANIFEST: Makefile (EL_COMPILE): Add hsys-org-roam.el. * hsys-org-roam.el (hsys-org-roam-consult-grep): Add this library and function to interactively grep over org-roam files with live in-buffer display using the automatically installed consult package. 2023-02-22 Bob Weiner * hyrolo.el (consult-org-roam-grep-func): Declare. (hyrolo-consult-grep): Add to interactively grep or ripgrep with live in-buffer display using the automatically installed consult package. 2023-02-20 Mats Lidell * test/demo-tests.el (fast-demo-key-series-shell-cd-hyperb-dir-view-mode) (fast-demo-key-series-shell-grep-view-mode): Add tests for acting on key series in view-mode. 2023-02-19 Mats Lidell * hypb.el (hypb:display-file-with-logo): Use view-mode for fast demo. 2023-02-18 Mats Lidell * test/hmouse-drv-tests.el (hbut-defil-it): Do not follow symbolic links to make path check work. * install-test/local-install-test.sh: Add normal Emacs start to verify Hyperbole is installed. 2023-02-15 Mats Lidell * Makefile (EMACS_PLAIN_BATCH, kotl/kotl-autoloads.el): Use EMACS_PLAIN_BATCH macro in autoloads target to avoid triggering building hyperbole-autoloads. Patch from Stefan Monnier. Thanks Stefan. 2023-02-13 Mats Lidell * hversion.el (id-info-item): Use two args with looking-back. * hyrolo.el (hyrolo-kill): Set unused lexical var to _level-len * kotl/kexport.el (kexport:html): Remove unused lexical var is-collapsible. 2023-02-12 Bob Weiner * hibtypes.el (grep-msg): Fix problem where filename match includes trailing line number because of allowing for Lisp variables with colons in their names. (set:add, set:remove): Convert from a macro to a function and optimize. (set:replace): Rename to 'set:replace-key-value' and use 'set:replace' to replace a non-keyed old-value with a new value. (set:members): Keep members in stable order; previously returned in reverse order. 2023-02-05 Bob Weiner * hsys-org.el (hsys-org-mode-function): Improve doc string. * set.el (set:replace): Fix doc to say always returns the set. (set:replace-member): Add this new function to replace an existing set member or add a new one if no matching existing member. * hyrolo.el (hyrolo-initialize-file-list): Fix to not overwrite any user customized value, if already initialized. 2023-02-04 Bob Weiner * kotl/kexport.el (kexport:html): Change 'output-to-buf-name' to 'output-to-buf'. Remove refs to old XEmacs variables and add call to disable font-lock-mode in the html buffer, to speed export. 2023-01-29 Bob Weiner * kotl/kimport.el: Replace 'children-p' arg with 'children-flag'. (kimport:file): Fix that 'function' was not properly set after a suffix match. * kotl/kview.el (kcell-view:to-label-end): Remove unused 'found' var. * hui-mouse.el (smart-helm-get-current-action): Add, was missing. (smart-helm-line-has-action, smart-helm-assist): Use. * hbdata.el (hbdata:to-entry-buf): Fix error when creating an ebut in an unsent message-compose buffer. Had assumed buffer-file-name there would be nil but now Emacs saves unsent drafts to a file, so have to check if is a mail or news buffer instead. * hui-mouse.el (smart-man-entry-ref): Replace 'smart-symlink-expand' call with 'hpath:symlink-referent'. (smart-symlink-expand): Remove this function. * hbut.el (ibut:to-text): Fix so does not move point if lbl-key end up nil. 2023-01-28 Bob Weiner * hmouse-tag.el (smart-lisp-htype-tag): Fix so expands shortened htype tags whose symbols have been interned when defined. This fixes jumping to the definition of htypes in Help buffers. 2023-01-22 Mats Lidell * hypb.el: Add variable and function declarations for package interaction-log to silence byte compilation warnings. (hypb:activate-interaction-log-mode): Use cl-pushnew. 2023-01-20 Mats Lidell * Remove docstring warnings. 2023-01-15 Mats Lidell * hsmail.el: Remove #-mark for symbol check. * hui-mouse.el: Merge public declaration sections. * hypb.el: * hyrolo.el: Declare functions, remove #-mark for symbol checks. * hsettings.el (hproperty:but-flash): Declare function. * hmouse-drv.el (mouse-drag-mode-line): Use mouse-drag-frame-move from Emacs 28. 2023-01-08 Bob Weiner * hmouse-tag.el (xref--item-at-point): Fix this function (still broken in Emacs29) to not error when called on a blank line at the beginning of the buffer. Was triggering an Action Key error. Fix for 'unrelated issue' reported in Emacs bug#59903. 2023-01-08 Mats Lidell * test/hui-tests.el (hui--kill-ring-save-in-kotl-mode-copies-region) (hui--kill-ring-save-in-kotl-mode-between-cells-fails): Add tests for hui-kill-ring-save. * hui.el (hui-kill-ring-save): Call use kotl-mode:copy-region-as-kill when in kotl-mode. * man/hyperbole.texi (Implicit Button Types): Remove ibtypes::org-mode from function index. * FAST-DEMO: (bug#60596) Do not mention 'function-in-buffer', it's removed. (bug#60597) Replace 'org-mode' with 'org-link-outside-org-mode'. 2023-01-07 Bob Weiner * TAGS: Add to distribution, as is utilized in the Hyperbole DEMO. Remove from .gitignore. Resolve Emacs bug#60594. Makefile (packageclean): Stop removing TAGS here. (package): Add tags target dependency. (HYPERBOLE_FILES): Add TAGS file. * hibtypes.el (text-toc): hactypes.el (text-toc): Fix to jump to RFC table of contents sections. (rfc-toc): Simplify and fix display so source window does not move and full list of sections is included in toc. Resolve Emacs bug#60595. * man/hyperbole.texi: (git-reference, github-reference, gitlab-reference): Move to Action Types section since now are regular Elisp functions, not ibtypes. * hargs.el (hargs:read-match): Vary from completing-read a bit by disallowing any blank result when arg, MUST-MATCH, is given (unless INITIAL-INPUT is given as ""). This prevents blank button names, for example. hui.el (hui:htype-help): Send blank INITIAL-INPUT to hargs:read-match call. FAST-DEMO, DEMO: Update text to clarify that action types include Emacs commands. * man/hyperbole.texi (Explicit Buttons, Action Buttons, Glossary): Expand action type descriptions to include Emacs Lisp commands. (Action Types): Add newer types that were missing and update some doc strings. (Smart Key - Org Mode): Update to latest operation. * hui.el (hui:actype): Limit action type completions to Hyperbole actypes and interactive commands. Resolve Emacs bug#60469. 2022-12-18 Mats Lidell * Makefile (ELC_COMPILE, ELC_KOTL): Use function to derive elc files. 2022-12-11 Bob Weiner * hyperbole.el (hkey-initialize): Fix Emacs bug#59903: handle when C-h is rebound globally to a command rather than as a prefix keymap. 2022-12-03 Bob Weiner * hyrolo.el (hyrolo-fgrep-directories, hyrolo-grep-directories): Use 'apply' to prevent double nesting of &rest 'dirs'. * hpath.el (hpath:expand-with-variable): Fix to expand from local dir first before using dirs in hpath:expand-with-variable. * hibtypes.el (grep-msg): Add support for Ruby traceback stack messages. * hsys-org.el (hsys-org-src-block-start-at-p): Add. test/hsys-org-tests.el (hsys-org:src-block-start-at-p): Test it. 2022-12-02 Bob Weiner * man/hyperbole.texi (Implicit Button Types): Update Smart Key Org mode description. hui-mouse.el (smart-org): Add doc for :dir path handling and for removing code block results with the Assist Key. Also, make the Smart Keys work the same when point is on a #+RESULTS headers as they do when on a code header. 2022-11-27 Bob Weiner * hmouse-tag.el (smart-tags-org-src-block-p): Add and use in 'smart-tags-file-list' and 'smart-tags-display'. * hmouse-tag.el (smart-tags-file-list): Add support for Org code blocks. * hsys-org.el (hsys-org-get-value): Get attribute values from Org contexts. * hsys-org.el (hsys-org-mode-p): Made an autoload for use by other parts of Hyperbole. * hyrolo.el (hyrolo-hdr-format): Extend headers to 79 chars for longer file names. (hyrolo-fgrep): Remove outer double quotes if any used to maintain spaces in strings as they are normalized in key series. * hypb.el (hypb:activate-interaction-log-mode): Fix so creates log buffer if it doesn't exist. (hypb:glob-to-regexp): Add for use with hyrolo directory file filters. hyrolo.el (hyrolo-filter-directories): Use above function. 2022-11-26 Bob Weiner * hycontrol.el (hycontrol-frames/windows-mode): Define local modes before global modes so keymap lookups work properly and display properly in *Emacs Log* (interaction-log-mode). * hui-mouse.el (smart-org): Prioritize Hyperbole buttons over the start line of an Org block so can jump to :dir paths in such lines. * hbut.el (hbut:fill-prefix-regexps, hbut:fill-prefix-remove): Fix so removes full lines of comments rather than just the prefix. * hsys-org.el (hsys-org-radio-target-def-at-p): Use 'org-radio-target-regexp'. (hsys-org-radio-target-link-at-p): Ensure has radio target help-echo property for better matching. (hsys-org-internal-target-link-at-p, hsys-org-internal-target-def-at-p, hsys-org-internal-target-at-p): Add to handle internal targets just like radio targets. (hsys-org-internal-link-target-at-p): Delete and replace with 'hsys-org-internal-target-def-at-p'. (org-internal-link-target): Rename to 'org-internal-target-link'. (org-radio-target): Rename to 'org-radio-target-link'. * test/hsys-org-tests.el (hsys-org:org-internal-link-target-at-p): Change to test a regular Org target, not a radio target. * hui-mouse.el (smart-org): Correct doc to match the context order processed. * hact.el (htype:symbol): Add as autoload since used in "hsys-youtube.el" autoloads. 2022-11-22 Bob Weiner * hsys-youtube.el: Add all public functions as autoloads. 2022-11-21 Bob Weiner * hycontrol.el (framemove, windmove): Conditionally requires these libs when compiling. Autoload their move among commands bound to I/J/K/M. (hycontrol-framemove-direction, hycontrol-framemove-up, hycontrol-framemove-left, hycontrol-framemove-right, hycontrol-framemove-down): Add to auto install framemove package and move to directional frames. (hycontrol--frames-prompt-format, hycontrol--windows-prompt-format): Add help for new frame/window selection commands. man/hyperbole.texi (HyControl): Add doc for new frame/window selection commands. * hmouse-drv.el (hkey-buffer-move): Fix to properly move windows (swapping buffers) when builtin windmove library is used. * hversion.el (id-info-item): Index may point to indented line immediately after the non-indented item definition line. If so, move back a line. 2022-11-20 Bob Weiner * kotl/kimport.el (kimport:star-outline): Fix to interactively default first arg to current filename and output arg to the same name as input but with ".kotl" suffix. (kimport:initialize): Add optional 'erase-flag' arg to erase buffer before importing elements. And use in all kimport commands. * hactypes.el (text-toc): hibtypes.el (text-toc): Allow TOCs in any derived text mode. Improve efficiency and generalize section prefix. 2022-11-06 Bob Weiner * hycontrol.el (cl-lib): Add this require for cl-loop. (hycontrol-windows-grid-number-of-windows, hycontrol-windows-grid-valid-size-p): Add. (hycontrol-windows-grid-by-buffer-list, hycontrol-windows-grid-by-file-list): Add first arg grid-size. (hycontrol-make-windows-grid, hycontrol-windows-grid-validate, hycontrol-windows-grid-minimum-size, hycontrol-windows-grid-repeatedly): Add further input checks. * hywconfig.el (hywconfig-delete-pop-continue, hywconfig-yank-pop-continue): Add and call interactively in "hui-mini.el". * hhist.el (hhist:remove): Rename to 'hhist:pop'. * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Fix missing 'pattern' arg in 'format' call. * hpath.el (hpath:at-p): Ignore anchor matches to '#+' so does not match to Org markup. 2022-11-05 Bob Weiner * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Update to use prefix arg as grid size or to autosize when not given or given an invalid value. (hycontrol-windows-grid): Don't nullify prefix arg when calling above function. (hycontrol-make-windows-grid): Move 'hhist:add' call here and remove from 'hycontrol-windows-grid' so it covers all variants of windows-grid display. * hbdata.el (hbdata:to-entry-buf): Fix bug that set 'rtn' non-nil at times when 'key-src' file was not found. This could lead to the wrong error, 'hui:ebut-delete', saying that you cannot delete buttons in this buffer. 2022-10-31 Bob Weiner * kotl/kimport.el (kimport:star-heading): Allow for indented headings. 2022-10-30 Bob Weiner * hypb.el (hypb:activate-interaction-log-mode): Add to configure and enable the interaction-log package for use with Hyperbole. It displays a font-locked log of Emacs keys and commands executed. * hui-mini.el (hui:menu-enter): For character input, set 'this-command' to 'self-insert-command'. (hui:menu-mode-map): Rebound these keys to commands by the same name: 'hui:menu-abort', 'hui:menu-quit', 'hui-menu-select', and 'hui:menu-top'. (hui:menu-select): Rename this function to 'hui:menu-choose' to avoid conflict with aliasing above and ensure all the special keys above are displayed in cmd logs. * hui-mini.el (hui:hypb-exit): Rename to 'hui:menu-exit-hyperbole'. * hui-mini.el (hui:menu-select): Don't record 'read-from-minibuffer' in command history. (hui:menu-act): Set 'this-command' and command keys to be the full key sequence for a Hyperbole minibuffer menu command. Ensure this single command appears in history for clean logging. 2022-10-27 Bob Weiner * hui-mini.el (hui:menu-item-key): Add and call from 'hui:menu-item-keys'. * hib-kbd.el (kbd-key:key-series-to-events): Add cons of t to each event to ensure each event is added to this-command-keys. 2022-10-25 Bob Weiner * hyrolo.el (hyrolo-backward-same-level): Add and bind to {b}. (hyrolo-forward-same-level): Add and find to {f}. (hyrolo-next-visible-heading): Add and bind to {n}. (hyrolo-previous-visible-heading): Add and bind to {p}. (hyrolo-up-heading): Add and bind to {u}. (hyrolo-helm-org-directory-rifle, hyrolo-helm-org-rifle): Let new variable, 'helm-org-rifle-show-level-stars', be t. 2022-10-24 Bob Weiner * hui-mouse.el (smart-outline-assist, smart-outline, (smart-outline-to-entry-end): Remove 2nd arg 'curr-entry-level' and simplify logic. * hyrolo.el, hyrolo-logic.el: Remove 'next-entry-exists' and 'previous-entry-exists'. * test/hyrolo-tests.el (hyrolo-demo-move-to-beginning-and-end-of-file): Rewrite to match new {,} and {.} bindings. * hyrolo.el (hyrolo-to-entry-end): Remove 2nd optional arg curr-entry-level-len. 2022-10-23 Bob Weiner * man/hyperbole.texi (HyRolo Keys): hyrolo.el (hyrolo-to-entry-end): Make interactive and bind to {.}. (hyrolo-to-entry-beginning): Add and bind to {,}. Previously, these keys were bound to begin and end of buffer but were mistakenly reversed. Also, simplify these two commands. (previous-entry-exists): Add this free variable and use in 'hyrolo-to-entry-beginning'. * hbut.el (hbut:get-key-src): Add save-excursion so point does not move. hyrolo.el (hyrolo-edit-entry): Fix so if point is not on an entry (src is a buffer, not a string), then raise an error. 2022-10-20 Mats Lidell * hload-path.el (hyperb:dir): Use defvar. Thanks to Stefan Monnier. 2022-10-16 Mats Lidell * kotl/klink.el (hmouse-tag): Require hmouse-tag. * hui-mouse.el (imenu): Require imenu. * hmouse-sh.el (kmacro): Require kmacro. * kotl/kotl-mode.el (cmpl-last-insert-location, cmpl-original-string) (completion-to-accept): * hyrolo.el (org-roam-directory, org-roam-db-autosync-mode) (markdown-regex-header): * hui-mouse.el (magit-root-section): * hsettings.el (helm-allow-mouse): * hmouse-info.el (Info-complete-menu-buffer): * hmouse-drv.el (start-window): * hload-path.el (generated-autoload-file): Declare variable. * hargs.el (hargs:reading-symbol): Define variable. 2022-10-16 Mats Lidell * kotl/kview.el (kview:insert-contents): Don't use global name for parameter. (kview:set-label-separator): Remove unused variable. * hpath.el (hpath:is-p): Initialize variable. * hmouse-sh.el (hmouse-get-bindings, hmouse-shifted-setup): Don't use global name for parameter. 2022-10-16 Bob Weiner * kotl/kproperty.el (kproperty:replace-separator): Drop unused 'pos' arg. kotl/kview.el (kview:set-label-separator): Update call to above function. 2022-10-15 Bob Weiner * hui-em-but.el (hproperty:but-flash): Remove 'a' and 'b' internal variables and replace with 'but-face'. * hbut.el (defil): Add 'ibut:label-set' call with label start and end positions so implicit buttons defined this way flash when activated. * hyrolo-menu.el: Align menu entry fields for better readability. * hbut.el (hbut:get-key-src): Add optional 'dir-flag' arg to return the directory of the 'key-src' and use in 'klink:at-p'. * kotl/klink.el (klink:c-style-modes): Improve doc string. (klink:at-p): In *scratch* buffer (lisp-interaction-mode) and 'hui-select-markup-modes', allow klinks outside of comments (since this is more intuitive). 2022-10-11 Mats Lidell * Makefile (bin, eln): Show docstring warnings again. 2022-10-10 Mats Lidell * kotl/kview.el (kview:create): Shorten docs strings to be within 80 char limit. 2022-10-09 Bob Weiner * hyrolo-logic.el (hyrolo-map-entries, hyrolo-map-kotl): Add and call from 'hyrolo-map-logic'. 2022-10-09 Mats Lidell * Update docstrings to not use unescaped quotes. * hyrolo.el: * hyrolo-demo.el: * hui-mini.el: * hui-em-but.el: * hsys-org.el: * hpath.el: * hib-kbd.el: * kotl/kview.el: Shorten docs strings to be within 80 char limit. 2022-10-08 Mats Lidell * hibtypes.el (ipython-stack-frame, ripgrep-msg): Use line-beginning-position and line-end-position. 2022-10-08 Bob Weiner * kotl/kview.el (kcell-view:contents): Add 'prefix-flag' arg to include autonumber prefix and indent. (kview:map-cells): Add. * kotl/kotl-mode.el (kotl-mode:tree-start): Use 'line-beginning-position'. 2022-10-06 Bob Weiner * test/hibtypes-tests.el (ibtypes::pathname-path-variable-test): Remove since is a duplicate of 'ibtypes::pathname-directory-test'. 2022-10-05 Mats Lidell * hui.el: * kotl/kotl-mode.el: * hib-social.el * hmail.el: * hmouse-tag.el: * hsettings.el: * hsys-org.el: * hui-mini.el: Shorten docs strings to be within 80 char limit. 2022-10-04 Mats Lidell * hui.el (hui-copy-to-register): Use hui-register-struct-at-point if on a button. * test/hui-register-tests.el (hui-register-tests--create-register-content) (hui-register-tests--register-val-jump-to) (hui-register-tests--register-val-insert-ebut) (hui-register-tests--register-val-insert-ibut): Add test cases for hui-register. * Makefile (EL_COMPILE, ELC_COMPILE): Add hui-register. 2022-10-03 Mats Lidell * hui-mouse.el: * hvar.el: * hyrolo.el: * hypb.el: * hycontrol.el: * hui-select.el: * hpath.el: * hibtypes.el: * hyrolo-logic.el: * hyperbole.el: * hversion.el: * hui-window.el: * hmouse-key.el: * hmouse-drv.el: * hload-path.el: * hinit.el: Shorten docs strings to be within 80 char limit. 2022-09-30 Bob Weiner * hyrolo-logic.el (hyrolo-not, hyrolo-or, hyrolo-xor, hyrolo-and): Use narrow-to-region and 'hyrolo-next-match-function' to find matches. Also, regexp-quote the pattern as it is a string. (hyrolo-r-not, hyrolo-r-or, hyrolo-r-xor, hyrolo-r-and): Use narrow-to-region and 'hyrolo-next-match-function' to find matches. (hyrolo-fgrep-logical): Add support for using the regex logical functions by prefacing each function with 'r-' in an expression, e.g. (r-and regex1 (r-not regex2)). * hyrolo.el (hyrolo-verify): Add support for 'hynote-display-buffer'. (hyrolo-grep-file): Change 'regexp' arg to 'pattern' and update doc to mention use of 'hyrolo-next-match-function'. * kotl/kcell.el (kcell:parse-cell-ref): Extract this from 'kotl-mode:goto-cell' and make an autoload so may be used externally. 2022-09-27 Bob Weiner * kotl/kcell.el (kcell:plist): Change from alias to a function so can include a doc string. 2022-09-26 Bob Weiner * hyrolo.el (hyrolo-next-regexp-match): Add to allow for different hyrolo entry matching functions. (hyrolo-next-match-function): Add. (hyrolo-grep-file): Use above variable. 2022-09-25 Bob Weiner * hyrolo-logic.el (hyrolo-logic): Fix to handle when filename list is used rather than a buffer list. * hui.el (hui-copy-to-register): Rename 'region' arg to 'region-flag'. * hyrolo.el (hyrolo-add): Handle markdown-mode which doesn't have a grouping of only space after pound (#) headings. (markdown-mode-hook): Support hyrolo searches in markdown files. (hyrolo-fgrep-file, hyrolo-grep-file, hyrolo-fgrep, hyrolo-grep, hyrolo-word): Add optional 'headline-only' argument. * hib-doc-id.el (link-to-doc, doc-id:help): Set new 'headline-only' argument to nil. 2022-09-24 Bob Weiner * hyrolo.el (hyrolo-display-buffer): Change buffer name from "*Hyperbole Rolo*" to "*HyRolo*". * test/demo-tests.el (demo-hyrolo-test): test/hyrolo-tests.el: Replace all "*Hyperbole Rolo*" with 'hyrolo-display-buffer'. 2022-09-19 Mats Lidell * hypb.el (hypb:replace-match-string): Remove unused function. * hact.el: Use byte-code-function-p. 2022-09-17 Bob Weiner * kotl/klink.el (klink:cell-ref-regexp): Allow for a comma between the cell reference and a viewspec. kotl/kcell.el (kcell:ref-to-id): Remove any comma. 2022-09-14 Mats Lidell * hmouse-sh.el: * hywconfig.el: * htz.el: * hmouse-mod.el: * hmoccur.el: Shorten docs strings to be within 80 char limit. 2022-09-13 Mats Lidell * hmouse-info.el: Shorten docs strings to be within 80 char limit. 2022-09-12 Mats Lidell * hpath.el (hpath:tramp-file-name-regexp): Handle tramp regexp from different Emacs versions. * test/hpath-tests.el (hpath:remote-at-p): Add test case for hpath:remote-at-p. 2022-08-29 Bob Weiner * hbut.el (ebut:key-src): Rename to 'ebut:to-key-src'. (hbut:key-src): Rename to 'hbut:to-key-src'. (ibut:key-src): Rename to 'ibut:to-key-src'. * hyrolo.el (hyrolo-verify, hyrolo-isearch, hyrolo-next-match, hyrolo-previous-match, hyrolo-isearch-for-regexp): Add support for use in main HyRolo file, not just match buffer. * hui-select.el (hui-select-goto-matching-delimiter, hui-select-thing): hui-mini.el (hui-search-web): Use Org cmd if matching key binding called from a keyboard macro. * hui-mini.el (hui-search-web): If in Org mode and uses org-sparse-tree binding call that instead (previously would call hsys-org-todo-occur for more todo filtering functionality but org has a dispatch menu on this key with multiple functions). 2022-08-28 Bob Weiner * kotl/klink.el (klink:act): Ensure 'hact' value is returned, not the result of the 'klink:update-label' call. hbut.el (hbut:get-key-src): Add to get source of button without setting as current buffer. kotl/klink.el (klink:at-p): Use 'hbut:get-key-src' to resolve relative klink paths properly. * kotl/kotl-mode.el (kotl-mode:to-start-of-line): Remove and use 'kotl-mode:beginning-of-line' instead. * hact.el (action:commandp, action:params, actype:eval): hargs.el (hargs:action-get): hypb.el (hypb:debug, hypb:map-vector): Replace use of 'hypb:emacs-byte-code-p' with builtin 'byte-code-function-p. * hibtypes.el (elisp-compiler-msg): Replace 'hypb:replace-match-string' with 'replace-regexp-in-string'. * hbut.el (ibut:at-p): Fix to return nil if name and lbl-key are both nil. Also add support for <> and {} ibut delimiters. * hui-mouse.el (hkey-alist): In HyRolo match buffer, test major-mode rather than buffer name. * hyrolo.el (hyrolo-mode): Don't reinitialize local variables to default values when already in hyrolo-mode and mode is invoked again. * kotl/kview.el (kcell-view:to-label-end): Remove check if in a buffer with a kview so can be used in HyRolo match buffer as well. (kcell-view:to-label-end): Handle no kview in in HyRolo match buffer. * hyrolo.el (hyrolo-kill, hyrolo-toggle-narrow-to-entry, hyrolo-google-contacts-grep, hyrolo-grep-file, hyrolo-display-to-entry-end, hyrolo-name-at): kotl/kimport.el (kimport:star-entries): Don't fold case when searching for 'hyrolo-hdr-and-entry-regexp'. (hyrolo-isearch-for-regexp): Add 2nd parameter, 'fold-search-flag' used to set 'case-fold-search'. * hyrolo.el (hyrolo-find-file-noselect-function): Add so can customize low-level function used to read in each file searched by HyRolo. (hyrolo-find-file): Add second optional parameter, 'find-function', used to find the file. (hyrolo-find-file-noselect): Add and use 'hyrolo-find-file-noselect-function'. (hyrolo-add, hyrolo-edit, hyrolo-grep, hyrolo-helm-org-rifle, hyrolo-grep-file, hyrolo-map-level, hyrolo-to): Update to call 'hyrolo-find-file-noselect'. (hyrolo-add-match): Retain entry properties in match buffer. (hyrolo-mode): Make 'outline-regexp' local in match buffer. 2022-08-27 Bob Weiner * hyrolo.el (hyrolo-file-suffix-regexp): Match only to these file suffixes when searching for HyRolo files in directories. (hyrolo-search-directories, hyrolo-fgrep-directories, hyrolo-grep-directories, hyrolo-helm-org-rifle-directories): Add these functions to do HyRolo searches over filtered filenames in directories. (hyrolo-org): Separate helm-org-rifle behavior into a new command, 'hyrolo-helm-org-directory-rifle'. (hyrolo-helm-org-rifle, hyrolo-helm-org-directory-rifle): Let 'helm-org-rifle-show-full-contents' be true. * hyrolo.el (hyrolo-helm-org-rifle): Limit to .org and .otl files. * hypb.el (hypb:filter-directories, hypb:readable-directories): Add and use in "hyrolo.el". 2022-08-21 Bob Weiner * hyrolo.el (hyrolo-set-date): Don't add a date if in a Koutline buffer. * hyrolo.el (hyrolo-add, hyrolo-edit, hyrolo-toggle-narrow-to-entry, hyrolo-grep-file, hyrolo-to): hyrolo-logic.el (hyrolo-map-logic): Replace use of 'widen' with new function, 'hyrolo-widen', which widens only to the textual part of a buffer, leaving Koutline meta-data hidden, for example. (hyrolo-edit, hyrolo-add): If in a Koutline, ensure point is left in a valid, editable position. (hyrolo-narrowed-p): Remove. Use 'buffer-narrowed-p' instead. (hyrolo-show-levels): Make argument of NUM-LEVELS relative to first matched level, so some entries are always shown. (hyrolo-min-matched-level): Add and use in 'hyrolo-show-levels' (hyrolo-back-to-visible-point): Add and use in 'hyrolo-show-levels'. (hyrolo-display-matches): Move invocation of 'hyrolo-mode' to when the match display buffer is created in 'hyrolo-set-display-buffer'. (hyrolo-set-display-buffer): Add and used above. 2022-08-20 Bob Weiner * hyrolo.el (hyrolo-grep): Add support for 'outline-regexp' and 'outline-level' variables from multiple file types. This includes adding 'hyrolo-hdr-regexp' to both 'hyrolo-hdr-and-entry-regexp' and 'outline-regexp' within the *HyRolo* match buffer. (hyrolo-mode): Set local value of 'outline-level' to 'hyrolo-mode-outline-level' and define that function to support star outlines and Koutlines. Also, make 'hyrolo-hdr-and-entry-regexp' local and set it to its default value, after which it may be modified. (hyrolo-previous-match): Change so can be used in a predicate when a match is found. (hyrolo-mode-outline-level): Add and use in 'hyrolo-mode'. * kotl/kotl-mode.el (kotl-mode): Add local settings of: 'hyrolo-hdr-and-entry-regexp', 'outline-level', and 'outline-regexp' specific to Koutlines. kotl/kview.el (kview:outline-regexp): Regexp quote use of 'kview:default-label-separator'. (hyrolo-name-at): Change to only go to beginning of the current line to check if at the start of a hyrolo entry; don't do a reverse search any more. 2022-08-14 Mats Lidell * set.el: * hyrolo-demo.el: * hui-jmenu.el: * hui-em-but.el: * hsys-youtube.el: Shorten docs strings to be within 80 char limit. * hload-path.el (hload-path--make-directory-autoloads): Use loaddefs-generate if available. 2022-08-11 Bob Weiner * kotl/kview.el (kview:outline-regexp): Add groupings to match to 'hyperbole-entry-regexp' when HyRolo searches kotls. * kotl/kotl-mode.el (kotl-mode): Set this mode with 'special property since cells are specially formatted and edited. hyrolo.el (hyrolo-grep-file): hyrolo-logic.el (hyrolo-map-logic): Don't widen buffers whose major mode is marked 'special. 2022-08-08 Bob Weiner * kotl/kview.el (kview:outline-regexp): Add so can be referenced elsewhere. kotl/kotl-mode.el (kotl-mode): Use kview:outline-regexp. 2022-08-07 Bob Weiner * hyrolo.el (hyrolo-org, hyrolo-org-roam): Remove cddr call to filter . and .. out since match to "\\.org$" already does. Also add missing arguments to hyrolo-org and complete doc strings. 2022-08-07 Mats Lidell * kotl/kvspec.el: Shorten docs strings to be within 80 char limit. 2022-07-26 Mats Lidell * kotl/kproperty.el: * kotl/klink.el: * kotl/klabel.el: * kotl/kfile.el: * hib-kbd.el: * hib-doc-id.el: * hhist.el: * hbut.el: * kotl/kotl-orgtbl.el: Shorten docs strings to be within 80 char limit. 2022-07-25 Mats Lidell * kotl/kimport.el: * kotl/kfill.el: Shorten docs strings to be within 80 char limit. 2022-07-24 Bob Weiner * hypb.el (hypb:require-package): Prompt user with y/n query before installing a package when it is not already installed. * hbut.el (ibut:at-p, ibut:create): Ensure lbl-key is always set to name, if available, and lbl-start and lbl-end point to the text start and end for an ibut. * hibtypes.el (action): Ensure actypes:: prefix is added to any action attribute that uses a Hyperbole actype. Also, set args attribute to exclude the actype. * hbut.el (ibut:create): Rewrite to prefer values from hbut:current over any passed in individually. * test/demo-tests.el (fast-demo-key-series-shell-cd-hyperb-dir): FAST-DEMO: Change pushd to cd since /bin/sh does not support pushd. * hpath.el (hpath:find): Rename filename arg to pathname and trigger an error if not a string. 2022-07-23 Bob Weiner * hibtypes.el (action): Display the result of evaluating the action in the minibuffer for all types of expressions. hactypes.el (display-value, display-variable): Fix to display Lisp-readable values. * hui.el (hui:gibut-create): Add (ibut:create) call so 'hbut:current stores the attributes of the newly created global button. * hbut.el (hbut:action): If action defined, return only first element to match the return when actype is used. (hbut:act): Use action attribute if defined. (ibut:create): Prevent removal of 1st arg if actype is set. * hibtypes.el (elisp-compiler-msg): Add support for ERT "Test " lines to jump to the def of the symbol and for symbol and pathname references from backtraces in ERT output. * hib-debbugs.el (debbugs-version-sufficient-p): Handle if version is nil due to edebug mocking of 'find-file-noselect'. test/hui-tests.el (hui-gibut-create-link-to-file, hui-gibut-create-link-to-file-line, hui-gibut-create-link-to-file-line-and-column): test/hbut-tests.el (gbut-program-calls-ebut-program) gbut-program-link-to-directory, gbut-program-eval-elisp, gbut-program-link-to-file, gbut-program-link-to-file-line, gbut-program-link-to-file-line-and-column): Replace mock of 'find-file-noselect' with 'hpath:find-noselect' so tests do not interfere with other calls to 'find-file-noselect'. * test/hy-test-helpers.el (hy-test-helpers:kill-buffer): Add to kill buffers only when they exist. test/demo-tests.el (fast-demo-key-series-shell-apropos): Use 'hy-test-helpers:kill-buffer'. test/hy-test-dependencies.el (hy-test-ensure-package-installed): Simplified by defining this function. 2022-07-22 Bob Weiner * hmouse-drv.el (hkey-debug): Use 'action' attribute if set, otherwise, use 'actype' and 'args'. * hbut.el (ibut:create): Add 'dir' key parameter and set as hbut:current attribute. Remove '(or args)' as that was preventing set of hbut:current attributes. 2022-07-21 Mats Lidell * kotl/kexport.el: * kotl/kcell.el: Shorten docs strings to be within 80 char limit. 2022-07-20 Mats Lidell * hact.el: * hmouse-tag.el: * hbdata.el: * hactypes.el: * hib-debbugs.el: * hargs.el: Shorten docs strings to be within 80 char limit. 2022-07-19 Mats Lidell * test/demo-tests.el (fast-demo-key-series-shell-apropos): Add optional whitespace after command to accomodate for different versions on apropos. 2022-07-17 Mats Lidell * hypb.el (hypb:replace-match-string): Fix obsolete version to 8.0.1. * kotl/kotl-mode.el (kotl-mode:beginning-of-line): Rename from kotl-mode:to-start-of-line since it is the preferred name but was blocked due to XEmacs byte compiler bug. (kotl-mode:to-start-of-line): Mark as obsolete from version 8.0.1. * hmouse-sh.el (hmouse-get-bindings): Do not mention XEmacs since it is not supported. * kotl/kview.el: * kotl/kotl-mode.el: * kotl/klabel.el: Use lbl-sep-len for all defun parameters to avoid name clash with obsolete variable label-sep-len. * kotl/kvspec.el (kvspec:show-lines-this-cell): Use kview-label-sep-len. * kotl/kotl-mode.el (kotl-mode:collapse-tree, kotl-mode:expand-tree): Use kview-label-sep-len. * kotl/kview.el (kview-label-sep-len): Rename global variable. (kcell-view:lines-visible, kview:set-cells-status): Use it. (label-sep-len): Mark variable as obsolete. Use kview-label-sep-len. 2022-07-17 Bob Weiner * hmouse-drv.el (hkey-debug): Add print of all button properties when on a Hyperbole button. * hsettings.el (hyperbole-web-search): Add optional 'return-search-expr-flag' to return search expression rather than doing the search. Use with Assist Key. * hibtypes.el (action): Call ibut:create to ensure button attributes are set properly. hbut.el (ibut:create): Return nil if at end-of-buffer. * hui-mouse.el (smart-imenu-item-p): Support -99 position value that Emacs uses to indicate a rescan should be done. * test/demo-tests.el (fast-demo-key-series-shell-cd-hyperb-dir, fast-demo-key-series-shell-grep, fast-demo-key-series-shell-apropos): Use 'sh' instead of 'bash' for wider applicability. Don't kill shell buffer if it exists before the test is invoked. * hact.el (htype:symbol): Return nil if type-category is invalid. 2022-07-15 Mats Lidell * test/hypb-tests.el: Remove test cases for hypb:replace-match-string. * hypb.el (hypb:replace-match-string): Mark as obsolete. Replace all calls, in numerous places, to use replace-regexp-in-string. 2022-07-13 Stefan Monnier * hrmail.el (rmail-cease-edit, rmail-forward, rmail-get-new-mail) (rmail-new-summary): Use `advice-add` rather than straight redefinition or `hypb:function-overload`. * hmh.el (mh-display-msg, mh-regenerate-headers): Use `advice-add` rather than `hypb:function-overload`. * hgnus.el (gnus-inews-article): Remove hack on function that was deleted back in Nov 1995. * hypb.el (hypb:emacs-byte-code-p): `byte-code-function-p` is always defined in Emacs≥27. (hypb:function-copy, hypb:function-overload) (hypb:function-symbol-replace, hypb:map-sublists) (hypb:constant-vector-symbol-replace): Delete functions. 2022-07-12 Bob Weiner * hbut.el (ibut:create): Add, extracted from 'ibut:at-p'; define with cl-defun so can optionally use non-positional colon-prefixed keyword args to specify specific args. * hmouse-drv.el (hkey-help): Set 'assist-flag' so matches Assist Key behavior in edges cases. * hactypes.el (display-value): Add to display a value when a get or value function returns that value. hibtypes.el (action): Use 'display-value'. 2022-07-12 Mats Lidell * test/hpath-tests.el (hpath:auto-variable-alist-load-path-test): Simplify test case to only test with unquoted file name. * test/hui-tests.el (hui-gbut-edit-link-to-file-button): Remove test file after test case is completed. 2022-07-11 Bob Weiner * hibtypes.el (action:help): Allow for action button assist key :help functions, even if the action button type is not a Hyperbole type, i.e. a regular function. 2022-07-11 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers:should-last-message): Use function messages-buffer for getting the *Messages* buffer. * test/hui-select-tests.el (hui-select--thing): Limit test case to run in interactive mode, i.e. make test-all. 2022-07-10 Bob Weiner * hsys-youtube.el: Add action button type to play segments of Youtube videos. Makefile (EL_COMPILE, ELc_COMPILE): MANIFEST: Added above file. 2022-07-06 Bob Weiner * hypb.el (hypb:require-package): Add to install a package, if necessary, and require its library with the same name. (hypb:helm-info): Add to require helm package and call helm-info. 2022-07-04 Bob Weiner * hypb.el (hypb:devdocs-lookup): Install and load devdocs package and then call its 'devdocs-lookup' function. 2022-07-02 Bob Weiner * hyrolo.el (hyrolo-org, hyrolo-helm-org-rifle, hyrolo-org-roam): Add HyRolo- based searching of Org files, helm-based searching of HyRolo files and Hyrolo-based searching of Org Roam files. * hsys-org.el (hsys-org-link-at-p, hsys-org-heading-at-p): Update to use 'smart-eolp' and 'smart-eobp'. 2022-06-26 Bob Weiner * hui-mouse.el (hkey-alist): Fix smart-lisp to jump to load, autoload and require targets. hmouse-tag.el (smart-lisp-at-load-expression-p): Ensure expr ends with whitespace (a full word). 2022-06-25 Bob Weiner * hui-mini.el (hui:menu-forward-item, hui:menu-backward-item): Update to handle menus without a name> prefix, e.g. a-Z menu. Also add numeric prefix arg handling. 2022-06-20 Bob Weiner * hui-mini.el (hui:doc-a-z): Add. (hui:menu-item): Add support for inserting menu item label into the action when the action is 'hui:menu-to-personal-section'. (hui:menu-to): Add this customizable menu but don't activate it until design work is finished. * hyrolo.el (hyrolo-add): Add newline before adding entry if point is not at the beginning of the line for insertion, i.e. when buffer does not end with a newline. * hui-mini.el (hui:menu-multi-line): Add to change long minibuffer menu lines into multi-line menus. (hui:menu-line): Update to use 'hui:menu-multi-line'. 2022-06-19 Bob Weiner * test/demo-tests.el (fast-demo-key-series-shell-apropos): Allow optional space before matching section number. * hui-treemacs.el: Change to load and compile only when the treemacs package is installed (rather than triggering an error if this is loaded when treemacs is missing, since this can happen when building/compiling Hyperbole). * Makefile (BATCHFLAGS): Output emacs version, sys and path information. (LOAD_EL): Add to gen cmd line args to load all Hyperbole .el files. (load-hyperbole): Add to allow testing of loading all of Hyperbole. (eln): Use LOAD_EL and remove autoloads loading prior to native compiling. * test/demo-tests.el (fast-demo-key-series-shell-apropos): Fix to handle shell startup delay. * hypb.el (hypb:function-copy): Since many functions may become primitives when using the native compiler, return the primitive function in such cases rather than triggering an error. 2022-06-19 Mats Lidell * hui-select.el: Remove mention of Emacs versions in comment. * hmoccur.el (moccur): Remove XEmacs and InfoDock font-lock code. * hui-mouse.el: Remove mention of Emacs versions and NEXTSTEP. * hsettings.el: Remove XEmacs from comment. * kotl/kotl-mode.el (kotl-mode:fill-paragraph-or-region): (kotl-mode-map): Remove XEmacs compatibility code. * hmouse-drv.el (hmouse-use-region-p): Remove XEmacs and InfoDock compatibility code. * kotl/kmenu.el (id-menubar-set): Remove declared unused function. (id-menubar-kotl): Remove unused InfoDock menu. (kotl-menubar-menu): Remove XEmacs compatibility code. (kotl-mode-hook): Set hook unconditionally. * hyrolo-menu.el (id-menubar-hyrolo): Remove InfoDock menu. (id-menubar-set, mode-popup-menu): Remove unused public declarations. (hyrolo-menubar-menu): Remove XEmacs compatibility code. (hyrolo-mode-hook): Set hook unconditionally. * hmouse-tag.el (smart-emacs-tags-file): Remove XEmacs, Infodock from doc. (smart-tags-find-p, smart-tags-display, smart-tags-file-list): Remove XEmacs and InfoDock compatibility code. * hmouse-mod.el (hmouse-mod-last-char): Remove XEmacs compatibility code. * hyrolo.el (hyrolo-prompt): (hyrolo-rename): Remove XEmacs dialog box and parameter. * hui-window.el (hmouse-modeline-event-p): Remove XEmacs and old Emacs compatibility code. 2022-06-18 Mats Lidell * hact.el (hact): Use defun. Patch from Stefan Monnier. Thanks Stefan. 2022-06-16 Mats Lidell * Makefile (hyperbole-autoloads.el, kotl/kotl-autoloads.el): Use hload-path--make-directory-autoloads. 2022-06-14 Mats Lidell * hload-path.el (hload-path--make-directory-autoloads) (hload-path--internal-make-directory-autoloads): Use defalias for compatibility function. (hyperb:generate-autoloads): Use it. * hibtypes.el (cl-lib): Require cl-lib to remove package-lint warning. * hyperbole.el: Remove defalias for compatibility with obsolete functions since Emacs 25.1 and outline-flag-region available since 2003. * hui-em-but.el (hproperty:good-colors): package-lint code formatting. 2022-06-13 Mats Lidell * test/demo-tests.el (fast-demo-key-series-shell-cd-hyperb-dir) (fast-demo-key-series-shell-grep, fast-demo-key-series-shell-apropos): Tests for shell related key series examples in the fast demo. 2022-06-12 Mats Lidell * hib-kbd.el: Replace \\s- with [ \t\n\r\f] to eliminate mode based differences. 2022-06-09 Mats Lidell * test/demo-tests.el: (fast-demo-key-series-window-grid-22, fast-demo-key-series-kotl-files) (fast-demo-key-series-emacs-lisp-mode) (fast-demo-key-series-hyperbole-dir) (fast-demo-key-series-keep-lines-ext) (fast-demo-key-series-keep-lines-slash) (fast-demo-key-series-keep-lines-dired): Add tests for FAST-DEMO key series examples. 2022-06-05 Bob Weiner * hui-mouse.el (smart-eolp): Exclude when on blank line and nothing but whitespace until eob. (smart-eobp): Add and replace 'eolp' calls with this, including in 'smart-eolp'. 2022-06-05 Mats Lidell * Makefile (eln): Target for native byte compilation. 2022-06-04 Bob Weiner * test/hpath-tests.el (hpath--should-exist-paths): Fix to handle Hyperbole package installation dirs. * hact.el (action:params-emacs): Simplify by calling 'help-function-arglist'. * hypb.el (hypb:debug): hact.el (actype:eval): hargs.el (hargs:action-get): Handle builtin and natively compiled subroutines/functions. * hypb.el (hypb:display-file-with-logo): Add slight delay after file load to ensure searching always succeeds. * Makefile (EMACS): Fix on MacOS so can still override emacs version by prefixing the make command with EMACS=. 2022-06-02 Bob Weiner * Makefile (version): Add hyperbole-pkg.el to version check. 2022-05-30 Bob Weiner * hact.el (action:params): Add support for natively-compiled functions using 'help-function-arglist' from "help.el". hypb.el (hypb:emacs-byte-code-p): Make an autoload since referenced from hact.el. 2022-05-28 Bob Weiner * hactypes.el (link-to-texinfo-node): Fix typo in find-file-noselect call. 2022-05-22 Bob Weiner * hsys-org.el (hsys-org-meta-return): Remove optional ARG and just use value of 'current-prefix-arg' to simplify (hact 'hsys-org-meta-return) calls. * hpath.el (hpath:internal-display-alist): Fix so Info files with non-absolute directories outside of the 'Info-directory-list' are resolved properly, e.g. "man/hyperbole.info". * hui-mouse.el (hkey-alist, smart-org): Remove _assist-flag from 'smart-org' calls since already use global 'assist-flag' instead. * hsys-org.el (hsys-org-meta-return): Add this and autoload it so can centrally control Hyperbole calls to 'org-meta-return'. Also, fix passing of non-numeric args to that function, e.g. '(4). hui-mouse.el (action-key-error, assist-key-error, smart-org): test/smart-org-tests.el (smart-org-mode-with-smart-keys-buttons-on-delimited-thing-calls-org-meta-return, smart-org-mode-with-no-smart-keys-on-hypb-button-calls-org-meta-return, smart-org-mode-with-no-smart-keys-on-org-link-is-org-meta-return): Call 'hsys-org-meta-return'. * kotl/klink.el (link-to-kotl): Fix and remove 'kcell:ref-to-id' calls because current buffer will not be set to the Koutline file yet if link contains a file reference. * hactypes.el (link-to-kcell): Fix ordering of cond clauses so file part of links are properly handled before handling cell-ref part. 2022-05-22 Mats Lidell * test/kexport-tests.el: test/hmouse-info-tests.el: test/hmouse-drv-tests.el: test/hbut-tests.el: Don't byte compile any test files that depend on external test support packages. 2022-05-16 Bob Weiner * FAST-DEMO: Change from /usr/bin/bash to /bin/bash. * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Fix improper relative path resolution when called interactively; force use of full paths. 2022-05-15 Bob Weiner * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Fix interactive pattern to prompt for a string, not a file. * hpath.el (hpath:resolve): Add to resolve path variables without doing a path expand. (hpath:find, hpath:call): Resolve but never expand paths with modifier char [-!&] as first char since these might need to be searched in exec-directory, not the current path. test/hpath-tests.el (hpath:load-modifier-with-plain-file-loads-file-from-load-path): test/hmouse-drv-tests.el (hbut-load-modifier-with-plain-file-loads-file-from-load-path): Update to handle non-expansion of relative Lisp library files. * hui-select.el (hui-select-initialize): hib-kbd.el (kbd-key): Fix close bracket syntax to match open (was close). * hbut.el (ebut:label-p): Fix handling when point is on final RET and have nested lists as in here with braces: { M-x shell RET M-> (cd ${hyperb:dir}) RET } by adding a (forward-list) call in the first 'while' construct. 2022-05-14 Bob Weiner * hsys-org.el (hsys-org-todo-occur): Add. hui-mini.el (hui-search-web): Hyperbole binds this to {C-c /} which conflicts with an Org mode binding, so if in Org mode, use its binding when this command is called interactively from that key. * man/hyperbole.texi (Implicit Button Types, Smart Key - Org Mode): Add Org mode Action Key todo cycling and Assist Key todo set cycling. hsys-org.el (hsys-org-cycle, hsys-org-global-cycle): FIX: Remove setting of last-command which causes cursor to jump around somewhere else in the buffer when unfolding a headline rather than just unfolding it (hsys-org-todo-at-p, hsys-org-todo-cycle, hsys-org-todo-set-cycle): Add to cycle through todo states (and switch to a different set) on the Action and Assist Keys respectively. hmouse-drv.el (action-key-depress, assist-key-depress): Maintain last command when is org-todo to support proper Smart Key Org todo cycling. * hpath.el (hpath:find): Remove any trailing characters with punctuation syntax, e.g. period. * HY-NEWS (M-S-left and M-S-Right): man/hyperbole.texi (Promoting and Demoting): kotl/kotl-mode.el (kotl-mode-map): Org compatibility - Add [M-S-left] and [M-S-right] to promote and demote trees. 2022-05-12 Bob Weiner * hibtypes.el (elisp-compiler-msg): Add "*ert*" output buffer and support for Emacs native compiler "In " lines. (grep-msg): Add support for Emacs native compiler "Compiling " and "Loading " lines (jumps to 1st line of the file). * hypb.el (hypb:rgrep): Fix so --exclude directories are properly handled; sexp nesting was wrong. 2022-05-11 Bob Weiner * hversion.el (hyperb:microsoft-os-p, hyperb:wsl-os-p): Move to "hload-path.el". All the changes in the last 3 days resolve the async native compiler Errors, leaving just warnings which may be ignored. 2022-05-10 Bob Weiner * hibtypes.el (elisp-compiler-msg): Add support for "*Async-native-compile-log*". * hui-mouse.el (smart-dired): Remove 'quit-window' when (eolp) since Hyperbole globally controls EOL behavior and overrides this. Extend subdir display when on any Dired header line (not just the first one), i.e. when subdirs are inserted with {i}. * hbdata.el (require 'hversion): Add to satisfy async nativecomp. * hypb.el (hypb:with-suppressed-warnings): Move to "hload-path.el" and rename to 'hyperb:with-suppressed-warnings'. 2022-05-09 Bob Weiner * Makefile (release): Add 'git-pull' and 'git-verify-no-update' dependencies and remove from 'pkg' target so can make test packages without having to synchronize with git master. (hyperbole-$(HYPB_VERSION).tar): Archive the current state of the Hyperbole branch rather than the last commit, so can test packages before committing. * hyperbole.el: hrmail.el: hmh.el: hgnus.el: hsys-www.el: hui-em-but.el: hui-mouse.el: hypb-ert.el: hvm.el (hload-path): Add require of this library to handle autoloads. 2022-05-08 Bob Weiner * hyperbole.el (hyperb:init): Run 'hyperb:maybe-generate-autoloads' even if Emacs is noninteractive. (hyperb:init): Move loading of autoloads from here to "hload-path.el" so can be loaded when native compilation is invoked asynchronously upon Hyperbole package installation. hload-path.el: Move whole autoloads section from "hyperbole.el" to here. 2022-05-02 Bob Weiner * hactypes.el (require 'hvar): Add to ensure var:append is defined. 2022-05-02 Mats Lidell * hypb-maintenance.el (hypb:web-repo-update): Add files to website that are linked from hyperbole.html. i.e. README.md. 2022-05-01 Bob Weiner * hypb-maintenance.el (hypb:web-repo-update): Add hui.el, hbut.el, hbdata.el and hmail.el referenced in hyperbole.html. * HY-ANNOUNCE: Shrink width of videos table to prevent wrapping. * README.md: Use [TOC] to automatically generate table of contents with md2html program. * Makefile (website-local): Add dependency on README.md.html. ============================================================================== V9.0.0 changes ^^^^: ============================================================================== * Update release number to 8.0.0. 2022-04-30 Mats Lidell * FAST-DEMO: Fix spelling. 2022-04-27 Mats Lidell * test/hui-tests.el (hui--copy-to-register--yank-in-same-kotl) (hui--copy-to-register--yank-in-other-kotl) (hui--copy-to-register--yank-in-other-file) (hui--copy-to-register--yank-in-other-file-other-dir): Add hui-copy-to-register tests. 2022-04-26 Mats Lidell * test/hui-tests.el (hui--kill-ring-save--yank-in-same-kotl) (hui--kill-ring-save--yank-in-other-kotl) (hui--kill-ring-save--yank-in-other-file) (hui--kill-ring-save--yank-in-other-file-other-dir): Add hui-kill-ring-save tests. 2022-04-24 Bob Weiner * hib-kbd.el (kbd-key:act): Fix to handle non-special key series that contains more than one command, e.g "C-uC-n C-uC-n". * hui-mini.el (hyperbole-set-key): Generalize to bind commands or Hyperbole minibuffer menu key strings in any keymap, with (global-key-map) as a default. * hyperbole.el (hkey-set-key): Turn into a command with interactive calling support. 2022-04-24 Mats Lidell * test/hui-tests.el (hui--delimited-selectable-thing--in-cell-return-ref) (hui--delimited-selectable-thing--in-ibut-return-ibut-text) (hui--delimited-selectable-thing--ibut-label-return-ibut-text) (hui--delimited-selectable-thing--in-ebut-return-ebut-text) (hui--delimited-selectable-thing--start-of-paired-delimiter) (hui--delimited-selectable-thing--in-kcell-link-return-link): Add tests for hui:delimited-selectable-thing. 2022-04-24 Bob Weiner * hsettings.el (hyperbole-web-search): Handle functions as 'hyperbole-web-search-alist' values. * FAST-DEMO (Introduction, Hyperbole Explicit and Global Buttons): Add. * Makefile (help): Update Hyperbole maintainer Makefile doc (git-tag-release): Re-enable these commands which were commented out for testing. (website): Change so pushes website to production. Use 'website-local' to update local CVS website files from the hyperbole distribution. 2022-04-24 Mats Lidell * Makefile (website-push): Add push of website. (release): Use website-push. (CVS): Add cvs command as macro and use it in website-push. 2022-04-24 Bob Weiner * hbut.el (ebut:get): Add 2 more params: start-delim and end-delim used in ebut:get. Add button attributes lbl-start and lbl-end when button is at point, used by 'hui:delimited-selectable-thing'. This fixes capturing the text of explicit buttons using {M-w} or {C-x r s} when no region is selected. (ebut:at-p): Send start-delim and end-delim to ebut:get call. * hui.el (hui:link-create): Remove 'hypb:assert-same-start-and-end-buffer' macro call as this may be called from hkey-operate via {M-o} which when called a second time can leave point in a buffer different than the start buffer, triggering an error when trying to create a button even though buttton creation would otherwise work properly: bug#55058. 2022-04-19 Mats Lidell * Makefile (elpa, elpa_hypb_dir): Remove elpa target. ELPA picks up latest master from savannah automatically. (git-push): Not needed. package target ensures we are on the latest sources. (git-verify-no-update): Verify no files have changed compared to master. (git-tag-release): Tag the relase in git and push to origin. (package): Use git-verify-no-update and skip autoloads, it happens later. (release): Use git-tag-release as the last step after uploading with ftp. Add comment about automatic ELPA releases. 2022-04-18 Mats Lidell * test/kotl-mode-tests.el (kotl-mode--add-cell-set-fill-attribute): Verify add-cell do not set no-fill flag. 2022-04-18 Bob Weiner * kotl/kotl-mode.el (kotl-mode:fill-cell): Fix issue where 'end' was set to a non-marker type and then attempt to remove marker errored. Move marker deletion to before end type is changed. * kotl/kview.el (kcell-view:create): Remove (or no-fill (equal contents "")) and always add 2 newlines after cell. 2022-04-17 Bob Weiner * kotl/kotl-mode.el (kotl-mode:split-cell): Copy non-read-only attributes from current cell's plist into new cell. * kotl/kview.el (kview:add-cell, kcell-view:create): Add new optional sibling-p parameter; use this and kotl-mode:refill-flag in addition to no-fill parameter to determine whether to fill cell contents on creation. Only the no-fill parameter sets the same named attribute on the cell. * kotl/kotl-mode.el (kotl-mode:add-cell): Send sibling-p value to kview:add-cell. * kotl/kotl-mode.el (kotl-mode:add-cell): Fix to not use sibling-p or `kotl-mode:refill-flag' to determine no-fill attribute of new cell. * hui.el (hui:delimited-selectable-thing-and-bounds): Fix arg order of setcar call. * kotl/kotl-mode.el (kotl-mode:kill-region): Fix interactive sexp to not error when mark is not set. (kotl-mode:kill-or-copy-region): Add and use in above command. hui.el (hui-kill-ring-save, hui-copy-to-register): Fix to signal an error if called when mark is not set. * kotl/kotl-mode.el (kotl-mode:yank, kotl-mode:yank-pop): Fix to use insert-for-yank and thereby match doc about honoring yank handling variables. * kotl/klink.el (klink:set-yank-handler): Fix by setting yank-handler to a list. * man/hyperbole.texi (Default Hyperbole Bindings): Add {M-w} and {C-x r s} doc for copying delimited things. * kotl/kotl-mode.el (kotl-mode:maybe-shrink-region-p): Prevent error when no mark set. * hypb.el (hypb:selectable-thing, hypb:selectable-thing-and-bounds): Change prefix to hui:delimited- and move to hui.el. * hyperbole.el (hkey-initialize): hypb.el (hypb:copy-to-register): Rename to 'hui-copy-to-register' and move to hui.el. hyperbole.el (hkey-initialize): hypb.el (hypb:kill-ring-save): Rename to 'hui-kill-ring-save' and move to hui.el. * hyperbole.el (hyperbole--mark-even-if-inactive): Add to store value of `mark-even-if-inactive' prior to enabling `hyperbole-mode'.") (hyperbole--enable-mode, hyperbole--disable-mode): Use above new variable. * hypb.el (hypb:copy-to-register): kotl/kotl-mode.el (kotl-mode:kill-region): Add that 'transient-mark-mode' must be non-nil to copy thing at point when no region is active. * hsys-www.el (www-url-expand-file-name): Fix to expand non-remote, non-url paths. * hpath.el (hpath:call): Remove unused 'orig-path' local binding. * hibtypes.el (action:help): Fix interactive call to use any hbut at point. * hib-kbd.el (kbd-key:is-p): Remove unused open/close-brace-syntax local vars. * hbdata.el (hbdata:build): Fix 'actype' ref by changing let to let*. * kotl/kview.el (kview:map-siblings): Add let of 'cell-indent' so is local. * kotl/kfill.el (kfill:forward-line): Correct doc that this always returns 0 and remove unused local var 'opoint'. * hinit.el (hui-menu-remove): Remove set of 'keymap' to 'global-map' when 'keymap' is null; just use one or the other for the menubar binding. Return value is never used, so ignore it. * hypb.el (hypb:copy-to-register): Remove improper let definition of 'start' and 'end' since are given as function parameters. (hypb:selectable-thing-and-bounds): Fix to properly return a list. * hui-window.el (hmouse-modeline-resize-window): Remove all unused local variables. * HY-NEWS (Klink Copy): Updated with latest key bindings. 2022-04-16 Bob Weiner * kotl/kotl-mode.el (kotl-mode:kill-region): Handle when called under alias kotl-mode:completion-kill-region. * kotl/kview.el (kcell-view:remove-attr): Replace invalid 'kcell' with 'mod-cell'. * man/hyperbole.texi (Web Search Engines): Document option to use an Emacs command. (Klinks): Rename from Links. (Klinks): Reorder descriptions and add doc for {M-w}, {C-y}, {C-x r s} and {C-x r i} use with klinks and kcell references. * hui-mini.el (hui:menus): Update formatting to improve readability. 2022-04-15 Mats Lidell * test/MANIFEST: Add hui-select.el * test/hui-select-tests.el (hui-select--thing) (hui-select--thing-interactive-prints-type-of-match) (hui-select--at-delimited-thing-p) (hui-select--delimited-thing) (hui-select--delimited-thing-ending-in-newline): Add hui-select tests. 2022-04-12 Bob Weiner * hypb.el (hypb:selectable-thing): Add and use in hypb:kill-ring-save, kotl-mode:kill-region, (hypb:selectable-thing-and-bounds): Add and use in hypb:copy-to-register. hui-select.el (hui-select-get-region): Rename to hui-select-get-thing. 2022-04-11 Bob Weiner * kotl/kimport.el (kimport:insert-register): Make autoload since could be invoked from {C-x r i} when in a Koutline. (kimport:insert-file): Make autoload since could be invoked from {C-x i} when in a Koutline. 2022-04-10 Bob Weiner * kotl/klink.el (klink:absolute): Add. (klink:parse): Allow for '<@' at the start of a klink reference. * hypb.el (hypb:copy-to-register): Add. hyperbole.el (hkey-initialize): Bind {C-x r s} to hypb:copy-to-register in hyperbole-mode. * hypb.el (hypb:kill-ring-save): hyperbole.el (hkey-initialize): Override the {M-w} command from "simple.el" when hyperbole-mode is active to allow copying selectable thing at point if no region is active. * kotl/kotl-mode.el (kotl-mode:kill-region): When called interactively with no region active, copy selectable thing at point or reference to kcell at point. Also show copied region to the user if called interactively with copy-p flag. * kotl/kview.el (require 'klink): Add. (kcell-view:absolute-reference, kcell-view:reference): Return nil if not in kotl-mode. * kotl/kotl-mode.el (kotl-mode:copy-kcell-reference-to-register): Add to save a Koutline cell reference at point to a register. (kotl-mode:copy-absolute-kcell-link-to-kill-ring): Rename from kotl-mode:copy-absolute-klink-to-kill-ring. (kotl-mode:copy-relative-kcell-link-to-kill-ring): Rename from kotl-mode:copy-relative-klink-to-kill-ring. (kotl-mode:copy-absolute-kcell-link-to-register): Rename from kotl-mode:copy-absolute-klink-to-register. (kotl-mode:copy-relative-kcell-link-to-register): Rename from kotl-mode:copy-relative-klink-to-register. * kotl/klink.el (klink:at-p): Make an autoload since klinks may be tested in non-Koutline buffers. Also add yank-handler text property used when yanking klink into a buffer. (klink:set-yank-handler): (klink:yank-handler): Add to handle yanks of klinks and adjust based on yank location. kotl/kview.el (kcell-view:absolute-reference, kcell-view:reference): Use klink:set-yank-handler. * hsettings.el (hyperbole-web-search-alist): Update value-type property to allow for function symbols, e.g. webjump item. 2022-04-09 Mats Lidell * test/hyrolo-tests.el (hyrolo-add-items-at-multiple-levels): Add check and remove test temp file. 2022-04-03 Bob Weiner * test/kotl-mode-tests.el (setup-kotl-mode-example-test): Fix so handles multiple buffers with same buffer name prefix. * kotl/kproperty.el (kproperty:remove-properties): Add and use in kcell-view:remove-attr. * test/kotl-mode-tests.el (kotl-mode-copy-kotl-file-updates-root-id-attributes): Change from 'file attr test to 'label-type. * kotl/kview.el (kcell-view:idstamp-integer): Add to return idstamp as int instead of string. * kotl/kcell.el (kcell-data:create): Add idstamp as 2nd parameter. kotl/kfile.el (kfile:update): Call kcell-data:create with 2nd parameter. * kotl/kotl-mode.el (kotl-mode:exchange-cells): Give idstamp as second arg to kcell-view:set-cell calls. (kotl-mode:cell-help, kotl-mode:print-attributes, kotl-mode:get-cell-attribute): Handle separate idstamp attribute. kotl/kview.el (kcell-view:set-cell, kotl-mode:copy-after, kotl-mode:copy-before): Set kcell and idstamp as separate text properties. * kotl/kview.el (kcell-view:idstamp, kcell-view:get-attr, kcell-view:set-attr, kcell-view:remove-attr, kcell-view:create): Always move to point with cell's text properties and handle text property idstamp. (kcell-view:create): Pass idstamp as a parameter. (kview:add-cell): kotl/kcell.el (kcell:create): kotl/kfile.el (kfile:insert-attributes-v2, kfile:insert-attributes-v3): Store idstamp as a koutline text property outside the kcell, for efficiency. * kotl/kcell.el (kcell:set-idstamp): Remove, use kcell-view:set-attr instead. (kcell:idstamp): Remove, use kcell-view:idstamp instead. (kcell-data:to-kcell-v2, kcell-data:to-kcell-v3): Remove use of view-based idstamp. * kotl/kcell.el (kcell-data:create): idstamp is no longer stored in a kcell's property list, so don't try to delete it from the plist when creating the persistent representation keyed by the numeric value of the idstamp. * kotl/kfile.el (kfile:insert-attributes-v2, kfile:insert-attributes-v3): In Koutline buffer, store kcell properties as a single 'kcell text property, as previously in Hyperbole 7.1.3. This allows other text properties to be stored at the same position without being written out as kcell properties. kotl/kcell.el (kcell:create): Stop writing 'kcell attr out to save space. (kcell:is-p): Test for 'creator attr rather than 'kcell since no longer writing that attr. kotl/kview.el (kcell-view:cell): Update to use 'kcell text property. * kotl/kview.el (kview:create): kotl/kfile.el (kfile:write, file:update): Remove read/write of Koutline 'file attribute; just use buffer-file-name. 2022-04-02 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-move-tree-forward) (kotl-mode-move-tree-backward): Add tests for tree movement. 2022-03-26 Bob Weiner * hyrolo.el (hyrolo-add): Fix both top-level and multi-level insertion. (hyrolo-entry-name-regexp): Add. test/hyrolo-tests.el (hyrolo-add-items-at-multiple-levels): Add from Mats. 2022-03-26 Mats Lidell * test/hib-kbd-tests.el (kbd-key-hy-demo-factorial-test): Preload DEMO file to avoid race with *ert* display. 2022-03-20 Bob Weiner * HY-NEWS (New Tree Promotion/Demotion Keys): man/hyperbole.texi (Promoting and Demoting): kotl/EXAMPLE.kotl: Fix 3d2 promotion/demotion tables. * hib-kbd.el (kbd-key:modified-key-regexp): Allow for square brackets around modified keys, like [M-down]. * kotl/kotl-mode.el (kotl-mode:move-tree-backward, kotl-mode:move-tree-forward): Add to replicate Org mode M-up and M-down arrow tree movement and rebind these keys. kotl/EXAMPLE.kotl: Doc new [M-down] and [M-up] key bindings. man/hyperbole.texi (Relocating and Copying): HY-NEWS (New Tree Movement Commands): Document these new commands. * hyrolo.el (hyrolo-fgrep): Fix to match logical expressions across an entire tree of entries when no matches within individual subentries. 2022-03-20 Mats Lidell * test/hyrolo-tests.el (hyrolo-sort-records-at-different-levels): Add test for rolo sort. * test/hmouse-drv-tests.el (hbut-key-press-on-hyphen-in-elisp-symbol): Add test case. 2022-03-13 Mats Lidell * man/hyperbole.texi: Fix spelling. 2022-03-13 Bob Weiner * hyrolo.el (hyrolo-sort): Simplify and fix multi-level entry sorting. 2022-03-12 Bob Weiner * man/hyperbole.texi (Implicit Button Types): In org-mode description, use @smallexample instead of @group which was showing the markup in the Info file. 2022-03-09 Mats Lidell * Makefile ($(pkg_dir)/hyperbole-$(HYPB_VERSION).tar): Package files under source control, depend on version. ($(pkg_dir)/hyperbole-$(HYPB_VERSION).tar.sig): Remove sig-file just before generation. (git-pull): Ensure repository only contains master sources. 2022-03-06 Mats Lidell * hmail.el (hmail:region): Insert kotl cell at the beginning of the mail body. bug#44487 Suggestion by Jean Louis. Thanks Jean. 2022-03-05 Mats Lidell * hypb-maintenance.el: Remove modified source buffers. 2022-03-01 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-hide-cell): Add test case. 2022-02-27 Mats Lidell * Makefile (web-site): Add target for preparing web site sources 2022-02-27 Bob Weiner * hyrolo.el (hyrolo-map-level-1): Remove unused parameters and rename to 'hyrolo-map-single-subtree'. * hpath.el (hpath:at-p): If find a PATH variable value, call hpath:is-p on the path selected (normalizes it) before returning. Ensures parameters 'type' and 'non-exist' are respected in this case. Also, test if individual path exists without requiring three or more separated directories prior to doing this test. test/hmouse-drv-tests.el (hbut-pathname-path-variable-with-two-colons-is-one-file-test): Change to 'hbut-pathname-path-variable-with-two-colons-a-path-test' and make 'should' instead of 'should not'. test/hpath-tests.el (hpath:path-at-point-in-path-variable-test): Fix to call 'hpath:at-p' with non-exist flag true. * Makefile (README.md.html): Switch to use 'md2html' instead of 'github-markdown' due to problems with local link ids not being generated properly. Also, this simplifies from an npm library with many dependencies to a quick Python program. Add GNU sed calls to fix case-sensitivity and URL encode char problems in anchor IDs. * FAST-DEMO: hycontrol.el (hycontrol-windows-grid-marked-items): Add. (hycontrol-make-windows-grid): Use above function so can automatically size grid when items are marked within a listing buffer. 2022-02-26 Bob Weiner * hycontrol.el (hycontrol-windows-grid-by-buffer-list): (hycontrol-windows-grid-by-file-list): (hycontrol-windows-grid-minimum-size): Add this function and use in above functions. * man/hyperbole.texi (Menus): hui-menu.el (hui-menu-web-search): hui-mini.el (hui:menu-web-search): hsettings.el (hyperbole-web-search-alist): Add support for Emacs "webjump.el" under Jump menu item. Jumps to URLs rather than searching. 2022-02-20 Bob Weiner * hypb.el (hypb:rgrep): Exclude .git and CVS directories. * hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): Remove button Modify menu items. Use Edit. hbut.el (ebut:edit): Rename from 'ebut:modify'. hui.el (hui:ebut-edit-region): Rename this function of no arguments from 'hui:ebut-edit'. (hui:ebut-edit, hui:gbut-edit, hui:ibut-edit): In Hyperbole code, change all '-modify' functions to '-edit'. * man/hyperbole.texi (Editing): Rename from Modification. (Editing Outlines): Rename from Editing. (Viewing Outlines): Rename from Viewing. * hhist.el (hhist:add): Trigger error if elt is not a frame config. * man/hyperbole.texi (Default Hyperbole Bindings): Document here {C-h h X} to exit from/disable Hyperbole mode. * hyperbole.el: Remove long commented-out autoloads; generated automatically where needed now. * hypb.el (hypb:cmd-key-string): Rename to 'hypb:cmd-key-series' since puts braces around the return value and update doc. (hypb:cmd-key-vector): Add to commpare to 'this-single-command-keys'. * hui-select.el (hui-select-goto-matching-delimiter, hui-select-thing): hycontrol.el (hycontrol-windows-grid): Remove hard-coding of hyperbole-mode-map binding. Defer to org-mode and outline-minor-mode only when current command key matches this binding. 2022-02-19 Mats Lidell * Makefile (test-all-output): Add target for interactive tests with summary output. 2022-02-18 Mats Lidell * test/kcell-tests.el (kcell-tests--ref-to-id): Add test for kcell:ref-to-id. 2022-02-13 Bob Weiner * hibtypes.el (elisp-compiler-msg): Add Action Key support for Elisp symbols in ERT output lines like: passed 39/219 gbut-program-calls-ebut-program (0.004310 sec) * kotl/kotl-mode.el (kotl-mode-map): Add more tab related bindings. 2022-02-13 Mats Lidell * Silence warnings about unused lexical arguments by prefixing names with underscores. 2022-02-12 Bob Weiner * kotl/klink.el (klink:act): Add save-excursion, so point always ends at the right place in displayed buffer after the relative id is updated when out-of-date. * kotl/kcell.el (kcell:ref-to-id): Fix viewspec parsing by adding the optional 'kviewspec-flag' parameter. kotl/kview.el (kcell-view:cell-from-ref): Test that ref is an int. kotl/kotl-mode.el (kotl-mode:goto-cell): kotl/klink.el (link-to-kotl): Send true kviewspec-flag to kcell:ref-to-id calls. * hib-social.el (git-commit-reference): man/hyperbole.texi (git-commit-reference): Update doc to include commands `hypb:fgrep-git-log' and `hypb:grep-git-log'. * hypb-maintenance.el (hypb:web-repo-location): Update to RSW's Hyperbole local website path. * hui-menu.el: FAST-DEMO: Add this shorter demo/intro with a reference to the older DEMO. hui-mini.el: Add 'hyperbole-demo' function to view FAST-DEMO or with a prefix arg, DEMO. * hypb.el (hypb:display-file-with-logo): Expand non-absolute paths within hyperb:dir to simplify calls to this function. test/demo-tests.el test/hibtypes-tests.el test/hmouse-drv-tests.el hui-menu.el hui-mini: Simplify calls to above function in all these files. * test/hui-tests.el (hui-gbut-modify-link-to-file-button): Fix order of file save * hactypes.el (hactypes:link-to-file-interactively) Make this a standalone function to simplify interactive call in 'link-to-file' and simplify debugging. 2022-02-08 Mats Lidell * hbut.el (ibut:at-p): Use copy-sequence, remove dependency on cl-lib. Thanks Stefan Monnier. 2022-02-06 Bob Weiner * test/hui-tests.el (hui-gbut-modify-link-to-file-button): Some improvements but not yet fixed. * hui.el (hui:ebut-buf): Don't filter any visible buffers out since buttons can be in buffers without attached files now. (hui:ignore-buffers-regexp): When prompting for a buffer name, ignore any buffers whose names match to this.") * hypb.el (hypb:assert-same-start-and-end-buffer): Add to ensure current buffer name doesn't change in some Hyperbole calls. hui.el (hui:ebut-create, hui:ebut-modify, hui:gbut-create, hui:gbut-modify, hui:ibut-modify, hui:link-create): Use new above macro. * hpath.el (hpath:absolute-to, hpath:call): Add checks to ensure path is a string. (hpath:at-p): Call to 'hpath:mswindows-to-posix' may have abbreviated a path, so expand it back here for improved matching to path found in the buffer previously. * hmouse-drv.el (hkey-execute): Ensure Emacs debug variables are enabled when 'hkey-debug' is enabled. * hsmail.el (mail-yank-original, message--yank-original-internal, mail-send-hook): Finish updating these and ready for testing. * HY-NEWS: man/hyperbole.texi (Inserting and Importing): Add kimport:file minibuffer menu binding. * test/*-tests.el: Simplify by requiring "hy-test-helpers" rather than loading it with a complex call in every module. * test/hui-tests.el (hui-gbut-modify-link-to-file-button): Add this debugged global button creation and modification test. 2022-02-05 Mats Lidell * hargs.el (hargs:find-tag-default): Remove own implementation for 'find-tag-default' and 'find-tag--default' and rely on implementation in Emacs. 2022-02-05 Bob Weiner * HY-NEWS (Minibuffer Menu Changes): Mention new Kotl/Format menu. man/hyperbole.texi (Inserting and Importing): Add {C-h h k f f} kimport:file minibuffer menu binding and relabel its menu items. * hypb.el (hypb:straight-package-plist): Add and use in tests. (hypb:installation-type): Support all install types. test/hypb-tests.el (hypb:installation-type-test): Support all install types. * hmail.el (hmail:compose): Clarify subject line use even more. hypb.el (hypb:configuration): Removed unneeded InfoDock clause and use emacs-version variable rather than (emacs-version) function. (hypb--installation-type): Rename to 'hypb:installation-type' and expand to handle all installation types. * kotl/kexport.el (kexport:buffer): Rename to 'kexport:koutline'. test/kexport-tests.el (kexport:buffer-calls-kexport:html): Rename to 'kexport:koutline-calls-kexport:html'. * hui-mini.el (hui:menus): Kotl/Format - Add new submenu for import/export of Koutlines to match one from the Koutline pulldown menu. man/hyperbole.texi (Exporting): (Menu Commands): Document new menu and add 'kexport:koutline' command documentation. * kotl/kimport.el (kimport:suffix-alist): Add importation of Org outlines as Koutlines. * kotl/kmenu.el (kotl-menu-common-postamble): In pulldown Koutliner menu, change 'Export-to-HTML' to 'Export-Other-Koutline-to-HTML'. Add 'Display-This-Koutline-in-Web-Browser' and 'Export-This-Koutline-to-HTML'. * hpath.el (hpath:outline-section-pattern): Remove leading spaces (hpath:to-markup-anchor): Search for leading spaces in above regexp only after not finding a match without leading spaces. This prevents matching to Table of Contents entries with the same section name but indented. * hui.el (hui:gbut-create, hui:buf-writable-err): Fix sporadic bug where err function did not trigger an error but changed the (current-buffer), thereby cause the 'hui:gbut-create' function to improperly place a global button in the wrong buffer. (hui:error): Remove, has been obsolete for a long time. Use hypb:error. (hui:ebut-delimit): Remove, has been obsolete for a long time. Use ebut:delimit instead. hargs.el (hargs:action-get): Add a save-excursion to fix above bug as this was temporarily changing the current-buffer. * hbut.el (gbut:file): Change from a variable to a function so if user resets any of its components, the current value is always used. Fixes bug where global buttons were written to the wrong file. * hsmail.el (mail-yank-original): Fix indentation of this overloaded function. (message--yank-original-internal): Add overloading of this function. 2022-02-04 Mats Lidell * test/hargs-tests.el (hargs-get-verify-extension-characters) (hargs-get-verify-extension-characters-K+): Test cases for extension characters. * hargs.el (hargs:make-iform-vector): Converted to macro. (hargs:iform-vector): Use defconst. (hargs:iform-extensions-vector): Use defconst. Patch from Stefan Monnier. Thank you Stefan. 2022-02-03 Mats Lidell * test/hy-test-helpers.el (hy-test-helpers-verify-hattr-at-p): Add helper function and use it. * hypb.el (hypb--installation-type): Return 10 digit git hash. 2022-02-02 Mats Lidell * hargs.el (hargs:reading-type): Renaming var. 2022-01-31 Bob Weiner * hpath.el (hpath:outline-section-pattern): Change to allow for indented asterisks at the beginning of a line and to match when text is followed by a punctuation character, even if not at the end of the line, e.g. section-name: description. Also, allow for human-readable versions of bound key sequences as section anchors and support anchors in fundamental mode. New features used in "DEMO". * hui-select.el (hui-select-thing): Hyperbole binds this to {C-c RET} which conflicts with an Org mode binding, so if in Org mode, use its binding when this command is called interactively from that key. hycontrol.el (hycontrol-windows-grid): Hyperbole binds this to {C-c @} which conflicts with bindings in Org mode, Outline mode and Outline minor mode. Modify this command to use those bindings when called interactively from that key. hui-select.el (hui-select-goto-matching-delimiter): Hyperbole binds this to {C-c .} which conflicts with an Org mode binding, so if in Org mode, use its binding when this command is called interactively from that key. 2022-01-30 Bob Weiner * hpath.el (hpath:at-p): Fix start and end delimiters to hargs:delimited so match to PATH variable values when not surrounded by double quotes. hargs.el (hargs:delimited): Fix not matching start and end patterns at the beginning and end of lines. Also, simplify when start end end delims differ, eliminating the need to check whether point is between strings rather than inside one. (hpath:delimited-possible-path): Fix hargs:delimited start delimiter to use + instead of * to match to unquoted pathnames. Also, allow {} in paths so can match to var names in path but not if braces are the first and last chars of path. * hpath.el (hpath:prepend-shell-directory): Rename from 'hpath:prepend-ls-directory'. Add support for 'cd' and 'pushd' commands. hibtypes.el (ripgrep-msg, grep-msg): When in shell mode, expand path with above function. (hpath:substitute-dir): Fix to make 'locate-file' call handle dirs, so final expansion can be a directory, e.g. on Macs App bundles are directories. * hsmail.el: Switch from use of sendmail.el to message.el. (message-send-hook): Remove use of advice-add which caused a recursive loop. Add smail:widen to message-send-hook instead. * hact.el (actype:act): Allow for builtin subr objects like 'cons'; This fixes Action Buttons that start with , for example. 2022-01-29 Bob Weiner * hbut.el (hbut:key-list): Fix doc. * test/demo-tests.el (demo-implicit-button-action-button-sexp-test): (demo-implicit-button-action-button-boolean-function-call-test): Add to test Action Button sexp and boolean functions. * hactypes.el (display-boolean): Change to add 'bool-expr' to output msg. * hibtypes.el (action): Fix bug that when intern-soft returns nil, then check if returned symbol is boundp, neglected to check that symbol was not nil and therefore (boundp nil) was returning t, causing the logic to misfire. Also, add 'hact' calls at the end and double quote variable args or will trigger an error. * hact.el (actype:eval): Simplify action with args call. * hycontrol.el (hycontrol-invert-prefix-arg): Add to invert prefix arg or change 0 to -1. (hycontrol-reset-prefix-arg): Turn into a named function so can test if was 'last-command'. (hycontrol-universal-arg-digit): Rewrite to handle negative args. (hycontrol-multiply-universal-arg): (hycontrol-minus-key): Add to have named commands. man/hyperbole.texi (HyControl): DEMO (Windows Grid): Rewrite section to match latest behavior. man/hyperbole.texi (HyControl): Update to include - and C-u key bindings. * hycontrol.el (hycontrol-window-display-buffer): Rewrite to display a BLANK buffer in each window after exhaust the selected list of buffers, rather than displaying the same non-blank buffers in multiple windows. Also, no longer use 'hycontrol--invert-display-buffer-predicates' to fill extra windows with the inversion of any filters Update doc to reflect full behavior of the function. Left for reference 'hycontrol-window-display-buffer-with-repeats' with all of this pre-V8 behavior. * test/hypb-tests.el (hypb--installation-type-test): Comment out until decide all contexts it should handle and when best to use it. * man/hyperbole.texi (Glossary): Add Klink and Kcell Ref definitions. Update idstamp definition to include 0 root cell. * kotl/klink.el (link-to-kotl): Fix so does not treat pathname refs as Koutlines unless there is a kcell ref within the link. Also, generalize so when in any programming major mode, klinks are recognized within comments only. 2022-01-28 Mats Lidell * test/hypb-tests.el (hypb--installation-type-test): Add unit test. 2022-01-25 Mats Lidell * hypb.el (hypb--installation-type, hypb:configuration): Add function to provide installation type and version number and use it. 2022-01-25 Bob Weiner * kotl/kotl-mode.el (kotl-mode:copy-region-to-buffer): Fix interactive args listed in wrong order. * kotl/kotl-mode.el (kotl-mode:copy-region-to-buffer): Replace 'kotl-mode:insert-region'. (kotl-mode:copy-tree-to-buffer): Replace 'kotl-mode:insert-tree'. (kotl-mode:copy-tree-or-region-to-buffer): New binding for {C-c M-c}. * man/hyperbole.texi (Koutliner Keys): kotl/kmenu.el (kotl-menu-common-body): kotl/kotl-mode.el (kotl-mode:copy-tree-to-buffer): Replace 'kotl-mode:copy-to-buffer'. * hpath.el (seq): Add (require 'seq) since seq-find is used herein. * hbut.el (defib): Add back edebug spec for defib that must have been accidentally removed in some merge. * hibtypes.el (pathname): Add missing 'ibut:label-set' to enable flashing of simple Fix that when path was expanded or normalized, pathname button would not flash since it did not match the text. Use 'orig-path' instead, except when point is within a PATH-like variable value of colon or semicolon separated directories; then use just the individual 'path' selected. * hactypes.el (link-to-kcell): Fix to process cell-ref only after any non-nil file is displayed. 2022-01-23 Bob Weiner * Makefile (TAGS): Include ert-deftest definitions in TAGS file. (TEST_ERT_FILES): Add hy-test-*.el so indexed in TAGS file. * hbut.el (gbut:label-p): Add to return global button label point is on if nay. Use in 'hui:gbut-modify'. * Makefile (test-all): Add conditionals to always run GUI Emacs if DISPLAY is set. * hui-menu.el (infodock-hyperbole-menu): Add Implicit-Button/{Edit, Modify}. hui-mini.el (hui:menus): Add named Ibut/{Edit, Modify} (do the same thing). hui.el (hui:ebut-modify, hui:gbut-modify): Interactively if on a button, still allow choice of another button. (hui:ibut-modify): Add named ibut modification. (hui:ebut-modify, hui:gbut-modify): Add 2nd save-excursion so point does not move within the source buffer. (hui:gbut-create, hui:gibut-create): Move position of 'set-buffer' call after 'hui:buf-writable-err' call so they do not interfere with each other, causing buttons to be written to the wrong buffer. 2022-01-23 Mats Lidell * test/hui-tests.el (hui-gibut-create-link-to-file) (hui-gibut-create-link-to-file-line) (hui-gibut-create-link-to-file-line-and-column) (hui-gibut-create-info-node): Test cases for global implicit buttons. * test/hbut-tests.el (gbut-program-eval-elisp) (gbut-program-link-to-file, gbut-program-link-to-file-line) (gbut-program-link-to-file-line-and-column): Test case for global button programatically created button. 2022-01-22 Bob Weiner * hycontrol.el (hycontrol-windows-grid-by-file-pattern): Add this command that creates a windows grid from a glob file pattern. Bound to {C--1 C-c @}. (hycontrol-windows-grid-by-buffer-list): Add this function which takes a list of buffers and displays them in a windows grid. (hycontrol-windows-grid-by-file-list): Add this function which takes a list of files and displays them in a windows grid. man/hyperbole.texi (Default Hyperbole Bindings, HyControl): HY-NEWS (HYCONTROL): Document new above command. * kotl/kotl-mode.el (kotl-mode:set-or-remove-cell-attribute): Change to support 0 root cell attribute set or remove via prefix arg. kotl/EXAMPLE.kotl: Update 'Cell Attributes' description with the above change. HY-NEWS: Add Koutlines 0 cell attribute handling description. man/hyperbole.texi (Cell Attributes): Document above change. 2022-01-22 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-copy-kotl-file-updates-root-id-attributes): Verify that root cell attribute for file name is updated. 2022-01-21 Bob Weiner * kotl/kotl-mode.el (kotl-mode:cell-attributes): Assume parent has set stdout buffer; stop clearing this buffer before printing to it. (kotl-mode:cell-help): Fix to handle 0 top-level cell properly. 2022-01-20 Bob Weiner * kotl/kview.el (kview:create): Ensure top-level 0 cell file attribute is always updated to match current file location. 2022-01-19 Bob Weiner * kotl/kotl-mode.el (kotl-mode:set-cell-attribute, kotl-mode:remove-cell-attribute): Update interactive parts to utilize the hidden top-level 0 cell when given a zero-valued prefix argument. * hactypes.el (link-to-texinfo-node, link-to-Info-index-item, link-to-Info-node): Remove any runs of tabs or newlines that might be in name and replace each with a single space. * kotl/kcell.el (kcell:ref-to-id): kotl/kview.el (kcell-view:cell-from-ref): Support lookup of top-cell with idstamp = 0. kotl/kcell.el (kcell:create): Prevent multiple adds of kcell and idstamp attributes. kotl/kfile.el (kfile:read-v2, kfile:read-v4-or-v3): kotl/kview.el (kview:create): Add 3rd optional parameter, top-cell-attributes, so can restore complete set of top-cell attributes when reading. kotl/kcell.el (kcell:create-top): Change to take entire plist as arg rather than individual attributes. kotl/kotl-mode.el (kotl-mode:get-cell-attribute, kotl-mode:remove-cell-attribute, kotl-mode:set-cell-attribute): Add optional prefix arg of TOP-CELL-FLAG which if non-nil means edit the top cell's attributes. * test/kexport-tests.el (kexport:html-sets-title-and-header): kotl/kexport.el (kexport:html): Update so title and header come from either top-level 0 cell 'title attribute or the kotl filename without any .kotl suffix. 2022-01-18 Bob Weiner * kotl/kotl-mode.el (kotl-mode:delete-char): Fix to handle Org table use outside koutlines. * hmouse-tag.el (smart-tags-display): Fix change in xref format by using this test: (eq (type-of find-tag-result) 'xref-item) 2022-01-17 Bob Weiner * hmouse-tag.el (smart-lisp-htype-tag): Add to transform ibtype and actype tags into bound emacs symbols for lookup. (smart-lisp-at-tag-p): Rewrite to use smart-lisp-htyp-tag. (smart-lisp-at-non-htype-tag-p): Use when don't want to resolve Hyperbole htypes. * man/hyperbole.texi (Promoting and Demoting): Add this section separated from Relocating and Copying. * test/MANIFEST - Add summary of Hyperbole test case files install-test/MANIFEST - Add summary of Hyperbole installation test files * hibtypes.el (texinfo-ref): Add missing quoting in front of symbol in this line: (hact 'link-to-elisp-doc `',symbol) hactypes.el (link-to-elisp-doc): Fix to properly use hpath:display-where setting to display symbol documentation. 2022-01-16 Mats Lidell * Makefile (help): Extend help section with install tests. 2022-01-16 Bob Weiner * EXAMPLE.kotl: Add section on Org table-handling support. * hyrolo.el (hyrolo-mode): Add use of reveal minor mode. (hyrolo-hide-subtree): Add and bound to {h} to work with reveal mode. (hyrolo-overview): (hyrolo-top-level): Ensure reveal-mode does not expand current entry. * hibtypes.el (Info-node): Tighten match to disallow whitespace in filenames and reduce false matches. * install-test/: Update to error if Emacs version < 27 since then Hyperbole cannot run. Also, indicate that Hyperbole has been activated ater running script. * man/hyperbole.texi (Elpa In-Development Package Installation): Add this section. INSTALL (The Latest Development Snapshot): Add this section. man/hyperbole.texi (Usage): Addes this chapter and included Invocation section that had been in the Setup Appendix. 2022-01-15 Mats Lidell * Makefile (test-ert, test-all): Turn off auto-save. * test/hbut-tests.el (gbut-program-link-to-directory): Remove temp file. 2022-01-15 Bob Weiner * man/hyperbole.texi (Testing): Add to describe test usage. * 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 * 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 * 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 * 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 * test/hyperbole-tests.el (hyperbole-keymap-tests) (hyperbole-hkey-init-controls-tests) (hyperbole-global-key-binding-tests): Keybinding tests. (hyperbole-key-bindings): Combine tests in one helper function. 2022-01-09 Bob Weiner * topwin.py: Update to Python 3.7 or greater. * Makefile (EL_TAGS): Add test functions to tags file. * test/hpath-tests.el (hpath:auto-variable-alist-load-path-test): Ensure directories without final slashes and .el files without double quotes are handled properly. * hypb.el (hypb:string-count-matches): Rewrite to handle start and end properly. * hypb.el (hypb:insert-hyperbole-banner): Rename from 'hypb:display-file-with-logo-emacs' and remove unused 'file' parameter. * hypb.el: Use lexical binding and remove any lexical binding errors. * hypb-ert.el: Rewrite to improve naming and to load tests once only using require. * test/hmouse-drv-tests.el (hbut-defal): Generalize to prevent failures. * hmouse-drv.el (hkey-debug): Improve to show action type and its arguments. 2022-01-08 Bob Weiner * hpath.el (hpath:return-one-value): Complete rewrite to handle complex multi-variable paths like: "${load-path}/../hyperbole/$DOT/hypb.el") where DOT = ".". 2022-01-06 Mats Lidell * hsmail.el: Cleanup patch from Stefan Monnier. Thank you Stefan. * test/hpath-tests.el (hpath:auto-variable-alist-load-path-test) (hpath:auto-variable-alist-org-folder-test) (hpath:auto-variable-alist-pythonpath-test): Add tests for hpath:auto-variable-alist patterns. (hpath-tests--insert): Add test helper. 2022-01-02 Bob Weiner * test/hpath-tests.el (hpath:should-exist-paths, hpath:should-not-exist-paths): Add these two ert tests to check hpath expansion code. Each test reports any failures from a whole list of test paths. (hpath--should-exist-paths, hpath--should-not-exist-paths, hpath--should-exist-p, hpath--should-not-exist-p): Support code for above two tests. * hypb.el (hypb:string-count-matches): Add to count regexp matches in a string. * hpath.el (hpath:is-p): Replace most string-match with string-match-p for performance. * hpath.el (hpath:variable-regexp): Add new constant representing Hyperbole pathname variable format and use throughout hpath.el. 2022-01-02 Mats Lidell * test/hui-tests.el (hui-ebut-create-link-to-info-index-using-completion): Link to emacs info index. * test/hy-test-helpers.el (hy-test-helpers:action-key-should-call-hpath:find) (hy-test-helpers:hypb-function-should-call-hpath:find): Do a string match and expand-file-name match. * test/hui-tests.el (hui-ebut-create-link-to-info-index-using-completion): New test case. 2022-01-01 Bob Weiner * test/hpath-tests.el (hpath:prepend-ls-directory-test): hpath.el (hpath:prepend-ls-directory): Make work under MS Windows with Git bash or cmd.exe. Fix to prepend dir after an 'ls kotl' type command. * hpath.el (hpath:expand): Fix to use locate-library only if filename contains ".el". This prevents improperly finding non-Elisp files within the load-path, e.g. an INSTALL file. * hpath.el (hpath:substitute-dir): Fix to handle when part of the directory is included in 'rest-of-path' in which case only the preceding part of the dir should be returned. Also, account for when "./" or "../" is removed from 'rest-of-path', thereby lengthening the directory to return. 2021-12-31 Mats Lidell * Makefile (EL_SRC): Remove EL_SRC, compile all el-files. * hui-mini.el: Use lexical binding. 2021-12-31 Bob Weiner * hui.el (hui:gbut-modify): Fix 'src-dir' to be dir of 'gbut:file' not default-directory. * hargs.el (hargs:defaults): Defined this variable. hactypes.el (exec-shell-command, exec-window-command, link-to-file, link-to-ibut): Change 'defaults' to 'hargs:defaults' and make that a global variable. * hyrolo.el (hyrolo-map-level-1): Fix sorting bug by adding outline-hide-subtree when on last buffer entry so its contents are kept together during hyrolo-sort. * test/hibtypes-tests.el: (ibtypes::pathname-dot-slash-in-other-folder-test): Update now that invalid paths trigger the pathname ibtype and throw an error when the invalid path is resolved with hpath:find. test/hy-test-helpers.el (hy-test-helpers:action-key-should-call-hpath:find): Add call to hpath:mswindows-to-posix or under WSL, absolute prefix may not match, e.g. one path starts with '/mnt/c' and another with '/c'. * hpath.el (hpath:remote-regexp, hpath:url-hostnames-regexp, hpath:remote-at-p, hpath:remote-p, substitute-in-file-name, hpath:is-p): Add sftp support. * hpath.el (hpath:call): Add 3rd arg non-exist to allow for return of non-existent pathnames. * hpath.el (hpath:find): Include full path with prefix modifier and # anchor in error messages and handle "#Section" links in buffers without attached files. (hpath:display-buffer-other-frame): (hpath:display-buffer-alist): Update new-frame function to copy current frame parameters and to allow isearch to turn off. (hpath:to-markup-anchor): When searching for anchors, treat all caps filenames without suffix like outlines, e.g. README, INSTALL. 2021-12-30 Bob Weiner * hload-path.el: Add "{hyperb:dir}/test" subdir to load-path so can link to its files without giving any path. * hpath.el (hpath:expand-with-variable): Fix to handle Lisp symbol auto-variable-alist entries properly. For example, Elisp file names were not being expanded with the load-path variable. Also, don't expand URLs. (hpath:expand): Fix to expand path only when not already absolute and a variable matching the path suffix is found. Any variable added is resolved only if the path then points to an existing, readable file. (hpath:absolute-to, hpath:call): Call hpath:expand to ensure hpath:auto-variable-alist variables are utilized for absolute expansions. (hpath:find): Add loose test that hpath:display-path-function successfully displayed link in a buffer. 2021-12-30 Mats Lidell * hui-menu.el: * hui-em-but.el: * hsmail.el: * hrmail.el: * hmh.el: * hgnus.el: Use lexical-binding * test/hyrolo-tests.el (hyrolo-sort-test): Add hyrolo sort test. 2021-12-29 Mats Lidell * test/hmouse-info-tests.el (hmouse-info-read-index-with-completion) (hmouse-info-build-completions-no-match) (hmouse-info-build-completions-multiple-matches): hmouse-info tests. 2021-12-28 Mats Lidell * kotl/kotl-mode.el (kotl-mode:exchange-cells): Use cl-copy-list. * test/kotl-mode-tests.el (kotl-mode-transpose-cell) (kotl-mode-transpose-cell-with-mark) (kotl-mode-transpose-cell-past-multiple-cells): Add test for kotl-mode:transpose-cells. 2021-12-26 Bob Weiner * kotl/kotl-mode.el (kotl-mode:exchange-cells): Signal error if invalid type or value is given for a cell ref. Also, fix setting of idstamps when label type is idstamp. * hmouse-tag.el (smart-lisp-find-tag): With 'show-doc' arg, if 'tag' is unbound, return nil and ignore this as a tag instead of triggering an error. * hpath.el (hpath:substitute-value): Fix to properly return unchanged 'path' when it contains a PATH-type colon-separated list of directories but no matching path is found. Previously the 'substitute-in-file-name' call would improperly expand the variable. * DEMO (Defining New Action Button Types): man/hyperbole.texi: (Action Button Link Types): Fix to refer to PYTHONLIBPATH instead of PYTHONPATH. * man/hyperbole.texi: (Smart Keys): Add description of how to activate Hyperbole with {C-h h} or change this binding. * man/hyperbole.texi: (Smart Key Bindings): Remove discussion of hyperbole-toggle-bindings. Toggle hyperbole-mode instead. * hmouse-info.el (Info-read-index-item-name): Remove local binding of Info-complete-menu-buffer to fix completion when linking to Info index items. * hui-jmenu.el (hui-menu-sort-buffer): Replace 'with-current-buffer' with 'with-temp-buffer'. (hui-menu-buffer-mode-name): Fix to replace spaces in mode-names with dashes. 2021-12-19 Bob Weiner * hyrolo.el (hyrolo-map-level): Fix {C-h h r o} order cmd / sorting just hangs. Rewrote to fix sorting and simplify debugging. Change 'file-exists-p' to 'file-readable-p' so ensure rolo file is readable before processing it. 2021-12-18 Mats Lidell * install-test/elpa-devel/.emacs: Init file for install tests. * Makefile: install-elpa-devel target. 2021-12-12 Bob Weiner * hactypes.el (link-to-texinfo-node): Substitute for variable names in file linked to. * hui.el (hui:link-possible-types): Require 'texnfo-upd when needed to ensure texinfo-copy-node-name is defined before used since it is not autoloaded. * kotl/kotl-mode.el (kotl-mode:insert-region, kotl-mode:insert-tree): Add these new commands so can insert Koutline parts directly into other buffers without having to copy from the mail buffer via 'kotl-mode:mail-tree'. * hargs.el (hargs:at-p): Fix so when reading a buffer arg, if tag at point does not match an existing buffer name, then use the current buffer name. (hargs:read-buffer-name): Add for use by kotl-mode. * hyperbole.el (hkey-initialize): Add missing C-c prefix binding for hyperbole-mode-map. 2021-12-11 Mats Lidell * test/hpath-tests.el (hypb-run-shell-test-command): Test helper for running shell commands. (hpath:prepend-ls-directory-test): Test for "ls -R" listing. 2021-12-05 Bob Weiner * hyrolo.el (hyrolo-next-match): Handle case when no prior regexp search. * hyrolo-logic.el (hyrolo-fgrep-logical): Fix improper passage of 'count-only' to 'format'. (hyrolo-map-logic): Pass 'start' and 'end' args to logical operators in the 'eval' 2nd arg which is the lexical environment. Eliminates use as dynamic variables. * hyrolo.el (hyrolo-rename): Unify MS Windows default HyRolo file path with Posix OSes to ~/.rolo.otl. * hargs.el (hargs:actype-get): Change to set 'modifying' to t if non-nil for lower-level function call conformance. (hargs:iform-read): Change 'modifying' param to 'defaults'. If it is t, then current Hyperbole button is being modified, get defaults from it; otherwise, use the value as a list of defaults when prompting for arguments. Eliminate use of hargs:defaults dynamic variable. * kotl/kotl-mode.el: Require 'org so can override org-force-self-insert. (kotl-mode-map): Add kotl-mode overrides for these orgtbl editing commands: org-force-self-insert, orgtbl-ctrl-c-ctrl-c, orgtbl-create-or-convert-from-region org-delete-backward-char, org-delete-char, and orgtbl-self-insert-command. (kotl-mode:clipboard-yank): Change to use newer 'select-enable-clipboard' instead of 'gui-select-enable-clipboard'. * test/demo-tests.el (demo-smart-scrolling-proportional-test): Fails when run under an Emacs dumb terminal in batch mode, so only run interactively. * hibtypes.el (grep-msg, ripgrep-msg): Allow for ${emacs-lisp-var} with : in its name within the filename/pathname at the start of the line. * kotl/kview.el (kcell-view:forward, kcell-view:backward, kcell-view:child, kview:map-branch, kview:map-expanded-tree, kview:map-tree): kotl/klabel.el (klabel-type:set-alpha, klabel-type:set-legal, klabel-type:set-partial-alpha): kotl/kotl-mode.el: (kotl-mode:end-of-tree, kotl-mode:next-tree, kotl-mode:tree-end): Change indent handling to only be a different indent if different by (kview:level-indent KVIEW) since if length of label changes at level one, then indent will show as 1 or 2 chars longer. * Makefile (test-all): When run under Emacs with TERM=dumb, set term to vt100 so tests will at least run and show whether all ran successfully or not. * hpath.el (hpath:external-file-suffixes): Add this new customization with external file suffixes for the Action Key. Use in each OS-dependent variable. * test/demo-tests.el (demo-smart-scrolling-proportional-test): Make run only when running on a window system since does not work properly in batch mode on Macs. * hpath.el (hpath:native-image-suffixes): Include xbm and xwd formats. (hpath:external-open-office-suffixes): Include more suffixes. (hpath:external-display-alist-x): Use xdg-open to open file types like .ps previously included in this variable. 2021-11-28 Bob Weiner * hbut.el (ibut:to-name): Move to the start of the name of a given implicit button if one is found. (ibut:at-p): Add 'name' attribute to hbut:current if point is on the name of an ibut. (ibut:next-occurrence, ibut:previous-occurrence): Fix bug that did not find unnamed implicit buttons matching lbl-key because name delimiters were added to the regexp to match. (ibut:at-to-name-p): Add this to move to the start of an ibut name when point is within the ibut. * hui.el (hui:link-possible-types): Fix to properly get lbl-key for link-to Hyperbole button types. This resolves a problem when using drags or ace-window {M-o w } to create link buttons. * hui-window.el (hmouse-prior-active-region): Handle when hkey-value's buffer has been killed. * hbut.el (hbut:funcall): Add to call an ibut manipulation function with point on the ibut (may be a different src buffer than the original source). (ibut:get): Use hbut:funcall which fixes not setting source buffer properly, e.g. when executing link-to-gbut or any type of button with indirection. (ebut:to, ibut:to): Use hbut:funcall. * hact.el (action:params): Add support for closures. (actype:act): hbdata.el (hbdata:build): Add actype as first arg to hpath:absolute-arguments. hpath.el (hpath:absolute-arguments): Change to make arg absolute only if it has a path-like param name. Reduces false expansions. * hbmap.el (hbmap:dir-list, hbmap:dir-member, hbmap:dir-operate): Simplify with unless and when calls. (hbmap:dir-add): Fix via use of backquote to pass dir-name to progn lexically. * hui-mouse.el (smart-org): Stop handling Hyperbole buttons here and just fall though, so hkey-help shows the help for the button rather than for smart-org. 2021-11-27 Bob Weiner * hpath.el (hpath:prepend-ls-directory): When in a shell buffer and on a filename result of an 'ls *' or recursive 'ls', prepend the subdir to the filename and return it, else nil. (hpath:is-p): Fix to handle ".", "~" or "/" paths properly and ensure directory paths end with a / to prevent other functions from mistakenly appending a filename. 2021-11-08 Mats Lidell * test/kotl-orgtbl-tests.el (kotl-orgtbl-action-key-on-vertical-bar-toggles-orgtbl-mode): (kotl-orgtbl-shift-tab-demotes-tree-outside-table): Add tests. * kotl/kotl-mode.el (kotl-mode): Change binding for orgtbl C-d to use new kotl-mode:delete-char command; add binding for orgtbl shift tab to enable demotion of trees outside of tables. 2021-11-07 Bob Weiner * hypb.el (hypb:mark): Remove and use builtin mark function. * hui-mini.el (hyperbole-set-key): Rename parameters. * man/hyperbole.texi (Default Hyperbole Bindings): DEMO: hyperbole.el (hkey-bindings, hkey-bindings-flag, hmouse-toggle-bindings, hkey-bindings, hkey-bindings-flag, hkey-previous-bindings, hkey-set-bindings, hkey-bindings-keys, hkey-binding-entry): Remove since hyperbole-mode handles all of this now and regular key bindings can be used, enabled and disabled. (hkey-get-bindings, hkey-global-set-key, hkey-maybe-global-set-key): Rewrote to use hyperbole-mode-map. (hkey-global-set-key): Replace all usage with hkey-set-key and make obsolete. hui-select.el (hui-select-initialize): (hkey-maybe-global-set-key): Replace all usage with hkey-maybe-set-key and make obsolete. (hkey-maybe-set-key): Rewrote to check for prior key bindings only in hyperbole-mode-map. * test/hbut-tests.el (ebut-delete-removes-ebut-and-returns-button-data): hui.el (hui:hbut-delete, hui:ebut-delete-op): Fix to match doc and return t when successful. Simplify test function. Use button at point if but-key is not given. Also set key-src if null. * hui-mouse.el (hkey-alist): Fix so smart-org call when used as a predicate has no side-effects and move actions to proper part of the alist. * hbut.el (ibut:at-p): Trigger error if any ibtype predicate moves point. hmouse-drv.el (hkey-execute): Trigger error if any predicate moves point (only actions should). (ibut:to): Optimized, reducing expensive ibut:at-p calls. (ibut:to-text): Optimized, reducing movement and handling all cases. * hbut.el (ibut:at-p, ibut:to-text): Fix to leave point at the start of ibut text, only skipping past an optional name, if any, not skipping past the text itself. (hbut:act): Use with-current-buffer instead of set-buffer to move point so current-buffer setting does not leak outside this function. Also reset original point in any active window displaying the original buffer to ensure point does not move if the action took place in another buffer. * hui-window.el (hmouse-x-coord, hmouse-y-coord): Pass 'args' lexically rather than dynamically, thereby, fixing action key error of unbound argument 2021-11-05 Mats Lidell * test/kotl-mode-tests.el (smart-menu-loads-kotl-example): Add extra no op input char to make test case stable. * hypb.el (hypb:mark-marker): Remove compatibility function, use plain mark-marker instead. * kotl/kotl-mode.el (kotl-mode:transpose-lines, kotl-mode:yank-pop) (kotl-mode:exchange-point-and-mark, kotl-mode:transpose-lines-internal): hui.el (hui:ebut-create, hui:ebut-edit): hsmail.el (mail-yank-original): hbut.el (ebut:operate): hargs.el (hargs:iforms): Use mark-marker. 2021-11-02 Mats Lidell * test/kotl-orgtbl-tests.el (kotl-orgtbl-enabled-uses-kotl-mode-delete-char-ouside-of-table): Add test for C-d binding in orgtbl. * kotl/kotl-mode.el (kotl-mode): Add orgtbl-mode-map binding for C-d. 2021-10-31 Bob Weiner * hactypes.el (link-to-ibut): Remove requirement that implicit button linked to be in a buffer with a file attached. Also, trigger error if `key' arg is null. * hbut.el (ebut:modify): Add save-restriction and removed doc string saying caller should use save-excursion since this function handles that. (ebut:operate): Add save-restriction around ebut:modify and ebut:create calls. 2021-10-31 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-previous-cell-from-invalid-position) (kotl-mode-backward-cell-from-invalid-position) (kotl-mode-backward-cell-from-invalid-pos-leave-point-in-valid-pos): Test cases for invalid start position before moving backwards. * kotl/kotl-mode.el (kotl-mode:previous-cell, kotl-mode:backward-cell): Handle case when start pos is invalid. 2021-10-26 Mats Lidell * hui.el (hui:link-directly): Use use-region-p for active region. 2021-10-24 Bob Weiner * hmouse-drv.el (mouse-drag-mode-line): Remove XEmacs 'mouse-drag-frame-move' reference. (hmouse-save-region): Remove unused optional 'frame' arg. * hbut.el (ibut:to): Fix to handle ibuts with text-only, no separate name by using ibut:at-p instead of ibut:label-p. (ibut:to-text): Prevent error when lbl-key-end is not found and find double-quoted ibuts with no optional label. (ibut:at-p): Fix handling of double-quoted implicit buttons without any separate name/label. (hbut:at-p): Display button properties when called interactively. (ebut:label-p): Fix handling of start pos if delims are double quotes. * hpath.el (hpath:relative-arguments): Leave strings that match buffer names unchanged, e.g. link-to-ibut may have a key-src arg that is a buffer name. * hbut.el (hbut:key-src-set-buffer): hactypes.el (link-to-ibut): Generalize 'key-src' parameter to 'but-src' so handles buffers as well as files. * hbdata.el (hbdata:apply-entry): Added save-restriction in case hbdata is stored in a displayable buffer, e.g. *scratch*, which may have a prior visible restriction. Also, added support for such non-mail/news buffers. * hui.el (hui:link-possible-types): Fix link-to-ibut use to include ibut's filename or buffer name. 2021-10-21 Bob Weiner * kotl/kotl-mode.el (kotl-mode:copy-to-buffer, kotl-mode:mail-tree): Change passing of free variable, label-default, to lexically scoped, fixing new bug when using kotl-mode:mail-tree. 2021-10-18 Bob Weiner * kotl/kexport.el (kexport:html): Remove any extra newline added at the end of some cells after kexport:html-markup is called. This fixes a bug where HTMLized cells are separated by 2 newlines. 2021-10-17 Bob Weiner * hpath.el (hpath:symlink-referent): Fix handling of relative symlinks, adding on current directory as prefix. This fixes a bug with /tmp on Macs which is a symbolic link to 'private/tmp' and was not expanded properly. * HY-NEWS: Re-order 8.0.0 entries to emphasize more important features first. * hyrolo.el (hyrolo-find-file-function): Add this customizable variable. (hyrolo-find-file): Use above variable to edit either the first or with prefix arg, any selected hyrolo-file-list file. hui-mini.el (hui:menus): Add Rolo/File entry for above command. hyrolo-menu.el (infodock-hyrolo-menu): Replace 'Edit-Rolo' with 'Edit-HyRolo-File'. HY-NEWS (HYROLO): man/hyperbole.texi (HyRolo Menu): Add hyrolo-find-file manual doc. 2021-10-10 Mats Lidell * test/kexport-tests.el (kexport:html-creates-html-file) (kexport:html-sets-title-and-header, kexport:html-contains-each-cell) (kexport:html-creates-hierarchy) (kexport:display-creates-html-file-and-displays-it) (kexport:buffer-calls-kexport:html): Add kexport tests. 2021-09-26 Mats Lidell * Makefile (bin): Hide docstring warnings. 2021-09-26 Bob Weiner * hbut.el (ebut:operate): Rewrote to handle label modification properly and thereby fixed hui-ebut-modify-link-to-www-url-keeping-all-values-should-not-modify-buffer-or-ebut test. * hmail.el (hmail:hbdata-to-p): Update doc string and generalize to handle button data embedded in non-mail buffers, e.g. temp buffers for testing. test/hbut-tests.el (hypb:program-create-ebut-in-buffer): Above fix resolved bug that hbut:at-p did not recognize a button created within a buffer without a file attached, causing this test to fail. Also fixed ebut-delete-removes-ebut-and-returns-button-data test. 2021-09-26 Bob Weiner * kotl/kexport.el (kexport:html): Improve vertical alignment of expand/collapse chevrons and kcell text. * hsettings.el (hyperbole-web-search-browser-function): Use 'function type. * hui-mini.el (hui:menu-item-keys): Fix bug in catch fallthrough that returned the item rather than nil, causing numbers and non-ASCII chars to not work. 2021-09-20 Mats Lidell * Makefile (bin-warn): Control what warning messages to get when byte compiling. 2021-09-18 Mats Lidell * kotl/kotl-mode.el (kotl-mode:split-cell): Create new plist for split cell. * test/kotl-mode-tests.el (kotl-mode-split-cell): Add test for split-cell 2021-09-14 Mats Lidell * hbut.el (defib, defil, defal): Use declare notation for making macros possible to debug. Patch from Stefan Monnier. Thank you Stefan. 2021-09-12 Mats Lidell * Part three of patch from Stefam Monnier. Thank you Stefan. Incluces updates: - Use lexical scoping - Update copyright notice - Use #'-syntax for functions 2021-09-05 Bob Weiner * kotl/kexport.el (kexport:html): Fix export-from parameter checks to allow only Koutline buffers and files. Stop centering title since often places it too far right. 2021-09-05 Mats Lidell * test/hyrolo-tests.el (hyrolo-demo-show-overview) (hyrolo-demo-move-to-beginning-and-end-of-file) (hyrolo-demo-move-between-entries-on-same-level) (hyrolo-demo-no-following-same-level-heading): Add tests for rolo keys. (hyrolo-demo-toggle-visibility): Update to test key 's'. 2021-08-19 Mats Lidell * test/hbut-tests.el (hbut-tests:should-match-tmp-folder): Add check for tmp folder. 2021-07-20 Mats Lidell * hpath.el: Part two of patch from Stefan Monnier. Thank you Stefan. Use lexical scope. (hpath:substitute-value): Use match-beginning and match-end. * test/hpath-tests.el (hpath:subsitute-value-test): Add tests for hpath:substitute-value. 2021-07-19 Mats Lidell * test/hmouse-drv-tests.el (hbut-etags-test): Rename test case due to name clash. * Part one of patch from Stefan Monnier. Thank you Stefan. The part applied contains updates to some file regarding: - Use lexical scoping - Update copyright notice - Other small non functional changes 2021-07-18 Bob Weiner * hbut.el (ebut:program): Use 'actype:action' to generalize actype handling. 2021-07-17 Bob Weiner * hmouse-drv.el (hkey-either): Made prefix arg optional so can call programmatically without an arg just by name. 2021-07-11 Mats Lidell * test/hbut-tests.el (gbut-program-calls-ebut-program) (gbut-program-link-to-directory): Add gbut tests. 2021-07-04 Mats Lidell * test/hbut-tests.el (ebut-program-link-to-directory) (ebut-program-link-to-directory-2, ebut-program-shell-cmd): Use actypes prefix after ebut:program change. * test/hbut-tests.el (hypb:program-create-ebut-in-buffer) (hypb:program-create-link-to-file-line-and-column-but-in-file): Add new test cases for ebut:program. * test/hui-tests.el (hui-ebut-create-link-to-www-url) (hui-ebut-modify-link-to-www-url-keeping-all-values-should-not-modify-buffer-or-ebut): Add hui:ebut-create and hui:ebut-modify tests. 2021-07-04 Bob Weiner * hbut.el (ebut:program): Change to a function from a macro so 'args' are evaluated. 2021-06-19 Mats Lidell * hui-menu.el (hyperbole-menubar-menu): Use easy-menu-add-item. * hmouse-drv.el (window-jump, wj-vec-left, wj-vec-right, wj-vec-down) (wj-vec-up): Declare function and variables. * hsys-org.el (org-link): Use org-link-open-from-string. * hui-mouse.el (helm-action-buffer, helm-alive-p, helm-buffer): Declare helm variables. (company-show-doc-buffer, company-show-location) (company-select-mouse): Declare helm functions. (smart-calendar): Use calendar-scroll-left-three-months and calendar-scroll-right-three-months (smart-calendar-assist): Use calendar-scroll-left-three-months and calendar-scroll-right-three-months and diary-view-entries. * hui-treemacs.el (treemacs-version, aw-ignored-buffers): Declare variables. * hycontrol.el (ibuffer-mode-map): Declare used variable. * kotl/kotl-mode.el (kotl-mode:end-of-buffer): looking-back requires two args. * test/hyrolo-tests.el (hyrolo-demo-search-work) (hyrolo-demo-tab-jump-to-first-match, hyrolo-demo-toggle-visibility): Add tests for hyrolo. * hyrolo.el (hyrolo-file-list): Make variable customizable. * hsettings.el: Do not set user customizable properties hproperty:but-highlight-flag, hproperty:but-emphasize-flag, hproperty:but-flash-time. 2021-06-06 Mats Lidell * hui-em-but.el (hbut-item-face): Fix typo. 2021-06-01 Mats Lidell * test/hbut-tests.el (ebut-program-shell-cmd) (ebut-delete-removes-ebut-and-returns-button-data): Tests for ebuts. 2021-05-30 Mats Lidell * test/hbut-tests.el (ebut-program-link-to-directory) (ebut-program-link-to-directory-2): Add test for ebut:program * test/hmouse-drv-tests.el: Renamed from hbut-tests.el * test/hui-tests.el (hui-ebut-create-link-to-directory) (hui-ebut-use-region-as-label): Add check on button args 2021-05-29 Bob Weiner * hpath.el (hpath:is-p, hpath:call): Return nil if path sans prefix and suffix is empty and suffix does not begin with a '#' markdown section-style char. * kotl/kotl-mode.el (kotl-mode:goto-cell): Improve doc. 2021-05-29 Mats Lidell * test/hui-tests.el (hui-ebut-create-link-to-directory) (hui-ebut-use-region-as-label, hui-ebut-www-link) (hui-ebut-create-exec-shell-cmd): ebut create tests. 2021-05-27 Bob Weiner * hpath.el (hpath:expand-with-variable): Fix to not add variable to path if already in the path. (hpath:substitute-match-value): Return STR unchanged if no value substituted for any variable name. * hbut.el (ebut:program, hbut:action): hact.el (actype:action, actype:doc): Handle lambdas properly. * hact.el (symtable:actype-p, symtable:ibtype-p): Return nil if arg is not a symbol or string, e.g. a lambda. 2021-05-25 Bob Weiner * kotl/kotl-mode.el (kotl-mode:to-valid-position): Removed one unused setting of 'indent'. * kotl/kview.el (kcell-view:level): Use 'floor' to ignore any small remainder when cells at level 1 have labels longer than the allowed indent. 2021-05-24 Mats Lidell * test/kotl-mode-tests.el (kotl-mode-extension-open-buffer-in-kotl-mode) (kotl-mode-set-view-with-kbd, kotl-mode-idstamp-saved-with-file) (kotl-mode-demote-keeps-idstamp, kotl-mode-demote-change-label) (kotl-mode-views, kotl-mode-move-cell-before-cell) (kotl-mode-move-cell-after-cell, kotl-mode-copy-cell-after-cell) (kotl-mode-copy-cell-before-cell, kotl-mode-jump-to-cell) (kotl-mode-goto-child-and-parent, kotl-mode-kill-cell): Add kotl-mode tests. 2021-05-23 Bob Weiner * kotl/kotl-mode.el (kotl-mode:beginning-of-buffer, kotl-mode:end-of-buffer): Re-narrow Koutline to editable region if it has been expanded. * test/kotl-mode-tests.el (kotl-mode-indent-cell-changes-level): Ensure always at the beginning of buffer for the test. test/hbut-tests.el (hbut-pathname-env-variable-test): test/hibtypes-tests.el (ibtyeps::pathname-env-variable-test): Use file-truename to normalize both names. test/hypb-tests.el (hypb:replace-match-string-after-27.1-test): Conditionalize but don't skip so no issue arises when looking at all test results. * hyrolo.el: Add (require 'xml) and local binding of child used in google-contacts support. * kotl/kotl-mode.el (kotl-mode:move-after): Suppress label increment when label type is permanent ids (fix bug). * kotl/kexport.el (kexport:html-replacement-alist): Change \0 back to \\& to try to fix link replacements again. * kotl/kotl-mode.el (kotl-mode:goto-cell): Use prefix arg as a number rather than a string when called interactively. * kotl/kvspec.el (kvspec:activate): Ensure Koutline is narrowed to editable region only. * kotl/kview.el (kview:goto-cell-id): Simplify and make much more efficient via kproperty:position call. Allow for integer idstamp argument as well. * kotl/kcell.el (kcell:ref-to-id): Simplfy using 'when' and 'match-string'; update doc on unimplemented Augment features. Fix to validate that idstamp exists before returning and to convert relative kcell labels to idstamps (integers). * kotl/kproperty.el (kproperty:position): Add to quickly locate the first kcell with a property value. (kproperty:all-positions): Add to quickly locate all kcells with a property value. (kproperty:add-properties): Add to set multiple properties from a plist. kotl/kcell.el (kcell:is-p): kotl/kview.el (kcell-view:create, kcell-view:set-cell, kview:goto-cell-id): kotl/kfile.el (kfile:insert-attributes-v2, kfile:insert-attributes-v3): Update to use new kcell and kproperty single-level property-list configuration. 2021-05-22 Bob Weiner * kotl/kcell.el (kcell:create): Remove contents arg since contents are now stored exclusively in kviews. (kcell:contents): Remove function. (kcell:create-top, kcell-data:create, kcell-data:to-kcell-v2, kcell-data:to-kcell-v3): kotl/kview.el (kview:add-cell): kotl/kotl-mode.el (kotl-mode:copy-after, kotl-mode:copy-before): Use new kcell:create calling convention (no contents arg). * kotl/kcell.el (kcell:copy, kcell:create, kcell:is-p): Delete knode.el and integrate functionality into kcell.el. * kotl/kcell.el (kcell:get-attr): Alias to plist-get. (kcell:set-attr): Alias to plist-put. * kotl/kview.el (kcell-view:cell-from-ref): Add to get a kcell from a cell reference (label or idstamp). * Makefile: kotl/MANIFEST: kotl/kproperty.el: Merge in "kprop-em.el" and remove "kprop-xe.el". * kotl/kexport.el (kexport:html-file-klink): Change '\0' back to '\\&' to prevent klink nul char insertion bug. (kexport:html): Fix cell label vertical alignment with table row-level valign=text-bottom. * kotl/klink.el (klink:ignore-modes, klink:c-style-modes): Add so can customize modes in which klinks are ignored to avoid false matches. * hsettings.el (hyperbole-web-search-alist): Update 'gitHub' name. * hui-mini.el (hui:menu-item, hui:menu-line): Use simplified, concatenated car/cdr functions. (hui:menu-item-keys): Add to modularize menu item selection and allow selection by first capital letter, not just first letter. (hui:menu-select, hui:menu-item): Call hui:menu-item-keys. (hui:menu-select): Update doc string and {RET} direct selection handling. hargs.el (hargs:at-p): When reading a Hyperbole minibuffer menu item, match to the first capitalized char in each item. * kotl/kexport.el (kexport:font-awesome-css-url, kexport:font-awesome-css-include, kexport:font-awesome-collapsible-javascript, kexport:buffer, kexport:display, kexport:html): Add/update to support collapsible parent cells in HTML exported Koutlines. 2021-05-19 Bob Weiner * Makefile (kotl/kotl-autoloads.el): Revert commit that removed PRELOADS (needed to define make-directory-autoloads in pre- Emacs 28. 2021-05-18 Bob Weiner * kotl/kotl-mode.el (kotl-mode:example): Update to allow for an optional directory or absolute file path. Prompt for the path when interactive. Given a prefix argument, archive any existing file and start with a fresh EXAMPLE.kotl file. Programmatically, give a 2nd arg of t to force archiving of any existing file and starting with a fresh EXAMPLE.kotl file. test/kotl-mode-tests.el (kotl-mode-move-between-cells, kotl-mode-indent-cell-changes-level): Update to use new kotl-mode:example arguments. * hrmail.el (rmail:msg-to-p): Alias to Rmail-msg-to-p for use in in hactypes.el. (require 'hvar): Add, used in Rmail-init. * hpath.el (hpath:to-markup-anchor): Add support for path#anchor links in programming, text and outlining major modes. * hactypes.el (link-to-ebut): Fix bug that always triggered an error if key-file was not given. Also remove interactive conditional that prevented normalized-file from being set. 2021-05-18 Mats Lidell * test/kotl-mode-tests.el (setup-kotl-mode-example-test) (smart-menu-loads-kotl-example, kotl-mode-example-loads-kotl-example) (kotl-mode-move-between-cells, kotl-mode-indent-cell-changes-level): Add kotl-mode tests. 2021-05-17 Mats Lidell * kotl/kotl-mode.el (hypb): hyperbole.el (hypb): Use compatibility macro. * hypb.el (hypb-with-suppressed-warnings): Add compatibility macro for suppressing warnings * Makefile (kotl/kotl-autoloads.el): Remove PRELOADS for generating autoloads. Patch from Stefan Monnier. Thank you Stefan. * kotl/kotl-mode.el (kotl-mode): hyperbole.el (fboundp): Do not use with-suppressed-warnings since not available in all versions of Emacs 27 2021-05-17 Mats Lidell * kotl/kmenu.el (id-menubar-set): Add external dependency. * hyrolo.el (google-contacts-history, google-contacts-expire-time) (google-contacts-query-string, hproperty:highlight-face): Declare used variables. * hyrolo-menu.el (id-menubar-set): Add external dependency. (mode-popup-menu): Declare used variable. * hyperbole.el (autoloads): Surpress warning for obsolete update-directory-autoloads. (hyperb:generate-autoloads): Use recommended hook. * hypb.el (mh-e-RCS-id, pm-version, vm-version): Declare used variables. * hui-dired-sidebar.el (dired-sidebar-cycle-subtree-on-click): Declare used variable. * hmouse-tag.el (python-import-file, python-to-definition) (epc:manager-server-process, java-to-definition) (jedi:-get-servers-in-use, jedi:goto--line-column) (jedi:goto-definition, objc-to-definition): Add external dependencies. * hmouse-drv.el (aw-dispatch-always): Declare used variable. (mouse-drag-mode-line): Use version dependent mouse drag function. 2021-05-16 Mats Lidell * hibtypes.el (id-cflow-repeated-indicator, cscope-output-line-regexp): Declare used variables. * hbut.el (hproperty:but-face): Declare used variable. 2021-05-16 Stefan Monnier * hvar.el: Add lexical binding updates. 2021-05-16 Bob Weiner * hact.el (actype:act): Add error handler when actype is null rather than checking for an action. * hargs.el (monkey-filename, hargs:at-p): hibtypes.el (rfc): Remove ancient dired-like monkey-mode support. 2021-05-16 Mats Lidell * Makefile (version): Do version number check in a portable way. * hyperbole.el (hyperb:maybe-load-autoloads): Only load autoloads if present. * hypb.el (hypb:function-copy): Remove XEmacs compatibility code for bytecode objects. 2021-05-16 Bob Weiner * INSTALL (Manual Tarball Archive Installation): Add. man/hyperbole.texi (Manual Tarball Archive Installation): Update. * hyperbole.el (hyperb:maybe-load-autoloads): Add and call from hyperb:init. * Makefile (hyperbole-autoloads.el, kotl/kotl-autoloads.el): hyperbole.el (hyperb:generate-autoloads): Suppress find-file-hooks during autoload generation so no file headers are added. * kotl/kotl-mode.el: Change mistaken '(when arg...)' updates to proper '(unless arg...)'. 2021-05-16 Mats Lidell * hyrolo.el (google-contacts-oauth-token, xml-node-child-string) (xml-node-get-attribute-type, hyrolo-fgrep-logical, google-contacts) (google-contacts-add-margin-to-text, google-contacts-build-node-list) (google-contacts-data, google-contacts-make-buffer) (google-contacts-margin-element): Add external dependencies. 2021-05-15 Bob Weiner * kotl/kview.el (kcell-view:line): kotl/kotl-mode.el (kotl-mode): Where possible change 'if' to 'when' and '(or (not ...))' to 'unless'. (cl-lib): Require for cl-remprop. (kotl-previous-mode): Declare this variable. * hyperbole.el (make-directory-autoloads): Fix definition for Emacs 27. * hmouse-drv.el (hkey-ace-window-setup): Change global key setting to use hkey-set-key instead to set in Hyperbole's minor mode map. * Makefile (autoloads): Change to use make-directory-autoloads. * kotl/kotl-mode.el (kotl-mode-map): Remove 'interactive-only property from kotl-mode commands that overload standard editing commands to suppress byte-compiler warnings that these are for interactive use only. * hycontrol.el (hycontrol-windows-mode): Add to :group 'hyperbole-screen. 2021-05-14 Mats Lidell * hsmail.el (mail-reply-buffer): Declare variable. * hrmail.el (rmail-old-text): Declare variable. * hmouse-tag.el (br-env-spec, br-lang-prefix, buffer-tag-table) (jedi-mode, java-class-def-name-grpn, java-class-def-regexp): Declare variables. * hmouse-sh.el (br-env-spec, br-lang-prefix, company-active-map) (java-class-def-name-grpn, java-class-def-regexp, jedi-mode): Declare variables. * hmouse-drv.el (aw-dispatch-alist, aw-frame-size, aw-keys): Declare variables. * hib-debbugs.el (debbugs-port): Declare variable. * hbut.el (ebut:delimit): Use hproperty:but-face. * hui-em-but.el (hproperty:but): Remove variable only used in one place. 2021-05-13 Bob Weiner * hyperbole.el (hyperb:generate-autoloads): Fix improper default-directory when building kotl/kotl-autoloads.el. * hycontrol.el (hycontrol-frames-mode): Add :group. (hycontrol-make-windows-grid): (hycontrol--buffer-list): Add this var and use instead of free var 'buffer list'. * hui-mouse.el (smart-custom, smart-custom-assist): Add missing close paren in last-line-p clause. * hmouse-drv.el (hmouse-choose-windows): Fix unneeded arg to message. * man/hyperbole.texi (Implicit Button Types): Remove function-in-buffer. hibtypes.el (function-in-buffer): hui-mouse.el (hkey-alist): Remove XEmacs fume function finding; use imenu. * hibtypes.el (hlink): Add missing let declaration of partial-lbl. 2021-05-13 Mats Lidell * kotl/kotl-mode.el (kotl-mode): Set hook to be local to buffer. 2021-05-12 Mats Lidell * kotl/kotl-mode.el (kotl-mode:backward-paragraph): Remove XEmacs zmacs-region-stays. (kotl-mode): Silence warning about unused filladapt-mode and suppress warning for free vars. * hui-treemacs.el (treemacs, treemacs-current-button) (treemacs-current-visibility, treemacs-get-local-buffer) (treemacs-is-treemacs-window?, treemacs-node-buffer-and-position) (treemacs-quit, treemacs-toggle-node): Add external dependencies. * hui-dired-sidebar.el (dired-sidebar-toggle-sidebar): Add external dependency. * hui-mouse.el (todotxt-archive, todotxt-bury, todotxt-complete-toggle) (todotxt-edit-item, magit-current-section, magit-diff-visit-file) (magit-diff-visit-file--internal, magit-file-at-point) (magit-section-cycle-diffs, magit-section-cycle-global) (magit-section-hide, magit-section-show, -flatten) (imenu--make-index-alist, image-dired-thumbnail-display-external) (image-dired-display-thumbnail-original-image) (image-dired-mouse-select-thumbnail, helm-action-window) (helm-buffer-get, helm-get-selection, helm-mark-current-line) (helm-next-line, helm-pos-candidate-separator-p) (helm-pos-header-line-p, helm-resume, helm-window, with-helm-buffer) (ibuffer-mark-for-delete, ibuffer-unmark-forward) (ibuffer-unmark-all, ibuffer-do-view, ibuffer-mark-forward) (ibuffer-do-kill-on-deletion-marks, ibuffer-get-marked-buffers) (br-buffer-menu-select, ibuffer-current-buffer) (gnus-topic-read-group): Add external dependencies. * hycontrol.el (ibuffer-get-marked-buffers) (which-key--hide-popup-ignore-command): Add external dependencies. * hsettings.el (hproperty:cycle-but-color, hproperty:but-create): Add declarations for hui-em-but functions. * hpath.el (br-quit, br-in-browser, br-to-view-window): Add external dependencies. * kotl/kotl-mode.el (kotl-mode): Use write-file-functions. 2021-05-11 Mats Lidell * hmouse-tag.el (br-edit, br-edit-feature): Add external dependencies. * hmouse-drv.el (br-in-view-window-p, br-next-listing-window) (br-to-view-window, ace-window, ace-window-display-mode, aw-select): Add external dependency. * hib-social.el (magit-status-setup-buffer): Add external dependency. * kotl/kimport.el (kotl-mode): Add require. * kotl/kexport.el (kview, kotl-mode, kimport): Add requires. * hui-mouse.el (tar-mode): Add require. * hpath.el (tramp): Require tramp. * hibtypes.el: (markdown-footnote-goto-text) (markdown-footnote-marker-positions, markdown-footnote-return) (markdown-link-p, markdown-reference-goto-definition) (markdown-reference-goto-link, markdown-wiki-link-p) (markdown-footnote-text-positions): Add exernal dependencies. * hib-kbd.el (helm-mode): Add exernal dependency. * hib-debbugs.el (debbugs-get-status, debbugs-gnu-bugs) (debbugs-gnu-current-id, debbugs-gnu-select-report) (debbugs-gnu-show-reports, debbugs-gnu-current-query): Add external dependencies. * hbdata.el (hgnus): Require hgnus. * hactypes.el (bookmark): Require bookmark. 2021-05-11 Bob Weiner * kotl/kotl-mode.el (kotl-mode:pre-self-insert-command): kotl/kview.el (kcell-view:previous-kcell): Force to valid position before moving. This fixes promotion/demotion bug. * hib-kbd.el (kbd-key, kbd-key:act): Interactively allow for a key series, not just a single bound key sequence. (kbd-key:execute): Add to programmatically or interactively execute a non-normalized key series stored in a string. Also, improve library commentary and mention this new command. * hbut.el (ebut:operate): Fix error that could fail to delimit a new ebut. * hbdata.el (hbdata:delete-entry, hbdata:to-entry): Change partial 'if' to 'when'. * hui.el (hui:ebut-unmark): Document prefix arg and handle null but-key argument utilizing button at point, if any. Also, fix removal of any single digit instance string in button text. Clarify let var naming and usage. * test/demo-tests.el (demo-org-hide-header-test): Force full Smart Key functionality in Org mode to ensure test always works correctly. * hmouse-drv.el (hkey-help): Set hrule:action to 'actype:identity so potential default org-meta-return command does not trigger when displaying help for a default Smart Key context. * hsys-org.el (require 'set): Add explicitly since set:intersection is used in this library. (hsys-org-enable-smart-keys): Initialize to 'unset and then set default value in hyperb:init so that needed hyperbole-mode-map is initialized; otherwise, customizations are loaded before Hyperbole is initialized. 2021-05-10 Bob Weiner * kotl/kview.el (kcell-view:label): Remove unneeded properties from returned string. * man/hyperbole.texi (Relocating and Copying, Koutliner Keys): kotl/kotl-mode.el (kotl-mode-map): Change binding of kotl-mode:mail-tree from {C-c @} to {C-c C-@} to prevent conflict with hycontrol-windows-grid binding. 2021-05-09 Bob Weiner * test/demo-tests.el (demo-org-hide-header-test): Fix, add save-excursion around action-key call since somehow the ert test runner changes the current buffer to its stats buffer after this call, then the final should test fails. * hyperbole.el (action-key-url-function): Remove out-of-date Netscape and w3 references. Use eww by default. (make-directory-autoloads): Add for Emacs 28 compatibility. (hyperb:generate-autoloads): Use above func. * hypb.el (hypb:file-major-mode): hui.el (hui:gbut-modify, hui:hbut-delete): hbut.el (ibut:delete, gbut:ebut-program): Change set-buffer to with-current-buffer to remove byte-compiler warning. (www-url): Declare this. * hui-window.el (hmouse-read-only-toggle-key): Remove ref to obsolete toggle-read-only and vc-toggle-read-only. * hsys-org.el (hsys-org-radio-target-at-p, hsys-org-radio-target-link-at-p): Fix to return def or target region. 2021-05-08 Bob Weiner * hsys-org.el (hsys-org-mode-function): Autoload this variable. * hui-mouse.el (action-key-error, assist-key-error): Document. * hsys-org.el (hsys-org-meta-return-shared-p): Add to enable full Smart Key functionality in Org mode if either Org or Hyperbole has rebound its M-RET key so there is no need for shared behavior. Affects default setting of hsys-org-enable-smart-keys option. * hui.el (hui:buf-writable-err): Indicate that buffer is read-only in msg. * hui-window.el (hmouse-prior-active-region): hbut.el (ebut:operate): Fix bug where ebut:operate has been called once, so action key is considered depressed and then one of the hui button commands or gbut:program is invoked independently, in which case the original source location of the depress should be ignored. * hbdata.el (hbdata:apply-entry): Add '-flag' to last 2 arg names for clarity. (hbdata:delete-entry): Make cross-platform by replacing shell cmd 'rm' with Elisp 'delete-file'. * hmouse-tag.el (smart-lisp-find-tag, smart-lisp): Add new function smart-lisp-find-tag split out from smart-lisp, so can be used as an actype or bound to a key in lieu of xref-find-definitions. * hbut.el (ebut:operate): Fix to reuse label text within activated region if point is at the end of the region. 2021-05-07 Bob Weiner * hui-menu.el (hui-menu-options): hui-mini.el (hui:menus): Add Cust/Org-Meta-Return setting to menus. * man/hyperbole.texi (Smart Key - Smart Scrolling): hui-mouse.el (action-key-eol-function, assist-key-eol-function): Explain how to disable these functions when desired. * man/hyperbole.texi (Implicit Button Types): Update to new ordering of org-mode, mail-address, hsys-www, and pathname ibtypes. This resolves a bug where URLs are mis-categorized as pathnames. hibtypes.el (hpath:www-at-p, mail-address): Make higher priority than pathname ibtype. hmouse-drv.el (hkey-debug): Send all used vars as params to remove dynamic variable binding. (hkey-execute): Update hkey-debug call. 2021-05-05 Mats Lidell * hui-em-but.el (hproperty:but-flash-time): Mark hproperty:but-flash as obsolete. (hproperty:but-flash-time-seconds): Add customized flash time based on seconds. 2021-05-04 Bob Weiner * man/hyperbole.texi (Manual Stable Release Installation): Add this for old-school, manual installation. Also, fix installation section formating. * hsys-org.el (hsys-org-link-at-p): Fix to use Org context to determine if on an Org link. 2021-05-02 Bob Weiner * Update release number to 8.0.0pre (pre-release) as not all the documentation is finished yet. * INSTALL: man/hyperbole.texi: Made Installation subsections for Stable Release Installation and Git Pre-release Installation with the Straight package manager. * hmouse-tag.el (smart-tags-display): Fix to never prompt for a tag table if none are found from automatic searches. This prevents prompting when the Action Key is pressed on a potential identifier that could be anything. 2021-05-02 Mats Lidell * test/hib-org-tests.el (hib-org:org-mode-with-no-smart-keys-on-file-is-org-meta-return) (hib-org:org-mode-with-no-smart-keys-on-hypb-button-is-org-meta-return) (hib-org:org-mode-with-no-smart-keys-on-org-link-is-org-meta-return) (hib-org:org-mode-with-smart-keys-buttons-on-file-is-org-meta-return) (hib-org:org-mode-with-smart-keys-buttons-on-hypb-button-activates) (hib-org:org-mode-with-smart-keys-buttons-on-org-link-is-org-meta-return) (hib-org:org-mode-with-smart-keys-on-file-activates) (hib-org:org-mode-with-smart-keys-on-hypb-button-activates) (hib-org:org-mode-with-smart-keys-on-org-link-activates): Update and add new tests for hsys-org-enable-smart-keys. * hui-em-but.el (hbut-face): Add face for hbuts. (hproperty:but-face): Use face for property. (hbut-item-face): Add face for hbut items. (hproperty:item-face): Use face for property. 2021-05-02 Bob Weiner * hibtypes.el (pathname-line-and-column): Lower priority below grep ibtypes so does not interfere. (grep-msg): Stop from matching to any file names that start with quote marks. Those are handled elsewhere. * hui-mouse.el (hkey-alist, smart-org): Add smart-org near the top to handle M-RET dispatching in Org mode prior to most other contexts. Also integrated assist key handling from hsys-org.el org-mode:help into smart-org. hibtypes.el (org-mode): Remove this ibtype; replace with smart-org function; this also ensures that pathnames within org links are handled by Org commands. hib-org.el: Move remaining action types to hsys-org.el and delete this file. test/hib-org-tests.el: Rename to test/smart-org-tests.el. hui-mouse.el (action-key-error, assist-key-error): When in Org mode, if no other context fired, use org-meta-return. hsys-org.el (hsys-org-heading-at-p): Add to support Hyperbole EOL handling and use in smart-org. Also when hsys-org-enable-smart-keys is 'buttons, follow Org links and radio targets. * kotl/kotl-mode.el (kotl-mode:kill-whole-line): Add override of kill-whole-line for Koutliner. * hibtypes.el (debugger-source, hib-python-traceback, python-tb-previous-line): Separated handling moving back a line to handle 2 line Python error/traceback entries into a function and an additional ibtype. This eliminates an expensive recursive call to hbut:at-p. * hmouse-tag.el (smart-lisp): When search for an Elisp identifier, enable the xref etags backend to find symbols not yet loaded into Emacs. (smart-tags-display): Use case-insensitive tags lookup since this should be true for most languages in use today. Also, make find-tag calls use only exact identifier matches, not partial matches. (smart-lisp): Remove (smart-emacs-lisp-mode-p) check since hkey-alist predicate has checked this already. 2021-05-01 Bob Weiner * hibtypes.el (pathname): Update to treat "-simple" as an Elisp library to load only if such a library exists; otherwise, is not treated as a pathname. * kotl/kotl-mode.el (kotl-mode, kotl-mode:pre-self-insert-command): Update kotl-mode to add this new function as a pre-command-hook to prevent Koutline editing with point in an invalid location, after a mouse-set-point outside of editable bounds (which could corrupt the Koutline structure). * kotl/kview.el (kview:valid-position-p, kcell-view:previous-kcell): Handle when mouse has moved point to a non-editable location at the end of a Koutline. * hpath.el (hpath:auto-variable-alist): Add doc summarizing valid values of the cdr of each pair, the path variable. * ChangeLog: Renamed this file from Changes so change-log-mode will be used (now that Elpa release builds no longer overwrite files named ChangeLog with git log information). * hypb-ert.el (hypb-ert-sym, hypb-ert-sel): Change 2nd args to strings to fix Emacs 27 byte-compile error. 2021-05-01 Mats Lidell * hui-em-but.el (hbut-flash): Set defaults (hproperty:color-list): Use defined-colors 2021-04-30 Mats Lidell * hyrolo.el (hyrolo-highlight-face): Use the 'match face for rolo searches. (hyrolo-initialize-highlight-face): Remove since not needed when using 'match face. * hui-em-but.el (hbut-flash): Specify a face for flashing that supports light and dark background using built in functionality. (hproperty:background, hproperty:foreground) (hproperty:item-highlight-color, hproperty:but-color) (hproperty:set-flash-color, hproperty:set-item-highlight) (hproperty:set-face-after-init): Remove since not needed when using a fully specified face. 2021-04-30 Bob Weiner * hpath.el (hpath:at-p): hibtypes.el (pathname): Prevent from matching to a shell command within a semicolon separated sequence of commands. 2021-04-29 Bob Weiner * hyperbole.el (hyperb:init): Remove enhanced priority Hyperbole minor-mode from emulation-mode-map-alists. (hkey-initialize): Remove Hyperbole-specific C-h and C-c prefix maps and use of the corresponding global prefix maps as parent keymaps for hyperbole-mode. define-key does the right thing for minor modes without any of this. (hkey-help-set-key): Remove, not needed. 2021-04-28 Mats Lidell * Makefile (EL_COMPILE) (ELC_COMPILE): Add hui-dired-sidebar and hypb-maintenance 2021-04-28 Bob Weiner * hyrolo.el (hyrolo-grep-or-fgrep): Add. (hyrolo-mode-map): Repurpose {r} to do a new regexp HyRolo search, {C-u r} for string search, using above new command. This key had moved to previous matches but that is already bound to {Shift-TAB} and {M-TAB}. (hyrolo-bbdb-grep, hyrolo-google-contacts-grep): Let current-prefix-arg be nil after captured as arg so does not affect hyrolo-f/grep calls. man/hyperbole.texi (HyRolo Keys): Document new {r} binding. * hyperbole.el (hyperbole-mode): Add hyperbole-mode-hook. (hyperbole--enable-mode, hyperbole--disable-mode): 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 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. 2021-04-27 Bob Weiner * hui-mouse.el (smart-magit-display-file): Add and use in smart-magit* functions so when files from diffs are displayed, they utilize Hyperbole's referent display setting, hpath:display-where. man/hyperbole.texi (Smart Key - Magit Mode): Updated Smart Magit doc with the above. * hbut.el (gbut:ebut-program): Add to programmatically add global explicit buttons at the end of the personal button file. * hmouse-sh.el (hmouse-get-bindings, hmouse-get-unshifted-bindings): hmouse-key.el (hmouse-check-action-key, hmouse-check-assist-key, hmouse-set-bindings): Change from global bindings to hyperbole-mode ones. * hui-select.el (hui-select-at-p): Change test from '(and (bobp) (eobp))' to '(eobp)' only so never triggers at the end of a buffer, notably Hyperbole minibuffer menu help displays. * hyperbole.el (hyperbole-mode-specific-map): Define to shadow without overwriting global C-c bindings. 2021-04-27 Mats Lidell * test/hypb-tests.el (hypb:replace-match-string-after-27.1-test): Use separate test for replace matches that were fixed after Emacs 27.1. * test/hui-tests.el (hui-ibut-label-create-fails-if-label-exists): Use string-match. * test/hbut-tests.el (hbut-ib-create-label-fails-if-label-exists) (hbut-pathname-dot-slash-in-other-folder-should-fail-test): Use string-match. 2021-04-26 Bob Weiner * hui.el (hui:global-bind-key): Renamed from hui:bind-key and made that name bind keys within the hyperbole minor mode map. * hui-em-but.el (hproperty:but-add): Add make-overlay 4th arg = t to prevent highlighting from spreading to text inserted before an ebut. * hbut.el (hbut:key-to-label): Ensure is a string and if one char, is not a punctuation char. (ibut:to): Fix possible infinite loop if label being tested is one character long. This caused Action Key on "." in path variable values to hang. * hpath.el (hpath:path-variable-value-regexp, hpath:at-p): Improved regexp structure and expanded classes of excluded chars to prevent spurious path matches by hpath:delimited-possible-path. * hui-mini.el (hyperbole): Enable hyperbole-mode when invoked with {C-h h}. * hyperbole.el (hyperbole-help-map, hkey-help-set-key): Add to set help keys available only when Hyperbole is enabled. 2021-04-26 Mats Lidell * test/smart-org-tests.el (smart-org-mode-with-smart-keys-on-file-is-hypb-button) (smart-org-mode-with-smart-keys-buttons-on-file-is-hypb-button) (smart-org-mode-with-no-smart-keys-on-file-is-hypb-button): Tests for hsys-org-enable-smart-keys. * test/hy-test-helpers.el (hy-test-helpers:hypb-function-should-call-hpath:find): Test helper to verify any hypb function that should call hpath:find 2021-04-25 Mats Lidell * test/hsys-org-tests.el (hsys-org:cycle-on-header-cycles-visibility) (hsys-org:region-with-text-property-value, hsys-org:block-start-at-p) (hsys-org:org-link-at-p, hsys-org:org-target-at-p) (hsys-org:org-radio-target-link-at-p) (hsys-org:org-radio-target-def-at-p, hsys-org:org-radio-target-at-p) (hsys-org:org-internal-link-target-at-p, hsys-org:org-face-at-p): hsys-org tests * test/smart-org-tests.el (smart-org-mode-on-header-cycles-visibility): smart-org test * hsys-org.el (hsys-org-link-at-p): Use org-target-link-regexp for radio links (hsys-org-internal-link-target-at-p): Inverse boolean check 2021-04-25 Bob Weiner * hyperbole.el (hkey-override-local-bindings, hkey-install-override-local-bindings, hkey-init-override-local-keys, hkey-toggle-override-local-bindings): Remove, replaced by minor mode. man/hyperbole.texi (Hyperbole Key Bindings): Rename from Global Key Bindings. (Default Hyperbole Bindings): Rename from Default Global Bindings and remove discussion of overriding keys. hui-menu.el (hui-menu-options): Remove Toggle-Override-Local-Keys. hui-mini.el (hui:menus): Remove Override-Local-Keys. * hyperbole.el (hyperbole-mode): Finish documentation. * hpath.el (hpath:posix-mount-point-to-mswindows-alist): Made this an autoload since referenced in hyperbole. * hyperbole.el (hkey-set-key, hkey-maybe-set-key): Add for use with Hyperbole minor mode. (hkey-initialize): hmouse-sh.el (hmouse-set-key-list): Rewrote to use above functions. * hsys-org.el (hsys-org-link-at-p): Fix so any of the 3 expressions may match. (hsys-org-enable-smart-keys): Add to allow for 3 levels of Smart Key support in Org mode. (hsys-org-hbut-activate-p): hibtypes.el (org-link-outside-org-mode): hui-mouse.el (smart-org-mode): Updated to use hsys-org-enable-smart-keys. (inhibit-hsys-org): Remove, replaced by hsys-org-enable-smart-keys. man/hyperbole.texi (Questions and Answers): Updated Org mode section with this new variable. (hsys-org-hbut-activate-p): Remove, move logic to org-mode ibtype. 2021-04-24 Bob Weiner * hyperbole.el (hyperbole-mode-lighter): Defined so user can remove Hypb modeline display by setting this to "" or nil. * hib-kbd.el (kbd-key): With point within the double quotes of a (kbd) call, treat it as a key series (kbd-key) implicit button. * hmouse-tag.el (smart-lisp-at-tag-p): Ignore any double quoted strings. * hibtypes.el (mail-address): Change so only need to list parent modes in mail-address-mode-list to get a match, e.g. prog-mode. (mail-address-mode-list): Shrunk to just top-level parent modes. * hui.el (hui:htype-help): Allow '*' as completion choice for interactive completion frameworks where RET does not send an empty string but the first pre-selected choice (which will now be '*'). * kotl/kotl-autoloads.el: Remove unreleased kexport-collapse* files from here. * INSTALL: Update installation instructions for new hyperbole-mode 2021-04-22 Mats Lidell * test/hpath-tests.el (hpath:load-modifier-loads-file) (hpath:load-modifier-with-plain-file-loads-file-from-load-path): Load modifier tests. * test/hbut-tests.el (hbut-load-modifier-loads-file) (hbut-load-modifier-with-plain-file-loads-file-from-load-path): Load modifier tests. 2021-04-21 Bob Weiner * hib-social.el (hibtypes-social-hashtag-alist): Fix to use && for executing git references under any OS as required by Windows. (git-reference): Eliminate ~ that Windows shell can't handle in shell paths. (git-reference): Chop commit numbers in help buffer names to a max of 10 chars for brevity while maintaining uniqueness. * hib-debbugs.el (debbugs-query:at-p): Fix to allow : immediately after bug link. * hib-kbd.el (kbd-key:help): Allow for an empty string input. hbut.el (hbut:key-to-label): Fix to return an empty label string when given an empty string as input. Can prevent a failure in hpath:call. * hactypes.el (exec-shell-cmd, exec-window-cmd): Couple 'cd' and command with '&&' rather than semicolon. Also, expand default-directory to eliminate '~' home dir refs. Both of these for better Windows compatibility. 2021-04-20 Bob Weiner * Makefile (tests, all-tests): Add these target aliases. * hui-mouse.el (hkey-alist): Move smart-magit-mode handling to a higher priority than Hyperbole button handling so implicit pathname buttons don't trigger. This makes behavior across magit lines consistent and pathnames can still be displayed using the Assist Key (invokes magit {RET} key). * hyrolo.el (hyrolo-to-entry-end): Default to using entire hyrolo-hdr-and-entry-regexp to determine the outline depth when no hyrolo-entry-group-number is included in the expression. Fixes issue that could call (goto-char nil). * hib-doc-id.el (doc-id-online-regexp): Tighten matching to disallow any type of whitespace besides spaces within the document link. (link-to-doc, doc-id:help): Fix bug in hyrolo-grep call not using 'no-display argument causing invalid return type. (doc-id-p): Regexp-quote delimiters and allow for whitespace within them. * kotl/kotl-autoloads.el: Remove reference to unreleased kexport-menu.el to fix bug#47916. 2021-04-20 Mats Lidell * test/hpath-tests.el (hpath:find-exec-shell-cmd-test, hpath:find-exec-window-cmd-test): Path prefix tests. * test/hbut-tests.el (hbut-find-exec-shell-cmd-test, hbut-find-exec-window-cmd-test): Path prefix tests. 2021-04-19 Bob Weiner * hsys-org.el (hsys-org-link-at-p): Change to use org-link-bracket-re so match includes the second display part of an Org link and matches whole link expression. (hsys-org-radio-target-def-at-p): Change org-linked-text property to newer, org-target to properly match radio targets. (hsys-org-radio-target-link-at-p): Correct and simplify. * hib-doc-id.el: Changed to use "[-" and "-]" delimiters because "[" and "]" are too common and mistakenly match to part of Org links. * hibtypes.el (mail-address-regexp): Resolve bug#4788, allow first char in address to be a digit. * hib-debbugs.el (debbugs-version-sufficient-p): No-op when debbugs package not found 2021-04-19 Mats Lidell * hpath.el (hact): Add dependency * hact.el (hpath.el): Remove dependency 2021-04-18 Mats Lidell * test/hibtypes-tests.el (ibtypes::pathname-with-dash-loads-file-test): Bug fixed - Removed expected failed. * test/hbut-tests.el (hbut-pathname-with-dash-loads-file-test): Remove expected fail and added check for file loading * test/hbut-tests.el (hbut-mail-address-test, hbut-pathname-test) (hbut-pathname-lisp-variable-test, hbut-pathname-env-variable-test) (hbut-pathname-emacs-lisp-file-test, hbut-pathname-anchor-test) (hbut-pathname-anchor-line-test, hbut-pathname-line-column-test) (hbut-pathname-load-path-line-column-test) (hbut-pathname-with-dash-loads-file-test, hbut-pathname-directory-test) (hbut-pathname-dot-slash-in-other-folder-should-fail-test) (hbut-annot-bib-test, hbut-ctags-vgrind-test, ibtypes::etags-test) (hbut-text-toc-test, hbut-dir-summary-test, hbut-rfc-test) (hbut-man-apropos-test, hbut-info-node-test): ibtypes test cases converted to use action-key * test/hibtypes-tests.el (ibtypes::pathname-path-variable-test): Ert test for path variables. * test/hpath-tests.el (hpath:path-at-point-in-path-variable-test) (hpath:path-at-point-in-path-variable-shorter-than-three-colons-returns-nil-test): Ert test for path variables. * test/hbut-tests.el (hbut-pathname-path-variable-test) (hbut-pathname-path-variable-with-two-colons-is-one-file-test) (hbut-pathname-path-variable-with-three-colons-is-a-path-test) (hbut-pathname-path-variable-with-short-first-elemet-is-tramp-url-test): Test for path variables. * Makefile (ELC_KOTL): Add kotl/kprop-em.elc (ELC_COMPILE): Remove kprop-em.elc 2021-04-18 Bob Weiner * README.md, README.md.html, INSTALL: Update Hyperbole activation instruction to use (hyperbole-mode 1). * hpath.el (hpath:substitute-dir): Remove hpath:validate calls, allowing non-existent filenames; validate elsewhere. This resolves improper replication of final part of a path, e.g. file/file. * kotl/MANIFEST: Add kotl-orgtbl.el and add copyright and documentation to that file. * hui-window.el (hmouse-alist): Move minibuffer click handler to after drags so can drag from minibuffer to another window as an action if desired. hui-mouse.el (hkey-alist, smart-custom, smart-custom-assist): ivy-mode, Custom-mode - Add Action/Assist Mouse and Key support for these modes. * test/hibtypes-tests.el (ibtypes::pathname-with-dash-loads-file-test): Remove expected failure as this has been resolved. * hui.el (hui:ebut-modify): Fix bug attempting to use loc attribute before it was set. Set this earlier in the function, separate from other attributes. * hpath.el (hpath:at-p): Moved remote path handling to lower priority than PATH variable value handling; helps prevent false positives for remote paths. * DEMO (Implicit Buttons): Add Table of Contents to long Implicit Buttons section. * hmouse-drv.el (hkey-insert-region): Improve errors and allow for throwing regions within a single buffer as long as the destination is outside of the selected region. * hibtypes.el (text-toc): Use string-trim to remove occasional stray newline at end of toc sections. * hpath.el (hpath:auto-completing-read-modes): Add to suppress automatic press of ? key when displaying hpath:choose-from-path-variable completions when any of these modes are enabled. (hpath:at-p, hpath:is-p): Tighten matches to reduce improper multi-line selections. * hpath.el (hpath:is-path-variable-p): Add to test if a string is a path-related variable. (hpath:choose-from-path-variable): hibtypes.el (pathname): Use this new function and document path variable handling. * hibtypes.el (require 'hversion): Add this since added calls to hyperb:* into this file. 2021-04-17 Mats Lidell * test/hbut-tests.el (hbut-ib-url-with-label): Bug solved - removed expected failed. * test/hui-tests.el (hui-ibut-label-create) (hui-ibut-label-create-fails-if-label-exists): Test for hui.el * test/hbut-tests.el (hbut-ib-create-label) (hbut-ib-create-label-fails-if-label-exists): Moved to hui-tests.el 2021-04-17 Bob Weiner * hpath.el (hpath:path-variable-regexp, hpath:choose-from-path-variable): Add. hibtypes.el (pathname): Add Action Key activation of *PATH* environment variables and completion-based selection of the desired choice which Hyperbole then displays. * hmouse-tag.el (smart-lisp-at-tag-p): Ignore referenced environment variables (include $). * hpath.el (hpath:delimited-possible-path): Ignore space delimited / or \\ which look like root directories but are not. * hibtypes.el (rfc-toc): Make buffer-name match tighter so does not match to *rfc toc* buffers. * hibtypes.el (pathname): hpath.el (hpath:expand): Fix locate-library calls to not add suffixes and thereby ignore non-Lisp files with generic names that match Lisp library names when a suffix is added. * hui-mouse.el (hkey-alist): Raised priority of occur modes so don't trigger tag finding when on an occurrence line. * hibtypes.el (rfc-toc): hactypes.el (rfc-toc): Fix to skip TOC and display only section header lines to jump to sections. hib-debbugs.el (debbugs-version-sufficient-p): Eliminate call out to shell to get debbugs.el version number; this fixes bug where browse-url-emacs sets current-directory to a url and a shell cmd invoked from that buffer can't do a 'cd' and fails. hpath.el (hpath:rfc): hactypes.el (link-to-rfc): Change to using http to retrieve RFCs instead of ftp since this is disabled in many environments. Change hpath:find call to browse-url-emacs so is always displayed in Emacs. * hpath.el (hpath:delimited-possible-path): Prevent match to strings with embedded double quotes. (hpath:at-p): Handle ":.::" current dir expressions in path variables. (hpath:call): Fix yesterday's handling of anchor only references like "#Smart Keys" from DEMO file. (hpath:path-variable-value-regexp): For Windows, replace : should be ;. (hpath:is-p): Prevent from matching to PATH-type strings with at least 4 entries; fixes Action Key on Windows path within PATH variable. 2021-04-16 Bob Weiner * hpath.el (hpath:at-p): Fix to allow non-existent paths (or those that possibly can't be resolved) if path at point starts with a special prefix character, e.g. "!date", to run the POSIX date cmd. (hpath:compressed-suffix-regexp): Add this variable and use in hpath:expand-with-variable to properly expand compressed pathnames. (hpath:expand): For compressed Elisp libraries, add any found compressed suffix to the path. (hpath:path-variable-value-regexp): Add. (hpath:at-p): Use above variable and detect paths within PATH variables so Action Key can display them. (hpath:is-p): Fix to return nil if path ends up as an empty string. 2021-04-15 Mats Lidell * test/hibtypes-tests.el (ibtypes::pathname-anchor-test) (ibtypes::pathname-anchor-line-test, ibtypes::pathname-line-column-test) (ibtypes::pathname-load-path-line-column-test) (ibtypes::pathname-with-dash-loads-file-test) (ibtypes::pathname-directory-test) (ibtypes::pathname-dot-slash-in-other-folder-test) (ibtypes::pathname-dot-slash-in-same-folder-test): Pathname test cases. 2021-04-15 Bob Weiner * hpath.el (hpath:call): Add to wrap functions that test path validity, stripping and then re-adding Hyperbole recognized path prefix and suffix after path validity is verified. (hpath:is-p): Use hpath:call wrapper and document stripping of file:// prefix. * hui-window.el (hmouse-drag-same-window): Rewrite to actually detect a drag. (hmouse-press-release-same-window): Detect if Action or Assist Key (based on assist-flag) has been pressed and released in the same window. 2021-04-14 Bob Weiner * hmouse-drv.el (hkey-toggle-debug): Fix doc string. * hpath.el (hpath:is-p): Add support for :line-num:col-num. 2021-04-13 Bob Weiner * hibtypes.el (hibtypes-path-line-and-column-regexp): Rename to hpath:section-line-and-col-regexp and move to hpath.el hpath.el (hpath:file-line-and-column): Use hpath:line-and-col-regexp. * hpath.el (hpath:expand-with-variable, hpath:auto-variable-alist, hpath:expand): Add to generalize file suffixes that trigger Hyperbole to use a path search for files of the type (implicit pathname expansion). hpath.el (hpath:find, hpath:file-line-and-column): hibtypes.el (pathname-line-and-column): Use hpath:expand. * Makefile (HY-TALK): Add to Hyperbole distribution; slides and demo file discussing the history and utility of Hyperbole. * hact.el (hact): Simplify macro. (action:path-args-abs, action:path-args-rel): Rename to hpath:absolute-arguments and hpath:relative-argumentss and move to hpath.el to eliminate circular dependency (hpath.el requires hact macro). * hsettings.el (hyperbole-web-search): Optimize and make service-name matching case-insensitive. 2021-04-11 Mats Lidell * test/hibtypes-tests.el (ibtypes::ctags-vgrind-test) (ibtypes::etags-test): Make tests independent of default directory. * test/demo-tests.el (demo-manifest-test): Make test more robust. * hypb-ert.el (hypb-run-all-tests): Run all hyperbole tests. 2021-04-07 Bob Weiner * hbut.el (ibut:label-separator): Explain usage properly in doc string. (ibut:to-text): Add to leave point in button text of ibuts with separate labels. (hbut:act): Move point with ibut:to-text to fix bug where an ibtype expects point to be within the button text but previously was left within the label. * hpath.el (hpath:url-regexp, hpath:url-regexp2, hpath:url-regexp3): Allow @ symbols in URLs 2021-04-07 Mats Lidell * test/hypb-tests.el: Rename test file 2021-04-05 Mats Lidell * test/hypb-test.el (hypb:replace-match-string-test): ert test for hypb:replace-match-string 2021-04-05 Bob Weiner * hibtypes.el (hypb-ert): Load Hyperbole test runner ibtypes. 2021-04-04 Mats Lidell * HY-NEWS: Section about hypb-ert Makefile (EL_COMPILE, ELC_COMPILE): Add hypb-ert hypb-ert.el (hypb-run-ert-test-symbol, hypb-run-ert-test-selector) (hypb-ert-sym, hypb-ert-sel): Add implicit buttons for running ert tests. 2021-04-03 Mats Lidell * man/hyperbole.texi (Smart Key - Todotxt Mode): Add node to document Todotxt support * HY-NEWS: Add section for Todotxt mode * man/hkey-help.txt: Add section about Todotxt mode 2021-04-02 Mats Lidell * hui-mouse.el (hkey-alist, smart-todotxt, smart-todotxt-assist): Add support for todotxt-mode 2021-03-26 Bob Weiner * hypb.el (hypb:get-completion): Extract from part of `choose-completion' from "simple.el". hargs.el (hargs:completion): Utilize hypb:get-completion to match with current Emacs. * hui-window.el (hmouse-emacs-modeline-event-p): (hmouse-inactive-minibuffer-p): (hmouse-x-coord): (hmouse-y-coord): hmouse-sh.el (hmouse-move-point-emacs): Add window-valid-p check ahead of window-minibuffer-p to prevent errors if clicked within a transient window like which-key. 2021-03-21 Mats Lidell * test/hbut-tests.el (hbut-defal-url-%s): Add test for %s format-style. 2021-03-21 Bob Weiner * hbut.el (defal): Add support for use of %s format-style grouping 1 arg substitution. man/hyperbole.texi (Action Button Link Types): Documented. DEMO (defal): Add new example of Google file type search button. 2021-03-20 Stefan Monnier * test/demo-tests.el (demo-factorial-ebutton-test): test/hibtypes-tests.el: Mark those files as not-compilable since they require packages that may not be available during compilation. * hyperbole.el: Fix release version to one accepted by ELPA. (hyperb:init): Don't use `after-load-alist` as a hook, since it isn't one. (hyperbole-mode): New minor mode. Loading a file should not change Emacs's behavior, so move the toplevel code to this minor mode: users should enable this minor mode instead of loading the file. * hypb-maintenance.el: Fix compilation failure in elpa.git checkout. 2021-03-14 Bob Weiner * man/hyperbole.texi (Smart Key - Magit Mode): hui-mouse.el (smart-magit, smart-magit-assist): With Action/Assist Mouse Key press on a read-only header line, cycle visibility of diff/all sections in the buffer. 2021-03-14 Mats Lidell * test/hy-test-dependencies.el (package-installed-p): Check if with-simulated-input is installed. * test/demo-tests.el (demo-smart-scrolling-non-proportional-test): Make test more robust * test/hibtypes-tests.el (ibtypes::pathname-env-variable-test): Use env for HOME to not depend on machine or OS specifics * test/hbut-tests.el (hbut-ib-link-to-file-with-label-variants): Test variants of label separation chars and lengths (hbut-ib-create-label): Test creation of label (hbut-ib-create-label-fails-if-label-exists): Check creation fails when label exists * test/hy-test-dependencies.el (package-installed-p): Added with-simulated-input 2021-03-13 Bob Weiner * hbut.el (defil): Improved to handle both symbol and string representations of Hyperbole action types. 2021-03-12 Mats Lidell * test/hbut-tests.el (hbut-verify-defal, hbut-defal-function): Test defal with function. (hbut-ib-link-to-file-with-label, hbut-ib-url-with-label): Test for implicit buttons with labels. 2021-03-11 Bob Weiner * hbut.el (defil, defal): If LINK-EXPR is a function and the button is an Action Button, then the function receives just the text following the action function name. 2021-03-07 Bob Weiner * hibtypes.el (debugger-source): In Python tracebacks, may be on a line just below the source reference line so if not on a Hyperbole button, move back a line and check for a source line again. 2021-03-06 Mats Lidell * test/hibtypes-tests.el (ibtypes::ctags-vgrind-test): (ibtypes::etags-test): Updated since tags info changed * test/hbut-tests.el (hbut-defal-url, hbut-defal-key-sequence) (hbut-defil-it, hbut-defil, hbut-defil-url, hbut-defil-key-sequence): Added more tests for defal and defil. * test/hy-test-helpers.el (hy-test-helpers:action-key-should-call-hpath:find): Add helper for verifying hpath:find is called 2021-02-28 Bob Weiner * (hyrolo-grep-file): Disable magit-auto-revert-mode-enable-in-buffers for hyrolo buffers; not needed and can slow/hang file loading. Fixes issue reported by Gravitypost. 2021-02-28 Mats Lidell * test/hpath-tests.el (hpath:find-report-lisp-variable-path-name-when-not-exists): Verify not found file name error message contains the expanded lisp variable. * hbut.el (defil): Use FIXEDCASE is non-nil to not alter the case of the replacement text. * test/hbut-tests.el (hbut-defal, hbut-defal-fails-on-file-missing) (hbut-defil): Test for defal and defil implicit button macros. * (demo-man-appropos-test, ibtypes::man-apropos-test): Mock call to man. 2021-02-21 Bob Weiner * hui-mouse.el (smart-magit-tab): Do what TAB does unless TAB does nothing in the current mode, then do what RET does. (smart-magit-listing-modes): Removed, no longer needed. (smart-magit-assist): Fixed RET invocation to not prompt. * hib-social.el (git-commit-reference): Relaxed matching to match to commit wherever surrounded by whitespace. * hypb.el (hypb:fgrep-git-log-activate, hypb:fgrep-git-log-mode): (hypb:fgrep-git-log): Improved to use its own major mode, allowing for RET to use the Action Key (previously RET did not work). * DEMO (Action Buttons): Moved to after pathname implicit buttons and added Defining New Action Button Types subsection. * hyperbole.el (hkey-define-key): Removed, had bug that did not use prefix keymap properly; use hkey-global-set-key with a full key sequence instead. (hkey-initialize): Replaced calls to above function. 2021-02-20 Mats Lidell * test/hibtypes-tests.el (mail-address-at-p-test) (mail-address-at-p-no-mail-should-fail-test, ibtypes::mail-address-test) (ibtypes::pathname-test, ibtypes::pathname-lisp-variable-test) (ibtypes::pathname-env-variable-test) (ibtypes::pathname-emacs-lisp-file-test, ibtypes::annot-bib-test) (ibtypes::ctags-vgrind-test, ibtypes::etags-test) (ibtypes::text-toc-test, ibtypes::dir-summary-test, ibtypes::rfc-test) (ibtypes::man-apropos-test, ibtypes::info-node-test): Tests for hibtypes. * test/hib-social-tests.el (hib-social-should-browse-twitter-url) (hib-social-twitter-test, hib-social-should-browse-github-url) (hib-github-user-default-test, hib-github-ignore-default-test): Test for hib-social. * test/hy-test-dependencies.el: Load prerequisites for tests 2021-02-18 Bob Weiner * hibtypes.el (grep-msg): Added UNIX shell error support. 2021-02-15 Bob Weiner * hmouse-drv.el (hkey-window-link, hkey-ace-window-setup): Added Ace Window 'w' command to use hui:link-directly to instantly create a link between the selected window and one chosen via Ace Window. hui.el (hui:hbut-label): Added optional label PROMPT override. (hui:link-directly): Used PROMPT parameter here. hmouse-drv.el (hmouse-choose-windows): Simplified prompts. hui.el (hui:link-directly): Added optional depress-window and release-window params so can be called with non-Action Key window pairs. Also, made interactive with mouse key selection of button and referent windows. man/hyperbole.texi (Keyboard Drags): DEMO (Creation via Ace Window): HY-NEWS: Added {M-o w} command. * hypb.el (hypb:def-to-buffer): Added for quick def copying and insertion in another buffer. Can be bound and used in key series. * hbut.el (defil): Fixed improper call of regexp-quote when link-expr was not a string. * hib-social.el (git-commit-reference): Added flash of button label 2021-02-14 Bob Weiner * man/hyperbole.texi (Programmatic Button Creation): Documented ebut:program. * hib-social.el (git-commit-reference): Loosened to match to single line commit log entries with text following the commit number. * hypb.el (hypb:fgrep-git-log, hypb:grep-git-log): Added to allow f/grepping over repo changesets and listing associated commit log messages. 2021-02-11 Bob Weiner * hbut.el (def-edebug-spec defib): hact.el (def-edebug-spec defact): Added edebug-defun support for ibtypes and actypes courtesy of Mats. 2021-02-08 Bob Weiner * man/hyperbole.texi (Creating Implicit Button Types): Renamed from Implicit Button Types Creation and added 2 new subsections on simplified link type creation. 2021-02-07 Bob Weiner * hui-mouse.el (smart-magit-listing-modes): Added list of major modes for which the Action Key should run RET instead of TAB. (smart-magit): Applied this new custom variable. * hbut.el (defal): Greatly clarified use in doc string. * hibtypes.el (dir-summary): Fixed so point is left in file displayed by action key press, not the MANIFEST. * hpath.el (hpath:delimited-possible-path): Added support for file:// URLs. 2021-01-31 Bob Weiner * hyrolo.el (hyrolo-display-format-function): Separated records by 1 newline, not 2; unsure how 2 were ever added. (hyrolo-fgrep): hyrolo-logic.el (hyrolo-fgrep-logical, hyrolo-map-logic): hyrolo-demo.el (hyrolo-demo-fgrep-logical): Changed default to not show full hierarchy of records but just matching sub-levels, for more intuitive logical expression matching. Made rolo-logical searches in DEMO work. 2021-01-30 Mats Lidell * Makefile (test-ert, test-all): Add ert test targets * test/hib-kbd-tests.el (kbd-key-hy-about-test) (kbd-key-hy-demo-factorial-test): Added. * test/hactypes-tests.el (display-boolean-true-test) (display-boolean-false-test): Added. * test/hy-test-helpers.el (hy-test-helpers:consume-input-events) (hy-test-helpers:should-last-message): Added helper functions. * test/demo-tests.el (demo-smart-mouse-keys-ref-test) (demo-smart-mouse-keys-ebut-test, demo-table-of-contents-test) (demo-smart-scrolling-proportional-test) (demo-smart-scrolling-non-proportional-test, demo-action-key-help) (demo-assist-key-help, demo-window-grid-22-test) (demo-window-grid-33-test, demo-hy-rolo-test, demo-hy-info-test) (demo-hy-history-test, demo-implicit-button-test) (demo-implicit-button-action-button-action-type-invocation-test) (demo-implicit-button-action-button-function-calls-test) (demo-implicit-button-action-button-variable-display-test) (demo-implicit-button-hash-link-test) (demo-implicit-button-line-and-column-test) (demo-org-hide-header-test, demo-manifest-test) (demo-mail-compose-test, demo-social-twitter-test, demo-www-test) (demo-github-user-default-test, demo-github-ignore-default-test) (demo-occur-test, demo-annotated-reference-test) (demo-man-appropos-test, demo-factorial-test) (demo-factorial-ebutton-test): Test cases (demo-should-browse-url): Test helper 2020-12-03 Bob Weiner * hibtypes.el (Info-node): Allowed for backslash double-quotes around node name, e.g. when in a doc string. 2020-11-22 Bob Weiner * hpath.el (hpath:trim): Fixed to not trim trailing quoted double quote, resolving bug#43644. * hibtypes.el (mail-address): When mail-address-mode-list is set to nil, activated this ibtype in any major mode. 2020-11-16 Bob Weiner * kotl/kexport.el (kexport:html): Lowercased HTML tags for HTML5. 2020-11-08 Bob Weiner * hsettings.el (hyperbole-toggle-messaging): Moved from hyperbole.el to here to prevent unknown function error during package byte compilation. * hibtypes.el (man-apropos): Prevented matches to log lines like: WARNING: (func-name) - warning description 2020-11-07 Bob Weiner * kotl/kotl-mode.el (kotl-mode:copy-absolute-klink-to-kill-ring): (kotl-mode:copy-relative-klink-to-kill-ring): Added new commands to copy kcell refs to the kill ring. (kotl-mode:copy-absolute-klink-to-register): (kotl-mode:copy-relative-klink-to-register): Added new commands to copy kcell refs to registers. * kotl/kview.el (kcell-view:reference): Updated doc to explain handling of relative-dir = nil. (kcell-view:absolute-reference): Added for kcell references with absolute paths. 2020-11-02 Mats Lidell * hpath.el (hpath:external-display-alist-mswindows): (hpath:internal-display-alist): Add customization. (hpath:external-display-alist-x): Add customization. Use xdg-open to use users preferred app in window system. 2020-11-01 Bob Weiner * hbut.el (ebut:program): Added a programmatic way to create explicit buttons. hui.el (hui:ebut-create): Updated doc to highlight that this is for interactive use. hbdata.el (hbdata:actype): Updated to handle programmatically created explicit buttions whose action types may be regular Elisp functions. 2020-10-27 Bob Weiner * hbut.el (defal, defil): Added to allow non-programmers who understand simple regular expressions to create their own implicit button types. ibtype:create-action-link-type is an alias for defal which creates a new action button link type given a type symbol/name and a regular expression that resolves into a key series, URL or path to display. ibtype:create-regexp-link-type is an alias for defil; it behaves just like defal but requires starting and ending delimiters as well as a button text matching regexp and a link substitution regexp, allowing for more complex regexp substitution, not just the simpler action button formats. * hib-kbd.el (kbd-key:is-p): Added to test if a string is a delimited key series. 2020-10-25 Bob Weiner * hibtypes.el: man/hyperbole.texi (Implicit Button Types): Updated doc. 2020-10-22 Bob Weiner * hact.el (symset:clear): Added to empty a symset like ibtypes to reset ibtype priorities. hibtypes.el: Changed require to load for all hibtype files so are always added when the ibtype priority list is reset. 2020-10-18 Bob Weiner * hypb.el (hypb:replace-match-string): hpath.el (hpath:substitute-match-value): Added optional 5th arg, fixedcase, which can be used to prevent case changes in replaced strings. (hpath:substitute-var-name, hpath:is-p, hpath:substitute-match-value): Used fixedcase arg in hypb:replace-match-string calls. (hpath:substitute-value): Used fixedcase arg in hpath:substitute-match-value call. (hpath:is-p): Handled empty string return value from hpath:substitute-value call. These changes fixed improper path variable subst where the path contains mixed case characters. * kotl/kotl-mode.el (kotl-mode:action-key): Added Org table support. (kotl-mode): Automatically enabled orgtbl-mode minor mode. Forced load of org-table and kotl-orgtbl for this. (kotl-mode-map): Bound demotion and promotion of trees to all of the following (inside Org Table is when orgtbl-mode minor mode is active and point is in a 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-> | |----------------------------+-----------------------------| |----------------------------+-----------------------------| | 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-> | |----------------------------+-----------------------------| 2020-10-11 Bob Weiner * Makefile (EL_KOTL, ELC_COMPILE): Added kotl/kotl-orgtbl.{el,elc}. kotl/kotl-orgtbl.el (orgtbl-tab): Added to support Org Table minor-mode use in Koutlines. kotl/kotl-mode.el (hsys-orgtbl): Required this new library. (kotl-mode-map): Bound M- arrow keys to closely match those in Org mode for tree promotion/demotion and moving text lines up and down. 2020-10-10 Bob Weiner * kotl/kotl-mode.el (orgtbl-tab): Updated Org minor-mode table use of {TAB} key to allow promotion and demotion of koutline trees when given an explicit prefix argument. Otherwise, tabs through and justifies table fields normally. 2020-10-04 Bob Weiner * kotl/kexport.el (kexport:html-replacement-alist): Corrected \\0 with \0 so html export works properly. * hibtypes.el (hsys-www): Moved to lower priority than pathname implicit buttons so they can handle file:// links, especially with :line-number suffixes. Fixes bug#43794. * hsys-org.el (hsys-org-mode-p): Added org-agenda-mode check. hib-org.el (org-mode): Changed to apply inhibit-hsys-org to org-agenda-mode as well. * hibtypes.el (hib-debbugs): Raised priority above social and markdown links. (org-link-outside-org-mode): Added to lower priority below other Hyperbole link types and removed from hsys-org.el. * hib-org.el: Moved Org mode implicit button and action types to this new file to allow for separate handling of Org links outside of Org mode. Makefile (EL_COMPILE, ELC_COMPILE): Added hib-org.el{c}. ============================================================================== V8.0.0 changes ^^^^: ============================================================================== 2020-09-21 Bob Weiner * hversion.el: Released 7.1.3. 2020-09-06 Bob Weiner * hyperbole.el (hkey-define-key): Added to support help-map being somewhere other than C-h. (hkey-initialize): Updated to support the above. hui-mini.el (hui:menu-doc): Updated to support the above. Trigger an error if the 'hyperbole' command is not bound to a key. * hmouse-drv.el (hkey-help): Fix to properly reflect and describe mouse drags and only reflect mouse usage if last-command-event was a mouse event. Move clearing of action/assist key variables until after the last specified action is recorded. * hib-kbd.el (kbd-key): Improve brace matching by temporarily tagging braces with list delimiter syntax. * hypb.el (hypb:set-raw-syntax-descriptor): Add so can restore saved syntax table entries. (hypb:get-raw-syntax-descriptor): Add to get raw syntax descriptors. Emacs does not provide these functions. * hui-window.el (smart-coords-in-window-p): Ensure any window returned is still valid and fix eventp condition to return window rather than t. 2020-08-03 Bob Weiner * hui.el (hui:ebut-delete-op, hui:ibut-delete-op): Display deletion msg when used in a key series or kbd macro. * hbut.el (ibut:delete): Fix to pass key instead of but symbol to ibut:to. 2020-08-02 Bob Weiner * hbut.el (hbut:key-src-set-buffer): Fixed explicit button creation in a new file that has not yet been saved. * hib-social.el (git-reference, hibtypes-git-use-magit-flag): Added this flag. If Magit is available, when activating a git directory button, use Magit rather than Dired. 2020-08-01 Bob Weiner * hui-mini.el (hui:menu-get-keys): Cleared hui:menu-keys to prevent multiple calls from concatenating results. * hmouse-drv.el (hkey-help): Added note that implicit button types are displayed in highest priority first order when listing all of them. * man/hyperbole.texi (Smart Key - Helm Mode): (Smart Key - Magit Mode): Added new nodes to document these. * kotl/kotl-mode.el (kotl-mode): Used setq-local to ensure fill-paragraph-function is set only for kotl-mode. * hmouse-drv.el (hkey-help): Fixed to not show 'OR' before first 'CALL' listing and to only display Action/Assist Mouse Button contexts when last use was ia mouse button and not keyboard. Also, displayed whether showing mouse or keyboard help. * hmouse-drv.el (hmouse-key-release-window): Required position of last action/assist mouse key release event. This fixed the problem of improperly registering a drag to outside of an emacs frame because action/assist-key-release-window was not set properly. (hmouse-function): Sent action/assist-key-release-position as argument to hmouse-key-release-window call. 2020-07-29 Bob Weiner * man/hkey-help.txt: Added magit modes. hui-mouse.el (smart-magit, smart-magit-assist): Added. (hkey-alist): Added support for magit modes. * kotl/kotl-mode.el (kotl-mode:eolp): Added optional 'next-char-visible' arg. (kotl-mode:action-key, kotl-mode:assist-key): hui-mouse.el (hkey-alist): In kotl-mode, matched to eol only if following char is not invisible. This allows Action Key to expand a tree when point is on the ellipsis (invisible portion of tree). 2020-07-28 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Set outline-regexp so outline-on-heading-p and smart-outline-subtree-hidden-p use it and the Action Key expands cells properly. * hyperbole.el (outline-invisible-in-p): Fixed to detect if tree is collapsed anywhere. 2020-07-27 Mats Lidell * hui-dired-sidebar.el: Added support for dired-sidebar. 2020-07-26 Bob Weiner * hibtypes.el (hsys-org): Moved org links/refs to near top of priority list so things like URLs embeded within Org links are handled by Org, not Hyperbole. (markdown-follow-inline-link-p): Fixed to defer in-file links with point on the link title to the `pathname' ibtype since markdown-follow-link-at-point does not handle them properly. 2020-07-25 Bob Weiner * hib-kbd.el (kbd-key:execute-special-series): Added and used in kbd-key:act to make key series work properly when helm-mode is enabled. Counsel-mode works without any change. 2020-07-23 Bob Weiner * hui.el (hui:ibut-label-create): Fixed to skip back past opening delimiter before adding new label. 2020-07-22 Bob Weiner * hsys-org.el (org-mode): Added support for global Org link activation (Org links outside of Org buffers) and for Org Agenda item activation. 2020-07-21 Bob Weiner * hyperbole.el (hkey-global-set-key): Documented. 2020-07-19 Bob Weiner * hyperbole.el (hyperb:init): Remove WSL abbrev of /mnt/c as /c since may not exist. 2020-07-08 Bob Weiner * hbut.el (hbut:delete, ibut:delete): Added. 2020-07-08 Bob Weiner * hbut.el (gbut:to): Added to move to a global button file button. ============================================================================== V7.1.3 changes ^^^^: ============================================================================== 2020-07-08 Bob Weiner * hversion.el: Released 7.1.2. * hmouse-sh.el (hmouse-drag-region): Added. (hmouse-unshifted-setup): Bound down-mouse-1 to hmouse-drag-region to support clickable Emacs buttons and proper highlighting when dragging mouse-1. This also allowed for deletion of Info-mode-map mouse-1 bindings. 2020-07-05 Bob Weiner * hbut.el (ibut:to): Fix not handling ibut names by substituting ibut:label-p call for ibut:at-p. * hui-mini.el (hyperbole-set-key): Like global-set-key but binding is a Hyperbole minibuffer key series. (hui:menu-keys): Added. (hui:menu-act): Cleared hui:menu-keys. (hui:menu-item): Saved hui:menu-keys. (hui:get-keys, hui:menu-get-keys): Added. man/hyperbole.texi (Binding Minibuffer Menu Items): Added. * hib-kbd.el (kbd-key:hyperbole-mini-menu-key-p): Handled empty string properly. * man/hyperbole.texi (Global Buttons): Documented Delete command. hui-menu.el (infodock-hyperbole-menu): Global-Button/Delete - Added. hui-mini.el (hui:menus): Gbut/Delete - Added. hui.el (hui:gbut-delete, hui:hbut-delete, hui:ibut-delete-op): Added. hui.el (hui:hbut-delete-confirm-flag): man/hyperbole.texi (Deletion): Renamed from hui:ebut-delete-confirm-p. hbut.el (hbut:delete, ibut:delete, gbut:delete): Add. 2020-07-04 Bob Weiner * hbut.el (gbut:to): Added to move to a global button file button. 2020-06-28 Bob Weiner * hload-path.el: Used (setq hyperb:dir (file-truename hyperb:dir)) only after Hyperbole paths have been added to load-path, so that if they are symlinks, the symlink name rather than the truename is used there since the package manage usses the symlink name and may have added such a path already. * hmouse-drv.el (quit-window): Handled primitive functions when replacing this command. * hypb.el (hypb:function-symbol-replace): Made a no-op if symbol-function is a non-Lisp primitive. Also, replace single clause 'if' calls with 'when' or 'unless'. 2020-05-09 Bob Weiner * kotl/kotl-mode.el (beginning-of-visual-line, end-of-visual-line, kill-visual-line): Overrode in kotl-mode-map. 2020-03-25 Bob Weiner * kotl/kotl-mode.el (kotl-mode:yank): Fix hypb:replace-match-string call to use a replacement function rather than a string containing "\\0" which doesn't work. 2020-03-11 Bob Weiner * kotl/klink.el (require 'kcell): Removed, caused recursive require loop. 2020-03-10 Bob Weiner * hbut.el (ibut:label-set): Updated doc to explain that this sets the text of the implicit button (which is only its label if there is no optional preceding delimited name). (ibut:rename): Changed to only move point to the button but not to edit the buffer when old and new labels are the same. * hui.el (hui:gibut-create): Added to create global implicit buttons. (hui:gbut-create): Small improvements; with prefix arg, interactively call hui:gibut-create. (hui:gbut-modify): Updated to modify the text of an implicit button and to save the global button file after modification if called interactively. 2020-03-09 Bob Weiner * hactypes.el (link-to-texinfo-node): Added first param, file, rather than just using the current buffer filename. hibtypes.el (texinfo-ref): Modified to send nil as first arg to link-to-texinfo-node. 2020-03-08 Bob Weiner * hui.el (hui:link-possible-types): Added link-to-bookmark, link-to-texinfo-node as possible types. * hbut.el (ibut:previous-occurrence): Added. * hibtypes.el (action): Added missing quote in front of variable name arg that caused an error on variable name action buttons. 2020-03-01 Bob Weiner * hbut.el (require): Fixed require of 'help-mode' instead of 'help'. This fixed 'make bin' compilation. ============================================================================== V7.1.2 changes ^^^^: ============================================================================== * Published 7.1.1 test release. * hypb.el (hypb:display-file-with-logo): Modified to not move point or do anything other than use view-mode to display the file buffer if it exists prior to this call. This allows using {C-h h d d} to jump back to the same point in the DEMO. The FILE argument is now required. * hbut (hbut:syntax-table, hbut:modify-syntax): Added to modify <> and {} syntactic character pairs for use with implicit button activations, notably Action and Key Series. (ibut:label-p): Used hbut:syntax-table. (require): Added elisp-mode for syntax table support. hyperbole.el (hyperb:init): Added hbut:modify-syntax call. * DEMO (Sample Explicit Buttons and Types): Removed email example since it wasn't very good and that code has not been updated in a long time. * hsettings.el (hyperbole-web-search): Fixed to encode URL special characters including spaces. This fixed the 'electric car' explicit button example in the DEMO. * hib-kbd.el (kbd-key:binding, kbd-key:kbd, kbd-key:parse): Added and used to prevent (kbd) calls from improperly parsing "<[td]>" as an Emacs event and as a result removing the angle brackets. * DEMO (Global Buttons): Added a new example of a labeled global implicit button displaying a todo file. * hpath.el (hpath:substitute-match-value): Added and called in hpath:substitute-value. This function was hypb:replace-match-string in previous Hyperbole releases but now is only used by this one function. * man/hyperbole.texi (Glossary): hibtypes.el (action): hib-kbd.el (kbd-key): hbut.el (hbut:max-len): Renamed variable from ebut:max-len since applies to all Hyperbole button types now. Increased to 200; allowed for 0 value which means no limit. Locally set to 0 in Action implicit button type. (hbut:max-len): Added this inline function to retrieve the proper value. * hibtypes.el (action): hact.el (actype:act): Added support for special forms like: 'progn', 'and', etc. 2020-02-29 Bob Weiner * hpath.el (hpath:find): Fixed bug where hpath:to-markup-buffer with point in the source link buffer rather than the referent. * hib-kbd.el (kbd-key:key-series-to-events): (kbd-key:normalize): Rewrote and added support for , , C-M-, non-ASCII CONTROL and META key codes, keypad keys, function keys, and these modifier keys: CONTROL, ALT, HYPER, META, SUPER and SHIFT (when whitespace separated). (kbd-key:named-key-list, kbd-key:named-key-regexp, kbd-key:modified-key-regexp): Added and used in kbd-key:normalize. (kbd-key:key-and-arguments): Updated to handle that key-series now have multi-character modifier keys by adding a seq-position call. * hypb.el (hypb:replace-match-string): Replaced all logic other than error generation with Emacs function, replace-regexp-in-string. 2020-02-27 Bob Weiner * hui.el (hui:ebut-delete-op): hactypes.el (link-to-ebut): Fixed ebut:get call to send file as 3rd arg, not 2nd; now link-to-ebuts work. 2020-02-26 Bob Weiner * hyrolo.el (hyrolo-add): Removed conditional on entry-level-len when nil that was causing an error during adding of a record. ============================================================================== V7.1.1 test release changes ^^^^: ============================================================================== 2020-02-23 Bob Weiner * Published 7.1.0 test release. * hui-menu.el (infodock-hyperbole-menu): Changed 'Activate-Button-at-Point' to 'Activate-Button-in-Buffer' and made prompt for button if not on one. This synchronizes it with the top-level 'Act' command in the Hyperbole minibuffer menu. * man/hyperbole.texi (Menus): Updated to reflect the above change. (Modeline Clicks and Drags): Added moving frames with bottommost modeline drags. * hui.el: (hui:ebut-act, hui:ibut-act): Changed body to a call of hui:hbut-operate. (hui:hbut-operate): Changed to call actype:act to perform operation. Also changed to a private function. hbut.el (hbut:act): Activated only when a valid Hyperbole button symbol is given; improved error checking. * hbut.el: hui.el: Changed doc strings to imperative form. * hui-menu.el (infodock-hyperbole-menu): Updated Implicit-Button/Activate (renamed from Activate-at-Point). hui-mini.el (hui:menus): Updated Ibut/Act. hui.el (hui:ibut-act): Added to better mirror hui:ebut-act and replaced Ibut/Act menu items with this. * hui.el (hui:hbut-act): hbut.el (hbut:act): Added interactive completion of in-buffer ebuts and ibuts. * man/hyperbole.texi (Questions and Answers): Rewrote Org-mode question a bit to account for improved integration. * hbut.el (ibut:act): Added to interactively prompt for and activate labeled implicit buttons. 2020-02-22 Bob Weiner * hui-em-but.el (after-init-time): Added setting of hyrolo-highlight-face used in HyRolo matches so text is highlighted and readable by default (foreground and background colors of matched text has been the same for some unknown reason. This may affect user customizations however. * man/hyperbole.texi (Smart Key - Bookmark Mode): Added. * hpath.el (hpath:file-line-and-column): Added. hactypes.el (link-to-file): Rewrote to use above function, allow for :line:column suffixes and trigger error if path argument is invalid. * hui-mouse.el (hkey-alist): Fixed bookmark-bmenu-mode so Assist Key shows what Action Key does rather than generic help. * hbut.el (ebut:operate): Appended any instance-flag string to the button label; this fixed error where point moved to the wrong location when creating a new numbered instance of a particular button label. Also, fixed so any existing text following point or highlighted as region is used in button labels, rather than new text being inserted. (ebut:delimit): Changed instance-str to instance-flag since not always a string. 2020-02-17 Bob Weiner * hpath.el (hpath:mswindows-to-posix): Made '\\' by itself in Windows an invalid path. * hib-kbd.el (kbd-key:key-series-to-events): Added for use in testing and called from kbd-key:act. ============================================================================== V7.1.0 test release changes ^^^^: ============================================================================== 2020-02-17 Bob Weiner * Published 7.0.9 test release. * hpath.el (hpath:substitute-value): Updated to handle Texinfo @-quoted $@{hyperb:dir@} variable substitution. * hypb.el (hypb:replace-match-string): Minor code updates. 2020-02-16 Bob Weiner * hibtypes.el (grep-msg): Fixed handling files names with spaces followed by a null character rather than a colon as a separator. Note that the null is set to visibly display as a colon in Emacs. hpath.el (hpath:tramp-file-name-regexp): Don't match if a control char is found, notably a null (ASCII 0). These can appear in grep expressions where filenames followed by colons may be confused as remote paths. * man/hyperbole.texi (Swapping Buffers): DEMO (Swapping Buffers): Added swapping buffers between frames. hycontrol.el (hycontrol-window-swap-buffers): Fixed so current buffer remains the same but selected window changes. (hycontrol-frame-swap-buffers): Fixed so current buffer remains the same but selected frame changes. Also made this work anytime there are two or more frames regardless of how many windows in each. (hycontrol-frames-mode-map): {~} removed secondary call of hycontrol-window-swap-buffers. (hycontrol-windows-mode-map): {~} removed secondary call of hycontrol-frame-swap-buffers. * man/hyperbole.texi (Renaming, Global Key Bindings): hyperbole.el (hkey-initialize): hui-mini.el (hui:menus): hui-menu.el (hui-menu-key-bindings): Removed {C-c C-r} ebut rename binding since conflicts with bindings commonly made in some modes. Use menu instead or choose a personal binding. * hui.el (hui:hbut-help): Improved to flash unnamed implicit buttons with lbl-start and lbl-end properties. * hyperbole.el (hyperb:autoloads-exist-p, hyperb:maybe-generate-autoloads, hyperb:generate-autoloads): Added and called from hyperb:init when initializing Hyperbole to generate auto-autoload files when running from a non-packaged source download of Hyperbole. * hycontrol.el (hycontrol-quit-frames-mode): man/hyperbole.texi (HyControl): Added doc of {q} vs. {Q}. (hycontrol-quit): Renamed from hycontrol-quit-frames-mode. (hycontrol-quit-windows-mode): Deleted, created one unified quit command. (hycontrol-abort): Renamed from hycontrol-abort-mode. * hui-window.el (hmouse-alist-add-window-handlers): Added 'not a modeline depress' test for the clause that handles drags from a window to a modeline, since otherwise it will catch drags from a modeline that may move a frame. (hmouse-drag-p): Added to test whether absolute depress and release positions differ. * hui-menu.el (hyperbole-menubar-menu): Removed set-menubar-dirty-flag call. (hmouse-release-left-edge, hmouse-release-right-edge): Removed XEmacs code. * man/hkey-help.txt: hmouse-drv.el (action-key-depress, assist-key-depress): hui-window.el (action-key-modeline, assist-key-modeline): Modeline window resizing is now handled in action/assist-key-depress via a call to mouse-drag-mode-line, providing live visual feedback. The same function is also overloaded in hmouse-drv.el to allow repositioning frames that have minibuffer windows by dragging from a bottommost modeline if the frame has a non-nil 'drag-with-mode-line' parameter. man/hyperbole.texi, DEMO (Moving Frames): Added this new section. 2020-02-15 Bob Weiner * hmouse-sh.el (hmouse-unshifted-setup): Disabled `mouse-1-click-follows-link' since it doesn't work with Hyperbole's down and up bindings. * hui-window.el (hmouse-drag-outside-all-windows): Removed errant backquote typo that was causing any Action Mouse Key click to create a new frame. * hargs.el (hargs:iform-read): Removed XEmacs setting and replaced with one-time transient-mark-mode setting to keep region enabled when '_' is included in interactive specs. * DEMO: Removed {} from partial key series that we don't want new automated button tester to activate. * hycontrol.el (hycontrol-windows-grid-by-major-mode): Changed initial-input to default value. * hmouse-tag.el (smart-lisp-bound-symbol-def): Documented. * hact.el (htype:create): Added definition-name property used by find-function-search-for-symbol so now Elisp stack frame and other function calls that look like actypes:: and ibtypes:: jump to the associated defact and defib definitions. * hbut.el (htype:create): Generalized definition-name property used for tag lookup on names like, ibtypes::grep-msg, which looks for the name used in the defib call, grep-msg. This had previously been done for actypes. * hpath.el (hpath:posix-to-mswindows-separators): (hpath:mswindows-to-posix-separators): (hpath:abbreviate-file-name): Added and called from the above functions. Same as `abbreviate-file-name' but disables tramp-mode. This prevents improper processing of hargs with colons in them, e.g. `actypes::link-to-file'." * hbut.el (ibut:at-p): Fixed that button category/type was not set if KEY-ONLY flag was given. * hmouse-drv.el (hkey-help): Fixed listing of command executed when prefixed with a funcall. * hbut.el (hbut:report): Improved doc string. * hui.el (hui:ebut-act): hsys-org.el (hsys-org-hbut-activate-p): hbut.el (hbut:act): Simplified most common call and made hbut optional, defaulting to 'hbut:current. 2020-02-13 Bob Weiner * hpath.el (hpath:cache-mswindows-mount-points): If a network share with a domain name, also add an entry WITHOUT the domain name to the mount points table since Windows paths often omit the domain. (hpath:mswindows-to-posix-separators): Rewrote to better handle converting Windows UNC paths to Posix mount points. (hpath:directory-expand-alist): Renamed to hpath:posix-mount-point-to-mswindows-alist (hpath:mswindows-path-posix-mount-alist): Removed, unused. 2020-02-12 Bob Weiner * hyrolo.el (hyrolo-verify): Removed check of (stringp hyrolo-match-regexp) since may have done a logical search which does not set that regexp. This resolved an error when using {q} to quit from the hyrolo match buffer. * hyrolo-logic.el (hyrolo-map-logic): Fixed function call. Changed: (match-string-no-properties hyrolo-hdr-and-entry-regexp To: (match-string-no-properties hyrolo-entry-group-number) * hsys-org.el (inhibit-hsys-org): Added customization to allow disabling all Smart Key support when in an Org mode and documented everywhere. (hsys-org-hbut-activate-p): Defined and added to org-metareturn-hook so local binding of M-RET in org-mode activates Hyperbole buttons (doesn't run full set of Action Key actions). (org-link): Updated to utilize newer org-link-open-from-string function when available. (hsys-org-link-at-p): Updated to utilize newer org-link-any-re variable when available. 2020-02-09 Bob Weiner * DEMO (Windows Grid): Used {Q} to ensure quit from HyControl and not from the DEMO (which is in Help mode). * hypb.el (hypb:mark-object, hypb:object-p): Added these to give strings and symbols a hyperbole property. hpath.el (hpath:relative-to, hpath:absolute-to): Ignore any string with a hyperbole property. Prevents removal of trailing whitespace from normalized key series, for example. * hib-kbd.el (kbd-key:hyperbole-mini-menu-key-p): Optimized to compute kbd-key:mini-menu-key only once. (kbd-key): Allow for double-quoted key series, i.e. "{C-x o}". 2020-02-08 Bob Weiner * hib-kbd.el (kbd-key:normalize): Prevent multiple normalizations which can strip desired RET and SPC characters. * hyrolo-logic.el (hyrolo-map-logic): (hyrolo-kill): hyrolo.el (hyrolo-add): (hyrolo-grep-file): (hyrolo-to): (hyrolo-to-entry-end): Fixed bug that caused addition of new entries at the end of the hyrolo file, rather than in sorted order. Also caused hyrolo-logic functions to fail. The issue was that 'hyrolo-hdr-and-entry-regexp' had been updated to include the whitespace following the entry prefix and this whitespace was improperly included when computing the hierarchy level of the entry. Also, changed 'curr-entry-level' parameter from a string to an integer to reduce length comparisons. (hyrolo-r-not): Fixed typo 'path' should be 'pat'. 2020-02-06 Bob Weiner * hui-em-but.el (hproperty:set-face-after-init): Conditionalized settings to avoid overriding customizations. (hproperty:item-highlight-color): Fixed initialization error. (hproperty:set-flash-color): Ensured not setting to nil values. (hproperty:flash-face, hproperty:highlight-face): Converted to defcustom variables. 2020-02-02 Bob Weiner * hmouse-drv.el (hkey-drag-to, hkey-drag-item): hui-window.el (hmouse-drag-item-to-display): (hmouse-at-item-p): Fixed to work with ace-window when Action Key is not used. * hmouse-drv.el (hkey-throw): Rewrote to throw active (highlighted) region if any. (hkey-insert-region): Added. hui-window.el (hmouse-pulse-region): Added. 2020-02-01 Bob Weiner * hui-mouse.el (smart-imenu-item-p): Fixed to handle invalid marker positions after buffer changes when imenu-auto-rescan is false. * hmouse-drv.el (hkey-execute, hkey-help): Simplified with cddr and cadr calls. 2020-01-31 Bob Weiner * hui-em-but.el (hproperty:set-flash-color): (hproperty:set-face-after-init): Resolved issue that explicit buttons were not being highlighted upon load and that explicit and named implicit buttons were not flashing properly when activated due to improper face settings. 2020-01-29 Bob Weiner * hpath.el (hpath:markup-link-anchor-regexp): Prevent matches to files like: ".#a.org" * hui-em-but.el (hproperty:but-flash, hproperty:but-flash-time): Revert this value back to 1000 since users may have previously customized values that loading Hyperbole does not override. Revert logic to using this to compute number of fractional seconds to flash a button. Prior change caused a mistaken wait of 1000 seconds since user customization value was not replaced by loading Hyperbole. 2020-01-25 Bob Weiner * hactypes.el (link-to-ibut): Handled null 'defaults' when called interactively; needed when interactively creating a link-to-ibut and there is no ibut at point. Also improved error message when a link-to-ibut is invalid, i.e. has a null button reference. hbut.el (ibut:to): Handled null lbl-key arg. 2020-01-21 Bob Weiner * hbut.el (ibut:at-p): Fixed to recognize non-labeled ibuttons in programming modes. * man/hyperbole.texi (Glossary): Added Action Button, Elink, Ilink, Glink definitions to the glossary. * Makefile (GNUFTP): Added --replace option in case need to quickly replace a release when first uploading it. ============================================================================== V7.0.9 test release changes ^^^^: ============================================================================== 2020-01-20 Bob Weiner * Published 7.0.8 test release. * hib-social.el (social-reference): Fixed handling of social refs without any service name, e.g. #gnu. * hibtypes.el (action): 'actype::' should be 'actypes::; action variable args were quoted twice so did not work. * hpath.el: Fixed to handle in-file HTML-like link references. (hpath:is-p): Allowed for URL "file://" prefix. (hpath:markup-link-anchor-regexp): Allowed for anchor only paths, no pathname. (hpath:find): Use buffer-file-name if pathname is empty. (hpath:to-markup-anchor): Prevent string-match error if buffer-file-name is null. hbut.el (hbut:outside-comment-p): Ignore comment status for html-like markup modes that register as programming modes. This fixes ibuttons not being recognized, notably in-file anchor links. * Makefile (ftp): Added missing gzipped tar file dependency hui-select.el: Removed kotl-mode require as it caused an infinite loading cycle 2020-01-07 Bob Weiner * hui-mini.el (hui:menus): Added Gbut/Rename. hui-menu.el (infodock-hyperbole-menu): Added Global-Button/Rename. 2020-01-06 Bob Weiner * hui.el (hui:gbut-modify): Changed hargs:read-match to use 'gbut' type rather than 'ebut'. (hui:gbut-rename): Added. 2020-01-05 Bob Weiner * hbut.el (hbut:key, ebut:key, ibut:key, hbut:rename): Added. * hui.el (hui:hbut-rename, hui:hbut-operate): Added. (hui:hbut-act): Rewrote to use hui:hbut-operate. 2020-01-04 Bob Weiner * hibtypes.el (pathname): man/hyperbole.texi (Implicit Button Types): hpath.el (hpath:find): Documented allowable Emacs Lisp and env. variable syntax. 2019-12-29 Bob Weiner * hpath.el (hpath:posix-to-mswindows-separators): (hpath:mswindows-to-posix-separators): (hpath:directory-expand-alist): Corrected use of this variable by switching it to hpath:posix-to-mswindows-separators. 2019-12-28 Bob Weiner * hui-select.el (hui-select-set-region): Resolved markup-pair selection when selecting the whole buffer. * hibtypes.el (action): Ignore / don't match to unbound symbols. 2019-12-18 Bob Weiner * hui-select.el (hui-select-markup-modes): man/hyperbole.texi (Smart Key Thing Selection): Added XML mode support. 2019-10-13 Bob Weiner * hact.el (action:path-args-rel): Limited to file-name-directory call to 'loc' value. hpath.el (hpath:find): Added file-name-directory call wrapped around 'loc' value; otherwise, default-directory could be set to a filename. * hpath.el (hpath:absolute-to): Resolved bug that trimmed whitespace off non-path args, e.g. key series, thereby removing trailing C-m keys. 2019-10-06 Bob Weiner * hui-mouse.el (hkey-alist): Added support for selection of bookmarks from bookmark menu list. 2019-10-05 Bob Weiner * hactypes.el (link-to-bookmark): Added to link to an Emacs bookmark, similar to a global button with a link action type. man/hyperbole.texi (Action Types): Added link-to-bookmark. * hpath.el (hpath:cache-mswindows-mount-points): Changed mapcar to mapc since not using return value. (hpath:display-buffer-function, hpath:display-path-function, hpath:display-where-function): Added. (hpath:display-buffer): Added call to hpath:display-buffer-function. (hpath:find): Added call to hpath:display-path-function. 2019-10-04 Bob Weiner * hpath.el (hpath:to-markup-anchor): If anchor contains both a dash and a space, then don't convert dashes to spaces. * hmouse-drv.el (hkey-help): Added display of ibtype or actype (for explicit buttons). * hact.el (actype:def-symbol): * hbut.el (ibtype:def-symbol): Improved doc strings. (htype:def-symbol): Added. ============================================================================== V7.0.8 test release changes ^^^^: ============================================================================== 2019-10-01 Bob Weiner * hact.el (htype:delete): Removed improper quote in (fboundp 'sym) call. (htype:symbol): Reverted to prior version which properly creates previously undefined Elisp symbols, thereby fixing htype:create. (actype:create): Made symtable:add call part of compile-time macro value. 2019-09-24 Mats Lidell * Makefile (ELC_COMPILE): Added missing kprop-em.elc. 2019-09-23 Bob Weiner * hui.el (hui:link-directly): Called symtable:actype-p replacing invalid htype:actype-p call. * hmouse-drv.el (hkey-buffer-move): Wrapped (require 'windmove) in eval-and-compile to remove a byte-compiler warning. 2019-09-22 Bob Weiner * hact.el (action:path-args-rel): Added file-name-directory call so always sends a directory as the second argument, preventing off-by-one level of relative directory generation. 2019-09-19 Bob Weiner * hbut.el (ibtype:def-symbol): Added. * hact.el (actype:def-symbol): Change mislabeled 'sym-name' to 'name'. 2019-09-18 Bob Weiner * kotl/kotl-mode.el (kotl-mode:top-cells): Removed (kvspec:activate) which was using the unchanged viewspec that improperly set the view. * hibtypes.el (action): Updated to handle boolean function results. hactypes.el (display-boolean): Added to display the result of Action ibtypes boolean function calls. man/hyperbole.texi (Action Buttons): Added paragraph on boolean predicate result display. ============================================================================== V7.0.7 test release changes ^^^^: ============================================================================== 2019-09-17 Bob Weiner * hui.el (hui:action): hui-mini.el (hui:menu-item): hibtypes.el (hyp-source): hargs.el (hargs:at-p): hyrolo-logic.el (hyrolo-map-logic): hyrolo.el (hyrolo-grep-file): Undo adding second arg t to prin1-to-string call (meant to prevent string properties output) since has side effect of removing needed quote marks and changes the way buffers print which causes (hyp-source) matches to fail. * hpath.el (hpath:to-line): Added and used in hpath:find and hpath:find-line. (hpath:find-line): Changed to save-restriction when move. (hpath:shell-modes): Added and used in hpath:to-markup-anchor. 2019-09-16 Bob Weiner * hpath.el (hpath:line-and-column-regexp): Added. (hpath:markup-link-anchor-regexp): Added group number to doc. (hpath:find): Added support to jump to line and optional column based on :line-num:col-num path suffix, even when preceded by a link anchor. 2019-09-15 Bob Weiner * hmouse-tag.el (smart-lisp-at-tag-p): Ignore any leading '<' character from action buttons or other links, i.e. only when followed by an alphabetic character. * hibtypes.el (action): Moved to near highest priority so embedded paths or other constructs do not match first. * hact.el (symset:create): Added. Can be used to manually test out different ibtype activation priorities. * hibtypes.el (pathname-line-and-column): Moved to higher priority than grep, debugger and stack frame matches, so optional col number is not ignored. * hpath.el (hpath:markdown-section-pattern): Added '*' as a section prefix and allowed for leading whitespace. * hbut.el (ibut:at-p): Ignore any invalid null ibtype entries. * hact.el (htype:category, htype:names): Simplified and speeded up. Don't check existence of types. Only valid types should be in the type category list. * hbut.el (hattr:report): Changed intern call to make-symbol. * hact.el (actype:elisp-symbol, actype:def-symbol): Added. hui.el (hui:ebut-message, hui:actype, hui:link-create): Changed to use above two functions. 2019-09-14 Bob Weiner * hui.el (hui:link-directly): hbut.el (ibut:at-p): hact.el (actype:act, actype:action, actype:create, actype:delete, actype:action-body, actype:interact, ibtype:create, ibtype:delete, htype:category, htype:delete, htype:symbol): Changed to use new, faster symtable instead of symset. * hact (actype:action): Fixed to handle regular Elisp functions properly. * set.el: Changed doc strings to imperative form. Explained in the commentary that set:add can create a new single element set if the set passed is nil (empty). (set:empty): Added to test for emptiness. * hact.el (symtable): Added to speed checks of whether a symbol is an existing Hyperbole type or not. Created symtable:ibtypes and symtable:actypes to hold the categories of types. * hact.el (actype:obarray): Added and filled in actype:create to speed checks of whether a symbol is an actype. 2019-09-13 Bob Weiner * hpath.el (hpath:to-markup-anchor): Added buffer-name to error messages as may be called when a buffer is temporarily selected. 2019-09-12 Bob Weiner * hpath.el (hpath:find): Changed to return buffer if path is displayed within a buffer and not externally (used to return t). Added third parameter 'noselect' flag to return a buffer attached to the parsed filename but not to display it. (hpath:find-noselect): Added. (hpath:normalize): Added and used in link-to-e/ibutton 2019-09-11 Bob Weiner * hmouse-tag.el (smart-emacs-lisp-mode-p): Added change-log-mode so Elisp symbols there are matched. * hmouse-tag.el (smart-lisp-at-definition-p): Don't match to 'def' alone. 2019-09-10 Bob Weiner * hact.el (actype:action-body): Renamed from actype:action. (actype:action): Return action function symbol whenever possible * hibtypes.el (hlink): Fixed to include link type in ibut:label-set call. * hbut.el (gbut:help): Added labeled implicit button support. * hargs.el (hargs:reading-p): Updated doc string. 2019-09-02 Bob Weiner * hbut.el (ibut:to): Point might be on closing delimiter of ibut in which case ibut:label-p returns nil; moved back one character to prevent this. Also changed wrong ibut:label-p call to proper ibut:at-p call to compare ibut key value at point to search match. * hpath.el (hpath:substitute-value): Handled case where path does not include a directory separator after the variable name since the variable itself does, e.g. "${hyperb:dir}DEMO#POSIX and MSWindows Paths". Also works if path separator is included. * hui.el (hui:gbut-create, hui:gbut-modify): Fixed so that when link button paths are created, they are normalized and made absolute based upon the current buffer's default directory, not the global button file directory. hact.el (action:path-args-rel): Prior to button data storage, make absolute paths relative to the default-directory of their button file, not the current directory. * hpath.el (hpath:find): Improved default-directory handling. * hpath.el (hpath:relative-to, hpath:absolute-to): hactypes.el (link-to-file, link-to-file-line, link-to-file-line-and-column): Remove any double quotes and whitespace at the start and end of the path that interactive use or key series may have introduced. hactypes.el (link-to-file): Rewrote for use with global buttons where the button source directory is different than the link-to directory. If path is not absolute, add its link-to directory to it. * hibtypes.el, hpath.el: Added require of subr-x for string-trim function. hpath.el (hpath:trim): Added. * hpath.el (hpath:is-p): Fixed failure to expand variables when path contains a [#,] suffix. 2019-08-31 Bob Weiner * XEmacs: Removed support since no one uses it anymore. * hbdata.el (hbdata:build): Fixed bug where int was sent to concat. * hbut.el (ebut:operate): Fixed bug that caused hui:gbut-create to create buttons in the wrong place, sometimes in the middle of other buttons. Added (and (not curr-label) (hmouse-use-region-p) calls to fix this. * hib-kbd.el (kbd-key): Handled long key series up to 3000 characters with embedded elisp actions. * hactypes.el (exec-shell-cmd): Fixed window handling accounting for pop-to-buffer call in shell function when shell is newly created. * DEMO: Added sections on Button Files and Global Buttons. 2019-08-28 Bob Weiner * hibtypes.el, hib-social.el, hib-debbugs.el: Changed from active to imperative tense. * man/hyperbole.texi (Implicit Button Types): Added 'links' concept index entry. 2019-08-27 Bob Weiner * DEMO: Changed most 'click' uses in DEMO to 'press'. ============================================================================== V7.0.6 test release changes ^^^^: ============================================================================== * man/hyperbole.texi (Implicit Button Type Summaries): Changed to Implicit Button Types. (Implicit Button Type): Changed to Implicit Button Type Creation. 2019-08-26 Bob Weiner * hibtypes.el (hlink, parse-label-and-file): Added to allow for linking to Hyperbole butttons in other files and used in e/g/ilinks. * hargs.el (hargs:delimited): Replaced cl evenp call with zerop and modulo. hibtypes.el (action): Replaced cl 'find' call with 'string-match-p'. * Makefile (dev-install): Removed this target and replaced with 'bin'. Added 'src' target to setup to run from .el files only. Updated help to explain how to run test code either from .el or .elc files. ============================================================================== V7.0.5 test release changes ^^^^: ============================================================================== 2019-08-25 Bob Weiner * Makefile (HYPERBOLE_FILES): Removed hyperbole-pkg.el and deleted that file which is now auto-generated. * hactypes.el (exec-window-cmd): BUG FIX: Removed use of InfoDock 'new-shell' function which did not support provision of a buffer name for shell creation. Also, called 'shell' command if existing shell buffer does not have a process and updated buf-name with the buffer returned by the 'shell' command. (exec-shell-cmd): Applied similar changes. * hpath.el (hpath:find): Changed modifier comparisons to use = and wrapped (load filename) in a 'hact' macro. (hpath:is-p): BUG FIX: Only temporarily strip any initial execution modifier character from the path so can be handled later by action types. 2019-08-24 Bob Weiner * DEMO (Action Buttons): Added this new section to explain implicit action buttons. * Merged in doc string change from active to imperative tense and updated the same in hibtypes.el and hactypes.el. 2019-08-23 Bob Weiner * hactypes.el (display-variable): Added to display Elisp variable values. hibtypes.el (action:start, action:end, action): Added to allow in-buffer angle bracket delimited action/function calls/variable displays. hact.el (actype:act): Simplified logic and added support for printing variable values as an action. (actype:eval): Added to support action ibuts. * hbut.el (hbut:act): Changed to use hrule:action setting. * hbut.el (defact): Updated doc to reflect that action type functions may not return nil. Temporarily set hrule:action to #'actype:eval if you need a potential nil return. hactypes.el (eval-elisp): Updated doc-string to reflect it is for its side-effects and cannot return a nil value. 2019-08-22 Bob Weiner * hmouse-tag.el (smart-lisp-identifier-first-char-regexp, smart-lisp-identifier-chars, smart-lisp-identifier): Added and used in smart-lisp-at-tag-p. * hpath.el (hpath:is-p): BUG FIX: Move space normalization and variable substitution to beginning of function to apply to all paths given as inputs. Expanded doc to explain this normalization. 2019-08-18 Bob Weiner * hyperbole: Added second arg of t to most calls to prin1-to-string so properties are not utilized, notably when displaying @loc> locations. * hversion.el: Change to using numeric test release codes instead of letters to ease version parsing. 2019-08-16 Bob Weiner * hpath.el (hpath:start-end): Added so implicit pathname buttons can flash when activated. 2019-08-14 Bob Weiner * hibtypes.el (elink, glink, ilink): Renamed from link-to-e/g/ibut. 2019-08-13 Bob Weiner * hactypes.el (man-show): Eliminated infinite recursion and made work with latest Emacs man.el library. (link-to-ebut): Reversed order of args to match link-to-ibut. 2019-08-12 Bob Weiner * kotl/kimport.el (kimport:copy-and-set-buffer): Made an autoload since M-x kotl-mode may call kfile;create which then calls this function. * Change to use only 3 section version numbers for elpa compatibility. Test releases change the 3rd section and production releases change the second. ============================================================================== V7.0.4 test release changes ^^^^: ============================================================================== 2019-08-06 Bob Weiner * hyrolo-menu.el (infodock-hyrolo-menu): Fixed Edit-Rolo to call a function rather than an sexp. ============================================================================== V7.0.3b test release changes ^^^^: ============================================================================== 2019-08-05 Bob Weiner * hypb.el (hypb:rgrep-command): Changed to use zgrep only when it is the BSD version, since only that one supports the options needed by Hyperbole. 2019-07-28 Bob Weiner * DEMO, man/hyperbole.texi (Implicit Button Types): Updated to expanded Org mode support. * hib-kbd.el: man/hyperbole.texi (Implicit Button Types, Glossary): Changed hib-kbd key-sequence to key-series to indicate can be multiple key sequences. Added def. to Glossary. (kbd-key:doc): Changed to call hkey-help rather than trigger an error when key-series is not a single bound key sequence. 2019-07-23 Bob Weiner * man/hyperbole.texi (Referent Display): Rewrote and added details on how the 4 types of referents are processed. 2019-07-22 Bob Weiner * hargs.el (hargs:at-p): Added hbut support (ebut or ibut). * hui.el (hui:hbut-act): Generalized to handle both explicit and labeled implicit buttons. (hui:ebut-act): Added and replaced use of hui:hbut-act in menus. * hbut.el (ebut:to, gbut:to, hbut:get): Added. 2019-07-21 Bob Weiner * man/hyperbole.texi (Implicit Button Types): Split off type descriptions to this new subsection and added these types: ripgrep-msg, ipython-stack-frame, link-to-ibut, link-to-gbut, link-to-ebut. (Implicit Buttons): Added description and example of implicit button labels. (Glossary): Updated Implicit Button and Global Button entries with changes. DEMO (Implicit Buttons): Added description and example of implicit button labels. (Action Types): link-to-gbut, link-to-ibut - Added. * hbut.el (gbut:act): Improved error message for implicit global buttons. * hui-menu.el (infodock-hyperbole-menu): Implicit-Button/Label - Added to add a label. Implicit-Button/Rename - Added to rename the label of an implicit button. hui-mini.el (hui:menus): Added Ibut/Label and Ibut/Rename. * hbut.el (hbut:key-to-label): Moved ebut:key-to-label body here and aliased that function to this hbut one since is now used by ibut:key-to-label as well. (hbut:label-to-key, hbut:key-src-set-buffer, hbut:key-src, hbut:key-src-fmt, hbut:key-src): Same change. (ibut:rename): Added and used in hui:ibut-rename. 2019-07-18 Bob Weiner * hbut.el (ibut:label-separator): Added. 2019-07-17 Bob Weiner * hbut.el (ibut:alist, ibut:list, ibut:map): Added. (ebut:map): Moved body to hbut:map and called from ebut:map and ibut:map. Removed start-delim and end-delim arguments in ebut:map. * hargs.el (hargs:at-p): Added support for reading ibutton labels. 2019-07-16 Bob Weiner * hui.el (hui:ibut-label-create, hui:ibut-rename, hui:ibut-message): Added. 2019-07-15 Bob Weiner * hibtypes.el (debugger-source): Handled Python tracebacks properly. 2019-07-14 Bob Weiner * hibtypes.el (link-to-ebut, link-to-gbut, link-to-ibut): hactypes.el (link-to-ibut): hbut.el (ibut:to): Fixed small logic errors with lbl-keys and save-excursion in these functions. 2019-07-13 Bob Weiner * hsys-org.el (hsys-org-set-ibut-label): Added and used in org-mode ibtype. (org-mode, hsys-org-at-block-start-p): Added Action Key activation of Org blocks when on 1st line of def. * hibtypes.el (link-to-gbut, glink:start, glink:end): Added for in-buffer links to global buttons. (link-to-ebut, elink:start, elink:end): Added for in-buffer links to explicit buttons. (link-to-ibut, ilink:start, ilink:end): Added for in-buffer links to implicit buttons. * hbut.el (ebut:label-p): Updated to better handle whether point is between specified delimiters. 2019-07-12 Bob Weiner * hbut.el (ebut:key-src-set-buffer, hbut:key-src-set-buffer, hbut:key-list, hbut:ebut-key-list, hbut:ibut-key-list, hbut:label-list): Added to allow selection of labeled Hyperbole buttons in currrent buffer by name. (ibut:to): Added to move to an implicit button in the current buffer matching a label key. 2019-07-11 Bob Weiner * hargs.el (hargs:at-p): Added support for reading global button arguments. * hactypes.el (link-to-gbut): Updated to handle global labeled implicit buttons. * hbut.el (gbut:get): Added. 2019-07-10 Bob Weiner * man/hyperbole.texi (Invisible Text Searches): Added missing {M-s i} key sequence. * hibtypes.el (Info-node): Modified to skip costly hpath:is-p if ref string is not of the right format. (hibtypes-path-line-and-col-regexp, pathname-line-and-column): Updated to handle Elisp variables with colons. 2019-07-09 Bob Weiner * hbut.el (ibut:at-p): Conditionalized on (not (hbut:outside-comment-p)). (hbut:map, ibut:label-map): Added. (ibut:key-src, ibut:key-to-label, ibut:label-to-key, ibut:summarize): Added. Global, labeled implicit buttons now exist! 2019-07-08 Bob Weiner * hbut.el (ibut:label-separator-regexp, hbut:outside-comment-p): Added doc for expanded Org mode reference handling. 2019-07-01 Bob Weiner * hbut.el (gbut:ibut-key-list): Added. * hui.el (hui:hbut-term-highlight, hui:hbut-term-unhighlight): Fixed so save-excursion is outermost. 2019-06-29 Bob Weiner * hbut.el (ebut:get, ebut:at-p, ebut:label-to-key, ibut:at-type-p): Simplified conditionals using 'when'. (ibut:label-start, ibut:label-end, ibut:label-p, ibut:get, ibut:next-occurrence, ibut:label-regexp): Added. (hbut:label-regexp): Added to support labeled implicit buttons too. (ebut:label-regexp): Aliased to hbut:label-regexp. (hbut:label-p): Updated to handle implicit button labels. 2019-06-23 Bob Weiner * hsys-org.el: Added many new predicates and code to handle navigation between Org mode internal links and their targets, as well as radio target definitions and their links. (hsys-org-mode-function, hsys-org-mode-p): Added to determine when hsys-org actions are activated. * hypb.el (hypb:region-with-text-property-value): Added and used in hysy-org.el. * kotl/kfill.el (set-fill-prefix): Updated to better match standard Emacs functiion. 2019-06-22 Bob Weiner * hyrolo.el (hyrolo-add): Fixed bug in call to match-string-no-properties. 2019-06-21 Bob Weiner * kotl/kotl-mode.el (kotl-mode): Set fill-paragraph-function rather than overloading fill-paragraph. kotl/kfill.el (kfill:fill-paragraph): Renamed and used only in kotl-mode. Also temporarily set fill-paragraph-handle-comment to t and made prefix arg optional. (kfill:funcall): Removed. (kfill:function-table): Removed. (kfill:do-auto-fill): Temporarily set fill-paragraph-handle-comment to t. 2019-06-20 Bob Weiner * hsys-org.el (org-link): Changed to call org-open-at-point which handles internal org links, fixing following links such as radio targets. (hsys-org-thing-at-p, hsys-org-target-at-p): Added. * hpath.el (hpath:texinfo-section-pattern): Added and used in hpath:to-markup-anchor to jump to specific Texinfo sections. 2019-06-19 Bob Weiner * man/hyperbole.texi (Referent Display): Added doc of hpath:native-image-suffixes. * hpath.el (hpath:find-program): Changed to prioritize hpath:native-image-suffixes over hpath:internal-display-alist over hpath:external-display-alist-macos instead of the reverse. This prevents external viewers from being used when internal viewers are also in effect. 2019-06-18 Bob Weiner * hibtypes.el (grep-msg): Allowed for null char in place of first colon in colored grep output lines. 2019-06-17 Bob Weiner * hactypes.el (link-to-gbut): Added. hui.el (hui:link-possible-types): Added link-to-gbut. 2019-06-16 Bob Weiner * hyrolo.el: Replaced buffer-substring-no-properties with match-string-no-properties where possible. (hyrolo-hdr-and-entry-regexp): Changed to require whitespace following the entry prefix. (hyrolo-entry-group-number): Added. 2019-06-12 Bob Weiner * hib-kbd.el (kbd-key): Fixed preceding character test to not depend on the buffer's syntax table, potentially missing kbd-key ibuts, notably ones using the universal argument. * hbut.el (ibut:at-type-p): Added to test if point is on a specific type of implicit button. * hib-kbd.el (kbd-key:normalize): Removed aggregation of C-u arguments into something like: C-u(16) as this no longer works in current Emacs and causes an error. Now this just stays as "C-u C-u". 2019-06-11 Bob Weiner * hypb.el (hypb:format-quote): Modified to return non-string args as is rather than ignoring them so this can be used across any argument set. Used in hypb:error. 2019-06-10 Bob Weiner * htz.el (htz:date-parse): Fixed bug, missing seconds in format 4 leading to invalid time strings saved on MSWindows machines (and maybe more). Allow for this in style 5 which is how Hyperbole stores dates. (htz:time-make-string): Chop off any spurious digits at the right. * hactypes.el (link-to-ibut): Added. hui.el (hui:link-possible-types): Added ibut:at-p call for link-to-ibut. 2019-06-07 Bob Weiner * hibtypes.el (debugger-source): Added support for pytype package errors (close to Python pdb ones) 2019-06-06 Bob Weiner * hpath.el (hpath:find): Removed file-relative-name from error calls because does not work when current-directory and filename are on different drives under Windows at least through Emacs 26. (hpath:find): Fixed that default-directory was not set to current button's location, so path was expanded relative to another directory, notably in hpath:validate call. 2019-06-05 Bob Weiner * hpath.el (hpath:is-p): Tightened remote-path check to prevent matches that end with :line-num or :col-num. 2019-06-04 Bob Weiner * hactypes.el (annot-bib): Changed to find referent from the end of the buffer rather than beginning, to avoid multiple earlier annot-bib buttons. * DEMO (Hyperbole Source Buttons): Changed example button from annot-bib to kbd-key. * kotl/kvspec.el (kvspec:hide-levels): Changed behavior so view updates to default level clipping when 'l' is excluded from the viewspec. 2019-06-02 Bob Weiner * kotl/kvspec.el (kvspec:lines-to-show): Changed behavior so view updates to default cell clipping when 'c' is excluded from the viewspec. * kotl/kotl-mode.el (kotl-mode:show-all): Limited (kvspec:update t) call to interactive usage only. When kotl-mode:show-all is called in kvspec:update-view, it doesn't overwrite the to be set viewspec. * kotl/kvspec.el (kvspec:show-lines-per-cell) (kvspec:show-lines-this-cell): Fixed viewspec 'c0' to expand visible cells properly. 2019-06-01 Bob Weiner * hibtypes.el (ipython-stack-frame): Added to handle ipython stack traces and exceptions. 2019-05-30 Bob Weiner * hyperbole.el (hkey-maybe-global-set-key): Fix missing no-add argument to hkey-global-set-key call. 2019-05-26 Bob Weiner * hui-mouse.el (hkey-alist): For Python files, use derived-mode-p and add support for helm-pydoc buffers. ============================================================================== V7.0.3a test release changes ^^^^: ============================================================================== 2019-05-11 Bob Weiner * man/hyperbole.texi (External Viewers): Commented out reference to mailcap use since it is presently not used (commented out in the code). * hpath.el (hpath:find): Fixed filename and path ordering error when path contains a variable and a hash anchor. * DEMO (POSIX and MSWindows Paths): Added this section. * HY-WHY.kotl: Added a reference to that section. 2019-05-09 Bob Weiner * hmouse-drv.el (hkey-drag-item): (hmouse-click-to-drag-item): Added and thereby changed {M-o i} to trigger an error if not on an item to drag. This also prevent Hyperbole explicit button creation from being invoked which can be confusing to users. * DEMO (Displaying File and Buffer Items and Moving Buffers): Updated with {M-o i} change. 2019-05-07 Bob Weiner * hpath.el (hpath:directory-expand-alist: Added to store the reverse of each WSL mount-point for when converting from mswindows-to-posix. Set in hpath:cache-mswindows-mount-points. (hpath:cache-mswindows-mount-points): Downcase all mounted Windows paths. (hpath:mswindows-path-posix-mount-alist): Added. 2019-05-05 Bob Weiner * hmouse-tag.el (smart-jedi-find-file): Added. (smart-python-jedi-to-definition-p): Improved to use hpath:display-where to display target when possible, i.e. when the emacs-jedi project accepts our pull-request that adds this feature. 2019-04-22 Bob Weiner * hversion.el: Pushed BW changes for 7.0.2c test update. * hargs.el (hargs:delimited): Added exclude-regexp argument. * hpath.el (hpath:delimited-possible-path): Used above new argument to prevent matching to strings that include string quotes. 2019-04-21 Bob Weiner * man/hkey-help.txt: Added Company-mode and Treemacs entries. * hui-window.el (hmouse-alist-add-window-handlers): Renamed from hui-window--register. * man/hyperbole.texi (Smart Key - Company Mode): Added. 2019-03-11 Bob Weiner * man/hyperbole.texi (Implicit Buttons, gitlab-reference): DEMO (Gitlab (Remote) References): Added these sections. 2019-02-16 Bob Weiner * hui-window.el (smart-window-of-coords): Handled null coords parameter. 2019-02-10 Bob Weiner * hmouse-drv.el (hkey-drag-to): Fixed to match documentation that says will create an explicit file link button if called anywhere other than on a listing item. * hui-treemacs.el (smart-treemacs-modeline): Replaced old call of treemacs-buffer-exists? with new calls to treemacs-current-visibility and treemacs-get-local-buffer for Treemacs V2. 2019-02-06 Bob Weiner * hibtypes.el (ripgrep-msg): Tightened match to ignore empty potential filenames that matched when they were expanded to the current directory. 2019-02-05 Bob Weiner * hmouse-tag.el (smart-lisp-mode-p): Removed change-log-mode. (smart-lisp-at-change-log-tag-p): Added so can match only to bound Elisp entities in change-log-mode with '-' in the middle of their names to prevent false positives. hui-mouse.el (hkey-alist): Added tightened change-log-mode handling. man/hyperbole.texi (Smart Key - Lisp Source Code): Documented change. * hargs.el (hargs:delimited): Fixed that strings on lines with an odd number of delimiters might fail to match. Since strings can span lines but this function matches only strings that start on the current line, when start-delim and end-delim are the same and there are an odd number of delimiters in the search range, assume point is within a string and not between two other strings. For example, with the following text and point within "DEMO", its path previously was not found: For each site, the links are properly maintained. See "DEMO#Path suffixes and Variables" and "DEMO#Path Prefixes". "DEMO" * hui-treemacs.el: Deleted treemacs-mode from aw-ignored-buffers so can select a Treemacs window via ace-window. 2019-02-04 Bob Weiner * hui-mouse.el (smart-dired-assist): Prevented any region selection from causing multiple files to be marked for deletion; we want to mark only one. * hibtypes.el (annot-bib): Stopped this from activating when in org-mode to avert false positives. (markdown-follow-inline-link-p, markdown-internal-link): Added ibut:label-set to show a decent approximation of the button label when displaying help. 2019-02-03 Bob Weiner * hversion.el: Pushed BW changes for 7.0.2b test update. * hui-treemacs.el (treemacs-quit): Defined if treemacs doesn't and used. 2019-02-03 Mats Lidell * hui-treemacs.el (treemacs-version): Require v2 or higher. * hsettings.el (hyperbole-default-web-search-term-max-lines): (hyperbole-default-web-search-term): Added. * hpath.el (hpath:tramp-file-name-regexp): Added and used in hpath:remote-at-p. 2019-02-02 Bob Weiner * hsys-org.el (org-mode): Support derived modes too. 2019-01-31 Bob Weiner * man/hyperbole.texi (Keyboard Drags): Added doc of {M-o r }, replace selected window's buffer with that of another window. * man/hyperbole.texi (Keyboard Drags): DEMO (Displaying File and Buffer Items and Moving Buffers): Added doc of {M-o m }, swap selected window's buffer with that of 's. 2019-01-30 Bob Weiner * hmouse-drv.el (hkey-drag-to): Fixed to handle the case where it is called but no drag has taken place, i.e. when invoked from the keyboard via Ace Window. 2019-01-29 Bob Weiner * hargs.el (hargs:buffer-substring): Added and used in hargs:delimited to replace null char in colored grep output lines with a colon, so they are handled properly by the implicit buttons. 2019-01-27 Bob Weiner * hversion.el (hyperb:microsoft-os-p): Renamed to this. * hpath.el (hpath:cache-mswindows-mount-points): Added and called when Hyperbole is initialized, mainly to allow access to MSWindows network shares which would otherwise not be accessible as links under POSIX systems. (hypb:map-plist): Added to map over property lists. Called in hpath:cache-mswindows-mount-points. 2019-01-26 Bob Weiner * hversion.el (hyperb:wsl-os-p): Added to test for use of Microsoft WSL. * hpath.el (hpath:delimited-possible-path): Added optional include-positions parameter. 2019-01-21 Bob Weiner * hpath.el (hpath:mswindows-mount-prefix, hpath:mswindows-drive-regexp, hpath:mswindows-path-regexp, hpath:mswindows-to-posix, hpath:mswindows-to-posix-separators, hpath:posix-to-mswindows) hpath:posix-to-mswindows-separators, hpath:posix-path-p, hpath:substitute-posix-or-mswindows-at-point, hpath:substitute-posix-or-mswindows): Added to handle MSWindows paths under POSIX OSes, e.g. Windows Subsystem for Linux. (hpath:find-program): Commented out call to hpath:find-file-mailcap to prevent use of MIME external viewers on text files. hargs.el (hargs:delimited): Added call to hpath:mswindows-to-posix-path. hyperbole.el (hyperb:init): Abbreviated MSWindows mount point paths. 2017-12-29 Bob Weiner * hsettings.el (inhibit-hyperbole-messaging): Moved this from hyperbole.el to here to prevent it being reset when hyperbole-toggle-messaging reloads the hyperbole library. 2017-12-20 Bob Weiner * kotl/kexport.el (kexport:html-file-klink) (kexport:html): (kexport:html-replacement-alist): Added 'k' to precede klink HTML HREF references since these must start with a letter. * hui-select.el (hui-select-get-region): Added this to be used in other libraries. (hui-select-get-region-boundaries): Added and used in hui-select-thing. 2017-12-19 Bob Weiner * hib-social.el (github-reference, gitlab-reference): Added "people" reference support to list people who are part of a formal organization as well as a "staff" alias. Added "contributors" reference support to list project contributors as well. 2017-12-19 Bob Weiner * hib-social.el (github-reference): Added =item-id syntax. (gitlab-reference): Added to support Gitlab references. 2017-12-18 Bob Weiner * hib-social.el (github-reference): Fixed resolution of these formats of issue reference: gh#gh-34 and gh#issue/34 (needed to be plural). 2017-12-17 Bob Weiner * kotl/kfill.el: Eliminated use of filladapt.el since it causes kotl-mode filling errors. * kotl/kfill.el (kfill:forward-line): Removed improperly used [] in skip-chars-forward. 2017-12-16 Bob Weiner * hui.el (hui:key-dir): hui-window.el (hmouse-at-item-p): hui-jmenu.el (hui-menu-buffer-mode-name): Simplified using buffer-local-value. 2017-12-15 Bob Weiner * hmouse-drv.el (hkey-throw): Fully resolved temporary display of newly created frames with a (redisplay t) to force display of any window updates during the temporary display. 2017-12-13 Bob Weiner * hmouse-drv.el (hkey-throw): Partially solved temporary display of newly created frames (when not given focus initially with a '(no-focus-on-map . t) property), so hkey-throw to a new target frame now temporarily displays the target frame and then makes the start frame the uppermost frame. When on an item though, the item is not visible during the temporary display yet. * Makefile (texinfo): Added texinfo dependency target and added additional image dependencies in man/im. * hyperbole.el (require 'hmouse-drv): Changed from hmouse-key to prevent a require cycle during macro expansion. hmouse-key.el: Changed requires to just be during compile since hyperbole.el now includes these requires and will load hmouse-key. 2017-12-12 Bob Weiner * hversion.el: Pushed 7.0.2a test update. * hmouse-drv.el (hkey-throw): Modified to show a message if the frame of release is different than the frame of depress, since this frame is typically hidden by the depress frame. * hmouse-tag.el (smart-lisp-mode-p): Added change-log-mode since such files often contain Lisp references. * hypb.el (hypb:select-window-frame): Added and used in hmouse-item-to-window. (hypb:save-selected-window-and-input-focus): Added and used in hkey-throw. * kotl/kotl-mode.el (kotl-mode): Fixed setq close paren error that skipped 4 settings of paragraph-start, selective-display, selective-display-ellipses and track-eol. 2017-12-10 Bob Weiner * man/hyperbole.texi (Menu Commands, HyRolo Menu): Documented how to invoke the Koutliner and HyRolo popup menus in Emacs. * hyrolo-menu.el (hyrolo-menubar-menu): kotl/kmenu.el (kotl-menubar-menu): For GNU Emacs, use standard binding of C-mouse-3 to popup mode-specific menu instead of mouse-3. 2017-12-08 Bob Weiner * hmouse-drv.el (hkey-ace-window-setup): Autoloaded since might be added to an init file before Hyperbole is loaded. * hycontrol.el (hycontrol-quit-frames-mode, hycontrol-quit-windows-mode): Added conditionals to allow for quitting from help buffers with {q} while remaining in HyControl, e.g. if display a key binding help window. Added {Q} binding to unconditionally quit from HyControl. * hmouse-drv.el (hkey-buffer-move): Added directional movement commands that call this function. hkey-buffer-move-left, hkey-buffer-move-right, hkey-buffer-move-down and hkey-buffer-move-up. 2017-12-07 Bob Weiner * hload-path.el (hyperb:emacs-p): Removed Emacs19 test. (hyperb:kotl-p): Removed since all versions of Emacs in use now support the Koutliner. * hlvar.el - Removed this since colons are now handled by Emacs 26 in local variable names. * hypb.el (hypb:rgrep): Added support for ripgrep. hibtypes.el (ripgrep-msg): Added implicit button support for ripgrep (rg) messages where the associated pathname is output once before all matching lines. See "https://github.com/BurntSushi/ripgrep". 2017-12-04 Bob Weiner * hmouse-drv.el (hmouse-alist): Reload the def of this variable if its value is null. (hmouse-choose-windows): Added to perform cross-window drags, replacements and throws with 3 mouse clicks. 2017-12-03 Bob Weiner * hui-treemacs.el: Removed replacements for treemacs functions; as of Treemacs 1.14, all needed changes are included. 2017-12-01 Bob Weiner * hmouse-drv.el (hkey-drag-stay, hkey-replace): Added for use as ace-window commands. (hkey-throw): Rewrote so if not on an item, then throws the current buffer. hkey-replace is the inverse, it grabs the specified buffer and places it into the selected window ({r} command key for ace-window). hkey-drag-stay does a drag but leaves point in the originally selected window. (hmouse-click-to-drag, hmouse-click-to-drag-stay, hmouse-click-to-drag-to) hmouse-click-to-replace, hmouse-click-to-swap, hmouse-click-to-throw): Added to click with the mouse twice on two different windows to select the windows using hmouse-choose-windows. (hkey-drag, hkey-drag-stay, hkey-drag-to, hkey-replace, hkey-swap, hkey-throw): Added and made interactive with ace-window window parameter selection. (hkey-buffer-to): Added to copy a buffer from-window to-window, using ace-window to select the windows. (hkey-swap-buffers): Added to swap buffers between from-window and to-window, using ace-window to select the windows. * hui-treemacs.el (smart-treemacs): Added standard Hyperbole end-of-line scrolling support. * hui-mouse.el (smart-company-to-definition, smart-company-help): Added to support company completion mode. hmouse-sh.el (hmouse-shifted-setup, hmouse-unshifted-setup): Added Action and Assist Key local bindings for company-mode for GNU Emacs. 2017-11-30 Bob Weiner * man/hyperbole.texi (Glossary): Added Jedi item with link to its home page. Added link to the OO-Browser home page in its item. * hmouse-tag.el (smart-python-jedi-to-definition-p): Added and called in smart-python to use the Jedi package when its server is running. It jumps to the proper definition of multi-level module references definitions, e.g. a.b.c. Also fixed error where the default action was not jumping to a tag definition at point because it was testing that the identifier parameter was non-nil (no identifier is sent in such usage). * hui-mouse.el (hkey-alist): Moved smart-python prior to Imenu for more advanced definition lookups * hyperbole.el (temp-buffer-show-hook, temp-buffer-show-function): Added Hyperbole hkey-help-show function rather than replacing any existing hook values. 2017-11-29 Bob Weiner * hibtypes.el (markdown-internal-link): Rewrote (and added support functions) to handle markdown infile links properly. Previous use of markdown-do was removed because that now does things other than following links. 2017-11-28 Bob Weiner * hmouse-drv.el (hkey-help-show): Added conditionals to support org-mode org-goto *Org Help* buffer properly. 2017-11-27 Bob Weiner * hmouse-drv.el (hkey-ace-window-setup): Made new ace-window frames (window id = z) inherit the size of the prior selected frame; same as HyControl. * hui-window.el (hmouse-kill-and-yank-region, hmouse-yank-region): Added select-frame-set-input-focus in case released in a different frame. 2017-11-26 Bob Weiner * hmouse-drv.el (hkey-throw): Restored input focus to start-win rather than just making it the selected window. (hkey-drag-to): Fixed predicate test to call hmouse-at-item-p instead of hmouse-drag-item-to-display and set input focus to release-window if dragging an item. * hmouse-drv.el (hkey-ace-window-setup): Added deletion of i and t command bindings before adding them to aw-dispatch-alist. (hkey-throw): Fixed split line code typo here. hycontrol.el (hycontrol-frame-offset): Fixed typo. ============================================================================== V7.0.3 changes ^^^^: ============================================================================== 2017-11-23 Bob Weiner * hversion.el: Released 7.0.2. * hui-window.el (hmouse-at-item-p): Added to test if on a draggable item. * hmouse-drv.el (hkey-throw): Added to throw a drag item to a specific window via the ace-window package and the key sequence {M-o t }, leaving the original source window selected. * man/hyperbole.texi (Keyboard Drags): Added description of throwing an item. * hui-mouse.el: Fixed a compilation time problem with when hmouse-alist was defined. ============================================================================== V7.0.2 changes ^^^^: ============================================================================== 2017-11-22 Bob Weiner * hversion.el: Released 7.0.1. * hui.el (hui:buf-writable-err): Added previously unused func-name parameter to error msg. * hypb.el (hypb:error): Fixed issue when a literal string with % characters in it was sent to format and triggered an error, e.g. when a buffer or file name contains a %. * hmouse-drv.el (hkey-help-show): Limited local binding of {q} to hkey-help-hide only when in a help-mode (or derived) buffer. 2017-11-21 Bob Weiner * DEMO (Displaying File and Buffer Items): Added description of ace-window integration. * HY-WHY.kotl: Added link to Delimited Thing drags; mention of Treemacs * man/hyperbole.texi (Smart Key - Treemacs): Added and updated with other improvements for this release. (Keyboard Drags): Added this section and documented integration with ace-window package. * hui-window.el (hmouse-modeline-click): Loosened check to allow a small movement between press and release as long as it is less than whatever amount of movement registers a drag (used to require exact pixel match). * hmouse-drv.el (hkey-ace-window-setup): Setup keyboard-based display of items in windows specified by short ids. See its doc string for how to use. (hkey-drag, hkey-drag-to): Added for mouse drag emulation via keyboard from a single function that uses the selected window point for depress location and the parameter RELEASE-WINDOW for the window and its point for release. hkey-drag-to is useful as a command in the ace-window package's aw-dispatch-alist, e.g. {i} for insert item, because it leaves RELEASE-WINDOW selected. * hui-select.el (hui-select-ignore-quoted-sexp-modes): Added so major modes to ignore for syntactic pair selection can be customized. (hui-select-at-delimited-thing-p): Changed to not trigger when on an Emacs button. * hui-window.el (hmouse-drag-between-frames): Replaced calls to window-valid-p with window-live-p. (hmouse-drag-window-side, hmouse-drag-between-windows, hmouse-drag-same-window, hmouse-drag-outside-all-windows, hmouse-drag-item-to-display, hmouse-item-to-window): Added window-live-p checks for cases where a window has been deleted between depress and release. * hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Updated to support keyboard drag emulation. (hkey-help): Changed hkey-forms to use hmouse-alist instead of hkey-alist so mouse drags are accounted for when emulating drags from the keyboard and then invoking {C-h A} for help. hui-window.el (hmouse-drag-outside-all-windows): Triggered only if an action/assist-key press has occurred, e.g. could be called by hkey-help when no press has occurred. (hmouse-x-coord, hmouse-y-coord): Removed error when there is no valid coordinate and returned nil instead to support keyboard drag emulation help. 2017-11-20 Bob Weiner * hmouse-drv.el (hkey-absolute-pixel-position): Added and used in Action/Assist Key functions. (hmouse-set-point): Fixed hkey-operate bug by wrapping final (posn-at-point) in a list with an event type symbol so if called from a keyboard event, returns a proper format event. (hkey-operate): Changed so output messages only when called interactively. * hui-treemacs.el: Added for Smart Key support of the Treemacs file manager. (smart-treemacs): Added. (smart-treemacs-modeline): Added to allow toggling of Treemacs display on Action Key clicks on buffer id of modeline. hui-mouse.el (hkey-alist, action-key-modeline-buffer-id-function): Added Smart Key treemacs package support. hui-window.el (action-key-modeline): Updated to call action-key-modeline-buffer-id-function. hactypes.el (link-to-buffer-tmp): Added optional 2nd parameter of POINT to display. 2017-11-19 Bob Weiner * hui-window.el (hmouse-item-to-window): Added support for hmouse-drag-item-mode-forms sending a sequence of (buffer position) rather than just buffer. (hmouse-drag-item-mode-forms): Added support for dragging items from the treemacs hierachical file viewer package. 2017-11-17 Bob Weiner * hyrolo.el (hyrolo-initialize-file-list): Fixed to set hyrolo-file-list. (hyrolo-retrieve-google-contacts): Updated to cache Google passphrase whenever Google contacts are used so the user is not prompted for his passphrase on every HyRolo search. man/hyperbole.texi (HyRolo Settings): Updated Google Contacts settings handling to document this caching. * man/im/C-hh.png - Added showing Hyperbole mini-buffer menu prefix key binding. 2017-11-16 Bob Weiner * hywconfig.el (hywconfig-delete-pop): Fixed bug that removed the ring entry before using it to restore the window configuration. ============================================================================== V7.0.1 changes ^^^^: ============================================================================== 2017-11-15 Bob Weiner * hversion.el: Updated to 7.0.0 for major release. * smart-clib-sym: Removed file-newer Perl script dependency. file-newer: Removed. * Makefile (help): Removed misplaced double quote characters. * hui-window.el (hmouse-drag-window-side): Fixed coordinate error when drag release is outside of Emacs. * hui-mouse.el (smart-helm-assist): Fixed message formatting bugs in hkey-debug message. * hlvar.el (hack-local-variables): Changed from use of older inhibit-local-variables variable to newer (inhibit-local-variables-p) function call. * Makefile (version): Removed HY-ANNOUNCE-SHORT from distribution. * kotl/kexport.el (kexport:html): Changed to wrap cell contents in
 tags if soft-newline-flag is nil
    rather than using 
hard newlines, so all cell formatting is preserved. Also changed NAME attribute to ID for HTML5. 2017-11-14 Bob Weiner * kotl/kimport.el (kimport:star-heading): Added and replaced use of hard-coded regexps in star outline importation. Also, stopped allowing leading whitespace before outline heading stars so can use indented stars as list items rather than outline headings. * hibtypes.el (text-toc): Expanded file names to include DEMO and TUTORIAL. DEMO: Added Table of Contents and a section on using it, Table of Contents Browsing. * hbut.el (ebut:label-p): Changed last parameter to limit search to two lines rather than one, so Info node matches can span two lines as they often do. * HY-ABOUT: Added link to HY-WHY.kotl. HY-WHY.kotl: Added links to relevant DEMO sections throughout. DEMO (Koutliner): Updated this section. hui-menu.el (infodock-hyperbole-menu): Added Why-Use? entry. hui-mini.el (hui:menus): Added WhyUse entry to display HY-WHY.kotl, list of Hyperbole use cases. man/hyperbole.css (code, tt): Removed leading and trailing padding of 5px from code samples so display inline better. 2017-11-13 Bob Weiner * hui-window.el (hmouse-drag-thing): Added error if drag ends within the delimited thing region, so user knows that this is an invalid drag. (hmouse-yank-region, hmouse-kill-and-yank-region): Made no-op unless hkey-region is non-nil. This handles the hmouse-drag-thing case when we want that predicate true (so no other predicate matches) but there is no region to copy or kill, e.g. when the release point is within the thing itself. * hui-select.el (hui-select-delimited-thing): Fixed to match doc and work as a predicate. * hui-window.el (hmouse-goto-depress-prev-point): Deleted since it duplicated hmouse-goto-region-prev-point. (hmouse-goto-region-prev-point): Added missing check for prev-point nil when setting loc. This caused the Smart Keys to fail when used if a Lisp backtrace was active. (hmouse-drag-thing): Erased any saved location of a region prior to Smart Key depress since now we have a new region location. This prevents hmouse-kill-and-yank-region from jumping to the old location. Also fixed edge cases where want to copy or move thing to the beginning or end of the thing region. (hmouse-goto-region-point): Renamed to hmouse-goto-region-prev-point, for clarity. (hmouse-kill-and-yank-region, hmouse-kill-region): Used value of point saved in hkey-value to determine the region if non-nil. * hui-select.el (hui-select-delimited-thing, hui-select-thing): Changed to use use-region-p. hmouse-drv.el (hmouse-use-region-p): Added and used to improve hmouse-drag-thing. (hmouse-save-region): Simplified. hui-window.el (hmouse-drag-region-active): Changed call of region-active-p to hmouse-use-region-p. * hui-window.el (hmouse-kill-and-yank-region): Fixed error that was testing not in depress buffer (as desired) but the buffer prior to depress. Also protected insertion from syntax-directed indentation errors. * hui-em-but.el hui-xe-but.el (hproperty:but-create-on-yank): Added as handler for yank-handled-properties so explicit buttons are re-highlighted when yanked after being killed. 2017-11-06 Bob Weiner * hyrolo-demo.el (hyrolo-demo-quit): Added to unload hyrolo-demo code and used in demo. * man/hyperbole.texi (Menus): Documented hyperbole-popup-menu. * hui-menu.el (hyperbole-popup-menu): With a non-nil prefix arg, rebuild the Hyperbole popup menu in case it did not initialize properly for any reason. * man/hyperbole.texi (Using URLs with Find-File): Added URL browser customization menu reference and image. (Smart Key - WWW URLs): Added browse-url-browser-function and Cust/URL-Display reference. (Referent Display): Added this section and documented display options for standard link referents. * hyrolo-logic.el (hyrolo-map-logic): Removed improper outline test for old format Emacs outlines. (hyrolo-fgrep-logical): Fixed to include sub-entries in logical searches. * hib-kbd.el (kbd-key:mark-spaces-to-keep): Added to preserve spaces in (), [], or <> delimited sections of Hyperbole sequences of brace delimited keys; used this function in kbd-key:normalize. 2017-11-04 Bob Weiner * hycontrol.el (hycontrol-windows-grid-buffer-list): Replaced all uses of (eq major-mode 'dired-mode) with (derived-mode-p 'dired-mode) to generalize. 2017-11-03 Bob Weiner * man/hyperbole.texi (HyRolo Settings): Added Google Contacts set up and use description. * hyrolo.el (hyrolo-file-list-initialize): Made interactive and displayed a message with the resulting list if called interactively. Added autoload. (hyrolo-initialize-file-list): Renamed from hyrolo-file-list-initialize. * hui-window.el (hmouse-split-window): Changed to split selected window parallel to its shortest dimension. * DEMO: Added new section on HyRolo. DEMO-ROLO.otl: Added. hyrolo-demo.el: Added with the functions hyrolo-demo-fgrep and hyrolo-demo-fgrep-logical. hyrolo-logic.el (hyrolo-map-logic): Fixed issue where a buffer was required but a buffer name was given as an argument preventing search from matching. (hyrolo-fgrep-logical): Fixed that logical searches were not forced to case insensitive to match hyrolo-fgrep. Also updated to handle non-logical string searches. * hbut.el (ebut:operate): Fixed issue where user had selected a region to use as a button label but then the same text was inserted when the label was created. Solved by moving point to the beginning of any marked region so buffer text comparison succeeds. * hui-window.el (hmouse-x-coord, hmouse-y-coord): Simplified logic in GNU Emacs clause. (hmouse-emacs-modeline-event-p): If a drag release was to an unselected frame mode-line, on click-to-focus systems, the release event will not include the mode-line area when release was on the mode-line, so manually compute if that was the location. 2017-11-02 Bob Weiner * hmouse-drv.el (hkey-help): Fixed that arguments were being stripped from action calls in the help output. * hibtypes.el (pathname): Fixed to handle "-subr.elc" whose prefix character "-" tells Hyperbole to load, not display subr.elc. Also handled subr.el.gz compressed source files. * hib-kbd.el (kbd-key): Prevented matches to brace delimited things that are not preceded by whitespace or at the beginning of buffers, e.g. ${variable}. * man/hyperbole.texi (Implicit Buttons): Added examples. hib-kbd.el (kbd-key): Improved doc. * hibtypes.el (hyp-address): Fixed to grab email address using thing-at-point and work in mail-mode not just whatever mode hmail:composer is. (Info-node): Added check for ``dual single quotes'' used in Texinfo smart quotes. * hpath.el (hpath:substitute-value): (hpath:substitute-dir): Fixed to handle unbound symbol names. This fixed an error when an environment variable matched a symbol but the symbol was unbound, e.g. (hpath:substitute-value "${PATH}/python") * hmouse-tag.el (smart-lisp-at-definition-p): Fixed to ignore lines like: (default (find-tag--default)) so the function in that line can be found as a tag. * HY-NEWS: Updated for next major release * man/hyperbole.texi (Button Colors): Added doc on hproperty:but-highlight-flag. (Hook Variables): Added doc of: action-key-depress-hook, action-key-release-hook, assist-key-depress-hook and assist-key-release-hook. * hsettings.el (hproperty:but-highlight-flag): Added as a setting. hui-em-but.el (hproperty:but-highlight-p): Renamed to hproperty:but-highlight-flag. (hproperty:but-emphasize-p): Renamed to hproperty:but-highlight-flag. hui-xe-but.el (hproperty:but-highlight-p): Renamed to hproperty:but-highlight-flag. (hproperty:but-emphasize-p): Renamed to hproperty:but-highlight-flag. 2017-11-01 Bob Weiner * hib-kbd.el (kbd-key:special-sequence-p): Added and used in implicit button type kbd-key and kbd-key:act. (kbd-key:key-and-arguments): Added to allow for key sequences with interactive arguments and added an example in DEMO. * hui-mini.el (hui:menus): hui-menu.el (hui-menu-key-bindings): Added Find Web and Jump Thing key binding change entries. * hyperbole.el (mouse-position-function): Added this setting to make mouse-position and mouse-pixel-position always return the selected frame. * hsettings.el (helm-allow-mouse): Changed to require Hyperbole-modified branch of Helm named global_mouse and set helm-allow-mouse to the proper value of 'global-mouse-bindings. * man/hyperbole.texi (Version): Updated to 6.0.2g and rebuilt output formats. * hui-window.el (hmouse-prior-active-region): Changed to call use-region-p rather than active-region-p, for a tighter test. This is used as a predicate; fixed bug that moved point, causing Smart Key release logic to use the wrong point. * hmouse-key.el (hmouse-add-unshifted-smart-keys): Removed GNU Emacs-only dependencies. * kotl/kotl-autoloads.el: Renamed from kotl/kotl-loaddefs.el to match package autoload naming scheme. * hmouse-sh.el (hmouse-unshifted-setup): In Info-mode, Emacs uses key-translation-map to link mouse-1 to do whatever mouse-2 does but because Hyperbole uses both down and up bindings on mouse2, this does not work. So we rebind mouse-1 and double-mouse-1 in Info mode to be actual Action Mouse Keys (which makes them follow Info links/cross-references properly, doing a superset of what they did before). (hmouse-posn-set-point): Added to handle frames rather than windows returned by some events; used in hmouse-move-point-emacs. * hui-mouse.el (hmouse-tag): Added require of hmouse-info and hmouse-tag for smart-info, smart-lisp etc. when autoload file is not available. * hmouse-sh.el (hmouse-bind-key-emacs): hui-select.el (hui-select-initialize): Added missing double-down-* and triple-down-* bindings. 2017-10-31 Bob Weiner * hyperbole.el (hyperb:init): Added an "Initializing Hyperbole..." message at the beginning of this function. Removed 'Hyperbole loading' message at the beginning of this file since Emacs load function outputs a similar message. Moved Hyperbole 'ready for action' message here rather than at the end of this file since Hyperbole initialization may be deferred until after Emacs initializaton time. Hyperbole init. is complete only after this function is run. 2017-10-30 Bob Weiner * man/hyperbole.texi (Glossary): Removed mention of old remote file access packages: ange-ftp and EFS. Use Tamrp only now. (Searching and Summarizing): Renamed from Location. * hibtypes.el (mail-address): Made lower priority than pathname so when an email-like user@domain is part of a remote pathname, this won't trigger. * hpath.el (hpath:remote-at-p): Fixed to return /ftp: prepended to ftp paths since Tramp requires it. (hpath:rfc): Prepended /ftp: to value so tramp recognizes it as a remote file path. * man/hyperbole.texi (Smart Mouse Key Modifiers): hmouse-mod.el: Disabled this feature since it conflicts with present Emacs bindings of Control- and Meta- mouse keys. * hui-mini.el (Doc/Manifest): hui-menu.el (Documentation/Manifest): Changed to use hypb:display-file-with-logo so can quit after viewing. * hversion.el (id-browse-file): Changed alias from find-file-read-only to view-file. hui-mini.el (Doc/SmartKeys): Changed command used to match that used when same doc is displayed with a click at the right of a modeline. * man/hyperbole.texi (Smart Keys): Added section on Smart Mouse Key Drags to match those in the DEMO file. (Global Key Bindings): Replaced hkey-toggle-bindings with proper reference to hyperbole-toggle-bindings. (Smart Key Bindings): Included hyperbole-toggle-bindings (toggles keyboard and mouse keys) rather than hmouse-toggle-bindings (toggles only mouse keys); moved the latter to the Global Key Bindings appendix. 2017-10-27 Bob Weiner * man/hyperbole.css: Added to format HTML version of the Hyperbole manual like the Hyperbole web page, greatly improving its appearance. * man/hkey-help.txt: man/hyperbole.texi (Modeline Clicks and Drags): Documented new drag below. hui-window.el (hmouse-alist): Added context of a drag from a window with a release to a modeline which for Action Mouse Key splits the release window (which contains the modeline) and then displays the item or the buffer from the depress window in the release window. With the Assist Mouse Key, just swaps buffers with no new window creation. (hmouse-modeline-click): Updated to do full testing for a click, so this can be called at any point after Smart Mouse Key release. (hmouse-buffer-to-window, hmouse-item-to-window): Added optional boolean new-window parameter to force a new window before buffer display. (hmouse-split-window): Added. (hmouse-modeline-event-p): Fixed conditional error that caused fall through past Modern GNU Emacs clause. (action-mouse-key, assist-mouse-key): Set above new variables. (action-key, assist-key): Added clear of any value of *-key-depress/release-position. hmouse-drv.el (action-key-release-position, assist-key-release-position): Added these to compare to existing *-key-depress-position value. * README.md, HY-ANNOUNCE: Updated for public release. 2017-10-26 Bob Weiner * man/hyperbole.texi (Smart Mouse Drags outside a Window): Added this new section. Updated manual with all new drag actions. * hui-window.el (hmouse-goto-region-point, hmouse-prior-active-region): Rewrote these to work properly so that Smart Mouse yanking and killing feature works as documented. Previously, it was not switching to the buffer of the depress point when checking for an active region. * hmouse-drv.el: Updated doc. * MANIFEST (topwin): Renamed to topwin.py. * hycontrol.el (hycontrol-windows-grid): Improved doc. * hyperbole.el (hkey-initialize): Added global {C-c @} binding to hycontrol-windows-grid. hui-mini.el (hui:menus): Under cust-keys, added GridOfWindows key change entry. hui-menu.el (hui-menu-key-bindings): Added Grid-of-Windows-Key entry. man/hyperbole.texi (Global Key Bindings): Documented this binding. * DEMO (Modeline Mouse Clicks): Added section, "Running Dired on the Current Directory". * man/hyperbole.texi (Smart Key - Image Thumbnails): Added this section. Wrapped all images with @example and removed @center so do not appear way to the left of text when formatted as html. (Koutliner): Centralized all key binding index entries under "koutliner, ". (Glossary): Added Windows Grid entry. (HyControl): Added Concept Index entries. (Manual Overview): Improved pointer to DEMO. * hycontrol.el (hycontrol-windows-grid-rows-columns): Renamed to hycontrol-make-windows-grid. (hycontrol--frames-prompt-format, hycontrol--windows-prompt-format): Changed FRAME: and WINDOW: prompt to plural to match mode and variable names. 2017-10-25 Bob Weiner * hycontrol.el: Extended initial commentary with new features and improved explanations. (hycontrol-split-windows-rows-columns): Modified to temporarily exit HyControl mode if need to read a rows-columns argument. (hycontrol-split-windows-buffer-list, hycontrol-split-windows, hycontrol-split-windows-by-major-mode hycontrol-split-windows-repeatedly, hycontrol-split-windows-rows-columns): Renamed by replacing 'split-windows' with 'windows-grid'. (hycontrol-window-minimize-lines): Previously did not resize window if it could not display all of the buffer lines in the window. Now will resize to 1 line if cannot or if all lines are already displayed. (hycontrol-split-windows-buffer-list): Added doc string. * DEMO (HyControl): Added interactive examples of newest HyControl commands. * hui-window.el (hmouse-goto-depress-prev-point): Fixed to handle when no prev-point is saved. (hmouse-drag-region-active): Return nil if no prev-point saved. * hpath.el (hpath:is-p): Fixed to handle single % in path argument when sent as format string near the end of the function. * hib-kbd.el (kbd-key:normalize): Quoted % characters as %% to prevent format from treating them specially. (kbd-key:hyperbole-hycontrol-key-p): Added to match key sequences within HyControl since its prefix arguments are specified without C-u or ESC or META prefixes. (kbd-key, kbd-key:act): Used above function here. * hmouse-drv.el (hkey-either): Fixed to ignore prefix args set by HyControl. * hyperbole.el (hkey-initialize): hui-menu.el (hui-menu-key-bindings): Changed {C-c \} entry from hycontrol-windows to new hycontrol-enable-windows-mode. 2017-10-24 Bob Weiner * man/hyperbole.texi (Version): Updated to 6.0.2f and rebuilt output formats. * hycontrol.el (hycontrol-universal-arg-digit): Removed first argument and replaced with global hycontrol-arg, so could set this value internally. (hycontrol-debug): Renamed from hycontrol--debug. Made public so can be set directly. (hycontrol-setup, hycontrol-frames, hycontrol-windows): : Removed debug parameter; no longer needed since all events are handled normally by Emacs now. (hycontrol-windows-mode-map): [ and ] bindings; don't call these interactively because a prefix arg of 1 tries to make one window 1 line tall. (hycontrol-split-windows-repeatedly): Added to allow rapid visual testing of various window layouts until satisfied. (hycontrol-post-command-hook): Made this automatically quit from HyControl whenever a minibuffer prompt becomes active so can use regular keys to type. (hycontrol-invert-mode-line-flag, hycontrol-invert-mode-line): Added to invert mode-line to emphasize the special key bindings in effect in HyControl modes. 2017-10-23 Bob Weiner * hycontrol.el (hycontrol-split-windows-buffer-list): Added to prefix buffer-list with any marked items when in a Dired, Buffer-Menu or iBuffer listing buffer. If any such items exist, the buffer-list is not filtered by hycontrol-display-buffer-predicate-list. (hycontrol-pre-command-hook): Added and changed setting of prefix-arg to pre-command-hook. This set it properly for HyControl commands. (hycontrol--prompt-format): Added to generalize help prompt handling. (hycontrol-post-command-hook): Replaced windows and frames post-command-hook with this one. (hycontrol-frames-mode, hycontrol-windows-mode): Made these global minor modes and added their variables to the hyperbole-screen group. Buffer local minor modes renamed to hycontrol-local-*-mode. (hycontrol-quit-frames-mode, hycontrol-quit-windows-mode): Changed defs to disable its global minor mode. (hycontrol-post-command-hook): Fixed so HyControl help messages are not logged to the *Messages* buffer. (hycontrol-disable-modes): Added. * set.el (set:create): Added autoload in case is ever used without a require. * hycontrol.el (hycontrol-split-windows, hycontrol-split-windows-rows-columns, hycontrol-split-windows-by-major-mode): Incredible new autoloaded commands that split a frame into a number of balanced windows specified by rows and columns (typically as prefix arg digits). Each window shows a different buffer, if possible, with the by-major-mode command preferring buffers with the specified major mode. The hycontrol-split-windows chooses the by-major-mode command when given a prefix arg of 0; otheriwse, the rows-column one. (hycontrol-window-display-buffer, hycontrol-display-buffer-predicate-list) hycontrol--invert-display-buffer-predicates): Added to support new commands. (require 'set): Added for set:create used in hycontrol-split-windows-by-major-mode. (hycontrol-*-mode-map): Bound {@} to hycontrol-split-windows-rows-columns, also in Buffer-menu, IBuffer and Dired modes. * hycontrol.el (hycontrol--initial-which-key-inhibit): Added. (hycontrol-end-mode, hycontrol-frames, hycontrol-windows): Used above flag. (hycontrol-setup): Refactored common parts of hycontrol-frames and hycontrol-windows here. (hycontrol-frames-setup, hycontrol-windows-setup): Added and used in hycontrol-frames and hycontrol-windows, respectively. 2017-10-22 Bob Weiner * Makefile ($(pkg_dir)/hyperbole-$(HYPB_VERSION).tar): Ensured `topwin.py' script was made executable. hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Changed to find `topwin.py' executable in hyperb:dir so no additional installation is necessary. * hycontrol.el (hycontrol-window-to-new-frame): Fixed to duplicate prior selected window size properly. * hui-window.el man/hkey-help.txt: Noted that a modeline click on a dired Buffer ID shows the parent directory. 2017-10-20 Bob Weiner * hycontrol.el (hycontrol-help-flag): (hycontrol-toggle-help): Added to allow toggling minibuffer key binding help off. (hycontrol-frames-mode, hycontrol-windows-mode): Made HyControl modes into minor modes. (hycontrol-enable-frames-mode, hycontrol-enable-windows-mode): Renamed from hycontrol-toggle-to-*-mode. man/hyperbole.texi (HyControl): Updated documentation with these changes. * hbut.el (ibtype:create): Expanded this doc for defact, explaining how actions are connected to its 'at-p' parameter. * hycontrol.el (hycontrol-abort-mode): Added and used when {C-g} is pressed; exits HyControl and executes (keyboard-quit). (hycontrol-end-mode, hycontrol-quit-frames-mode, hycontrol-quit-windows-mode, hycontrol-toggle-to-frames-mode, hycontrol-toggle-to-windows-mode): Added and used as key bindings. (hycontrol-exit-mode): Deleted and replaced with above commands. (hycontrol-frame-fit-to-screen): Changed to adjust width and height separately which fixed a bug in our call to set-frame-size which kept increasing the frame height slightly. (hycontrol-frames, hycontrol-windows): Prevented `which-key' package from popping up its key help and interferring with the minibuffer message while in HyControl. Otherwise, the which-key help could be left onscreen after a quit of HyControl. * hui-window.el (hmouse-pulse-flag): Made t the default because timing and display issues with pulsing drag items were resolved now. 2017-10-19 Bob Weiner * Makefile (pkg): Changed hyperbole source dir from hyperbole- to hyperbole since that is the name of the git repo top-level directory from which packages are now built. * hui-jmenu.el (hui-menu-hywconfig): Fixed improper variable reference that kept Delete-Name and Restore-Name from ever being active. 2017-10-19 Bob Weiner * man/hyperbole.texi (Version): Updated to 6.0.2e and rebuilt output formats. * hycontrol.el (hycontrol-frame-adjust-widths, hycontrol-frame-adjust-heights, hycontrol-frame-adjust-widths-full-height, hycontrol-frame-adjust-heights-full-width, hycontrol-set-width-percentage-full-height, hycontrol-set-height-percentage-full-width, hycontrol-frame-widths-pointer, hycontrol-frame-widths, hycontrol-frame-heights-pointer, hycontrol-frame-heights: Added to cycle through resizing height or width of frames to common sizes. Also cycle through one dimension while fixing the other dimension at full-screen size. (hycontrol--frames-prompt-format): Added {a} and {A} bindings to both frames and windows keymaps to adjust frame width and height respectively by cycle through a list of common fixed percentages such as 25% and 50%. Added to Hyperbole manual. 2017-10-18 Bob Weiner * hycontrol.el (hycontrol-restore-frame-configuration, hycontrol-restore-window-configuration, hycontrol-save-configurations, hycontrol-delete-other-frames, hycontrol-delete-other-windows, hycontrol-clone-window-to-new-frame hycontrol-make-frame): Made interactive. (hycontrol-frames, hycontrol-windows): Forced arg to numeric value on entry. (hycontrol-stay-in-mode, hycontrol-universal-arg-digit, hycontrol--debug, hycontrol--exit-status, hycontrol-arg, hycontrol--frames-prompt-format, hycontrol--windows-prompt-format, hycontrol-frames-pre-command-hook, hycontrol-windows-pre-command-hook, hycontrol-frames-mode-map, hycontrol-windows-mode-map, hycontrol-exit-mode): Added. (hycontrol-prettify-event, hycontrol-handle-event): Removed. (hycontrol-frames, hycontrol-windows): Rewrote HyControl to use a frame-mode and window-mode transient keymap which allows for regular key bindings and eliminates the need for a HyControl event loop and processing of non-HyControl events. There should be no change in HyControl user-visible behavior from this other than that key bindings may now be customized (remember to update the HyControl minibuffer prompts if you do change any). And mouse wheels now work for fast multi-window scrolling. 2017-10-17 Bob Weiner * hycontrol.el (hycontrol-screen-offset-alist, hycontrol-set-screen-offsets, hycontrol-display-screen-offsets): Changed ordering of items to match Emacs window-edges and frame-edges. (hycontrol-fit-to-screen): Added and used to ensure resized and repositioned windows fit on the screen. (hycontrol-set-frame-height, hycontrol-set-frame-position, hycontrol-set-frame-size, hycontrol-set-frame-width): Added with calls to hycontrol-fit-to-screen. * man/hyperbole.texi: Removed InfoDock and XEmacs references since they are so old and no longer maintained that no one uses them today. * hmouse-sh.el (hmouse-unshifted-setup): Changed to enable right mouse key as Assist Key unless optional argument MIDDLE-KEY-ONLY-FLAG is non-nil (which is how it is called from hmouse-shifted-setup). * hycontrol.el (hycontrol-frame-percentage-of-screen): Automatically adjusted out of bounds percentages to the closest number of 0 and 0.998 (so does not overflow screen. Automatically moved frame if right or bottom edges are offscreen as a result of size change. * DEMO (Dragging Buffers and Windows): Renamed this from 'Moving Buffers' and added subsections. 2017-10-16 Bob Weiner * man/hyperbole.texi (Smart Key Modeline Clicks): Renamed from Smart Key Modeline. Added up-to-date info on click locations and actions. (Implicit Buttons): Added git-reference, git-commit-reference and github-reference. (Future Work): Added Direct Manipulation section. (Smart Keys): Moved before Buttons chapter since Buttons references Smart Keys and the benefits of Smart Keys are quicker to understand. * hui-mouse.el (smart-dired, smart-dired-assist): Made end of first line behave just like last line for quitting and executing actions. * hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Further optimized for when depress and release windows are the same and frame has an auto-raise property, then we know release window was uppermost at the point of release and can skip finding what app owned the topmost window. * hui-window.el (hmouse-dired-readin-hook): (hmouse-dired-display-here-mode): Added and used in hmouse-drag-item-mode-forms. Once a dired buffer item has been dragged, make next Action Key press on an item display it in the same dired window. man/hyperbole.texi (Smart Key - Dired Mode): Documented here and in smart-dired function. * man/hkey-help.txt: hui-window.el: Updated drag acton summaries with the latest information. * hui-window.el (hmouse-drag-vertically-within-emacs): Added to allow for modeline vertical drags between windows. * hui-mouse.el (smart-dired-pathname-up-to-point): Added this to change the behavior of smart-dired. When on the first line of a Dired buffer where its directory path is shown, treat any ancestor subdirectory of the current directory as a selectable path. Thus, you can run Dired on any ancestor subdirectory simply by pressing the Action Key at the end of the subdirectory you want. A press on the first / character, runs dired on the root directory. man/hyperbole.texi (Smart Key - Dired Mode): Updated doc to reflect this change. * hui-window.el (hmouse-drag-between-frames): Removed from hmouse-alist; treat this context the same as a drag between windows within one frame, for consistency. * hui-menu.el (hui-menu-key-bindings): Added for use as menu filter for Hyperbole/Options/Change-Key-Bindings so displayed key bindings are always up-to-date. * hui-mouse.el (smart-outline-level): Added and used instead of (outline-level) which assumes its caller has already generated match data, which is not always the case in Hyperbole. * hmouse-sh.el (hmouse-move-point-emacs): Added mouse-select-region-move-to-beginning handling that appeared in Emacs 26.1 and noted this in the function documentation. * hui-window.el (hmouse-buffer-to-window): Added along with drag from mode-line to another window context to replace the buffer in a dest. window with the buffer from the source window. * hib-debbugs.el (debbugs-query:at-p): eliminated match of #id-number and always required 'bug' or similar prefix so there is no ambiguity with social references including git #commit-number. * hmouse-drv.el (hkey-help): Updated to handle call-interactively actions and 'or'ed action intelligently when printing action documentation. 2017-10-15 Bob Weiner * hmouse-drv.el (action-key-depress-position, assist-key-depress-position): Added to test whether or not last Action Mouse Key event was a mouse click (non-drag event). 2017-10-14 Bob Weiner * hmouse-drv.el (hmouse-window-at-absolute-pixel-position): Added optional Python script, topwin.py, for macOS window-system only. It determines the topmost application window at the given position and returns the application name, so Emacs can tell if its frame is obscured by another application or not. (hmouse-verify-release-window-flag): Added so can turn off use of the macOS Python script when desired since it slows Smart Key action handling at least 1/3 of a second. * hycontrol.el (hycontrol-frames): Changed = command call to set-frame-size to use pixel dimensions rather than chars/lines for better accuracy. (hycontrol-window-to-new-frame): Same. * hui-menu.el (hui-menu-key-binding-item): Added. * hmouse-drv.el (hmouse-set-point): Fixed to return a posn object as a fallback, i.e. what event-start and event-end return; previously, had returned point as a marker in this case. Keyboard-based emulation of mouse drags via hkey-operate had been broken; this fixed it. * hui-window.el (hmouse-x-coord, hmouse-y-coord): Updated to accept a posn. (hmouse-modeline-event-p): Ignored case where args is a posn or point-marker, not an event. 2017-10-13 Bob Weiner * hversion.el (hyperb:window-sys-term): Emacs set-frame-parameter does not return the value, so this function was always returning nil. Fixed it to return what the doc says it does. * hycontrol.el (hycontrol-frame-at-left-p, hycontrol-frame-at-top-p, hycontrol-frame-at-right-p, hycontrol-frame-at-bottom-p): Added. (hycontrol-frame-expand-to-*): Rewrote these: first they expand a frame to a particular edge; then the next invocation when already at that edge, cuts that frame dimension in half from the opposite side (or to any percentage specified as an argument), leaving the particular edge fixed. Renamed to hycontrol-frame-resize-to-*. This allows both rapid expansion and contraction of frames with just 4 keys whenever needed. (hycontrol-frame-resize-percentage, hycontrol-frame-resize-arg): Added as support functions. (hycontrol-frame-edges): Added to ensure outer edges of frames are always used. (hycontrol-frames): Added arg as a 0-100 percentage for i,j,k,m commands. (hycontrol-windows): Added same c (cycle frame positions), i,j,k,m keys and numeric keypad keys to here. (hycontrol-frames/windows): Added p (virtual numeric keypad) to allow keyboard-based frame quadrant movement when a numeric keypad is not available. This can be interrupted with a q to return to the control menu or a C-g to abort the control menu. * hui-window.el (hmouse-horizontal-action-drag): Replaced doc typo of 'vertical' with 'horizontal'. * DEMO (Help buffers): Added description of how to get help for Smart Mouse Key-only events. * hycontrol.el (hycontrol-windows, hycontrol-frames): In window-control mode, changed {f} to clone window to new frame without deleting the source window to match similar Action Key drag from window/modeline to outside of any Emacs window. Added {F} to clone but delete the source window. Added these 2 bindings to frame-control mode too. Documented in Hyperbole manual. Expanded control help to 4 lines, added = command to equalize sizes of windows/frames, added f/F commands. * hibtypes.el (texinfo-ref): Added doc display for Emacs Lisp @findex (function) and @vindex (variable) entries. Changed so does nothing if function or variable is unbound. Updated its doc string and doc in the Hyperbole manual. * hmouse-drv.el (hkey-help): Changed to print "WHICH WILL:" rather than "WHICH:" when the first word of the doc string does not end in an 's', e.g. "Display this" instead of "Displays this". * hui-window.el (hmouse-release-left-edge): Noted that left edge mode-line clicks must be on the first blank character of the mode-line because Emacs overrides the Smart Mouse Key bindings immediately after that position. Noted in Hyperbole manual as well. * Makefile (version): Added hyperbole.el to version check. hyperbole.el: Updated the Commentary with a description of Hyperbole in case the Emacs package system or a user looks here for it. * hycontrol.el (hycontrol-clone-window-to-new-frame): Added and used in hmouse-alist. 2017-10-12 Bob Weiner * hycontrol.el (hycontrol-window-to-frame): Renamed to hycontrol-window-to-new-frame. (hycontrol-keep-window-flag): Added: When non-nil (default is nil), leave original window when tear off window to another frame. * hui-window.el (hmouse-emacs-modeline-event-p, hmouse-modeline-event-p): Added. (hmouse-modeline-depress, hmouse-modeline-release): Simplified and speeded up for GNU Emacs. (action-key-modeline, assist-key-modeline): man/hyperbole.texi (Modeline Clicks and Drags): Updated with new modeline buffer id click actions. man/hkey-help.txt: Updated with most new drag and click actions. * hywconfig.el: Changed all (called-interactively-p 'interactive) to (called-interactively-p) so will work if called interactively from one of the Smart Key lists. * DEMO: Fixed a number of small issues with implicit buttons therein. * hui-window.el (hmouse-drag-diagonally, hmouse-drag-horizontally, hmouse-drag-vertically): Added explicit test that press and release are in the same window. (hmouse-drag-item-to-display, hmouse-item-to-window): Added dired support. (hmouse-pulse-flag): Disabled by default due to sluggishness and improper visuals at times. (hmouse-map-modes-to-form, hmouse-drag-item-mode-forms): Added. (hmouse-drag-item-to-display, hmouse-item-to-window): Updated to use the new variable, hmouse-drag-item-mode-forms so users can add new modes for named item drags. * hui-window.el (hmouse-drag-between-frames): Added and used in hmouse-alist. (hmouse-alist): Added modeline drags between frames and outside of Emacs. Added window drags outside of any window (outside of Emacs). (hmouse-clone-window-to-frame): Added and used in hmouse-alist. man/hkey-help.txt: Updated with latest modeline and between window drag movements. 2017-10-11 Bob Weiner * hycontrol.el (hycontrol-window-to-frame): Modified in the case of only one window in the frame, then clone the window into a new frame. This allows you to create a bunch of staggered frames when in Window Control mode. Also made this an autoload and called in "hui-window" within hmouse-alist. * hui-window.el (hmouse-drag-outside-all-windows): Added to handle the case where a drag release is outside of any Emacs window or frame and used in hmouse-alist. * hmouse-drv.el (hmouse-vertical-line-spacing): Added and used to compute vertical character positions. (hmouse-key-release-window-emacs): Renamed to hmouse-key-release-window and used in hmouse-function to set action/assist-key-release-window accurately. (hmouse-function): Fixed so action/assist-key-release-prev-point is set properly, before point is set to the location of the mouse button release. * hui-window.el (hmouse-drag-thing): Fixed to handle when release location is outside Emacs and end-point is nil. (hmouse-drag-same-window): Added and used in horizontal and vertical drag tests. * hmouse-key.el (hmouse-update-smart-keys): Extended to also re-initialize Smart Key bindings. * hmouse-drv.el (smart-scroll-up): Removed 's' from the end of verbs in all function comments, e.g. scroll window instead of scrolls window, for consistency within the file. (hmouse-window-at-absolute-pixel-position, hmouse-window-coordinates): Added to compute the actual window and location of the release of a mouse drag which Emacs does not compute. Proper top-to-bottom listing of frames is available only in Emacs 26 and above. For prior versions, the ordering of the frames returned is not guaranteed, so the frame whose window is returned may not be the uppermost. (hmouse-key-release-window-emacs, hmouse-key-release-args-emacs): Updated to use new window of release functions. Now drags between frames work properly. 2017-10-10 Bob Weiner * hyperbole.el (after-init-time): Added hyperb:init to the end of after-init-hook; previously was added at the beginning. This is intended to ensure that Hyperbole key bindings are set after any others, notably {M-RET}. * hypb.el (hypb:rgrep-command): Changed to zgrep when available to handle compressed source files. 2017-10-09 Bob Weiner * hibtypes.el (annot-bib): Eliminated matches for any programming mode (modes derived from `prog-mode'). * README.md: Fixed link markup in Mailing Lists and Ftp and Git Source Code-only Downloads 2017-10-08 Bob Weiner * man/hyperbole.texi (Implicit Buttons): Re-arranged types to reflect newest prioritization. * hib-social.el (github-reference): Added support for showing status of Github services with gh#status. 2017-10-06 Bob Weiner * man/hyperbole.texi (Hiding and Showing): Added paragraph on using {C-x 4 c} to clone a Koutline and display multiple views of it. But commented this out because of an Emacs bug which alters the narrowing of indirect buffers after an outline hide or show. 2017-10-06 Bob Weiner * man/hyperbole.texi (Version): Updated to 6.0.2d and rebuilt output formats. * Makefile (README.md.html): Added build rule as part of 'make doc'. README*: Rewrote the Summary intro paragraph and first two numbered items in simpler terms for new users. * hib-social.el (git-commit-reference): Added new implicit button type to display a diff for any commit listed in 'git log' output. (git-reference): Fixed a few typos and added support for git#=branch:file syntax to view (not edit) a file from a specific branch. Hyperbole finds which project the branch and file are associated with if a default is not specified. Documented in this file and DEMO. 2017-10-05 Bob Weiner * hib-social.el (hibtypes-git-build-repos-cache): Fixed to prune matches like 'file-git', leaving just .git parent directories. (hibtypes-git-find-execute, hibtypes-git-find, git-find-file): Added to locate and edit any git-versioned filename. (hibtypes-social-regexp, git-reference): Updated with git#=file syntax to find git-versioned files by name. DEMO (Git (Local) References): Added example of new git#=file implicit button. 2017-10-04 Bob Weiner * man/hyperbole.texi (Version): Updated to 6.0.2c and rebuilt output formats. * hmouse-sh.el (hmouse-bind-key): Renamed to hmouse-bind-key-emacs since is emacs-only. (hmouse-bind-shifted-key): Renamed to hmouse-bind-shifted-key-emacs. 2017-10-03 Bob Weiner * hui-window.el (hmouse-alist): In hmouse-drag-horizontally test, removed check of (not (hmouse-drag-between-windows)) since was tested earlier in hmouse-alist. (hmouse-resize-window-side, hmouse-release-left-edge, hmouse-swap-buffers, hmouse-swap-windows, hmouse-modeline-resize-window, hmouse-release-right-edge, hmouse-modeline-click, hmouse-modeline-release): Removed optional assist-flag arg; used assist-flag free variable instead. * hmouse-tag.el (smart-tags-display): Fixed to include tags-table found in any ancestor directory of current directory when tags-table-list already contains items. * hpath.el (hpath:find-program): Changed so Hyperbole external and internal file suffix lists are consulted before using standard directory or image display methods. So for example, Emacs.app on macOS, which is actually a directory, can be displayed/run externally. (hpath:external-display-alist-macos): Added .app suffix. * hui-jmenu.el (hui-menu-buffer-mode-name): mode-name might not be a string; pass it through format-mode-line to ensure it is a string. Without this, hui-menu-of-buffers could trigger an error on some buffers. 2017-10-02 Bob Weiner * hui-window.el (hmouse-pulse-flag): Added to allow disabling visual pulsing in Action Mouse Key buffer/file window placement. Used in hmouse-pulse-buffer and hmouse-pulse-line. * hload-path.el (stringp): Forced use of hyperb:dir truename (after resolving pathname links). * hbdata.el (hbdata:build): Modified to ensure that but-sym or hbut:current (if but-sym is nil) is updated with all modified button attributes. This is used after interactive explicit button creation or modification to display current attributes. * hui.el (hui:ebut-operate): Removed as this was obsoleted long ago; use ebut:operate instead. * hbut.el (ebut:operate): Updated documentation to clarify that this modified button properties, notably its action's argument list. hbut.el (hattr:copy, hattr:set): hpath.el (hpath:substitute-var): Clarified documentation. * hui.el (hui:ebut-message): Added message for use when creating and modifying explicit buttons. (hui:ebut-create, hui:ebut-modify): Called hui:ebut-message after interactively creating or modifying an explicit button (just as hui:link-directly already did). (hui:link-directly): Modified to call hui:ebut-message. * hact.el (actype:param-list): Added. hui.el (hui:action): Fixed to handle parameter lists with keywords such as &optional. * hactypes.el (link-to-file): When modifying a link, changed to handle a variable in the pathname and also to maintain any prior in-file location as a default when prompting for changes even if the linked-to file is not yet loaded in a buffer. * hact.el (action:params-emacs): Added to use doc strings and autoload functions to get calling signatures for Emacs25 byte-coded functions. Previously, functions with bit-coded integer argument parameter placeholders were not supported. (action:params): Called action:params-emacs on byte-coded objects. Also, rewrote to handle indirect byte-coded actions as well. 2017-10-01 Bob Weiner * hui-window.el (hmouse-item-to-window): When drag from fixed menu header line, pulse the menu buffer and move the menu buffer itself to the drag release window. * man/hyperbole.texi (Version): Updated to 6.0.2b and rebuilt output formats. * hycontrol.el (hycontrol-handle-event): (hycontrol-prettify-event): Fixed to handle large integer code events, e.g. M-p. 2017-09-30 Bob Weiner * man/hyperbole.texi (HyControl): hycontrol.el (hycontrol-frames, hycontrol-windows): Removed ESC as a quit command since now that key sequences are supported, this is often used as a meta key prefix. Use {q} to quit. * hact.el (actype:act, actype:action): Fixed regexp match to beginning of string; quote mark used had somehow been changed to the end of string match regexp. As a result, when explicit buttons were being created or modified, no arguments were prompted for. * hargs.el (hargs:delimited): Removed unneeded properties from any returned string. * hpath.el (hpath:at-p): Added missing non-exist parameter to hpath:delimited-possible-path call. This extends the prior bug fix for hpath:at-p. See below. * hmouse-drv.el (hmouse-key-release-args-emacs): Updated to handle cross-frame drags properly for when Emacs' event system is fixed to return the proper frame for a cross-frame drag release event (as of 25.3, it returns the depress frame rather than the release frame). 2017-09-29 Bob Weiner * hycontrol.el (hycontrol-prettify-event): Added. 2017-09-28 Bob Weiner * hycontrol.el (hycontrol-handle-event): Expanded to handle single non-self-inserting keys and key sequences. * man/hyperbole.texi (Version): Updated to 6.0.2a and rebuilt output formats. * man/hyperbole.texi (View Specs): Noted that ellipses can no longer be turned off. kotl/kvspec.el (kvspec:compute): Removed `e' ellipses viewspec because it no longer works with modern Emacs outlining. (kvspec:update): Force display of `e' viewspec. (kvspec:activate): Changed to always compute new kvspec:current even if requested view-spec seems the same so the 'e' viespec is added if not included. * kotl/kotl-mode.el (kotl-mode): Handled removal of newest outline-minor-mode mode-line indication for Koutlines. 2017-09-28 Bob Weiner * hui-mouse.el (smart-push-button-help): Added 2nd optional arg, use-mouse-action, which if non-nil, displays help for mouse-action property if any, and falls back to action property otherwise. (hkey-alist): push-button - Changed to use mouse-action if last-command-event was a mouse event. Previously, mouse actions were not supported. * hmouse-tag.el (smart-lisp-at-tag-p): Changed to not match anywhere on the first line of def constructs. This aids in using Smart Keys for outline folding within Lisp buffers. (smart-lisp-at-definition-p): Added to test if point is on the first line of a non-alias Lisp definition. (smart-lisp-at-load-expression-p): Added to test if point is on any type of Lisp library load expression. (smart-lisp): Changed call of buffer-substring-no-properties to match-string-no-properties. (smart-lisp): Fixed regexp matching of require and autoload expressions. For require and load, moved point to start of the buffer. For autoload, triggered an error if library is found but symbol def is not. * hui-mouse.el (smart-outline-char-invisible-p): Substituted outline-invisible-p call for kproperty:get, which may not yet be defined. (smart-outline-subtree-hidden-p): Fixed to match only when point is on a heading. (smart-imenu-item-at-p): Updated to ignore when smart-lisp-at-definition-p or smart-lisp-at-load-expression-p tests are true. (hkey-alist): smart-imenu - ignored non-alias identifiers on the first line of a Lisp def. 2017-09-27 Bob Weiner * hui-mouse.el (smart-buffer-menu-no-marks): Added and called in smart-buffer-menu. (smart-ibuffer-menu-no-marks): Added and called in smart-ibuffer-menu. Makes Action Key display the selected buffer in the buffer menu window (like RET does) rather than restoring previous window configuration and then displaying buffer. This works better with the new buffer item drag to display in a window feature. * hui-window.el (pulse): Added require for momentary highlighting of buffer/file item lines. (hmouse-pulse-line): Added. (hmouse-item-to-window): Added pulses to source and dest. lines. 2017-09-26 Bob Weiner * hmouse-drv.el (action-key-depress): Added action-key-depress-hook. (assist-key-depress): Added assist-key-depress-hook. (action-mouse-key): Added action-key-release-hook. (assist-mouse-key): Added assist-key-release-hook. (action-key): Added action-key-depress/release-hook. (assist-key): Added assist-key-depress/release-hook. hui-window.el (action-key-depress-hook): Set to select helm items prior to a drag outside the helm buffer window. * hui-mouse.el (smart-helm-line-has-action): Fixed to use position of Action Key depress; this properly selects the item chosen, even when a cross-window drag is used; this allows helm buffer and file items to be used in Hyperbole drag actions. * hib-social.el (github-reference): Added support for gh#orgs//people query to list users in an org. * hmouse-drv.el (hmouse-depress-inactive-minibuffer-p): Improved doc and changed param name to `event'. (action-key-depress-window, assist-key-depress-window): Improved doc. * hui-window.el (smart-coords-in-window-p, smart-window-of-coords, hmouse-inactive-minibuffer-p): hmouse-drv.el (hmouse-depress-inactive-minibuffer-p): hargs.el (hargs:select-event-window): Updated to handle multiple frames and minibuffers. * hui-window.el (hmouse-alist): Extended hmouse-drag-between-windows to allow dragging items from a buffer menu or file menu buffer to a destination window for display. Helm buffer items are supported as well. (hmouse-item-to-window, hmouse-drag-buffer-to-window): Added. hui-mouse.el (smart-helm-to-minibuffer): Added to encapsulate when to return to minibuffer, and called. * hversion.el (hyperb:version): Start adding a letter at the end of the version number for significant pre-releases published to git, so we know which version is in use. 2017-09-25 Bob Weiner * hui-mini.el (hui:menu-item): Improved so that if menu item has no help string but its action is a function with a doc string, then it will use the first line of the action doc string for displaying help on the item. * hmouse-key.el (hmouse-check-action-key, hmouse-check-assist-key): Added to check that both depress and release events are set to Smart Mouse Keys. Mainly for use with helm. Called from smart-helm and smart-helm-assist respectively. * hui-mouse.el (action-key-error, assist-key-error): Maded explicit these are messages from Hyperbole. (smart-helm-at-header): Corrected doc string. (smart-helm-at): Added to test type of helm thing point is at. (smart-helm, smart-helm-assist): Updated to complement each other better; made section header clicks work. * hmouse-key.el (hmouse-add-unshifted-smart-keys): Renamed from hmouse-add-unshifted-keys. Made interactive and added error if invoked under something other than GNU Emacs 19 or higher. (hmouse-update-smart-keys): Added to provide interactive updating of Smart Keys whenever a matching context or action has been changed in the source code; reloads any changes to "hui-mouse", "hui-window", "hibtypes" or "hactypes", most notably changes to hkey-alist and hmouse-alist. * hui-mouse.el (hkey-alist, smart-outline-char-invisible-p, smart-eolp): Added and used to improve and narrow matching of end-of-lines. Previously, did not handle new-style Emacs outlines properly nor helm section header lines. * kotl/kotl-mode.el (kotl-mode:action-key, kotl-mode:assist-key): hui-mouse.el (smart-outline, smart-outline-assist): Changed to invoke action/assist-key-eol-function for end-of-line scrolling, eliminating hard-coded call. man/hyperbole.texi (Smart Key - Emacs Outline Mode): Documented this change. * hargs.el (hargs:at-p): Fixed bug when linking to files or directories, would choose symbol at Action Key release point rather than the file or directory containing that symbol. This was caused by allowing matches to non-existent files and dirs when the 'no-default' argument was t. Now prevented such matching. This could occur when creating or editing explicit button links. 2017-09-24 Bob Weiner * hib-social.el (hibtypes-git-get-locate-command): Added this function to trigger an error if locate command is not available when a git-reference is activated. So user knows what happened. 2017-09-23 Bob Weiner * hib-debbugs.el (debbugs-version-sufficient-p): Added to eliminate use of version testing function from package.el which some people prefer not to load. 2017-09-22 Bob Weiner * hib-social.el (hibtypes-git-add-project-to-repos-cache) (hibtypes-git-build-or-add-to-repos-cache): Added to allow for adding a single new project to the cache. * hact.el (actype:act): Expand arguments as pathnames only in functions defined with defact (actions may be regular defuns as well). * hib-social.el (github-reference): Added support for listing all active or showing individual branches, issues, pull requests and commit tags. See the doc string for this function and the examples in the file commentary. (git-reference): Added support for listing all active or showing individual branches and commit tags. See the doc string for this function and the examples in the file commentary. (defact*): Changed all these to regular functions to prevent Hyperbole from trying to expand their arguments as pathnames. 2017-09-21 Bob Weiner * hui-mouse.el (smart-helm): Added: On a source section header, moves to the next source section or first if on last. But this doesn't yet work properly (helm is scrolling the buffer and not leaving point in the proper location). * hui-mini.el (hyperbole): Removed interactive use of prefix argument to set doc-flag and help-string-flag parameters since this didn't interactively display doc. Instead, this change lets the prefix arg flow through to any menu commands that can use it. * hib-social.el: Added full Commentary with implicit link examples. 2017-09-20 Bob Weiner * DEMO (Git References): Added. hib-social.el (hibtypes-github-default-project): Renamed from hibtypes-social-github-default-project. (hibtypes-github-default-user): Renamed from hibtypes-social-github-default-user. (hibtypes-git-default-project): Added. (hibtypes-git-*, git-reference): Updated to allow git#project/commit-hashtag references. So now all of the following are recognized as local git references if the default project setting is set up: git#hyperbole/5ae3550 (project name and commit hashtag can be given; commit diff displayed) gt#5ae3550 (project default is used; commit diff displayed) gt#/hyperbole (project home directory is displayed) (github-reference): Renamed from github-commit-reference. Also added support for syntax: gh#/hyperbole (project home directory is displayed; uses default user setting) gh#/rswgnu/hyperbole (project home directory is displayed) Requires GNU locate for finding all local git repositories. * hibtypes.el (grep-msg): Added match to context lines produced by 'grep -A' which use '-' around the line number rather than ':'. (hib-debbugs): Lowered priority below hib-social so it doesn't shadow valid social references since its matching is broad. * hib-social.el (social-reference, hibtypes-social-regexp): Added missing '-' character in social-reference matches. * hui-mouse.el (smart-image-dired-thumbnail, smart-image-dired-thumbnail-assist): Added to support browsing of directories of images via thumbnails. Action Key displays a scaled version of the original image in an Emacs window. Assist Key displays the original image in an external viewer. 2017-09-19 Bob Weiner * hib-social.el (hibtypes-social-default-service): Changed to use a radio button choice when customizing this. (hibtypes-social-hashtag-alist, hibtypes-social-username-alist): Added github user and commit lookup via social link syntax. (hibtypes-social-github-default-user): (hibtypes-social-github-default-project) (github-commit-reference): Added this new action and its above default values. (hibtypes-social-regexp): Updated to allow github#user/project/commit-hashtag references. So now all of the following are recognized as github commit links if the default user and project settings are set up: gh#rswgnu/hyperbole/5ae3550 (if include user must include project) github#hyperbole/5ae3550 (project can be given with user default) gh#5ae3550 (user and project defaults are used) Additionally, gh@rswgnu can be used to jump to user rswgnu's github home page. DEMO (Github): Added to demonstrate github references. * hibtypes.el (annot-bib): Moved in priority below social hashtags and denied matching to anything containing a # or @ character so [twitter@someuser] doesn't match as an annot-bib entry. * hui-mouse.el (hkey-alist): Added helm support for Smart Key presses in the minibuffer window (runs the standard RET command). 2017-09-18 Bob Weiner * hui-mouse.el (smart-helm): Finalized and added doc. of contexts and actions. Made smart-helm ignore helm candidate separator lines. * hui-window.el (smart-coords-in-window-p): (hmouse-drag-window-side): Handled null value of coords. 2017-09-17 Bob Weiner * hui-mouse.el (hkey-alist): Changed minibuffer handling to support Helm. * man/hkey-help.txt: Small updates to Special Mode doc. * hmouse-key.el (hmouse-add-unshifted-keys): Added to allow user init of unshifted Smart Keys. For GNU Emacs only, this binds [mouse-2] to the Action Key and [mouse-3] to the Assist Key. man/hyperbole.texi (Smart Key Bindings): Added doc for hmouse-add-unshifted-keys. * hmouse-sh.el (hmouse-get-unshifted-bindings): Uncommented inclusion of mouse-3 for times when user manually sets mouse-3 as the Assist Key. Otherwise, hmouse-toggle-bindings will never change its value. (hmouse-bind-key, hmouse-bind-shifted-key): Added and used these to ensure depress and release bindings are wholly reset before rebinding them under GNU Emacs. 2017-09-14 Bob Weiner * hpath.el (hpath:external-open-office-suffixes): Added .odt suffix. * hui-select.el (hui-select-at-p): Protect against empty buffer error. 2017-09-12 Bob Weiner * hibtypes.el (grep-msg): (pathname): Don't match in helm completion buffers. * hui-mouse.el (smart-helm-line-has-action): Ignore any actions helm imputes to header lines and candidate separator lines in helm completion buffers, as they are non-actionable lines. Also, ignore if at the end of the buffer. (hkey-alist): Lowered smart-helm priority so can use Smart Key end-of-line functions in such buffers. * hsys-www.el (eww-link-at-point): Basic stylistic improvements. 2017-09-11 Bob Weiner hyrolo.el: Added basic commentary to the file header. 2017-09-10 Bob Weiner * hui-mouse.el (smart-helm, smart-helm-assist, smart-helm-line-has-action): hsettings.el (helm-allow-mouse): Set to t. New helm completion activation support. Added to allow mouse direct selection of helm completion items and to see match item actions prior to invoking them. The smart-helm function behaves similarly to the {C-j} and {C-z} key bindings that helm mode provides when a helm completion is active. If helm is not active, Hyperbole resumes the prior helm session before triggering the action. The smart-helm-assist function displays the match item and its associated action. * hsys-www.el (www-url): Added Action and Assist Key support for browsing links in eww (the Emacs web browser) and for activating history links in the eww history buffer. 2017-09-08 Bob Weiner * hpath.el (hpath:url-regexp3): Added a third pattern match for URLs, allowing for partial http urls with non-www site names preceded by the literal url or URL followed by a : or =. For example: url:photos.google.com or url=calendar.google.com 2017-09-07 Bob Weiner * hui-menu.el (hui-menu-browser): Changed the Default setting to always use the current setting of browse-url-default-browser since that is the default in browse-url (eliminated use of browse-url-generic). * hypb.el (hypb:decode-url): Added. hpath.el (hpath:is-p): Fixed to handle and decode encoded URL paths before returning the path. 2017-09-06 Bob Weiner * hui-mouse.el (hkey-alist): Changed Python predicate to match more broadly, namely in any non-file buffer whose name includes Pydoc: or Python (case-sensitive). * hmouse-tag.el (smart-python-at-tag-p): Expanded to handle tags with periods embedded such as `sys.path'. 2017-09-04 Bob Weiner * hibtypes.el (debugger-source): Added support for Python pdb stack trace lines. 2017-08-31 Bob Weiner * hibtypes.el (pathname): Wrapped mode-name reference in format-mode-line call since mode-name is not always a string. * hui-em-but.el (hproperty:but-highlight-p): Added to allow disabling of explicit button highlighting. (hproperty:but-create-all): Used this new flag. hui-xe-but.el (hproperty:but-highlight-p): Added to allow disabling of explicit button highlighting. (hproperty:but-create-all): Used this new flag. * hbut.el (ebut:map): Changed to ignore explicit button matches in programming languages when outside of a comment. For example, syntax like this in a Rust buffer had been improperly matched: fn parse_kv(kv_list: Vec<(syn::Ident, syn::StrLit)>, function: &Function) -> LispFnArgs 2017-08-25 Bob Weiner * hui-mouse.el (smart-ibuffer-menu): Ibuffer calling conventions have changed across time (as of Emacs25) to allow for regional arguments; updated to account for these. * hpath.el (hpath:remote-at-p): For Emacs 26 where tramp-file-name-structure is now a function instead of a variable, call the function. * hyrolo.el (hyrolo-kill): Triggered error if FILE contains a '*' character, mainly in case a buffer name is passed as an argument. (hyrolo-file-list-initialize): Added this function so can re-initialize the hyrolo-file-list later if BBDB or Google Contacts support is loaded after the Hyperbole Rolo is initialized. * hbut.el (hbut:source): Allowed for spaces in buffer names. * hyrolo.el (hyrolo-edit-entry): Avoided error if bbdb-file is nil. * hbut.el (ebut:label-p): Added one-line-flag to constrain label search to a single line. hibtypes.el (Info-node): Constrained Info-node hyper-button matches to a single line. * hyrolo.el: Added support for Google Contacts when the google-contacts package is in use and a public key package is available for Google authorization. 2016-09-08 Bob Weiner * man/hyperbole.texi: Documented Pages Directory Listing handling. * kotl/klink.el: (require 'hbut): Added to define defib when compiled. 2016-08-26 Bob Weiner * hui-mouse.el (hkey-alist): Added Smart Key jump to associated page in pages-directory-mode (page-ext.el). man/hkey-help.txt: Documented Pages Directory Listing and Imenu Programming Identifier handling. * hmouse-drv.el (hkey-help-show): Modified to invoke help-mode only if buffer name includes 'Help' to support other specialized modes that use temp buffers. 2016-08-25 Bob Weiner * README.md, README.md.html: Updated to match Hyperbole home page. 2016-08-18 Bob Weiner * DEMO: Wrote small textual updates. * hib-debbugs.el: Added a note about bug-reference-mode.el and the differences. 2016-08-17 Bob Weiner * README: Added Summary section with a description of Hyperbole since this file may be shown prior to download in the Emacs package manager. * kotl/kexport.el (kexport:label-html-font-attributes): Fixed improper 'defvar' definition which should have been a 'defcustom'. 2016-08-16 Bob Weiner * hib-kbd.el (kbd-key:normalize): Fixed so C-M- is normalized the same way as M-C-. (kbd-key:extended-command-prefix): Added. (kbd-key, kbd-key:act): Added kbd-key:extended-command-p test and used in this implicit button type and action type to support Action Key presses on M-x extended commands like {M-x occur RET} since these are included in the Hyperbole DEMO. 2016-08-15 Bob Weiner * hpath.el (hpath:substitute-dir): Added support for environment variables including those with PATH in their name (colon-separated paths) that should have been there. Added call to hpath:exists-p to test path with hpath:suffixes added. This fixed the bug where "${load-path}/simple.el" did not resolve properly when the file was stored compressed as simple.el.gz, for example. 2016-08-12 Bob Weiner * hui-mini.el (hui:menu-enter): Fixed potential error of (wrong-type-argument char-or-string-p 134217741) when insert was called with a non-character code integer. 2016-08-10 Bob Weiner * HY-ANNOUNCE-SHORT - Added as a shorter release announcement. * HY-ABOUT, README, README.md, README.md.html - Synchronized with Hyperbole web home page and typo fixes. * hpath.el (hpath:external-open-office-suffixes): Added external display of Open Office documents based on this new option. (hpath:command-string): Quoted filename argument to allow spaces in filenames. This fixed an issue when an external viewer such as `open' was called under OS X and the filename to be opened contained spaces. * hyperbole.el (Maintainer): Changed back to single line so ELPA parses it correctly. * hib-debbugs.el (debbugs-gnu-query:list): hyperbole.el (hkey-global-set-key, Info-directory-list): hvar.el (var:append): Removed improper function quoting of variable. ============================================================================== V7.0.0 changes ^^^^: ============================================================================== 2016-08-08 Bob Weiner * Makefile (release, elpa, ftp): Updated to work better. * hactypes.el (link-to-web-search): Added so Hyperbole global and explicit buttons can execute web searches. hsettings.el (hyperbole-read-web-search-arguments): Added and used in hyperbole-web-search and link-to-web-search. DEMO (Sample Explicit Buttons and Types): man/hyperbole.texi (Action Types): Documented link-to-web-search. * INSTALL, README, README.md, README.md.html: Added Browsing the Source section with ftp tarball download information. * hpath.el (hpath:delimited-possible-path): Added non-ascii quote characters to possible delimiters. (hpath:delete-trailer): Added quoting characters to deletion to fix bug where remote pathname retrieval would include a trailing quote mark. * hargs.el (hargs:delimited): Added support for up to 2-line delimited regions as long as point is on the first line. Normalized any newline followed by whitespace to a single space in the string returned. Added (require 'hypb). * hys-org.el (defib org-mode, org-mode:help): Ensured trigger only in org-mode and simplified logic. (org-heading-at-p): Deleted and used org-at-heading-p instead. * hpath.el (hpath:to-markup-anchor): Generalized to work in any HTML buffer based on major mode, not file suffix. (hpath:html-suffix-regexp): Removed, no longer used. * hmouse-tag.el (smart-asm-include-file, smart-c-include-file): Simplified conditionals a bit. * hpath.el (hpath:is-p): Fixed improper parsing issue with hash links that included commas such as: "DEMO#Grep, Occurrence, Debugger and Compiler Error Buttons, and Cscope Analyzer". * Demo (Org Mode): man/hyperbole.texi (Implicit Buttons): hsys-org.el (org-mode): Changed so if not at an end of line, on an org mode link or on an existing heading, then invokes the Org mode standard binding of M-RET, (org-meta-return). 2016-08-07 Bob Weiner * hpath.el (hpath:markup-link-anchor-regexp, hpath:to-markup-anchor): Modified to support hash-style links to Emacs outline file section headlines, matching as is done with Github-style Markdown section links. DEMO: man/hyperbole.texi: Updated to document the above change. * hypb.el (hypb:file-major-mode): Added. 2016-08-06 Bob Weiner * man/hyperbole.texi (Customization): Renamed from Configuration. (Web Search Engines): Added this section under Customization. (HyControl): Added WindowsControl key sequence. (Smart Key - Smart Scrolling): Documented {action,assist}-key-eol-function variables. * hsmail.el (mail-indent-citation, mail-yank-original): Updated for Emacs 25 compatibility. 2016-08-05 Bob Weiner * hibtypes.el (annot-bib): Added markdown-mode to the excluded list to avoid conflict with its links. (markdown-internal-link): Added to follow internal Markdown links. man/hyperbole.texi: (Implicit Buttons): Added markdown-internal-link. * hsys-www.el: Renamed from hsys-w3.el since it is not related to the Emacs W3 web browser any longer. * Demo (HTML and Markdown Hash Links): Added this section. hibtypes.el (pathname): hpath.el (hpath:to-markup-anchor): Renamed from hpath:to-html-anchor and generalized for use with Markdown as well. Added recognition of section links like: - [Why was Hyperbole developed?](#why-was-hyperbole-developed) so the pathname implicit button type matches when the Action Key is pressed anywhere on or after the hash character and jumps to the section: ## Why was Hyperbole developed? accounting for any trailing punctuation, whitespace and differences in case. (hpath:markdown-suffix-regexp, hpath:markdown-anchor-id-pattern, hpath:markdown-section-pattern): Added. (hpath:markup-link-anchor-regexp): Renamed from hpath:html-link-anchor-regexp. * hib-social.el (social-reference): Disabled this implicit button type within quoted strings (all modes) and within parentheses (markdown-mode), so in-file hash link references are not matched as social hash tags. Made the list of modes a variable, hibtypes-social-inhibit-modes. hpath.el (hpath:to-html-anchor): Added. (hpath:find): Rewrote to follow HTML in-file anchor references. 2016-08-04 Bob Weiner * hpath.el (hpath:html-suffix-regexp, hpath:html-anchor-id-pattern, hpath:html-link-anchor-regexp): Added. * README, README.md, README.md.html: Added a new testimonial. * Makefile (elpa, ftp): Added these targets to install Hyperbole releases for ELPA or ftp download. Changed so release target depends on package target so you can build a package prior to a release. * hpath.el (hpath:remote-available-p): Fixed tramp package check prior to loading by adding a test for tramp-autoload-file-name-handler. * README.md.html: Fixed bookmarks/in-file link ids. 2016-08-03 Bob Weiner * hsettings.el (hyperbole-web-search-alist): Made any edit update all Hyperbole menus with the new value. DEMO (Hyperbole Menus): Added description and exercise using the new Find/Web menu. hui-mini.el (Cust/Web-Search): Added to allow setting of hyperbole-web-search-browser-function. hui-menu.el (infodock-hyperbole-menu): Added optional rebuild-flag to force rebuilding of the Hyperbole menubar menu. * man/hyperbole.texi (HyControl): Documented ESC as a way to quit from HyControl. (REMOVED IN A FUTURE REVISION). 2016-08-02 Bob Weiner * README.md.html - Added. 2016-08-01 Bob Weiner * hui-menu.el (hui-menu-browser): Added to allow setting of hyperbole-web-search-browser-function. (infodock-hyperbole-menu): Added missing quote in Display-Referents-in setq, fixing invalid code generation. * README.md (Invocation): HY-ANNOUNCE (Invocation): INSTALL (Invocation): README (Files): DEMO (HyControl): Added pointer to HyControl video and {C-c \} binding. hyperbole.texi (HyControl): Updated {C-c \} binding description. * hycontrol.el (hycontrol-frames, hycontrol-windows): Added ESC as an additional key that quits from HyControl. * man/hyperbole.texi (Global Key Bindings): Documented {C-c /} prefix key. (Menus): Added Find/Web menu. 2016-07-31 Bob Weiner * Changes: Renamed this file from ChangeLog since Elpa release builds overwrite any file named ChangeLog with git log information which has less history than Hyperbole's Changes. * hui-mini.el (hui-search-web): Added so can invoke the Hyperbole Find/Web search menu directly. hyperbole.el (hkey-initialize): Bound above command to {C-c /}. * hsettings.el (hyperbole-web-search-browser-function): (hyperbole-web-search-alist): (hyperbole-web-search): Added. hui-mini.el (hui:menu-web-search): Added and called within hui:menus. hui-menu.el (hui-menu-web-search): Added and called in infodock-hyperbole-menu. * hinit.el (hyperb:init-menubar): Fixed so sets after-init-hook only if not after-init-time. Also forced a return value of nil. hui-menu.el (hyperbole-menubar-menu): Changed so this always updates the menubar with the latest version of the Hyperbole menu; previously it only added the menu if it was not there. 2016-07-29 Bob Weiner * README.md: Added menu images and screenshots for easy access. * hui-mouse.el (action-key-eol-function, assist-key-eol-function): Added these 2 options to control what the Action and Assist Keys do at the end of a line. Default behaviors remain as before but now one can set these to do something other than scrolling, if desired. 2016-07-28 Bob Weiner * hyperbole.el: Updated the header fields to better match GNU standards for use by the Lisp maintainer package, lisp-mnt.el. 2016-07-27 Bob Weiner * hactypes.el (exec-shell-cmd): Replaced call to old function 'show-output-from-shell' with 'comint-show-output'. This fixed a failure when this action type is used. * HY-ANNOUNCE (About): README (Files): Added pointers to Hyperbole screenshot files. * man/im/menu-hyperbole2.pdf: Removed this unneeded file. * HY-ANNOUNCE: Updated first section and used in sending 6.0.1 release announcements. Added items from HY-NEWS for 6.0.1 that were unintentially left out of this file. * hload-path.el (hyperb:dir): If the Emacs Package Manager has already added this to load-path without a trailing directory separator, don't add it with one. ============================================================================== V6.0.2 changes ^^^^: ============================================================================== 2016-07-26 Mats Lidell * hypb.el (hypb:rgrep-command): Removed -Z option. Different meaning on OS X and GNU/Linux. 2016-07-26 Bob Weiner * hypb.el (hypb:rgrep-command): Removed -S option not supported by GNU/Linux. * hyperbole.el: Added Date: header with release date and updated date in man/version.texi used in hyperbole.texi. * README.md: Added this, a markdown formatted introduction combining README, INSTALL and HY-ABOUT. 2016-07-26 Mats Lidell * MANIFEST: Removed hyperbole-readme.txt. 2016-07-25 Bob Weiner * README: Renamed this file from HY-README. Moved installation and invocation instructions to "INSTALL" file. These changes were to eliminate release problems with INSTALL and README being symbolic links. * hmouse-tag.el (smart-tags-display): Added with-no-warnings around find-tag call to prevent obsolete warnings and removed setting of byte-compile-warnings. 2016-07-24 Mats Lidell * Patch from Stefan Monnier. Thank you Stefan. .gitignore: Added *-autoloads.el and *-pkg.el to ignored set. hyperbole.el: Fixed autoload typo. hload-path.el (load-path): Fixed to use regular quote. hib-social.el (require 'hbut): Added to properly compile the defib. 2016-07-23 Bob Weiner * Makefile (hyperbole-$(HYPB_VERSION).tar): Added HY-ABOUT and HY-ANNOUNCE to files installed outside the tar archive for reference. * man/hyperbole.texi (Installation): Updated to latest version. 2016-07-23 Mats Lidell * kotl/kotl-loaddefs.el: Generated. * Makefile (kotl/kotl-loaddefs.el): Added copyright notice for satisfying elpa copyright check. hyperbole.el: Changed to load kotl/kotl-loaddefs file. 2016-07-22 Bob Weiner * man/hyperbole.texi: Added new @kitem and @kitemx macros to surround keyboard items in tables with braces. * Makefile (version): Added HY-ANNOUNCE. HY-ANNOUNCE: Added release announcement. INSTALL: HY-NEWS: Small improvements. * hui-menu.el (infodock-hyperbole-menu): Commented out InfoDock manual reference out until InfoDock is modernized for Emacs 25. * man/hyperbole.texi (Implicit Buttons): hib-social.el (social-reference): Improved doc for this ibtype. * man/hyperbole.texi (Implicit Buttons, Explicit Buttons): Improved clarity. (Global Buttons): Explained how to use global buttons. * Makefile (release): Added this target to generate the kotl/kotl-autoloads.el file within the source tree. * hmoccur.el: Normalized header to match other Hyperbole files. * hyperbole.el (hyperbole-koutliner group): Moved definition to ensure comes after hversion is loaded. * Makefile (pkg): Updated to build kotl/kotl-autoloads.el file because the Emacs Lisp Package Manager (ELPA) does not yet handle generation of autoloads for package subdirectories. 2016-07-21 Bob Weiner * hsettings.el: Renamed this from hsite.el to prevent Hyperbole V4 users from accidentally loading it manually. * hyperbole.el (hyperbole-autoloads): If this exists and autoloads kotl-mode, then skip setup to generate hyperbole-autoloads with autoloads from the kotl/ subdirectory. * hib-social.el (social-reference): hibtypes.el (mail-address-at-p): Let case-fold-search be t since mail-addresses are case-insensitive. * hibtypes.el (mail-address-regexp): Simplified and modernized address matching to better distinguish from @username social media references. (mail-address-mode-list): Added lisp-interaction-mode and fundamental-mode. (mail-address-tld-regexp): Added to match most common top-level domains to tell if a match is really an email address or not. (mail-address-at-p): Tightened by using mail-address-tld-regexp. DEMO (Email Addresses, Social Media Hashtags and Usernames): Added descriptions. 2016-07-20 Bob Weiner * MANIFEST: Makefile: hibtypes.el (hib-social): man/hyperbole.texi (Implicit Buttons): Added social-reference. hib-social.el: Added this file to follow social media hashtag and username references. * Makefile (help): Added as the default target, explaining major targets. * HY-ABOUT: man/hyperbole.texi (Hyperbole Overview): Renamed 'Textual Information Management' to 'Contact and Text Finder'. Renamed 'Button Types' to 'Buttons and Smart Keys' and made it the first item. Added a paragraph on the Smart Keys. * .gitignore: Added Texinfo formatting indices. * hyperbole.el: Makefile: man/hyperbole.texi (Top): hversion.el (hyperb:version): Normalized version number to GNU 3-part standard. 2016-07-19 Mats Lidell * .gitignore: Added git ignore file. 2016-07-19 Bob Weiner * hyperbole-pkg.el (hyperbole): Version update in preparation for next release and rebuilt package. * man/hyperbole.texi: Fixed typos and improved explanations in parts. (Smart Key Modeline): Expanded and added instructions on using customize-variable. (Suggestion or Bug Reporting): Added menu key sequences. * Makefile (GPG): Added to digitally sign Hyperbole distributions. 2016-07-18 Mats Lidell * .hypb: Added. Lost during initial commit to git. 2016-07-18 Bob Weiner * HY-README (Installation): * man/hyperbole.texi (Installation): Made elpa line match the default in Emacs so if it is already there, it won't be added again. * hyperbole.el (hkey-override-local-bindings): Fixed case where an invalid key prefix is given and so local-key-binding returns a number rather than nil. * hui-window.el (hmouse-x-coord): Added support for a marker as `args'. hypb.el (hypb:goto-marker): Added to jump to a marker in a different buffer. * man/hyperbole.texi (Global Key Bindings): Changed from setting the value of hkey-init-override-local-keys in personal init file to using the customize-variable interface. * MANIFEST: Eliminated hsite-ex.el and included hsite.el in distribution package. Users will use customizations now rather than direct editing of this file. ============================================================================== V6.0.1 changes ^^^^: ============================================================================== 2016-07-17 Bob Weiner * hyperbole.el (inhibit-hyperbole-messaging): Added :initialize function that skips more complex :set function, which is not needed at initialization. Also moved all requires to before this function. 2016-07-16 Bob Weiner * man/hyperbole.texi: hmouse-tag.el: Renamed all '-dirs' variables to '-path'. 2016-07-15 Bob Weiner * hargs.el (hargs:at-p): Fixed issue when in a dired buffer and a file or directory is being read, the result was returned sans any path information; now the full path is returned properly. * man/hyperbole.texi (Introduction): Removed Preface section and moved its contents into subsections of the Introduction chapter, so Top info node looks better is more helpful. (Mail Lists): Improved readability of this section. (Key Index): Grouped all HyControl bindings under "screen," and HyRolo bindings under "rolo,". * hyperbole.el (hyperbole-toggle-messaging): Moved this function from hvar.el and renamed from var:toggle-hyperbole-messaging). Display message only if called interactively. * hui-mini.el (Cust): Added All-Options to display editable Hyperbole options. * hui-menu.el (Customize): Added All-Hyperbole-Options. 2016-07-14 Bob Weiner * Renamed all -hook variables to not have : in their names. * man/hyperbole.texi (Setup): HY-README: Removed By-Hand Installation section. Use the Emacs package manager. Renamed Package Installation section to just Installation. man/hyperbole.texi (Setup): Renamed from Installation. (Function, Variable and File Index): Renamed to this. * man/hyperbole.texi (Configuration): Added text on using the Emacs customize interface. * hyperbole.el (hkey-read-only-bindings): man/hyperbole.texi (Smart Key Bindings): Removed these read-only mode bindings in Hyperbole 6.00 since is not consistent across all read-only modes and the standard bindings are easy enough to use. * hui.el (hui:link-possible-types): Moved link-to-file below outline headline link match since link-to-file was hiding this capability. * hywconfig.el (hywconfig-delete-by-name, hywconfig-restore-by-name): Added feedback messages if called interactively. 2016-07-13 Bob Weiner * All Files: Added defcustom variable declarations throughout. * hsmail.el (mail-yank-prefix): Set default value to match that of GNU Emacs. * hui-select.el: Changed defgroup used to hyperbole-commands. * hibtypes.el (mail-address-mode-list): Added more modes. * wconfig.el: Renamed library and all symbols to begin with hywconfig. * man/hyperbole.texi (Titlepage): Added cover image. * wrolo*: Changed all wrolo and rolo references to hyrolo. hyrolo.el (rolo-file-list): Made obsolete and replaced with hyrolo-file-list. * hyperbole.el (require 'custom): Added to ensure defgroup and defcustom are always defined. 2016-07-12 Bob Weiner * All Files: Redid file headers mostly to GNU Emacs standards. ============================================================================== V6.0.0 changes ^^^^: ============================================================================== 2016-07-07 Bob Weiner * man/hkey-help.txt: Updated with Org mode and GNU Debbugs summaries. man/hyperbole.texi (Smart Key Debugging): Added this section. * hyperbole.el (hkey-previous-bindings): Renamed from *hkey-list* for consistency with hmouse-previous-bindings. (hkey-bindings, hkey-bindings-flag): Added. (autoloads): Commented out all "hyperbole" autoloads which date back to when Hyperbole was not fully loaded at initialization time. (hyperbole-toggle-bindings, hkey-set-bindings): Added to toggle Hyperbole key bindings on and off. hmouse-key.el (hmouse-toggle-bindings): Showed message only if called interactively. (hkey-binding-entry, hkey-bindings-keys): Added to encapsulate binding storage format. (hkey-initialize): Stored Hyperbole key binding entries. man/hyperbole.texi (Menus): After Hyperbole key bindings are described, added documentation on how to toggle them on and off. * hmouse-sh.el (hmouse-get-bindings): Fixed doc. * man/hyperbole.texi (Invocation): HY-README: Expanded Invocation section with many useful pointers and renamed installation sections. * hmouse-drv.el (hkey-help-hide): Changed to utilize quit-window function if *hkey-wconfig* is not set and made it interactive and an autoload so can replace quit-window in help buffers. (quit-window): Overloaded this function from "window.el" to utilize *hkey-wconfig* when set. hui-mini.el (hui:menu-help): This fixed an issue where Hyperbole minibuffer menu item help window quit did not properly restore prior window configuration. 2016-07-06 Bob Weiner * hypb.el (hypb:maximize-window-height): Added. hib-debbugs.el (debbugs-gnu-mode, smart-debbugs-gnu, debbugs-gnu-mode:help): Added to support the Smart Keys in Gnu Debbugs listing buffers. * hversion.el (id-info, id-info-item): Generalized and improved file handling. * hypb.el (hypb:format-quote): Added. hmouse-drv.el (hkey-debug): Called above function to protect existing % fields in ButLabel and Actions from affecting the message call. * DEMO (Hyperbole Menus): Updated with these new menu control features. hui-mouse.el (hkey-alist): Same changes for Smart Mouse Key as below in hui-mini.el. hui-mini.el (hui:menu-select): Changed to make a press of RET within a menu prefix (before a '>') return to the top-level menu and a press at the end of the menu, quit the menu. 2016-07-05 Bob Weiner * man/hyperbole.texi (Creation Via Action Key Drags): Small improvements. * man/hyperbole.texi (Smart Key - Identifier Menu Mode ): Renamed and updated with imenu support. hui-mouse.el (smart-imenu-display-item-where, smart-item-menu-p, smart-imenu-item-at-p): Added these functions and to use the Emacs imenu library to display programming identifiers defined within the same file in which they are referenced. This works without a TAGS file and on files that have not yet been evaluated within the current Emacs session. (hkey-alist): Added imenu support: Action Key press on an imenu identifier displays its definition; Assist Key press prompts with completion for an identifier defined within the current buffer to display. * hargs.el (hargs:find-tag-default): Added and used in hargs:at-p and hibtypes.el (hyp-address). This supports the newer find-tag-default-function which may be major-mode specific. * hib-kbd.el (kbd-key): Added support to recognized key sequences in GNU standard Info manuals where they are surrounded by a form of smart quotes. (kbd-key:normalize): Added support for special keys delimited by angle brackets, e.g. . * hmouse-tag.el (smart-lisp-at-known-identifier-p): Improved to further limit search for library clauses by searching for close parentheses as well. 2016-07-04 Bob Weiner * hpath.el (hpath:delimited-possible-path): Added (code broken out from hpath:at-p) so can be used in multiple places. hactypes.el (link-to-file-line-and-column): Added. hibtypes.el (pathname): Called hpath:delimited-possible-path. (pathname-line-and-column): Added this new implicit button type and documented it. * hibtypes.el: Updated all to use match-string-no-properties. 2016-07-02 Bob Weiner * hsys-org.el: New file added; defines an implicit button type, org-mode, that displays Org mode links in a web browser and cycles through outline headings. hibtypes.el (require 'hsys-org): Added. man/hyperbole.texi (Implicit Buttons - org-mode): DEMO (Org Mode): Updated doc to reflect this behavior. * hargs.el (hargs:delimited): Added optional 5th arg, LIST-POSITIONS-FLAG, which if non-nil makes the return value a list of (string-matched start-pos end pos). This is used for flashing any matching implicit button when activated. * hui-mini.el (hui:menu-backward-item, hui:menu-forward-item): Added these to move point through minibuffer menu items; bound to SHIFT-TAB (or M-TAB) and to TAB. * hmouse-info.el: Renamed for consistency from hmous-info.el. (require 'info): Added to be sure this is always loaded. * hactypes.el (link-to-Info-node): If lookup as a node fails, try it as an index item name. This allows for implicit links of the type "(file)index-item-name". * hui.el (hui:link-directly): Removed any text properties from string arguments in case they are unintentially copied. 2016-07-01 Bob Weiner * hui.el (hui:link-directly): Updated message after creation to include arguments so the user sees what is linked to. * hmous-info.el (Info-handle-in-menu): Called Info-menu-item-at-point. (Info-note-at-p): Added. hargs.el (hargs:at-p): When reading an Info-node or Info-index-item, if point is on a cross-reference or menu item, make the link to that item, not to the current Info node. hmous-info.el (Info-read-index-item-name, Info-build-menu-item-completions, Info-complete-menu-item, Info-current-filename-sans-extension, Info-menu-item-at-p, Info-node-has-menu-p, Info-read-index-item-name-1): Added. hui.el (hui:link-possible-types): hactypes.el (link-to-Info-index-item): hargs.el (hargs:iforms-extensions, hargs:at-p): Added link-to-Info-index-item action type (interactive spec of +X) with full completion of Info index nodes across all installed Info manuals (at link creation time). Added to documentation. DEMO (Info Paths): Updated to include index item links. * hact.el (action:params): Changed to return nil if ACTION argument is an Emacs byte-coded function with a variable number of arguments in which case the function parameters are not available. This fixed an error in the function kotl-mode where it expected a list to be returned, bug#23873. 2016-06-30 Bob Weiner * Makefile: Removed ps_dir since now make a .pdf file, not a .ps and removed any mention of a PostScript manual. (doc): Made dependent on version.texi too. ============================================================================== V5.15 changes ^^^^: ============================================================================== 2016-06-29 Bob Weiner * hvm.el, hui-xe-but.el, kotl/kprop-xe.el: Set to not byte compile since will be rarely used and reduces the byte-compiler warnings. * hactypes.el: Replaced comint-kill-output with newer comint-delete-output. Replaced shell-sent-input with comint-send-input. * hui-em-but.el: Added hyperbole group for all faces. * hmouse-key.el (require 'hsite): Added this and replaced require of hversion so hmouse-middle-flag is defined at compile-time. * hmh.el (Mh-to): Removed called to no longer existing Mh-get-buffer and changed variable name to currently used mh-show-buffer (all lower-case). * hib-doc-id.el (require 'wrolo): Added for rolo-grep calls. * hmouse-tag.el (eval-and-compile): Added this call around requires and loads. * kotl/kimport.el (require 'kfile): Added. kotl/kcell.el (require 'kview): Added. * All Files (with-current-buffer): Used in place of (save-excursion (set-buffer...)) * wrolo.el, wrolo-logic.el, wconfig.el, kotl/kexport.el, hvm.el, hui.el, hui-select.el: Replaced all remaining calls of (interactive-p) with (called-interactively-p 'interactive). * hinit.el (hyperb:init): Moved to hyperbole.el to resolve a compile-time warning. hload-path.el: Added and moved load-path settings from hversion.el and hyperbole.el here and required this file in hversion.el. This is so the kotl/ directory is added to load-path when just hversion.el is required. This fixes an issue in hinit.el which required hibtypes.el which required klink.el before kotl/ was in the load-path. hversion.el (hyperb:kotl-p): Moved Koutline mode initializations from hyperbole.el to here since hversion is sometimes required at compile time without requiring the hyperbole library and we need the kotl/ subdirectory on load-path then. kotl/kimport.el (kimport:mode-alist, kimport:suffix-alist): Moved these 2 definitions from hyperbole.el back into this file since they are autoloaded and only used herein. hgnus.el (require 'hypb): Added. hsmail.el (smail:comment-add): Rewrote as a no-op if inhibit-hyperbole-messaging is nil. (message-setup-hook, mh-letter-mode-hook): Changed to use add-hook rather than var:append. This solved a compile-time problem where inhibit-hyperbole-messaging was not yet defined (from hyperbole.el) but was used in the var:append call. * htz.el (htz:span-in-days): Renamed call of calendar-absolute-from-julian to newer calendar-julian-to-absolute. * hsmail.el (var:append): Fixed issue where inhibit-hyperbole-messaging was not defined at compile time, causing a failure of hgnus.el (which requires hsmail) to compile. hib-debbugs.el (debbugs-query:status): Added (require 'debbugs-gnu). hib-doc-id.el: hib-kbd.el: hib-debbugs.el (require 'hactypes): Added missing require and eval-when-compile needed for package compilation. hact.el, hactypes.el, hbut.el, hgnus.el, hinit.el, hmh.el, hrmail.el, hui-menu.el, hversion.el, hypb.el, kotl/kcell.el, kotl/kfile.el, kotl/kotl-mode.el, kotl/kview.el: Added eval-when-compile needed for package compilation. ============================================================================== V5.14 changes ^^^^: ============================================================================== 2016-06-28 Bob Weiner * hui-menu.el (infodock-hyperbole-menu): Fixed menubar Manual pointers for Find, Koutliner, and Screen. Also renamed Hyperbole submenu to Koutliner from Koutline to distinguish it from the mode-specific Koutline menubar menu. hversion.el (id-info-item): Added and used in menubar menus to go to Info index entries. (id-info): Trigged an error if argument is not a string. (infodock-hyperbole-menu): * HY-README: Expanded the installation instructions here with additional pointers. * hpath.el (hpath:get-external-display-alist): Renamed from hpath:find-alist and changed it from a variable to a function so it is resolved on a per-frame basis since each frame may have different window-system value when using distributed window systems. Improved documentation. (hpath:external-display-alist-macos) (hpath:external-display-alist-mswindows) (hpath:external-display-alist-x): Added these variables for use with each window system. (hpath:internal-display-alist): Renamed from hpath:display-alist. * hactypes.el (link-to-Info-node): Updated doc to explain that completion is available and there is no need to include a .info suffix for the filename. * hib-debbugs.el (debbugs-gnu-query, debbugs-gnu-query:string): Fixed some edge cases with internal and trailing spacing. * DEMO (Thing Selection): Added this section. * hpath.el (hpath:find-file-urls-p): Removed message and beep call; made a pure predicate. (hpath:enable-find-file-urls): Added a beep and message if called interactively and no remote path library is loaded. 2016-06-27 Bob Weiner * DEMO (HyControl, Creating and Modifying Explicit Buttons): Added these sections. Reworked and updated the demo to reflect the current state of Hyperbole. * hbut.el (ebut:operate): Fixed bug where point was left on a button different than the one operated upon by changing (forward-char 1) to (forward-char 2). * hargs.el (hargs:iforms-extensions): Simplified ?I (read an Info-node name) to call Info-read-node-name. This allows use of filename prefixes without the .info suffix, e.g. (hyperbole) while still supplying completions. * hactypes.el (link-to-Info-node): Changed to call match-string-no-properties. * hibtypes.el (man-apropos): Fixed for new Emacs versions. (rfc): Fixed to allow a space in the middle to match documentation. * hui-menu.el (infodock-hyperbole-menu): Moved the Types menu below the Documentation menu to match the Hyperbole minibuffer menu. hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): Added Types item on the Explicit Buttons menu to display action types; this matches the same item from the IBut menu. * DEMO: Removed description of Cust/Find-File-URLs as this is a bit advanced. Doc is available instead at "(hyperbole)Using URLs with Find-File". man/hyperbole.texi (Using URLs with Find-File): Fixed to refer to the newer name, hpath:find-file-urls-mode rather than hyperb:find-file-urls-mode. * DEMO (Path Suffixes and Variables): Added this section with more examples and removed description of hpath:display-alist; documented in the Hyperbole Manual instead. * man/hyperbole.texi (Internal Viewers): Added description of file formats supported by the default setting of hpath:display-alist. * hibtypes.el (pathname): Excluded paths that start with ~ from expansion via load-path matching and changed to call locate-library so compressed Lisp files are found. Added support for Info filenames without any path (displays Top node). hpath.el (hpath:info-suffix): Added and used in hpath:display-alist and implicit type pathname definition. 2016-06-25 Bob Weiner * hpath.el (hpath:display-alist): Added audio format mp3, wav and ogg suffixes. * man/hyperbole.texi (Link Variable Substitution): Small text fixes. 2016-06-24 Bob Weiner * hui-window.el (hmouse-inactive-minibuffer-p): Added and used at the start of hmouse-alist. This added Smart Key support for an inactive minibuffer. Action Mouse Key click displays the Hyperbole minibuffer menu for easy item selection with the Action Mouse Key. Assist Mouse Key click pops up the jump menu of frames, buffers and windows, just as a blank area in the modeline does. (action-key-minibuffer-function, assist-key-minibuffer-function): Added these variables and used at the start of hmouse-alist. (action-key-modeline-function, assist-key-modeline-function): Changed name from *-hook since should only be set to a single function. 2016-06-23 Bob Weiner * hui-window.el (hmouse-depress-inactive-minibuffer-p): Added and used in action-key-depress and assist-key-depress. hmouse-sh.el (hmouse-shifted-setup): For GNU Emacs, changed hmouse-set-point-command to hmouse-move-point-emacs. (hmouse-move-point-emacs): Added. * hycontrol.el (frame-pixel-*): Changed all these calls to hycontrol-frame-* to include any window manager decorations in the calculation. (hycontrol-frame-height, hycontrol-frame-width): Added. * hyperbole.el (hyperbole, hyperbole-keys): Added these customization groups; used by hmouse-mod.el. hmouse-mod.el (hmouse-mod-disable): Renamed from hmouse-mod-unset-global-map. (hmouse-mod-enable): Renamed from hmouse-mod-set-global-map. (hmouse-mod-mode): Added this to make it a minor mode and replaced hmouse-mod-toggle. * man/hyperbole.texi (Glossary): Added Chord Keyboard entry. (Smart Key Modifiers, Smart Key Modeline): Added these sections. * hib-kbd.el (kbd-key): Tightened to not match when point is on the outside curly brace characters, thereby allowing hui-select-delimited-thing to select the delimited key sequence. * man/hyperbole.texi (Implicit Buttons): Added debbugs-gnu-query doc. 2016-06-22 Bob Weiner * man/hyperbole.texi (Smart Key Operations): Updated this section and fixed documentation error concerning where to click the Action Mouse Key to bring up the Info Browser. * hui-mini.el (hui:menus): Changed from Doc/SmartKy to Doc/SmartKeys. * hmouse-drv.el (hkey-summarize): Made interactive so can be bound to a key. Deleted return to previously selected window, so can browse through the help and then use {q} to restore the window configuration. hui-mouse.el (action-key-error): Changed to call hypb:error. (assist-key-error): Added and changed assist-key-default-function to default to this, since its prior value, hkey-summarize, is performed by an Assist Key click in the right of a modeline. * hmouse-tag.el (smart-lisp-at-tag-p): Added &, ~, and ^ as identifier characters and removed #. 2016-06-21 Bob Weiner * hib-debbugs.el: Added to browse discussion and show the status of Gnu debbugs issues embedded in any buffer. hibtypes.el (require 'hib-debbugs): Added. MANIFEST: Added an entry for this. Makefile: Added file entries. * hbut.el (hattr:report): Simplified conditionals and printing via format. * hui-mini.el (hui:menu-help): Fixed to handle windows already split side-by-side and to leave point in the help buffer (so can use {q} to quit) if not called from within the minibuffer, e.g. when on an implicit button. 2016-06-20 Bob Weiner * hui-mini.el (hui:menu-doc, hui:menu-item-doc): Added and added parameters to their callers to allow for return of menu item documentation strings used by implicit keyboard buttons in hib-kbd.el. This allowed display of documentation of Hyperbole minibuffer menu items from readable key sequence strings via the Assist Key. hib-kbd.el (kbd-key:normalize): Added support for RETURN fully spelled out. (kbd-key:hyperbole-menu-key-p): Added. (kbd-key:doc): Added error if no doc found for a key-sequence. (ibtypes::kbd-key, kbd-key:act): Added support for invoking Hyperbole minibuffer menu items with the Action Key when over a sequence of keys like, e.g. {C-h h d d}. (kbd-key:normalize): Added error if argument is not a string. * hui-window.el (hmouse-set-buffer-and-point): Added. (hmouse-goto-depress-prev-point, hmouse-goto-depress-point, hmouse-goto-region-point, hmouse-goto-release-point): Called `hmouse-set-buffer-and-point'. * hui-mouse.el (smart-gnus-summary, smart-gnus-summary-assist): Changed from no-longer existing call of `gnus-summary-mark-unread-forward/backward' to `gnus-summary-mark-article-as-unread'. 2016-06-19 Bob Weiner * wrolo.el (rolo-sort-lines): Added to handle sorting of collapsed rolo records properly since through Emacs 25.0 invisible lines are not grouped with the prior visible line, making rolo entry (or any record) sorts fail. This function fixes that. (rolo-forward-visible-line): Added to support rolo-sort-lines. 2016-06-18 Bob Weiner * hversion.el (hyperb:window-sys-term): Added per frame check for mouse support, notably for graphical emacsclient spawned from a non-graphical Emacs. Previously such clients did not have Hyperbole mouse support; now they do. (hyperb:window-sys-term): Changed to take a single frame argument and set the value of 'hyperb:window-system into the frame parameters. (hyperb:window-system): Deleted this variable; now should be called as a function only. Added this as a function to return the frame-specific value of `hyperb:window-system'. hmouse-drv.el (hkey-operate, hmouse-set-point): hypb.el (hypb:configuration): hyperbole.el (hkey-initialize): hui-window.el (hmouse-drag-window-side, hmouse-modeline-depress, hmouse-modeline-release, hmouse-resize-window-side, hmouse-x-coord, hmouse-y-coord): hmouse-sh.el (hmouse-get-bindings, hmouse-get-unshifted-bindings hmouse-shifted-setup, hmouse-unshifted-setup): hmouse-key.el (hmouse-set-bindings): Changed from variable ref to function call for hyperb:window-system. hui-window.el: Simplified hmouse-alist setup a bit. hui-mouse.el (hmouse-alist): Changed to always define this since one may start Emacs on a tty and then use a distributed window system to create a frame under a window system with mouse support that needs this. 2016-06-17 Bob Weiner * hui-jmenu.el (hui-menu-of-buffers): Removed limit on top-level buffer menu length, i.e. the number of categories/major modes. * man/hyperbole.texi (@var): Replaced all with @code since @var is meant for a different purpose. * hmouse-key.el (hmouse-install): Changed to set the global value of hmouse-middle-flag so always know if the middle mouse button was bound by Hyperbole. hmouse-mod.el (DESCRIPTION): Fixed doc on adding unshifted middle button as Action Key. hmouse-sh.el (hmouse-shifted-setup): Renamed from hmouse-setup and improved documentation. (hmouse-unshifted-setup): Improved doc and removed use of flag argument. 2016-06-16 Bob Weiner * hmouse-drv.el (hmouse-key-release-args-emacs): Handled integer events. * man/hyperbole.texi (Cust/KeyBindings): Added doc for C-c RET, syntactical region marking and C-c ., delimited thing to start and end. Also indicated keys which are bound only if not bound prior to loading Hyperbole. * hui-menu.el (hui-menu-options): On Customize/Change-Key-Bindings menu, renamed Dragging-Actions to Drag-Emulation-Key, renamed Button-Rename to Button-Rename-Key. Renamed HyControl-Windows to Windows-Control-Key. Added Mark-Thing-Key. hui-mini.el (hui:menus): On Cust/KeyBindings menu, renamed ControlWin to WinControl. Renamed Dragging to DragKey. Added MarkThing. * man/im - Replaced old images with ones generated by Mats. ============================================================================== V5.13 changes ^^^^: ============================================================================== 2016-06-15 Bob Weiner * hui-jmenu.el (interactive "e"): Removed "e" from menu commands that take no arguments. * hact.el (symset, htype): Moved from hbut.el because actype:create uses htype and htype uses symset it and hbut.el requires hact.el, so we can't require hbut here. This solved an installation problem where hact was byte-compiled before hbut was loaded and produced an invalid defact/actype:create macro which then caused hactypes.el to fail upon loading. Also forced a load of set.el at compile time to satisfy Hyperbole package builder. hactypes.el (hact.el): Forced a load at compile time to satisfy Hyperbole package builder. hbut.el (hversion): Added require of this library; needed for hyperb:microcruft-os-p definition at load time. 2016-06-14 Bob Weiner * kotl/EXAMPLE.kotl: kotl/kmenu.el (kotl-menu-common-preamble): man/hyperbole.texi: Fixed all references to {C-h h o} which should have been {C-h h k} since the Koutliner menu key has changed. * kotl/kotl-mode.el (kotl-mode:assist-key): Renamed from kotl-mode:help-key for consistency. * man/hyperbole.texi (Glossary): Added Screen and Display entries. * hactypes.el (link-to-file-line): Improved to handle compilation buffers where the directory has been changed and a relative pathname is given in an error message. Now will prompt for the directory of the path. * hmouse-drv.el (action-key-internal, assist-key-internal): Added. (action-mouse-key, assist-mouse-key, action-key, assist-key): Refactored to call the above internal functions. Made action-key and assist-key clear all the action mouse key variables so there can be no confusion between mouse presses and keyboard presses. (hkey-help-show): Generalized handling of completions buffers and thereby fixed an issue in Emacs 24 where completions were not showing. * hpath.el (hpath:remote-at-p): Tightened matches to require at least one char after the : to prevent false matches, e.g. to node:: in Texinfo files. (hpath:at-p): Tightened space delimited match to exclude @ characters. (hpath:find-alist): Added .pdf to mac-osx-suffixes and removed old Interleaf and Framemaker configuration from x-suffixes. (hpath:remote-available-p): Fixed to require the package if only listed in file-name-handler-alist. * MANIFEST: Added man/hyperbole.pdf printable manual version to the distribution. Makefile (dvi, ps): Removed .dvi and .ps outputs and replaced with just .pdf. (distclean): Remove im/*.ps unneeded files and temp files used in hyperbole.pdf generation. 2016-06-13 Bob Weiner * man/hyperbole.texi: Typos and various small changes throughout. Redid image insertion so is no longer conditionalized by output type and uses @image and @caption. * Makefile: HY-WHY.kotl: Added this file as a quick list of reasons to use Hyperbole. More are welcome. 2016-06-09 Bob Weiner * hargs.el (hargs:delimited): Fixed to not return an empty string. * hyperbole.el (unless (fboundp 'kotl-mode)): If this is not bound, load autoloads file, e.g. when loading Hyperbole other than as an Emacs package. * hpath.el (hpath:find): Changed to not try to resolve executable paths that begin with a modifier character. 2016-06-08 Bob Weiner * hui-window.el (hmouse-drag-window-side): Rewrote to work with GNU Emacs but only allows dragging vertical dividers on the right to the left to shrink a window. (hmouse-side-sensitivity): Increased from 2 to 5 to make this work. * hui.el (hui:bind-key): Forced prompt into minibuffer window for when called from a menubar menu. * hmouse-drv.el (hkey-assist-help): Renamed from assist-key-help. (hkey-mouse-help): Renamed from action-mouse-key-help. * hmouse-key.el: Moved all Smart Key depress functions from here to hmouse-drv.el where the release function are. * kotl/kotl-mode.el (kotl-mode:remove-cell-attribute): Added. (kotl-mode:transpose-chars): Improved error handling at the beginning of cells and end of lines. 2016-06-07 Bob Weiner * kotl/kotl-mode.el (kotl-mode:set-cell-attribute): Fixed interactive part, added error if called non-interactively in a read-only buffer and improved prompts. * kotl/kview.el (kview:set-buffer): Renamed from kview:set-buffer-name since it could get out of sync if some other library changed the buffer name leading to kview:buffer returning nil. Now the buffer itself is stored. kotl/kfile.el (kfile:write): Called kview:set-buffer. * kotl/kotl-mode.el (kotl-mode-map): Added missing {C-c C-i} binding mentioned in the EXAMPLE.kotl file; sets cell attributes. * hui-select.el (hui-select-thing-with-mouse): Rewrote to better match hui-select-thing and fixed issue with point moving away from point clicked. * hmous-info.el (Info-handle-in-menu): Added support for index-nodes. (smart-info, smart-info-assist): Added support for fixed header line and text-property-based breadcrumb header line now used in Emacs. * hmouse-key.el (hmouse-save-region): Improved conditional for each emacs version, tightening when a region is saved. * hmouse-mod.el (hmouse-mod-insert-command): Rewrote to support GNU Emacs last-command-event and added autoload magic strings. (hmouse-mod-set-global-map, hmouse-mod-unset-global-map): Modified to save the prior global map and restore it later. (hmouse-mod-execute-command): Added setting of prefix argument for commands and made to support any self-inserting-character. (hmouse-mod-toggle): Added to toggle this on and off. hmouse-drv.el (action-key, assist-key): Added clear of action and assist key depressed flags so hmouse-mod.el works properly. * hmouse-tag.el (smart-java-at-tag-p): Prevented @ annotation matches. (smart-java-keywords, smart-c++-keywords, smart-c-keywords, smart-objc-keywords, smart-python-keywords): Added to prevent tag matches in smart-*-at-tag-p. (smart-asm-at-tag-p, smart-c-at-tag-p) smart-fortran-at-tag-p, smart-lisp-at-tag-p): Added optional no-flash parameter for when called after button has already been flashed. * man/hyperbole.texi (@smallexample): Changed most of these to @example because the text was too small. 2016-06-06 Bob Weiner * kotl/klink.el (klink:at-p): Greatly tightened matching by checking for klink prefixes and that pathnames are valid. * hycontrol.el (hycontrol-frames): Added 1-9 argument for zoom amount. * hui-menu.el (hui-menu-options): Updated Change-Key-Bindings item names and added HyControl-Windows. For minibuffer menu, added ControlWin entry. * man/hyperbole.texi (Menus): Added pulldown menu cindex entries and matched index entries exactly to the menus. * hycontrol.el (hycontrol-save-frame-configuration, hycontrol-save-window-configuration): Added missing interactive specifiers. * man/hyperbole.texi (Glossary): Added Buffer, Frame, HyControl and Window definitions. (HyControl): Added this chapter. * hyperbole.el (hkey-initialize): Added {C-c \} key binding to hycontrol-windows. * man/hyperbole.texi (Smart Key Thing Selection): Renamed from Smart Key Selection. (Smart Key Argument Selection): Renamed from Entering Arguments. (Questions and Answers): Added some additional Q&A. * hactypes.el (link-to-Info-node): Removed hpath:absolute-to call. Later Info-goto-node call fully resolves Info pathnames. 2016-06-04 Bob Weiner * hui.el (hui:htype-help): Optimized replaces in temp-buffer hook. (hui:htype-help-current-window): Added and used in Hyperbole Doc menus for consistency of documentation display. hui-mini.el (hui:menus): hui-menu.el (infodock-hyperbole-menu): In Types menu, called above func. * hargs.el (hargs:delimited): Fixed to handle backslash quoted end delimiters. * hmouse-tag.el (smart-c-use-lib-man): Made small doc improvements. 2016-06-02 Bob Weiner * hui-menu.el (hui-menu-screen): Added. (hui-menu-cutoff-list): Added. (hui-menu-global-buttons): hui-jmenu.el (hui-menu-of-frames, hui-menu-of-buffers, hui-menu-of-windows): Called hui-menu-cutoff-list. (hui-menu-of-buffers): Changed from buffers-menu-max-size to hui-menu-max-list-length for cutoff menu size. hui-jmenu.el (hui-menu-sort-buffers): Fixed reverse sort order issue. * hui-jmenu.el (hui-menu-to-window): Added error if window is not live and forced skipping of minibuffer. (hui-menu-modeline): Changed to a function so is dynamically recomputed each time as it needs to be. * hypb.el (hypb:char-count): Added. hui-mini.el (hui:menu-help): Simplified with call to hypb:char-count. 2016-06-01 Bob Weiner * hui-jmenu.el (hui-menu-wconfig): Moved from hui-menu.el since used here first. * hycontrol.el: Added this for quick, interactive sizing, moving, replicating and deleting of windows and frames. hui-mini.el (hui:menus): Added new Screen submenu to work with hycontrol.el. * hui-menu.el (require): hui-jmenu and added its menus to the newly added Screen menu. * man/hkey-help.txt: Clarified and fixed modeline documentation * wrolo.el (rolo-grep, rolo-isearch, rolo-isearch-for-regexp): Made all finds and searches in the rolo consistent and case-insensitive by temporarily setting case-fold-search to t in these functions. Other functions already had this. (rolo-grep): Fixed so when a raw numeric-style prefix argument is given, it is always converted to and evaluated as an integer. 2016-05-31 Bob Weiner * DEMO: Updated horizontal and vertical drag exercises to correspond to current Hyperbole behavior. * man/hyperbole.texi (Rolo Keys): Added doc for the {l} key. * wrolo.el (rolo-grep): Added support for using bbdb-file in rolo-file-list for searches. (rolo-file-list): Automatically added bbdb-file to search list if it is set before wrolo is loaded. Renamed rolo-buf arguments to rolo-file-or-buf wherever a filename or buffer is acceptable. (rolo-show-levels): Added to handle the bulk of {t} and {o} keys. Added show of all match buffer @loc headers and maximized the number of entries displayed for any given location of point. (rolo-top-level, rolo-overview): Called rolo-show-levels. (rolo-isearch-for-regexp): Added. (rolo-isearch, rolo-isearch-regexp, rolo-locate): Rewrote and called rolo-isearch-for-regexp. (wrolo-mode-map): Changed to {M-s} rolo-isearch and {C-u M-s} rolo-isearch-regexp key bindings. * man/hyperbole.texi (Smart Key Bindings): Removed {C-c C-t} binding for hmouse-toggle-bindings to force the user to invoke this command by name or to bind it themselves, so they really know what they are doing before use. Also, this key collided with outlining usage in the Koutliner and Rolo tools. Suggested a personal binding if needed. hyperbole.el (hkey-initialize): Removed {C-c C-t} global binding. hmouse-key.el (hmouse-toggle-bindings): Removed default disabling of this command since it is no longer bound to an easy to invoke key. hui-menu.el (hui-menu-options): Removed Toggle-Mouse-Keys. hui-mini.el (hui:menus): Removed Toggle-Mouse key rebinding. * hmouse-drv.el (hkey-help-show): Made ignore completion buffers; otherwise, was changing the current buffer to the completions list when it should have been the minibuffer window. hargs.el (hargs:set-string-to-complete): Fixed to prevent window movement with save-window-execursion instead of save-excursion. * wrolo.el (rolo-date-format): Added. (rolo-current-date): Rewrote to use rolo-date-format. (rolo-set-date): Rewrote to add tab char. insertion here rather than in rolo-current-date. * wrolo.el (rolo-isearch): Rewrote to handle string isearch only. (rolo-isearch-regexp): Added to handle regexp isearch only. 2016-05-30 Bob Weiner * hui-menu.el (infodock-hyperbole-menu): Renamed Action-Types to Show-Action-Types and Implicit-Button-Types to Show-Implicit-Button-Types. * hui.el (hui:bind-key): Allowed C-g to quit this operation. * hmouse-sh.el (hmouse-unshifted-setup): Changed to take hmouse-middle-flag as a parameter and to use var:add-and-run-hook. * hmouse-tag.el (smart-lisp-bound-symbol-def): Added with fix for if one of the 3 functions called herein triggers an error. Previously, the condition-case was outside of all three, preventing testing each in turn if one signaled an error. (smart-lisp, smart-lisp-at-known-identifier-p): Called above function here. * wrolo.el (rolo-bbdb-grep): Modified to make buffer unmodified and set to read-only after entries are added. ============================================================================== V5.12 changes ^^^^: ============================================================================== 2016-05-29 Bob Weiner * hyperbole.el (hkey-install-override-local-bindings): Called var:run-hook-in-matching-buffer to ensure existing buffers are affected by the hook change. * hui-em-but.el: Removed window-system test since faces now work on dumb terminals. * hui-menu.el (hyperbole-popup-menu): Added to access the menubar menu as a popup and for possible use as action-key-default-function. * hmouse-tag.el (smart-python, smart-python-tag, (smart-python-oo-browser, smart-python-at-tag-p): Added these functions to handle Python identifiers much better. hui-mouse.el (hkey-alist): Updated to use smart-python. man/hyperbole.texi (Smart Key - Python Source Code), HY-NEWS: Added this doc. * man/hyperbole.texi: Added separate subsections for each major context of the Smart Keys for easier quick reference. Updated ordering of contexts and added some missing ones. 2016-05-28 Bob Weiner * kotl/kproperty.el: Added (require 'hyperbole) to ensure kotl/ is in load-path. Needed during package install. 2016-05-27 Bob Weiner * wrolo.el (rolo-edit-entry): Added errors for when not on an entry line or when attempting to edit a BBDB entry. * hui-select.el (hui-select-at-delimited-thing-p): Changed to return nil if on a punctuation character that is not a comment. (hui-select-thing-with-mouse): Simplified buffer-substring calls with match-string. * hbut.el (hattr:copy): Removed empty unwind-protect body. * set.el (set:create, set:intersection, set:difference): Reversed results to keep in stable order. hbut.el (ebut:list): Removed nreverse call after set:create. * hvar.el (var:append): Added error messages if called with invalid arguments and made it return the value of the 1st argument symbol. * hibtypes.el (Info-node): Allowed for `single' quotes around the referent. * hpath.el: Simplified buffer-substring calls with match-string. (hpath:remote-at-p): (hpath:remote-p): Rewrote to beter support tramp package. (hpath:remote-available-p): Fixed to always return a package symbol or nil. * wrolo.el (rolo-bbdb-fgrep, rolo-bbdb-grep): Added these commands to integrate the BBDB with the Rolo. (wrolo-mode-map): Added {o} key bound to new function rolo-overview. Shows first line of all levels of rolo matches. (rolo-top-level): Added and bound to {t} since previous binding of {t} did not work when multiple levels of cells were showing upon command invocation. (rolo-isearch, rolo-locate): Rewrote and required press of {C-s} following this call. man/hyperbole.texi (Rolo Keys): Updated doc to reflect {M-s C-s} sequence and new {o} key binding. Improved doc of {t} binding. (wrolo-mode-map): Added additional {Shift-TAB} binding to move backwards by one rolo match. (rolo-verify): Added to verify appropriate commands are called from the match buffer and that match string exists. 2016-05-26 Bob Weiner * hui-jmenu.el: Added for buffer, frame and window popup menu on the Assist Key when pressed on the main part of a modeline. hui-window.el (assist-key-modeline-function): Set to hui-menu-display-commands. Makefile (EL_COMPILE, ELC_COMPILE): Added hui-jmenu.{el,elc}. MANIFEST: Added hui-jmenu.el entry. HY-NEWS: Added writeup about this. * hui-window.el (assist-key-modeline): Fixed naming issue with the Smart Key help buffer that prevented hiding it with a click of the Assist Modeline Key. * hmouse-tag.el (smart-lisp): Rewrote to use find-func.el library functions that use symbol load history to quickly find Emacs Lisp identifiers without any TAGS file. Also now find face definitions as a result. Used buffer-substring-no-properties throughout this file. (smart-lisp-at-known-identifier-p): Rewrote in similar way to smart-lisp. (smart-emacs-lisp-mode-p): Fixed match for *Compile-Log* buffer. * hmoccur.el (moccur-mode-display-occurrence, moccur-noselect): Added and bound to {C-o} to display occurrence in source file without jumping to it. (moccur-mode): Improved doc and derived from special-mode so can now quit with {q} and have frame restored like in occur-mode and help-mode. 2016-05-25 Bob Weiner * hmouse-tag.el (find-func): Required this library. (smart-tags-noselect-function): Added find-definition-noselect as the best way to locate a function def. * kotl/kotl-mode.el (kotl-mode:completion-kill-region): Added for overloading binding of {C-w} when completion.el package is loaded. * hyperbole.el (hversion): Rewrote require of this file to handle when hyperb:dir is not yet in the load-path but load-file-name is set. (inhibit-hyperbole-messaging): Added this variable with a default of t. When t, Hyperbole will not alter messaging mode hooks nor overload functions from these packages, preventing potential incompatibilities. hvar.el (var:append): Does nothing when inhibit-var-append is non-nil. (var:append): Simplified and saved additions for possible future removal. (var:append-all, var:remove, var:remove-all): Added. hyperbole (hyperbole-toggle-messaging): Added. hui-menu.el (hui-menu-options): Added Toggle-Messaging-Explicit-Buttons. hui-mini.el (hui:menus): Added Cust/Msg-Toggle-Ebuts. man/hyperbole.texi (Buttons in Mail, Buttons in News): Updated these sections to document new ability to toggle messaging ebut support on and off. * hinit.el (hyperb:init): Changed var:append call to add-hook. hsite-ex.el (hui:but-flash): GNU Emacs now has faces on ttys, so enabled explicit button flashing on them. Changed var:append call to add-hook. * hui-mouse.el (outline): Rewrote hook adding and supported outline-minor-mode. * hypb.el (hypb:rgrep): Improved pattern quoting, dynamically changing pattern delimeters when patterns contain quote marks. Still need to backslash double quotes in patterns. * hsmail.el (smail:comment): Disabled by default since not many people ever embedded buttons in mail. * hypb.el (hypb:toggle-isearch-invisible): Added and used in menus. hui-menu.el (hui-menu-options): Added Toggle-Isearch-Invisible-Text, most useful in the Koutliner to allow searching only within visible text if desired. hui-mini.el (hui:menus): Added matching Isearch-Invisible item. 2016-05-24 Bob Weiner * kotl/kotl-mode.el (kotl-mode:reveal-toggle-invisible): Added to cleanly handle isearch temporary showing of invisible text and to leave any isearch exit point visible. * hibtypes.el (pathname): Tightened to ignore matches in dired and buffer menu modes. * hyperbole.el (package-generate-autoloads): Let `noninteractive' be t to silence autoload generation messages. (Former value of inhibit-message is not defined in some V24 Emacs. * kotl/kimport.el (kimport:aug-post-outline, kimport:star-outline, kimport:text): Fixed to handle now that count-matches when called non-interactively returns its value rather than printing it, eliminating the need to call read with its result. ============================================================================== V5.11 changes ^^^^: ============================================================================== 2016-05-24 Bob Weiner * hyperbole.el: Hyperbole now downloads, builds and installs as a regular Emacs package. HY-README: Rewrote Obtaining and Installation instructions for Hyperbole as an Emacs package. * man/hyperbole.texi (Installation): Updated with package support. (By-hand Installation): Added this section. * hyperbole-pkg.el (:keywords): Fixed to be strings. * HY-WHY.kotl: Added to provide quick reasons to use Hyperbole. * kotl/kotl-mode.el (kotl-mode:add-cell): Added missing idstamp increment when adding a child. * kotl/kview.el (kview:add-cell): Simplified doc. kotl/kotl-mode.el (kotl-mode:kill-tree): kotl/kfile.el (kfile:create): Changed label to "1" as it should be. * hib-kbd.el (kbd-key:normalize): Use kbd function first and if that does not help produce a key binding, manually normalize the key sequence. * hversion.el (hyperb:stack-frame, hyperb:path-being-loaded): Moved here from hyperbole.el so can be used within hsite.el as well. hsite-ex.el (hyperb:stack-frame '(package-install)): The Emacs package installer might load this file during package installation before hyperbole.el is loaded. Test for this case and allow. (hversion): Required. 2016-05-23 Bob Weiner * hyperbole.el (hyperb:package-autoloads-subdirectories-p): Added code to ensure Koutliner autoloads in kotl/ subdirectory are generated and loaded since these are now generated by the Emacs package system which may require a patch to handle subdirectories in patches. Hyperbole automatically applies the patch if need be. (hyperb:init): Call this after-init-time so {M-RET} binding and others are not overridden. * Makefile (dist): Removed and replaced with package target. * hmouse-tag.el (smart-lisp-at-tag-p): Added /, = and ? as valid identifier characters. * Makefile (temp_dir): Removed this directory; used dist_dir instead. (dist_hyperbole): Renamed from temp_hyperbole. * hpath.el (hpath:push-tag-mark): Added xref support. * kotl/EXAMPLE.kotl: * man/hyperbole.texi (View Specs): Noted that turning ellipses off may not work in Emac25. 2016-05-22 Bob Weiner * hyperbole.el ((hkey-override-local-bindings, hkey-global-set-key): Added key-description to saved key list and fixed the first function to override keys properly. * man/hyperbole.texi (Autonumbering): kotl/kvspec.el (kvspec:label-type-alist): kotl/kmenu.el (kotl-menu-common-body): kotl/kview.el (kview:default-label-type, kview:set-label-type): Disabled partial-alpha, start and no labeling in outlines since there are likely problems with each and no major need for them. * kotl/kview.el (kview:id-counter): Added and used. * kotl/kotl-mode.el (kotl-mode:add-cell): Conditionalized klabel-type:update-labels call to update sibling labels to apply only to label-types that require sequential updating. This eliminated a problem when idstamp labels were in use and the counter would increase twice for each cell added. * kotl/klabel.el (klabel:idstamp-p): Added and used to prevent incrementing idstamp count in multiple places. * kotl/kview.el (kcell-view:create): Generalized and rewrote the way label is generated to account for kview's label-type. kotl/kotl-mode.el (kotl-mode:kill-tree): kotl/kfile.el (kfile:create): Called kview:add-cell with parameter of "0" rather than "1" so proper label type is generated. (kcell-view:create): Updated to handle various label-types. * kotl/klabel.el (klabel-type:increment, klabel:increment-alpha) (klabel:increment-partial-alpha, klabel:increment-legal): Changed to compute first child of 0 root cell, rather than trigger an error. * kotl/kview.el (kview:set-label-type): Reset per kview function definitions even if the label type doesn't change, as these function definitions might have changed. * kotl/klabel.el (klabel-type:function): Removed string formatting of idstamp labels as they are already returned as strings. * kotl/kview.el (hyperb:emacs-p): Optimized to skip to the end of each kcell property * kotl/klabel.el (klabel-type:child, klabel-type:increment, klabel:level, klabel-type:parent): Added support for idstamp and partial-alpha labels. * kotl/kotl-mode.el (kotl-mode:end-of-cell): Fixed handling of arg other than 1 and noted that this applies only to visible cells. * kotl/kview.el (kcell-view:level): Deleted save excursion and stopped moving point. * kotl/klabel.el (klabel-type:legal-label): Improved naming and fixed where string should have been referenced but index was instead. (kotl-label:log26): Deleted and replaced with a direct call of (log n 26). (klabel-type:update-tree-labels): Added missing first-label parameter. * kotl/kmenu.el (kotl-menu-common-body): Rearranged movement items so prev item of matching item pair always comes first. * kotl/kotl-mode.el (kotl-mode-map): Added explicit {C-x i} binding to kotl-mode:insert-file since sometimes, e.g. with ido.el loaded, the insert-file command is remapped to another command in the global map and then the implicit local key binding doesn't happen. kotl/kimport (kimport:insert-file): Renamed from kotl-mode:insert-file. (kimport:insert-file-contents): Renamed from kotl-mode:insert-file-contents. (kimport:insert-buffer): Renamed from kotl-mode:insert-buffer. (kimport:insert-register): Renamed from kotl-mode:insert-register. * kotl/klink.el (klink:at-p): Fixed issue with missing fall-through condition causing <@ 2b1a> style klinks to be missed. 2016-05-21 Bob Weiner * hsite-ex.el (find-file-hook): Changed from older find-file-hooks. * kotl/kfile.el (kfile:find-file-hook): Removed; unnecessary since file reading code has already put point at a valid position before this hook was called to do that. Removal eliminates mutual dependency on kotl-mode.el. * man/hyperbole.texi (Hook Variables): hinit.el (hyperb:init): DEMO (hyperbole-init-hook): Renamed this variable from hyperb:init-hook. * hactypes.el (annot-bib): Fixed to not move point in source window. * hbut.el (ebut:key-src): Tightened search for @loc> button source to only look prior to the end of the current line. Also, changed to ignore this source if the explicit button is within a file buffer. This fixed an issue in DEMO where the wrong button source was chosen for an explicit button because of a @loc> later in the file. * dir: Added as part of Hyperbole packaging for adding Hyperbole to the Emacs category info directory tree. * DEMO: man/hyperbole.texi: hui-mini.el (hui:menus): Changed all references of Outliner to Koutliner. * Makefile (version): Added man/version.texi version number check. * hrmail.el (require): Simplified requires. * hyperbole.el ("Hyperbole %s is ready for action."): Added version number to this message. (autoload): Removed duplicative autoloads now loaded from hyperbole-autoloads. kotl/kotl-mode.el (require): Removed kview and kimport; added kfile. kotl/kfile.el (require): Removed kotl-mode; added kview. kotl/kimport.el (require): Added kotl-mode, allowing removal of more duplicative autoloads. * hpath.el (hpath:display-buffer): Made an autoload since used in hooks. * Makefile (package): Added this and packageclean targets. Added remove of GNUmakefile.id (not used) in distclean. 2016-05-20 Bob Weiner * hyperbole.el (hyperb:dir): Set from load-file-name if available, e.g. when Hyperbole is installed as an Emacs package. * hyperbole-autoloads.el: Renamed from auto-autoloads.el and added kotl/ autoloads in here as well. Require this from hyperbole.el so it can redefine some of the autoloads to load more of Hyperbole when called. * hypb.el (hypb:locate): Added and required locate library. (hypb:locate-pathnames): Added. hui-menu.el (infodock-hyperbole-menu): Added Find/Locate-Files. hui-mini.el (hui:menus): Added Find/LocateFiles. (hypb:rgrep): Rewrote so if in the *Locate* output buffer from the locate command, then the grep is done on the files listed therein. * hyperbole.el (hkey-override-local-bindings): Fixed bug that argument is a cons pair, allowing for local binding overrides. * hui-select.el (hui-select-at-delimited-thing-p): Rewrote to handle comments whose syntax is marked as punctuation and thus allow the action key to select comments. 2016-05-19 Bob Weiner * hui-select.el (hui-select-comment): Added save-excursion in first cond predicate so point remains for 2nd conditional. * hsite-ex.el: (hyperbole-loading): Prevented manual require/load of hsite library. Require/load hyperbole library instead. * kotl/kotl-mode.el (kotl-mode:to-visible-position): Updated so when backward-p is true, only consider visibility of the character before point. * hui-select.el (hui-select-initialize): help-mode - match to Lisp symbols with : in their names, often included in help buffers. * hargs.el (hargs:at-p, hargs:iforms-extensions): hactypes.el (link-to-Info-node): Removed old reference to Info-directory. (hargs:iforms-extensions): When reading a kcell label, match only to presently visible cells. * hargs.el (hargs:read-match): Generalized doc string and if input is empty, return the default `initial-input' value instead. kotl/kview.el (kcell-view:visible-label): Added and used in hargs:read-match. * kotl/kview.el (kview:get-cells-status): Added missing (goto-char start). * kotl/kotl-mode.el (kotl-mode:demote-tree, kotl-mode:promote-tree): kotl/kview.el (kview:map-siblings, kview:map-expanded-tree, kview:map-tree): Called kotl-mode:to-start-of-line to handle edge case when a tree is collapsed, its branches hidden and point is after the hidden branches. Otherwise, the visible tree is missed. Also ensured point ends up back in the same cell where it started. (kotl-mode:move-before, kotl-mode:move-after): Removed unused `orig' marker. * kotl/kotl-mode.el (kotl-mode:start-of-line): Renamed to kotl-mode:to-start-of-line to clarify that it moves point. (kotl-mode:just-one-space): Fixed point movement issue when point is within hidden text. * kotl/kvspec.el (kvspec:initialize): Updated to use unless. (kvspec:lines-to-show): Fixed to not alter which cells are visible; this in turn fixed display in kotl-mode:top-cells. * hui-select.el: Removed all calls to with-syntax-table since there is no one table that works for all modes. Better to simply modify each mode as needed for selection. (hui-select-thing): Solved problem where punctuation would not select a region, so the region would never grow. Now selects the word after point. (hui-select-punctuation): Fixed to select properly. (hui-select-initialize): Made . a symbol constituent in html and web modes so can select a series of object references like parent.child.subchild. 2016-05-18 Bob Weiner * hui-select.el (hui-select-markup-modes, hui-select-initialize): Added support for web-mode (multiple language mode for HTML buffers). Also bound {C-c .} for moving between matching tags in web-mode. * hmouse-tag.el (smart-javascript-at-tag-p): Rewrote for much tighter matching. (smart-javascript-keywords): Added to ignore keywords as identifier matches. hui-mouse.el (hkey-alist): Added missing . after smart-javascript-at-tag-p test. * hyperbole.el (smart-javascript): Added missing autoload. * kotl/klink.el (klink:at-p): Conditionalized smart-c-include-regexp to match only when in a C-based major mode, avoiding false hits in hmtl-mode, for example. * wrolo-menu.el (wrolo-menubar-menu): kotl/kmenu.el (kotl-menubar-menu): hui-menu.el (hui-menu-options): hinit.el (hyperb:init-menubar): hui-menu.el (hyperbole-menubar-menu): Fixed so current-menubar is not referenced under GNU Emacs and improved readability. * kotl/kotl-mode.el (kotl-mode-map): Added [backtab] (Shift-TAB) binding to promote a tree (used to only be M-TAB but many outliners use Shift-TAB. * hyperbole.el (wconfig-ring-empty-p): Added missing autoload for this which is referenced in the Hyperbole menubar menu. * hversion.el (hyperb:mouse-buttons): Changed so Windows default is 3 mouse buttons as many mice now have 3 buttons or can emulate 3 buttons. * hsite-ex.el (htz:local): Hyperbole now automatically sets the timezone under Windows; manual modifications are no longer necessary. Added conditionalized (require 'htz) here. htz.el (htz:local): Modified for MS Windows which returns things like "Eastern Daylight Time", so abbreviate to the first letter of each word for matching to htz:world-timezones. 2016-05-17 Bob Weiner * kotl/kotl-mode.el (kotl-mode:collapse-tree, kotl-mode:expand-tree): Fixed to not expand hidden cell when given the all-flag. (kotl-mode:hide-subtree): Fixed to handle when point is in a hidden part of the tree. (kotl-mode:move-after, kotl-mode:move-before): Changed to leave point at the start of the root of the moved or copied text, so user can see and further manipulate this text. * kotl/kview.el (kview:get-cells-status, kview:set-cells-status, kcell-view:lines-visible, kcell-view:next-invisible-p, kview:map-expanded-tree): Added these functions and used in kview:map-* functions to restore cell view status after manipulation. (kview:move): kotl/kotl-mode.el (kotl-mode:fill-tree, kotl-mode:fill-cell): Rewrote to utilize above new functions and to greatly improve maintaining the same view when some cells are collapsed and invisible. * kotl/kvspec.el (kvspec:show-lines-this-cell): Added and used. * kotl/kview.el (kview:map-branch, kview:map-siblings, kview:map-tree): Added a second save-excursion to eliminate movement within the kview if the kview is not within the current buffer. * kotl/kotl-mode.el (kotl-mode:fill-cell): Changed to call kcell-view:collapsed-p. (kotl-mode:fill-tree): Fixed bug that did not expand whole tree for filling. * wconfig.el (wconfig-set-window-configuration): Added and used throughout to handle bad wconfig entries. * hinit.el (hyperb:init-menubar): Fixed to add Hyperbole to the menubar after emacs initializations are run. 2016-05-16 Bob Weiner * kotl/kvspec.el (kvspec:show-lines-per-cell): Simplified to first show all lines in all cells. * kotl/kview.el (kview:map-region): Added to apply a function to either all or all visible cells within an active region. (kview:map-branch, kview:map-tree): Simplified. * kotl/kotl-mode.el (kotl-mode:delete-indentation): Slightly improved doc. * kotl/kview.el (kview:char-visible-p, kview:first-invisible-point): Added. * kotl/kotl-mode.el (kotl-mode:shrink-region, kotl-mode:valid-region-p, kotl-mode:maybe-shrink-region-p): Added these new functions and used the last one at the start of each kotl-mode editing command to trigger an error if the region spans more than one cell, e.g. after a mouse drag. (kotl-mode:indent-region): Called last above function. (kotl-mode:shrink-region-flag): Added with default value of nil. When enabled, automatically shrinks the region to within a single cell before edit commands. (delete-selection-pre-hook): Overrode this function from delsel.el to possibly auto-shrink the region. (kotl-mode:*): Added mode-specific support for delete-selection-mode from delsel library. (kotl-mode:electric-newline-and-maybe-indent, kotl-mode:electric-indent-just-newline, kotl-mode:reindent-then-newline-and-indent): Added. (kot-mode:newline): Made arg optional and added delete of excess horizontal space before insertion. (kotl-mode:yank): (kotl-mode:yank-pop): Updated with latest Emacs changes. (kotl-mode:exchange-point-and-mark): Added and used. (kotl-mode:clipboard-yank): Added. (kotl-mode:quoted-insert): Added to overload quoted-insert. * Makefile (distclean): Remove auto-autoloads.* files. This is created when the package is installed. hyperbole-pkg.el ("hyperbole"): Defined attributes for release as a package. 2016-05-14 Bob Weiner * README: Added symbolic link to HY-README for Emacs package system. * man/hyperbole.texi (Glossary): Added entries for Tramp and remote pathname. * kotl/kview.el (kview:create): Added (kview:is-p) test in case kview exists already. This may eliminate a sporadic issue where a kview data structure becomes invalid. * hui-mini.el (hyperbole): hmouse-drv.el (hkey-help): Removed (require 'hsite) since the hyperbole.el file now takes care of this. * hyperbole.el: Removed duplicative adding of Hyperbole directories to load-path and restored conditional adding of kotl/ directory. hinit.el (hui-menu-remove): Made this an autoload and moved from hyperbole.el. * hypb.el (hypb:debug): hyperbole.el (autoload): Changed all to load "hyperbole" rather than "hsite". (hypb:chmod): Changed from (function) to #'. * hibtypes.el (rfc): hactypes.el (link-to-rfc): Generalized doc. hsys-w3.el (www-url-find-file-noselect): Generalized. hyperbole.el (hpath:find-file-urls-p): Renamed from hyperb:find-file-url-support-p. (hpath:remote-regexp): Renamed from hyperb:efs-path-and-url-regexp. (hpath:handle-urls): Renamed from hyperb:handle-urls. Rewrote to generalize and support Tramp. Moved all hpath:* functions and variables from here to hpath.el. hpath.el (hpath:enable-find-file-urls, hpath:disable-find-file-urls): Rewrote to use Tramp. (hpath:efs-*): Renamed all to hpath:remote-*. (hpath:remote-default-user, hpath:remote-available-p): Added newer Tramp library support and changed to return the symbol for the package to use. * hib-doc-id.el: Updated documentation and removed site-specific code. ============================================================================== V5.10 changes ^^^^: ============================================================================== * hyperbole.el (hsite): Added code to automatically install hsite.el and to warn if hsite-ex.el is newer. * man/hyperbole.texi (Glossary): Added InfoDock and the OO-Browser definitions. * hyperbole.el: Moved complete hyperb:dir setup here from hversion.el. Moved Hyperbole initialization here from hsite-ex.el. Changed so this file requires hsite rather than vice-versa, allowing for single file loading and initialization of Hyperbole, including adding it to the load-path. Do not separately require or load hsite anymore. 2016-05-13 Bob Weiner * man/hyperbole.texi (Koutliner Keys): kotl/EXAMPLE.kotl: kotl/kotl-mode.el (kotl-mode:overview, kotl-mode:show-all, kotl-mode:top-cells): Added optional prefix arg to toggle display of blank lines viewspec. * hui-mouse.el (smart-outline-subtree-hidden-p): Fixed to not move point. * hyperbole.el (hui-menu-remove): Deleted support for older XEmacs versions. * Removed (function) quote from all lambda calls; lambda is self-quoting now. Removed #' quoting from lambdas; any current emacs version should support this. * kotl/kotl-mode.el (kotl-mode:backward-word, kotl-mode:forward-char, kotl-mode:forward-word): Updated to use some new primitives. (kotl-mode:hide-tree): Added kotl-mode:start-of-line to ensure whole tree is expanded. * kotl/kview.el (kview:previous-visible-point, kview:first-visible-point): Added. kotl/kotl-mode.el (kotl-mode:eolp, kotl-mode:eocp): Documented to handle only visible locations. (kotl-mode:to-visible-position): Added. * kotl/kview.el (kcell-view:next-kcell): Added and used in kcell-view:next. (kcell-view:previous-kcell): Added and used in kcell-view:previous. (kcell-view:invisible-p): Added and used. * kotl/kvspec.el (kvspec:hide-levels): Removed call to kview:set-attr which was duplicated in the subcall to kvspec:levels-to-show. * kotl/kotl-mode.el (kotl-mode:tree-end): Fixed to go to end of current cell when at the end of the tree and used in kotl-mode:mail-tree. * hsmail.el: (mail-yank-original): Changed all calls of insert-buffer to insert-buffer-substring. * hsmail.el: hrmail.el (rmail-forward): Replaced mail-setup-hook with message-setup-hook. hyperbole.el (mail-mode-hook): Changed to newer message-mode-hook. * wconfig.el (wconfig-ring-empty-p): Added and used in Hyperbole menus. * kotl/kotl-mode.el (kotl-mode:copy-to-buffer, kotl-mode:mail-tree): Changed to call kfill:forward-line. hypb.el (hypb:insert-region): Rewrote. kotl/kview.el (kview:char-invisible-p): Added this function and called in hypb:insert-region. 2016-05-12 Bob Weiner * kotl/kvspec.el (kvspec:label-type-alist): Changed 'idstamp' to 'id' to properly match label-type value. * kotl/kview.el (kview:move): Ensured collapsed cells list is created before the cells are moved, since insert may not retain collapsed properties. (kcell-view:collapse): kotl/kotl-mode.el (kotl-mode:collapse-tree): Fixed to leave first line of cell visible. * kotl/kprop-em.el (kproperty:map): kotl/kprop-xe.el (kproperty:map): Changed so function called receives no arguments. (kproperty:map): Removed version for old XEmacs releases. * kotl/kprop-em.el (kproperty:map): kotl/kview.el (kcell-view:to-label-end): Rewrote. * kotl/klabel.el (klabel-type:to-label-end): Deleted. kotl/kview.el (kcell-view:to-label-end): Defined `kcell-view:to-visible-label-end' and called; also simplified this function. (kview:set-functions): Deleted to-label-end attribute; no longer needed. * HY-NEWS: Updated release numbers to Hyperbole major version 5. * kotl/kcell.el (kcell:create, kcell:set-creator): hbdata.el (hbdata:build): hypb.el (hypb:user-name): Added and used. hinit.el (hyperb:user-email): Added this variable and used to set the creator and modifier fields in Koutline cells. (hyperb:init): Initialized hyperb:user-email. Deleted `hyperb:host-domain' variable. Use hyperb:user-email instead. hypb.el (hypb:domain-name): Used message-user-fqdn variable when set and added potential call of 'hostname -f' to get fully-qualified domain name. * kotl/kotl-mode.el (kotl-mode): Added call to kotl-mode:show-all prior to any change of major mode in a koutline buffer. Also, made more variables buffer-local. * kotl/klabel.el (klabel-type:to-label-end): Changed all returned functions to first move to the beginning of the line to ignore any labels hidden within a collapsed tree. (klabel:set): Replaced delete-backward-char call with delete-char. 2016-05-11 Bob Weiner * kotl/kotl-mode.el (kotl-mode:cell-attributes, kotl-mode:cell-help): Changed to call with-help-window. * hui-em19-b.el: Renamed to hui-em-but.el. hyperbole.el: hversion.el (hyperb:window-sys-term): hui-window.el: hpath.el (hpath:find-alist): hmouse-sh.el: Changed references from emacs19 to emacs. hversion.el (hyperb:emacs19-p): Renamed to hyperb:emacs-p. * hmouse-sh.el (hmouse-get-bindings, hmouse-setup, hmouse-get-unshifted-bindings): Added left- and right-fringe window drag support. * hui-mouse.el (hkey-alist): Tightened predicate at end for outline-minor-mode. * kotl/kotl-mode.el (kotl-mode:finish-of-line): Updated to go to the end of the visible line and renamed to kot-mode:to-end-of-line. (kotl-mode:set-temp-goal-column): (kotl-mode:eocp): Changed to call kotl-mode:eolp and rewrote that function to handle invisible newlines. (kotl-mode): Set track-eol to t for better end-of-line vertical movement. * hui.el (hui:link-possible-types): Moved link to outline match to 2nd lowest priority, so that a link to file or directory is the default. Deleted link to elisp possibility as it can embed long elisp functions in the button data file and possibly not parse them correctly. * kotl/kotl-mode.el (kotl-mode:line-move): Accounted for temporary-goal-column potentially being a cons. (kotl-mode:previous-line, kotl-mode:next-line): Unified begin and end messages with emacs. 2016-05-10 Bob Weiner * kotl/kview.el (kview:move): kotl/kfill.el: (kfill:forward-line): Defined and used so can better control line movement. * hypb.el (hypb:insert-region): Rewrote to handle all invisible text. hyperbole.el (outline-invisible-in-p): Added. hui-mouse.el (smart-outline-subtree-hidden-p): hypb.el (hypb:insert-region): kotl/kvspec.el (kvspec:show-lines-per-cell): kotl/kview.el (kcell-view:collapse, kcell-view:expand, kview:move, kcell-view:collapsed-p): kotl/kotl-mode.el (kotl-mode:fill-tree, kotl-mode:collapse-tree, kotl-mode:expand-tree, kotl-mode:hide-subtree, kotl-mode:show-all, kotl-mode:hide-tree, kotl-mode:fill-cell): Rewrote to use only outline-* functions, e.g. changed subst-char-in-region call to outline-flag-region. (kotl-mode): Added line-move-ignore-invisible true setting and call to add-to-invisibility-spec. (kotl-mode:line-move): Changed to boolean test of selective-display rather than integet test. (kotl-mode): Set selective-display to nil, as does outline-minor-mode. Helps with movement. * hui-window.el (hmouse-context-ibuffer-menu): Added for IBuffer support for those who use it. Can be set as action-key-modeline-function. * man/version.texi: Added. * hui-em19-b.el (after-init-time): hui-xe-but.el (hproperty:set-face-after-init): Added this to initialize face after emacs initialization. 2016-05-06 Bob Weiner * kotl/kmenu.el (kotl-menu-remove): wrolo-menu.el (wrolo-menu-remove): hui-menu.el (hui-menu-remove): Replace these functions with a single macro, defined in hyperbole.el * kotl/kfile.el: Changed to always require kmenu since menubars exist on dumb terminals now. * hui-mouse.el (hkey-alist): Added support for xref item lists. Action Key displays an xref file line or just a file containing an xref. Assist Key displays the same but leaves point in the listing buffer. * hpath.el (hpath:find): Fixed to expand relative file names in Hyperbole buttons to absolute paths based on the source directory of the button, e.g. when referencing a global button from a buffer in a directory different than the source directory. * wrolo-menu.el (wrolo): Added (require 'wrolo). wrolo.el (wrolo-mode): Removed (require 'wrolo-menu). Reversed who requires whom for these two files. * hui-menu.el (infodock-hyperbole-menu): kotl/kmenu.el (kotl-menubar-menu): wrolo-menu.el (id-popup-wrolo-menu): Switched from lmenu support to easymenu menus. (wrolo-menu-remove): Added and called. * wrolo-menu.el (id-popup-wrolo-menu): Fixed Quit menu item when not under InfoDock. * hyperbole.el (rolo-fgrep-logical): Moved autoload from wrolo.el. 2016-05-05 Bob Weiner * wrolo.el: Simplified. * Makefile (HYPERBOLE_FILES): Added COPYING file with the GPL V3 in it. * hui-mini.el (hui:menu): Removed this old name. Use `hyperbole' instead. * hui-window.el (hmouse-context-menu): Made interactive. * hmouse-sh.el (hmouse-get-unshifted-bindings, hmouse-get-bindings, hmouse-setup, hmouse-unshifted-setup): Added header-line Smart Key bindings, though not doing with it right now. * hui-mouse.el (smart-ibuffer-menu, smart-ibuffer-menu-assist): Added. (hkey-alist): Added ibuffer-mode after Buffer-menu-mode. man/hyperbole.texi (Smart Keyboard Keys): Document ibuffer support. * hui-window.el (abs): * hversion.el (locate-file): Removed conditional definition since this is included in all modern Emacs releases. hpath.el (hpath:find-executable): Changed to call file-executable-p. hibtypes.el (pathname): Removed fboundp test for locate-file. * hversion.el (hyperb:path-being-loaded): Added this back; lost at some point. hyperbole.el (hyperb:dir): Set with hyperb:path-being-loaded when possible. * *.el: Replace string-to-int with newer string-to-number calls. * hpath.el (hpath:at-p): Eliminated any trailing colons. man/hyperbole.texi (Smart Keyboard Keys): hui-mouse.el (hkey-alist): Moved dired-mode priority above Hyperbole button priority so that files and pathnames don't trigger as implicit buttons. (smart-dired): Changed last line quit handler to skip marked deletions and just quit dired. To execute marked deletions, press the Action Key on the first line of the buffer (the dired directory name). * kotl/kotl-mode.el (kotl-mode:overview): Respect the blank-line viewspec, so the user can control it. * man/hyperbole.texi (Smart Keyboard Keys): hui-mouse.el (smart-gnus-group, smart-gnus-group-assist): If `gnus-topic-mode' is active, and on a topic line, the topic is expanded or collapsed as needed. * man/hyperbole.texi (Smart Keyboard Keys): hui-mouse.el (action-key-default-function): Added comment about setting it to #'hyperbole to bring up the Hyperbole minibuffer menu. * hui-mini.el (hui:menus): hui-menu.el (infodock-hyperbole-menu): hypb.el (hypb:remove-lines, hypb:save-lines): Added and used in menus, so interactive prompts match menu names and mnemonics. 2016-05-04 Bob Weiner * hsite-ex.el (hmouse-middle-flag): Added this setting. man/hyperbole.texi: hyperbole.el (hkey-initialize): Used here. * kotl/kotl-mode.el (hyperb:xemacs-p): Conditionalized defalias calls for XEmacs. (kotl-mode:backward-or-forward-delete-char): Rewrote. (kotl-mode:insert-buffer): Changed call to insert-buffer-substring. * kotl/kimport.el (kimport:file): Added missing argument to error call. (kimport:copy-and-set-buffer): Changed call to insert-buffer-substring. * hyperbole.el (show-all): Removed autoload. hui-mouse.el: wrolo-menu.el (wrolo-menu-common-body): hyperbole.el (outline-*): Added aliases to new outline-* functions for older emacs versions. wrolo.el: Called new outline-* functions. * wrolo-menu.el: kotl/kmenu.el: hinit.el (hyperb:init-menubar): Eliminated hyperb:window-system test since menubars now work on dumb terminals. (hui-menu): Added missing require of this library. * hyperbole.el (hkey-global-set-key): Added to save global key bindings which Hyperbole overrides. Used in hkey-initialize. hmouse-sh.el (hmouse-set-key-list): Use hkey-global-set-key. * Makefile (ps): Rewrote this target. * hmouse-tag.el (tags): Removed (provide 'tags); this is never tested for anyway. (xref-*): Added xref helper function definitions. (smart-tags-find-p): (smart-tags-display): Added xref.el support for newer Emacs versions. (smart-tags-noselect-function): Added this support function. * hmouse-key.el (action-key-depress, assist-key-depress, assist-key-depress-emacs19, action-mouse-key-emacs19): Removed (require 'hsite) since autoloads handle this. (action-mouse-key-emacs19, assist-mouse-key-emacs19): Added apply call to remove extra list layer here, rather than later. * man/hyperbole.texi (Smart Key Bindings): Updated. hmouse-key.el (hmouse-shift-buttons): Renamed to hmouse-install since bindings are always on shift buttons now and rewrote. hyperbole.el (hkey-initialize): * hmouse-reg.el (hmouse-get-bindings): Removed NEXTSTEP unshifted mouse key bindings, just use shifted ones on a 2-button mouse. Also renamed to hmouse-get-unshifted-bindings. (hmouse-setup): Renamed to hmouse-unshifted-setup. (hmouse-unshifted-setup): Changed mouse key bindings so mouse-3 is never bound to the Assist Key; now it can be used for popup menus. This binds only mouse-2 to the Action Key. hmouse-reg.el: Removed this file and merged into hmouse-sh.el. 2016-05-03 Bob Weiner * wconfig.el (ring): Used ring.el to provide frame-specific, named window configurations and frame-specific window configuration rings. man/hyperbole.texi (Window Configurations): Updated documentation. * hversion.el (hyperb:window-sys-term): hui-em19-b.el (hproperty:color-list, hproperty:good-colors): Added check for a window-system of gtk. * hinit.el (hyperb:init): Fixed installation of hkey-override-local-bindings when hyperbole.el has already been loaded. * hibtypes.el (hyp-address): Fixed string-match regexp. * hbut.el (ebut:key-src): Fixed bug by moving to (point-max) before searching for hubt:source-prefix in a buffer with no attached file. (ebut:delimit): Rewrote to use markers. (hbut:comment): Don't add comments in messaging-related buffers even though they have comment syntax. * hmail.el (hmail:composer): Changed default from mail-mode to message-mode, the newer setting for Emacs. * h-skip-bytec.lsp (hmouse-set-point): Deleted this file and moved this function to hmouse-key.el since the issue that kept us from byte-compiling this function under X must be fixed by now. * hui-mini.el (hui:menu-help): Prevented error message when window cannot be shrunk. (hyperbole): Updated documentation. 2016-05-02 Bob Weiner * hui.el (hui:link-directly): Account for prior active region in determining default button label * hui-window.el (hmouse-drag-horizontally): Moved down in priority to just before vertical drags. (hmouse-goto-depress-prev-point): Added. (hmouse-kill-region): (hmouse-kill-and-yank-region): (hmouse-yank-region): Moved point to one end of the region that hkey-value stores. (hmouse-drag-region-active, hmouse-drag-not-allowed, hmouse-goto-region-point): Added to handle the case where a region is active prior to a Smart Key drag; trigger an error. man/hkey-help.txt: man/hyperbole.texi (Smart Mouse Keys): Updated doc with these changes. 2016-05-01 Bob Weiner * kotl/kmenu.el (kotl-menubar-menu): Add the menu before the OO-Browser menu, if on the menubar. * hmouse-sh.el (hmouse-setup): Disabled kmacro-call-mouse-event which can create a global mouse key binding to [S-mouse-3] that conflicts with the Assist Mouse Key. * hui-menu.el (infodock-hyperbole-menu): man/hyperbole.texi (Creating Outlines): hui-mini.el (hui:menus): DEMO: Renamed the Hyperbole Koutliner menus so they all start with K for consistency. So now with the mini-buffer menu, type 'k' rather than 'o' to utilize the Koutliner. * hui-mini.el (hui:menus): Find>GrepFiles hui-menu.el (infodock-hyperbole-menu): Find/Grep-Files hypb.el (hypb:rgrep, hypb:rgrep-command): Added this command as an autoload and used in Hyperbole menus, replacing standard grep command for a much more effective grep. * hmouse-tag.el (smart-tags-find-p, smart-tags-display): Fixed bug that overrode value of non-nil tags-table-list, sometimes preventing the Smart Key from showing a tag definition. * hypb.el (hypb:configuration): Now adds the (HyDebug) entries from the Messages* buffer when composing a message to bug-hyperbole. * hargs.el (hargs:completion): Generalized buffer-name match to include package-specific completions like *Ido Completions*" or any buffer in completion-mode. * hypb.el (hypb:window-list): Simplified to use window-list which should be consistent across emacs variants now. * hmouse-drv.el (hkey-help-show): Removed set-buffer call because the displayed buffer has already been selected. Don't use help-mode in buffers already set up with a quit-key to bury the buffer, e.g. minibuffer completions, as this will sometimes disable default left mouse key item selection. hpath.el (hpath:display-buffer, hpath:display-buffer) (hpath:display-buffer-other-frame): Changed to return selected window and updated doc.; this fixed a completions failure in hkey-help-show used in temp-buffer-show-hook. * man/hkey-help.txt: Unified horizontal and vertical drag actions, regardless of drag direction (left or right; up or down). Action Key splits the current window and Assist Key deletes it. man/hyperbole.texi (Smart Mouse Keys): Updated doc here too. hui-window.el (hmouse-split-window-horizontally): Renamed to hmouse-vertical-action-drag; removed window-min-width setting. (hmouse-split-window-vertically): Renamed to hmouse-horizontal-action-drag and used in horizontal drag action; removed window-min-height setting. (hmouse-vertical-assist-drag): (hmouse-horizontal-assist): Renamed to hmouse-horizontal-assist-drag. (hmouse-horizontal): Deleted. ============================================================================== V5.09 changes ^^^^: ============================================================================== 2016-04-30 Bob Weiner * hmouse-drv.el (hkey-help-show): Added call to hpath:display-buffer so buffer is shown according to user custom settings. * hpath.el (hpath:display-buffer): Removed call to hpath:push-tag-mark. It may be interferring with region selection/manipulation via Smart Key drags. 2016-04-29 Bob Weiner * hinit.el (hyperb:init): Prefer newer write-file-functions variable. Moved Hyperbole key bindings and local key override initialization here and made them run after the editor is fully initialized. * hversion.el (hyperb:window-sys-term): hui-window.el (hmouse-split-window-horizontally, hmouse-split-window-vertically): Changed function prefix from 'sm-'. (hyperb:window-system): Changed to a defvar. * hmouse-drv.el (hkey-toggle-debug): Added. hui-menu.el (hui-menu-options): Added Customize/Toggle-Smart-Key-Debug. hui-mini.el (hui:menus): Added Cust/Debug-Toggle. hmouse-drv.el (hkey-execute): Added flag hkey-debug and hkey-debug function to show the context and values from each Smart Key activation. * hui-mouse.el (require 'hbut): Added so don't have to conditionalize (hbut:at-p) call. (hkey-alist): Simplified hbut:at-p predicate and stored it result for debugging purposes. Removed separate call to hbut:label-p since hbut:at-p calls it. * hyperbole.el (hkey-initialize): Added this function and moved all Hyperbole key bindings here. Added it to after-init-hook so Hyperbole key bindings are added only after Emacs is initialized, allowing them to override defaults where necessary, notably with mouse keys. * hmouse-drv.el (action-mouse-key, assist-mouse-key): Added clear of hkey-value. * Makefile (dist): Removed copying of hkey-help.txt from $(data_dir_dist) into distribution since this might be an old copy. Remove data_dir_dist variable since no longer used. * hypb.el (hypb:configuration): Small text improvements. * man/hyperbole.texi (Smart Keyboard Keys): Improved doc for unrecognized contexts. * man/hkey-help.txt: Corrected that by default, an invalid context produces an error message rather than bringing up the Hyperbole minibuffer menu. * MANIFEST: Makefile (TEXI2HTML): Changed to use standard makeinfo --html. (HTML_MANUALS): Removed. Added html format of the manual to the distribution. (ps): Updated dir variable names. * hmouse-drv.el (hkey-help): Added check of newer Emacs variable help-window-select. * hypb.el (hypb:push-mark): Deleted this old definition as all current Emacs versions have push-mark now. * hmouse-tag.el (smart-lisp-at-tag-p): Tighted match to ignore all punctuation matches such as, ***. * hui-select.el (hui-select-goto-matching-delimiter): hyperbole.el ({C-c .}): Added this global binding to jump between the opening and closing delimiters of a delimited thing, e.g. a string. Also, works on matching markup tag pairs in HTML and SGML modes. * hyperbole.el (hkey-global-set-key, *hkey-list*): Added to capture global Hyperbole key sequences for possible unsetting in local modes. (hkey-override-local-bindings): Unset local keys here. * hmouse-sh.el (hmouse-get-bindings, hmouse-setup): hmouse-reg.el (hmouse-get-bindings, hmouse-setup): Trigger NEXTSTEP setup only when window-system is 'dps, not 'ns which Mac OS X uses too. Fixes issue with binding the Action Key to mouse-1 instead of mouse-2 under Emacs on Mac OS X. 2016-04-28 Bob Weiner * hypb.el (hypb:mouse-help-file): Renamed to hypb:hkey-help-file. * hyperbole.el (hkey-init): Changed doc to lookup keybindings. * hmouse-drv.el (help-window-point-marker): Added conditional definition of this help variable not provided in earlier Emacs versions but referenced in an Emacs 25 compiled version of `with-help-buffer' used in `hkey-help-show'. Fixes error with display of completions. (hkey-help-show): Nullified `temp-buffer-show-hook' and `temp-buffer-show-function' in here to prevent recursive call of help-mode when it calls with-temp-buffer. This fixed error in display of apropos and other help information. (action-key, assist-key): Updated documentation. * hyperbole.el (after-load-alist): Fixed quoting for this hook. 2016-04-27 Bob Weiner * h-skip-bytec.lsp (hmouse-set-point): Fixed to handle when called with no args from hkey-operate (keyboard drag emulation). * hmouse-drv.el (hkey-operate): Made prefix arg flag optional. * HY-ABOUT: Added Hyperbole version number. * man/hyperbole.texi (Smart Key Bindings): Renamed from Smart Key Assignments and changed some descriptions of the bindings. * hactypes.el (link-to-elisp-doc): Added support for variables. hui-mouse.el (hkey-alist): Added support for Emacs push buttons. Action key activates a button at point and Assist Key shows help for it. * hmouse-tag.el (smart-lisp-at-known-identifier-p, smart-tags-find-p): Added for testing whether a potential Lisp identifier is found in any tags file. * hibtypes.el (texinfo-ref): Added support to display Texinfo nodes references within Texinfo node names and menu items. Also to show documentation for Emacs Lisp identifiers within @code{} and @var() references. hmouse-tag.el (smart-emacs-lisp-mode-p): Since code references are handled within texinfo-ref now, removed texinfo-mode from matching here. man/hyperbole.texi (Implicit Buttons): man/hkey-help.txt: Updated doc with these changes. * hui-mouse.el (hkey-alist): hmouse-tag.el (smart-emacs-lisp-mode-p): Moved test for help-mode to here from hkey-alist. 2016-04-26 Bob Weiner * hpath.el (hpath:is-p): Tightened match for in-file HTML references to avoid matching to Lisp #'function constructs. * hui-mouse.el: hmouse-drv.el (hkey-region): Moved definition from hui-mouse.el where it wasn't referenced. 2016-04-25 Bob Weiner * hpath.el (hpath:at-p): Improved to ignore non-delimited matches of only punctuation. (hpath:push-tag-mark): Added xref-find-definitions last-command check. * hui-window.el (hmouse-alist): Changed so if an active region exists before an Assist Key depress and this is not a drag, then kill the region and yank it wherever the Assist Key was released. (hmouse-paste-region): Deleted and replaced with hmouse-yank-region. * hui-window.el (hmouse-yank-region): hui.el (hui:buf-writable-err): hui-window.el (hmouse-read-only-toggle-key): Added this function and used it. wrolo-menu.el (id-menubar-wrolo): Changed from 'toggle-read-only' to newer 'read-only-mode' command. * hui-window.el (hmouse-horizontal): Changed to use goto-char. (hmouse-key-alist): Added hmouse-drag-thing test. (hmouse-drag-thing): (hmouse-kill-region): (hmouse-kill-and-yank-region): (smart-point-of-coords): (hmouse-yank-region): Added to kill and yank delimited things via Smart Key drags. (hmouse-insert-region): Added to handle regional yanks. (hmouse-edge-sensitivity): Set this to 10 for GNU Emacs; Mats Lidell says it needs to be this high. hmouse-sh.el: hmouse-reg.el: (hmouse-setup): Added drag event bindings for Emacs to support Hyperbole drag actions. (hmouse-set-key-list): Added and used to simplify key bindings. 2016-04-24 Bob Weiner * hhist.el (hhist:remove): Fixed to handle prefix args as a list. * hyperbole.el ({C-c RET}): Added this key binding to hui-select-thing; made double and triple clicks of the left mouse button do the same thing. kotl/klink.el (klink:at-p): Use hui-select-markup-modes Makefile (EL_KOTL): GNUmakefile.id (HYPB_ELCS): MANIFEST: Removed TAGS. Added hui-select.el. hui-select.el: Added this file for thing support. hmouse-tag.el (hui-select): Required. hyperbole.el (hui-select): Required. * man/hypb-mouse.txt: Renamed to hkey-help.txt everywhere. * man/hkey-help.txt: Added mark thing. Updated documentation of mouse-only actions and keypress thing handling. man/hyperbole.texi (Smart Keyboard Keys): Improved accuracy of Smart Key context-specific actions and added thing marking as a context. hui-mouse.el (hkey-alist): Added hui-select-delimited-sexp-at-p test and hui-select-mark-delimited-sexp action. HY-NEWS: Added delimited thing handling. ============================================================================== V5.08 changes ^^^^: ============================================================================== * hui.el (hui:hbut-act, hui:hbut-current-act): hinit.el (hyperb:act-set): Removed this and hyperb:act and hcoord: references, since coordinated/group browsing was never implemented. * hbut.el (gbut:act): Added error handling for a null or empty string label input. * hpath.el (hpath:find-program, hpath:find-file-mailcap): Improved doc and added fallback use of mailcap external program viewer settings (mailcap code from Mats Lidell ). HY-NEWS: man/hyperbole.texi (External Viewers): Documented this change. * hui-mouse.el (smart-dired-assist): Call dired-unmark-all-files. 2016-04-22 Bob Weiner * hmail.el (hmail:invoke): Simplified by using compose-mail. * hmouse-tag.el (smart-tags-display): Prefer call to find-tag-noselect (newer etags.el) than find-tag-internal. * man/hyperbole.texi: hui-menu.el (infodock-hyperbole-menu): Renamed Customization menu to Customize. * hyperbole.el (hmouse-shift-buttons): Bind Hyperbole mouse buttons only when hkey-init is true (the default). Removed compatibility functions for many years old emacs versions: frame function aliases, find-file-noselect overload and hyperb:find-file-noselect. (substitute-in-file-name): Made string-match tighter. (hkey-read-only-bindings): Removed local assist-key bindings which just shadow the same existing global binding, now that we can automatically eliminate local bindings that shadow the global Hyperbole Smart Keys. Also simplified function. Removed PIEmail pm-hook; this package no longer exists. (assist-key-read-only): Removed, no longer used. (hkey-init): Made this an autoload. Changed so no keys are bound herein unless this is true (previously, this affected only the Smart Keys). Reordered key bindings to emphasize Smart Keys. * hyperbole (hkey-override-local-bindings, hkey-install-override-local-bindings, hkey-toggle-override-local-bindings): (hkey-init-override-local-keys): Added this new feature which allows for automatic removal of local key bindings that hide the Action Key. Set `hkey-init-override-local-keys' to nil to disable this feature. hui-menu.el (hui-menu-options): Added Toggle-Override-Local-Keys. hui-mini.el (hui:menus): Simplified Toggle-Rolo-Dates and added Override-Local-Key. * hui.el (hui:hbut-help): Fixed bug where :help was bound as a symbol but not a function to be called. Now ensures any type-specific help symbol is a function to call. (ebut:list): Called apply on set:create to fix list nesting bug. (hbut:report): Called with-help-window and nullified temp-buffer-show-{hook,function} to prevent a nested call to with-output-to-temp-buf that would erase the help buffer after data. 2016-04-21 Bob Weiner * hmouse-tag.el (smart-lisp): Simplified documentation. * hui-mouse.el (smart-man-c-routine-ref): Improved and fixed documentation. * hmouse-tag.el (smart-tags-display): Small improvements. (smart-tags-file-path): (smart-c, smart-ancestor-tag-files): Changed 'tags-file-list' to newer 'tags-table-list'. (smart-tags-display): Modified since emacs now uses 'tags-table-list'. (smart-tags-file-list): Improved tests. * hibtypes.el (text-toc): Fixed to match documentation. * hyperbole.el (vm-mode-hook): Renamed to this newer name. * man/hyperbole.texi (Menus): hui.el (hui:bind-key): Added. hui-menu.el (hui-menu-options): Added Change-Key-Bindings menu and made Customization option settings into submenus as the single-level menu was getting too long. hui-mini.el (hui:menus): Added new Cust/KeyBindings menu that allows interactive rebinding of each global Hyperbole key. * hgnus.el: (require 'gnus-msg): Added and removed old gnuspost.el loading. * hargs.el (hargs:set-string-to-complete): Fixed bug that included minibuffer prompt in string; changed 'buffer-string' call to 'minibuffer-contents'. * hui-menu.el (infodock-hyperbole-menu): Added Hyperbole Demonstration to the top-level menubar so it is easy for new users to find. * hhist.el (all): Greatly improved to use frame configurations rather than just storing a point in a buffer. (hhist:wind-line): Deleted, unused. * DEMO (By Dragging): Info node was improperly referenced with earlier name, 'Drags'. Made a number of small updates in this file. * hypb.el (hypb:hyperbole-banner-keymap): (hypb:display-file-with-logo): Reworked to allow graphic in hyperb:dir. Refactored to support GNU Emacs. Use 'help-mode' as major mode for easier navigaton and window restore. * hpath.el (hpath:url-regexp2): Made : optional again so www.gnu.org works as a URL. * Makefile (distclean): Remove any TODO* working files from the dist. Other small changes. 2016-04-20 Bob Weiner * kotl/klink.el (klink:create): Added save-excursion to prevent movement of point while reading arguments. * hargs.el (hargs:select-p): Fixed code for newer Emacs versions. * hui-mouse.el (hkey-alist): Added kotl-mode-specific end-of-line predicate. * wrolo-menu.el (wrolo-menubar-menu, id-popup-wrolo-menu, id-menubar-wrolo): Renamed these menus from Wrolo to Rolo. * kotl/kmenu.el (id-menubar-kotl): Added 'Remove-this-Menu' item. (kotl-popup-menu): wrolo-menu.el (wrolo-popup-menu): Removed call to popup-menu-internal since GNU Emacs has popup-menu now. * kotl/kmenu.el (kotl-menu-remove): Added. hui-menu.el (hui-menu-options): kotl/kmenu.el (kotl-menubar-menu): hui-menu.el (hui-menu-remove, hyperbole-menubar-menu): Fixed to work properly with Emacs menubars. (hui-menu-remove): Remove Koutline menu as well. * Makefile: Added the following files as distribution dependency checks: auto-autoloads.el, DEMO, MANIFEST, _hypb, .hypb, _pkg.el, ChangeLog (only the latest one), hyperbole-banner.png, hypb-mouse.txt, file-newer, smart-clib-sym Changed distribution so only recent year ChangeLog is included, as the rest is very old and irrelevant now. * hmouse-drv.el (hkey-help-show): Use help-mode major mode for Hyperbole Help buffers. This generally allows typing q to quit and restore the prior window configuration. * man/hyperbole.texi (Menus): Added new Find menu documentation. hui-mini.el (hui:menus): Added new Find menu to find matches and non-matches of regexps across buffers and files. Removed HypbCopy item which duplicated Info item. Removed MsgForums since this manual section is gone and spread elsewhere. hui-menu.el (infodock-hyperbole-menu): Added new Find menu to find matches and non-matches of regexps across buffers and files. Removed Copyright which duplicated Manual entry. Removed Msg-Forums since this manual section is gone and spread elsewhere. 2016-04-19 Bob Weiner * hvm.el (vm-edit-message-end): Updated to latest "vm-edit.el" version. hvm.el (vm-assimilate-new-messages): Updated to latest "vm-folder.el" version, adding new 'first-time' parameter. * kotl/kexport.el (kexport:html, kexport:html): Added missing parameter to 'error' calls. ============================================================================== V5.07 changes ^^^^: ============================================================================== 2016-04-19 Bob Weiner * MANIFEST: Makefile (EL_KOTL, ELC_KOTL): Added "kexport" file which had been mistakenly left out of distribution build dependencies. 2016-04-18 Bob Weiner * kotl/kotl-mode.el (kotl-mode-map): kotl/kotl-mode.el (kotl-mode:scroll-down, kotl-mode:scroll-up): Modified to work as global key bindings for use with mouse wheel scroll variables. * hmail.el (hmail:invoke): Modernized to use mail-user-agent settings. * hui-menu.el (infodock-hyperbole-menu): hui-mini.el (hui:menus): hibtypes.el (hyp-address): hactypes.el (hyp-request): Updated mail list information and extended menus. * kotl/kotl-mode.el (kotl-mode:maintain-region-highlight): Removed window-system conditional for transient-mark-mode since it now works on dumb terminals. * kotl/kfile.el (kfile:view): Added missing file-name parameter to second 'error' call. * kotl/kfile.el (kfile:find-file-hook): kotl/kotl-mode.el (kotl-mode:find-file-hook): Renamed to kfile:find-file-hook and moved to "kfile.el" to ensure that kfile is loaded (which loads kotl-mode) if this is invoked at startup, e.g. when desktop restores a file. Left an alias to kotl-mode-find-file-hook for backward compatibility. * Removed support for old, no longer used Apollo window system. * hpath.el (hpath:display-buffer-alist, hpath:display-where-alist): Hash quoted functions for byte-compilation. * kotl/kotl-mode.el (kotl-mode:add-indent-to-region): Rewrote with 'replace-match' call. * MANIFEST: Corrected to reference kotl/EXAMPLE.kotl * kotl/kfile.el: kotl/kotl.el: Improved naming: renamed this file to kcell.el to better represent it and renamed the 'kotl-data' structure to 'kcell-data'. * hargs.el (hargs:iform-read): Added support for Emacs interactive '^' prefix character for activating/deactivating the transient region via shift selection. * hpath.el (hpath:rfc): Updated to use ietf.org. * hpath.el (hpath:url-hostnames-regexp): hsite-ex.el: hsys-wais.el: hyperbole.el (substitute-in-file-name): Makefile: Removed support for old, no longer used WAIS and Gopher Internet protocols. * hact.el (action:commandp): Rewrote to call 'interactive-form' when available. (hact): Simplified. 2016-04-17 Bob Weiner * kotl/kotl-mode.el (kotl-mode-map): Overloaded left-char and right-char for Emacs arrow keys. * kotl/kexport.el (kexport:html): Replaced 'insert-string' with 'princ' since it works differently in GNU Emacs and would fail to export cell contents. (kexport:html): Updated doc string and added optional prefix arg, SOFT-NEWLINES-P to prevent hard newline breaks within cells. * kotl/kotl-mode.el (kotl-mode:example): Rewrote so always uses the distribution EXAMPLE.kotl file rather than the personally saved and edited one, if the distribution file is newer. In that case, save a copy of the personal one, as SAVED-EXAMPLE.kotl before replacing it. (kotl-mode:backward-or-forward-delete-char): Added GNU Emacs support. (kotl-mode-map): Added delete-forward-char. (kotl-mode:delete-char): Improved beginning and end of cell testing, fixing issues when prefix arguments are given. * hvm.el: VM is not available as a regular Emacs package, so it is somewhat difficult to install properly. Requiring it below will therefore often trigger an error and prevent Hyperbole from properly building, so prevent this error with a condition-case around this whole file. * man/hyperbole.texi: Updated version, copyrights, URL handling documentation. * hsys-w3.el (www-url): Changed to use browse-url.el support of textual browsers when not running under a window system. Removed w3 library dependencies. * hui-ep-but.el, hui-epV4-b.el: Deleted, Epoch is long obsolete. * HY-README: Updated How to Obtain. 2016-04-16 Bob Weiner * HY-COPY: Updated to GPL V3. * DEMO: Updated with gnu.org examples. * HY-ABOUT: Updated the intro. * hui-mini.el (hui:menus): hui-menu.el (hui-menu-url-options): Modernized these menus for current web browsers and changed 'browse-url-new-window-p' to 'browse-url-new-window-flag'. Added toggle of 'browse-url-in-window-flag' menu item. * Makefile (data_dir): Updated to reference hyperbole-banner.png image. * hypb.el (hypb:browse-home-page): Renamed and changed to point to GNU Hyperbole web page. (hypb:display-file-with-logo): Rewrote to do nothing if banner file is not found. 2016-04-14 Bob Weiner * hpath.el (hpath:find-line): Replaced goto-line call since it is meant for interactive use. * hbut.el (htype:create, ibtype:create): hargs.el (hargs:make-iform-vector): hui-em19-b.el (hproperty:list-cycle): hui-xe-but.el (hproperty:list-cycle): hpath.el (hpath:display-alist): Changed from defmacro to defsubst or updated macro syntax. * hui-menu.el (hui-menu-options): Removed old-style backquoting. * set.el (set:remove): Fixed bug by removing extra set of parentheses around args in call to 'set:member'. * hui-menu.el (infodock-hyperbole-menu): Conditionalized "%_" XEmacs menu accelerator key prefix, so it does not appear as a literal in the Hyperbole menu name under GNU Emacs. 2016-04-05 Bob Weiner * set.el (set:create): Improved to allow collection types as set elements. * set.el (set:difference): Fixed boundary case error by adding (setq rtn-set ...) Also, updated defmacro syntax, used self-quoting lambdas and changed many mapcar calls to mapc. 2016-03-29 Bob Weiner * hyperbole.el ("info"): Simplified with eval-after-load * man/hyperbole.texi: Uncommented Hyperbole Info directory listing. 2014-08-29 Bob Weiner * kotl/kotl-mode.el (kotl-mode-map): Added newer XEmacs `backward-char-command' and `forward-char-command' for overloading. 2014-08-16 Bob Weiner * hui-mouse.el (hkey-alist): hmouse-tag.el: Added support for JavaScript identifier definition location. 2014-08-28 Bob Weiner * hibtypes.el (mail-address-at-p): Handled the case when point is on the `mailto:' part of a URI e-mail address. 2014-08-15 Bob Weiner * hui-menu.el: Updated to handle "%_Hyperbole" menu item name with menu accelerator key embedded. 2014-07-20 Bob Weiner * wrolo.el (wrolo-mode): Fixed error that had lowercased `mode-name'. * kotl/kmenu.el (kotl-menu-common-body): Added InfoDock Go and Options menus. ============================================================================== V5.06 changes ^^^^: ============================================================================== For earlier ChangeLog entries, see earlier releases of Hyperbole. Copyright 1991-2025 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved.