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

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

[elpa] scratch/hyperbole-merge-7.0.2b bda4f2d 15/23: Merge remote-tracki


From: Stefan Monnier
Subject: [elpa] scratch/hyperbole-merge-7.0.2b bda4f2d 15/23: Merge remote-tracking branch 'hyperbole/master' into externals/hyperbole
Date: Tue, 5 Feb 2019 16:11:20 -0500 (EST)

branch: scratch/hyperbole-merge-7.0.2b
commit bda4f2d4f39e422577a3b53f1d97e53a90f578df
Merge: 29b1b76 450489e
Author: Stefan Monnier <address@hidden>
Commit: Stefan Monnier <address@hidden>

    Merge remote-tracking branch 'hyperbole/master' into externals/hyperbole
---
 Changes            |  65 +++++++++++++
 Makefile           |   8 +-
 hib-social.el      | 281 +++++++++++++++++++++++++++++++++++++++++++++++------
 hmouse-drv.el      |  51 +++++++---
 hmouse-key.el      |   2 +-
 hpath.el           |  18 ++--
 hsettings.el       |  34 ++++++-
 hsys-org.el        |  30 ++++--
 hui-jmenu.el       |   5 +-
 hui-mini.el        |   3 +-
 hui-mouse.el       |   3 +-
 hui-select.el      |  15 ++-
 hui-treemacs.el    |  18 ++--
 hui-window.el      |   2 +-
 hui.el             |   2 +-
 hypb.el            |  17 +---
 hyperbole.el       |  23 +----
 hyrolo.el          |   2 +-
 kotl/kexport.el    |  14 +--
 kotl/kfill.el      |   3 +-
 kotl/kotl-mode.el  |   4 +-
 man/hyperbole.pdf  | Bin 1263857 -> 1263857 bytes
 man/hyperbole.texi |   4 +-
 man/im/C-hh.png    | Bin 898836 -> 737355 bytes
 24 files changed, 479 insertions(+), 125 deletions(-)

diff --git a/Changes b/Changes
index c3e5d81..05f61bf 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,68 @@
+2017-12-29  Bob Weiner  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
+
+* hib-social.el (github-reference): Added =item-id syntax.
+                (gitlab-reference): Added to support Gitlab references.
+
+2017-12-18  Bob Weiner  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
+
+* 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  <address@hidden>
 
 * hversion.el: Pushed 7.0.2a test update.
diff --git a/Makefile b/Makefile
index f42df35..2565fe2 100644
--- a/Makefile
+++ b/Makefile
@@ -256,16 +256,18 @@ version: doc
 # Build the Info, HTML and Postscript versions of the user manual and 
README.md.html.
 doc: info html pdf README.md.html
 
+TEXINFO_SRC = $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt $(man_dir)/im/*.png
+
 info: $(man_dir)/hyperbole.info
-$(man_dir)/hyperbole.info: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt
+$(man_dir)/hyperbole.info: $(TEXINFO_SRC)
        cd $(man_dir) && $(TEXI2INFO) hyperbole.texi
 
 html: $(man_dir)/hyperbole.html
-$(man_dir)/hyperbole.html: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt $(man_dir)/hyperbole.css
+$(man_dir)/hyperbole.html: $(TEXINFO_SRC) $(man_dir)/hyperbole.css
        cd ${man_dir} && $(TEXI2HTML) hyperbole.texi
 
 pdf: $(man_dir)/hyperbole.pdf
-$(man_dir)/hyperbole.pdf: $(man_dir)/hyperbole.texi $(man_dir)/version.texi 
$(man_dir)/hkey-help.txt
+$(man_dir)/hyperbole.pdf: $(TEXINFO_SRC)
        cd $(man_dir) && $(TEXI2PDF) hyperbole.texi
 
 # github-markdown is an npm, installed with: npm install markdown-to-html -g
diff --git a/hib-social.el b/hib-social.el
index 2f0e550..29df535 100644
--- a/hib-social.el
+++ b/hib-social.el
@@ -16,11 +16,11 @@
 ;;   When the referent is a web page, this calls the function given by
 ;;   `hibtypes-social-display-function' to display it, initially set to 
`browse-url'.
 ;;
-;;   A hashtag reference is either: 
[facebook|github|git|instagram|twitter]#<hashtag>
-;;   or using 2-letter service abbreviations: [fb|gh|gt|in|tw]#<hashtag>.
+;;   A hashtag reference is either: 
[facebook|github|gitlab|git|instagram|twitter]#<hashtag>
+;;   or using 2-letter service abbreviations: [fb|gh|gl|gt|in|tw]#<hashtag>.
 ;;
-;;   A username reference is either: 
[facebook|github|instagram|twitter]@<username>
-;;   or [fb|gh|in|tw]@<username>.
+;;   A username reference is either: 
[facebook|github|gitlab|instagram|twitter]@<username>
+;;   or [fb|gh|gl|in|tw]@<username>.
 ;;
 ;;   If the social media service is not given, it defaults to the value of
 ;;   `hibtypes-social-default-service', initially set to \"twitter\".
@@ -32,6 +32,7 @@
 
 ;;     address@hidden                             Display user's home page
 ;;     address@hidden
+;;     address@hidden
 ;;     address@hidden
 ;;     address@hidden
 
@@ -98,7 +99,8 @@
 ;;     gh#rswgnu/helm/global_mouse               Display user project's branch
 ;;     gh#rswgnu/hyperbole/55a1f0                Display user project's commit 
diff
 ;;
-;;     gh#orgs/github/people                     List the org, github's staff
+;;     gh#orgs/github/people (or staff)          List the org, github's staff
+;;     gh#/github/fetch/contributors             List contributors to github's 
fetch project
 ;;
 ;;     (setq hibtypes-github-default-user "rswgnu")
 ;;     github#/hyperbole                         Display default user's project
@@ -112,12 +114,12 @@
 ;;
 ;;     like so:
 ;;
-;;       gh#issues                               List emacs-helm/helm's open 
issues
-;;       gh#1878                                 Display a specific project 
issue
-;;
-;;       gh#pulls                                List project's open pull 
requests
+;;       gh#pulls                                List project's open pull 
requests (PRs)
 ;;       gh#pull/1871                            Display a specific project 
pull request
 ;;
+;;       gh#issues                               List emacs-helm/helm's open 
issues
+;;       gh#1878                                 Display a specific project 
issue (or PR)
+;;
 ;;       gh#branches                             List project's branches
 ;;       gh#branch/global_mouse                  List files in a specific 
branch
 ;;       gh#global_mouse                         You can even leave off the 
`branch' keyword
@@ -129,6 +131,40 @@
 ;;       gh#898e55c                              Display default user and 
default
 ;;                                               project commit diff
 
+;;   Gitlab (remote) reference links support the same reference types as 
Github (but
+;;   substitute the gl# prefix) plus these additional reference types:
+;;
+;;     gl#/libertybsd/libertybsd-status          Group and project
+;;
+;;     gl#gitlab-org/gitlab-ce/activity          Summarize user's project 
activity
+;;     gl#gitlab-org/gitlab-ce/analytics         Display user project's 
cycle_analytics
+;;     gl#gitlab-org/gitlab-ce/boards            Display user project's 
kanban-type issue boards
+;;
+;;     Once you set the default user and project variables, you can leave
+;;     them off any reference links:
+;;
+;;       (setq hibtypes-gitlab-default-user "gitlab-org")
+;;       (setq hibtypes-gitlab-default-project "gitlab-ce")
+;;
+;;     gl#issues or gl#list                      Display default project's 
issue list
+;;     gl#jobs                                   Display default project's 
computing jobs
+;;     gl#labels                                 Display default project's 
issue categories
+;;     gl#members                                Display default project's 
staff list
+;;     gl#contributors                           Show contributor push 
frequency charts
+;;     gl#merge_requests or gl#pulls             Display default project's 
pull requests
+;;     gl#milestones                             Display default project's 
milestones status
+;;     gl#pages                                  Display default project's web 
pages
+;;     gl#pipelines                              List build and test sequences
+;;     gl#pipeline_charts                        Graphical view of pipeline 
run results across time
+;;     gl#schedules                              Display schedules for project 
pipelines
+;;     gl#snippets                               Project snippets, diffs and 
text with discussion
+;;
+;;     gl#groups                                 List all available groups of 
projects
+;;     gl#projects                               List all available projects
+;;
+;;     gl#milestone=38                           Show a specific project 
milestone
+;;     gl#snippet/1689487                        Show a specific project 
snippet
+
 ;;; Code:
 ;;; ************************************************************************
 ;;; Other required Elisp libraries
@@ -147,6 +183,7 @@
   :type '(radio (const "facebook")
                (const "git")
                (const "github")
+               (const "gitlab")
                (const "instagram")
                (const "twitter"))
   :group 'hyperbole-button)
@@ -171,6 +208,16 @@
   :type 'string
   :group 'hyperbole-button)
 
+(defcustom hibtypes-gitlab-default-project nil
+  "Default project name to associate with any Github commit link."
+  :type 'string
+  :group 'hyperbole-button)
+
+(defcustom hibtypes-gitlab-default-user nil
+  "Default user name to associate with any Github commit link."
+  :type 'string
+  :group 'hyperbole-button)
+
 ;;; ************************************************************************
 ;;; Private variables
 ;;; ************************************************************************
@@ -178,6 +225,7 @@
 (defconst hibtypes-social-hashtag-alist
   '(("\\`\\(fb\\|facebook\\)\\'"  . "https://www.facebook.com/hashtag/%s";)
     ("\\`\\(gh\\|github\\)\\'"    . "https://github.com/%s/%s/%s%s";)
+    ("\\`\\(gl\\|gitlab\\)\\'"    . "https://www.gitlab.com/%s/%s/%s%s";)
     ("\\`\\(gt\\|git\\)\\'"       . "(cd %s; git %s %s)")
     ("\\`\\(in\\|instagram\\)\\'" . 
"https://www.instagram.com/explore/tags/%s/";)
     ("\\`\\(tw\\|twitter\\)\\'"   . 
"https://twitter.com/search?q=%%23%s&src=hashtag";)
@@ -187,6 +235,7 @@
 (defconst hibtypes-social-username-alist
   '(("\\`\\(fb\\|facebook\\)\\'"  . "https://www.facebook.com/%s";)
     ("\\`\\(gh\\|github\\)\\'"    . "https://github.com/%s/";)
+    ("\\`\\(gl\\|gitlab\\)\\'"    . "https://www.gitlab.com/%s/";)
     ("\\`\\(in\\|instagram\\)\\'" . "https://www.instagram.com/%s/";)
     ("\\`\\(tw\\|twitter\\)\\'"   . "https://twitter.com/address@hidden";)
     )
@@ -212,8 +261,8 @@ See `ibtypes::social-reference' for format details.")
 (defib social-reference ()
   "Display the web page associated with a social hashtag or username reference 
at point.
 Reference format is:
-  [facebook|git|github|instagram|address@hidden<reference> or
-  [fb|gt|gh|in|address@hidden<reference>.
+  [facebook|git|github|gitlab|instagram|address@hidden<reference> or
+  [fb|gt|gh|gl|in|address@hidden<reference>.
 
 The first part of the label for a button of this type is the social
 service name.  The service name defaults to the value of
@@ -257,6 +306,8 @@ listed in `hibtypes-social-inhibit-modes'."
             (hact 'git-reference after-hash-str))
            ((string-match "\\`\\(gh\\|github\\)#" ref)
             (hact 'github-reference after-hash-str))
+           ((string-match "\\`\\(gl\\|gitlab\\)#" ref)
+            (hact 'gitlab-reference after-hash-str))
            (t (hact 'social-reference service ref-kind-str after-hash-str))))))
 
 ;; Don't make this a defact or its arguments may be improperly expanded as 
pathnames.
@@ -289,10 +340,11 @@ REFERENCE is a string of one of the following forms:
 or  /<project>.
 
 <ref-item> is one of these:
-  one of the words: branches, commits, issues, pulls, or tags; the associated 
items are listed;
+  one of the words: branches, commits, contributors, issues, people or staff,
+  pulls, status or tags; the associated items are listed;
 
-  one of the words: branch, commit, issue, pull or tag followed by a '/' and
-  item id; the item is shown;
+  one of the words: branch, commit, issue, pull or tag followed by a '/' or 
'=' and 
+  an item-id; the item is shown;
 
   an issue reference given by a positive integer, e.g. 92 or prefaced with 
GH-, e.g. GH-92;
   the issue is displayed;
@@ -314,7 +366,7 @@ PROJECT value is provided, it defaults to the value of
                 (url-to-format (assoc-default "github" 
hibtypes-social-hashtag-alist #'string-match))
                 (ref-type))
             (when url-to-format
-              (cond ((string-match 
"\\`\\(branch\\|commit\\|issue\\|pull\\|tag\\)/" reference)
+              (cond ((string-match 
"\\`\\(branch\\|commit\\|issue\\|pull\\|tag\\)[/=]" reference)
                      ;; [branch | commit | issue | pull | tag]/ref-item
                      nil)
                     ((string-match 
"\\`/?\\(\\([^/address@hidden)/\\)\\([^/address@hidden)\\'" reference)
@@ -331,25 +383,34 @@ PROJECT value is provided, it defaults to the value of
                      ;; /project
                      (setq project (or project (match-string-no-properties 1 
reference))
                            reference nil)))
+              (when (or (and project (string-match 
"\\`\\(members\\|people\\|staff\\)\\'" project))
+                        ;; Change <org-name>/[members|people|staff] to 
/orgs/<org-name>/people.
+                        (and reference (string-match 
"\\`\\(members\\|people\\|staff\\)\\'" reference)))
+                ;; Change <org-name>/project/[people|staff] to 
/orgs/<org-name>/people.
+                (setq project user
+                      user "orgs"
+                      reference "people"))
+              (when (equal reference "contributors")
+                ;; Change /user/project/contributors to 
/user/project/graphs/contributors.
+                (setq ref-type "graphs/"
+                      reference "contributors"))
               (unless (stringp user) (setq user hibtypes-github-default-user))
               (unless (stringp project) (setq project 
hibtypes-github-default-project))
               (when reference
-                (cond ((equal user "orgs")
-                       ;; A specific organization reference
-                       (setq ref-type reference
-                             reference ""))
-                      ((member reference '("branches" "commits" "issues" 
"pulls" "tags"))
-                       ;; All branches, commits, open issues, pull requests or 
commit tags reference
+                (cond ((member reference '("branches" "commits" "contributors" 
"issues" "people" "pulls" "tags"))
+                       ;; All branches, commits, contributors, open issues, 
people, pull requests or commit tags reference
                        (setq ref-type reference
                              reference ""))
-                      ((and (< (length reference) 7) (string-match 
"\\`\\([gG][hH]-\\)?[0-9]+\\'" reference))
-                       ;; Specific issue reference
-                       (setq ref-type "issues/"))
-                      ((string-match "\\`\\(commit\\|issue\\|pull\\)/" 
reference)
+                      ((and (< (length reference) 8) (string-match 
"\\`\\([gG][hH]-\\)?[0-9]+\\'" reference))
+                       ;; Issue ref-id reference
+                       (setq ref-type "issues/"
+                             reference (substring reference (match-end 1) 
(match-end 0))))
+                      ((string-match "\\`\\(commit\\|issue\\|pull\\)[/=]" 
reference)
                        ;; Specific reference preceded by keyword branch, 
commit,
                        ;; issue, or pull
-                       (setq ref-type (substring reference 0 (match-end 0))
-                             reference (substring reference (match-end 0))))
+                       (setq ref-type (substring reference 0 (match-end 1))
+                             reference (substring reference (match-end 0))
+                             ref-type (concat ref-type (if (string-equal 
ref-type "issue") "s/" "/"))))
                       ((string-match "\\`[0-9a-f]+\\'" reference)
                        ;; Commit reference
                        (setq ref-type "commit/"))
@@ -363,7 +424,8 @@ PROJECT value is provided, it defaults to the value of
                   (funcall hibtypes-social-display-function
                            (if reference
                                (format url-to-format user project ref-type 
reference)
-                             (format url-to-format user project "" "")))
+                             ;; Remove trailing /
+                             (substring (format url-to-format user project "" 
"") 0 -1)))
                 (cond ((and (null user) (null project))
                        (error "(github-reference): Set 
`hibtypes-github-default-user' and `hibtypes-github-default-project'"))
                       ((null user)
@@ -373,6 +435,169 @@ PROJECT value is provided, it defaults to the value of
             (unless url-to-format
               (error "(github-reference): Add an entry for github to 
`hibtypes-social-hashtag-alist'"))))))
 
+;;; Remote Gitlab commit references
+
+;; Don't make this a defact or its arguments may be improperly expanded as 
pathnames.
+(defun gitlab-reference (reference &optional user project)
+  "Display the Gitlab entity associated with REFERENCE and optional USER and 
PROJECT.
+REFERENCE is a string of one of the following forms:
+    <ref-item>
+    <user>/<project>/<ref-item>
+    <project>/<ref-item>
+    /<group>/<project>
+or  /<project-or-group> (where a group is a collection of projects).
+
+<ref-item> is one of these:
+  one of the words: activity, analytics, boards or kanban, branches, commits, 
contributors,
+  groups, issues or list, jobs, labels, merge_requests, milestones, pages, 
pipelines,
+  pipeline_charts, members or people or staff, projects, pulls, schedules, 
snippets,
+  status or tags; the associated items are listed;
+
+  one of the words: branch, commit(s), issue(s), milestone(s), pull(s), 
snippet(s) or
+  tag(s) followed by a '/' or '=' and an item-id; the item is shown;
+
+  an issue reference given by a positive integer, e.g. 92 or prefaced with 
GL-, e.g. GL-92;
+  the issue is displayed;
+
+  a commit reference given by a hex number, 55a1f0; the commit diff is 
displayed;
+
+  a branch or tag reference given by an alphanumeric name, e.g. hyper20; the
+  files in the branch are listed.
+
+USER defaults to the value of `hibtypes-gitlab-default-user'.
+If given, PROJECT overrides any project value in REFERENCE.  If no
+PROJECT value is provided, it defaults to the value of
+`hibtypes-gitlab-default-project'."
+  (cond ((or (null reference) (equal reference ""))
+        (error "(gitlab-reference): Gitlab reference must not be empty"))
+       ((equal reference "status")
+        (funcall hibtypes-social-display-function "https://status.gitlab.com";))
+       (t (let ((case-fold-search t)
+                (url-to-format (assoc-default "gitlab" 
hibtypes-social-hashtag-alist #'string-match))
+                (ref-type))
+            (when url-to-format
+              (cond ((string-match 
"\\`\\(branch\\|commits?\\|issues?\\milestones?\\|pulls?\\|snippets?\\|tags?\\)[/=]"
 reference)
+                     ;; Reference to a specific ref-item
+                     nil)
+                    ((string-match 
"\\`/?\\(\\([^/address@hidden)/\\)\\([^/address@hidden)\\'" reference)
+                     ;; /?user/project
+                     (setq user (or user (match-string-no-properties 2 
reference))
+                           project (or project (match-string-no-properties 3 
reference))
+                           reference nil))
+                    ((string-match 
"\\`/?\\(\\([^/address@hidden)/\\)?\\([^/address@hidden)/\\(address@hidden)\\'" 
reference)
+                     ;; /?[user/]project/ref-item
+                     (setq user (or user (match-string-no-properties 2 
reference))
+                           project (or project (match-string-no-properties 3 
reference))
+                           reference (match-string-no-properties 4 reference)))
+                    ((string-match "\\`/\\([^/address@hidden)\\'" reference)
+                     ;; /project
+                     (setq project (or project (match-string-no-properties 1 
reference))
+                           reference nil)))
+              (when (and (null (and user project)) (string-match 
"\\`\\(groups\\|projects\\)\\'" reference))
+                ;; List all available groups of projects or projects.
+                (setq user "explore"
+                      project (match-string-no-properties 1 reference)
+                      ref-type nil
+                      reference nil))
+              (unless (stringp user) (setq user hibtypes-gitlab-default-user))
+              (unless (stringp project) (setq project 
hibtypes-gitlab-default-project))
+              (when (equal project "pages")
+                ;; Project web pages use a reverse pages/<project> URL format
+                (setq project user
+                      user "pages"
+                      ref-type nil
+                      reference nil))
+              (when reference
+                (cond  ((string-match 
"\\`\\(analytics\\|cycle_analytics\\)\\'" reference)
+                       ;; Project analytics
+                       (setq ref-type "cycle_analytics"
+                             reference ""))
+                       ((string-match "\\`\\(boards\\|kanban\\)\\'" reference)
+                       ;; Kanban-type Issue Stage Boards
+                       (setq ref-type "boards"
+                             reference ""))
+                      ((equal reference "jobs")
+                       ;; Manual/automated project-related jobs that run
+                       (setq ref-type "-/jobs"
+                             reference ""))
+                      ((equal reference "list")
+                       ;; List all issues
+                       (setq ref-type "issues"
+                             reference ""))
+                      ((equal reference "contributors")
+                       (setq ref-type "graphs/master"
+                             reference ""))
+                      ((string-match "\\`\\(members\\|people\\|staff\\)\\'" 
reference)
+                       (setq ref-type "project_members"
+                             reference ""))
+                      ((equal reference "pipeline_charts")
+                       ;; Continuous Integration Pipeline Charts
+                       (setq ref-type "pipelines/charts"
+                             reference ""))
+                      ((equal reference "pulls")
+                       ;; Merge requests for the project
+                       (setq ref-type "merge_requests"
+                             reference ""))
+                      ((equal reference "schedules")
+                       ;; Schedules for CI Pipelines
+                       (setq ref-type "pipeline_schedules"
+                             reference ""))
+                      ((string-match "\\`\\(service\\|service_desk\\)\\'" 
reference)
+                       ;; Project help desk 
+                       (setq ref-type "issues/service_desk"
+                             reference ""))
+                      ((member reference '("activity" "branches" "commits" 
"issues" "labels"
+                                           "merge_requests" "milestones" 
"pages" "pipelines"
+                                           "snippets" "tags"))
+                       ;; All activity, branches, commits, cycle analytics, 
open issues, issue labels,
+                       ;; members, merge requests, milestones, web pages, pull 
requests, code snippets
+                       ;; or commit tags reference
+                       (setq ref-type reference
+                             reference ""))
+                      ((and (< (length reference) 8) (string-match 
"\\`\\([gG][lL]-\\)?[0-9]+\\'" reference))
+                       ;; Issue ref-id reference
+                       (setq ref-type "issues/"
+                             reference (substring reference (match-end 1) 
(match-end 0))))
+                      ((string-match "\\`label[/=]" reference)
+                       ;; Labeled category of issues
+                       (setq ref-type "issues?label_name%5B%5D="
+                             reference (substring reference (match-end 0))))
+                      ((string-match 
"\\`\\(commit\\|issues\\|milestones\\|pull\\|snippets\\|tags\\)[/=]" reference)
+                       ;; Ref-id preceded by a keyword
+                       (setq ref-type (concat (substring reference 0 
(match-end 1)) "/")
+                             reference (substring reference (match-end 0))))
+                      ((string-match 
"\\`\\(issue\\|milestone\\|snippet\\|tag\\)[/=]" reference)
+                       ;; Ref-id preceded by a singular keyword that must be 
converted to plural
+                       (setq ref-type (concat (substring reference 0 
(match-end 1)) "s/")
+                             reference (substring reference (match-end 0))))
+                      ((string-match "\\`\\(commit\\|pull\\)s[/=]" reference)
+                       ;; Ref-id preceded by a plural keyword that must be 
converted to singular
+                       (setq ref-type (concat (substring reference 0 
(match-end 1)) "/")
+                             reference (substring reference (1+ (match-end 
0)))))
+                      ((string-match "\\`[0-9a-f]+\\'" reference)
+                       ;; Commit reference
+                       (setq ref-type "commit/"))
+                      (t
+                       ;; Specific branch or commit tag reference
+                       (setq ref-type "tree/")
+                       (when (string-match "\\`\\(branch\\|tag\\)[/=]" 
reference)
+                         ;; If preceded by optional keyword, remove that from 
the reference.
+                         (setq reference (substring reference (match-end 
0)))))))
+              (if (and (stringp user) (stringp project))
+                  (funcall hibtypes-social-display-function
+                           (setq a (if reference
+                               (format url-to-format user project ref-type 
reference)
+                               ;; Remove trailing /
+                               (substring (format url-to-format user project 
"" "") 0 -1))))
+                (cond ((and (null user) (null project))
+                       (error "(gitlab-reference): Set 
`hibtypes-gitlab-default-user' and `hibtypes-gitlab-default-project'"))
+                      ((null user)
+                       (error "(gitlab-reference): Set 
`hibtypes-gitlab-default-user'"))
+                      (t
+                       (error "(gitlab-reference): Set 
`hibtypes-gitlab-default-project'")))))
+            (unless url-to-format
+              (error "(gitlab-reference): Add an entry for gitlab to 
`hibtypes-social-hashtag-alist'"))))))
+
 ;;; Local git repository commit references
 
 (defib git-commit-reference ()
diff --git a/hmouse-drv.el b/hmouse-drv.el
index dd23391..8f079e8 100644
--- a/hmouse-drv.el
+++ b/hmouse-drv.el
@@ -442,38 +442,63 @@ Leave TO-WINDOW as the selected window."
           (aw-select mode-line-text))))
   (hkey-swap-buffers (selected-window) to-window))
 
+;; Once the "display-until.el" library is added to Emacs, hkey-throw can be 
simplified to the following:
+;;
+;; (defun hkey-throw (release-window)
+;;   "Throw either a displayable item at point or the current buffer for 
display in RELEASE-WINDOW.
+;; The selected window does not change."
+;;   (interactive
+;;    (list (let ((mode-line-text (concat " Ace - " (nth 2 (assq ?t 
aw-dispatch-alist)))))
+;;            (aw-select mode-line-text))))
+;;   (if (cadr (assq major-mode hmouse-drag-item-mode-forms))
+;;       ;; Throw the item at point
+;;       (let ((action-key-depress-window (selected-window))
+;;             (action-key-release-window release-window)
+;;             (action-key-depress-args))
+;;         (hmouse-item-to-window)
+;;         (select-window action-key-depress-window)
+;;         (display-window-until release-window))
+;;     ;; Throw the current buffer
+;;     (display-window-until release-window (current-buffer))))
+
 ;;;###autoload
 (defun hkey-throw (release-window)
-  "Throw either a displayable item at point or the current buffer to 
RELEASE-WINDOW.
+  "Throw either a displayable item at point or the current buffer for display 
in RELEASE-WINDOW.
 The selected window does not change."
   (interactive
    (list (let ((mode-line-text (concat " Ace - " (nth 2 (assq ?t 
aw-dispatch-alist)))))
           (aw-select mode-line-text))))
-  (let ((depress-frame (selected-frame)))
+  (let ((depress-frame (selected-frame))
+       (display-delay (if (boundp 'temp-display-delay)
+                          temp-display-delay
+                        0.5)))
     (if (cadr (assq major-mode hmouse-drag-item-mode-forms))
-       ;; On an item to throw
+       ;; Throw the item at point
        (let ((action-key-depress-window (selected-window))
              (action-key-release-window release-window)
              (action-key-depress-args))
          (hypb:save-selected-window-and-input-focus
           (hmouse-item-to-window)
           (unless (eq depress-frame (window-frame release-window))
-            (message "Buffer or item thrown to frame under this one")
+            ;; Force redisplay or item buffer won't be displayed here.
+            (redisplay t)
             ;; Show the frame thrown to before it is covered when
             ;; input-focus is returned to the depress-frame.
-            ;;   (raise-frame (window-frame release-window))
-            ;;   (sit-for 1)
+            (raise-frame (window-frame release-window))
+            ;; Don't use sit-for here because it can be interrupted early.
+            (sleep-for display-delay)
             )))
       ;; Throw the current buffer
       (set-window-buffer release-window (current-buffer))
       (unless (eq depress-frame (window-frame release-window))
-       (message "Buffer or item thrown to frame under this one")
+       ;; Force redisplay or item buffer won't be displayed here.
+       (redisplay t)
        ;; Show the frame thrown to before it is covered when
        ;; input-focus is returned to the depress-frame.
-       ;;   (raise-frame (window-frame release-window))
-       ;;   (sit-for 1)
-       ;;   (select-frame-set-input-focus depress-frame)
-       ))))
+       (raise-frame (window-frame release-window))
+       ;; Don't use sit-for here because it can be interrupted early.
+       (sleep-for display-delay)
+       (select-frame-set-input-focus depress-frame)))))
 
 ;;;###autoload
 (defun hkey-buffer-to (from-window to-window)
@@ -881,7 +906,7 @@ Only works when running under a window system, not from a 
dumb terminal."
        (assist-key-depress)
        (when (called-interactively-p 'interactive)
          (message
-          "Assist Key depressed; go to release point and hit {%s %s}."
+          "Assist Key depressed; go to release point and press {%s %s}."
           (substitute-command-keys "\\[universal-argument]")
           (substitute-command-keys "\\[hkey-operate]"))))
     (if action-key-depressed-flag
@@ -890,7 +915,7 @@ Only works when running under a window system, not from a 
dumb terminal."
                 (message "Action Key released.")))
       (action-key-depress)
       (when (called-interactively-p 'interactive)
-       (message "Action Key depressed; go to release point and hit {%s}."
+       (message "Action Key depressed; go to release point and press {%s}."
                 (substitute-command-keys "\\[hkey-operate]"))))))
 
 (defun hkey-summarize (&optional current-window)
diff --git a/hmouse-key.el b/hmouse-key.el
index 81e0fd8..9408eb8 100644
--- a/hmouse-key.el
+++ b/hmouse-key.el
@@ -26,7 +26,7 @@
 ;;; Other required Elisp libraries
 ;;; ************************************************************************
 
-(eval-and-compile (mapc #'require '(hsettings hmouse-drv hmouse-sh)))
+(eval-when-compile (mapc #'require '(hsettings hmouse-drv hmouse-sh)))
 
 ;;; ************************************************************************
 ;;; Public functions
diff --git a/hpath.el b/hpath.el
index d26678d..47d632e 100644
--- a/hpath.el
+++ b/hpath.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:     1-Nov-91 at 00:44:23
 ;;
-;; Copyright (C) 1991-2016  Free Software Foundation, Inc.
+;; Copyright (C) 1991-2019  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -372,6 +372,15 @@ directories.  The first one in which PATH is found is 
used."
          (or (file-exists-p rtn) (setq rtn nil)))
        (or rtn path)))))
 
+(defun hpath:tramp-file-name-regexp ()
+  "Returns a modified tramp-file-name-regexp used for checking if
+point is at the beginning of a remote file name.  Removes match
+to bol and remove match to empty string if present."
+  (let ((tramp-regexp (car (if (fboundp 'tramp-file-name-structure)
+                              (tramp-file-name-structure)
+                            tramp-file-name-structure))))
+    (substring-no-properties (replace-regexp-in-string "\\\\'" "" 
tramp-regexp) 1)))
+
 (defun hpath:remote-at-p ()
   "Returns a remote pathname that point is within or nil.
 See the `(emacs)Remote Files' info documentation for pathname format details.
@@ -385,10 +394,7 @@ Always returns nil if (hpath:remote-available-p) returns 
nil."
              (skip-chars-backward "^[ \t\n\r\f\"`'|\(\{<")
              (cond
               ((and (eq remote-package 'tramp)
-                    ;; Remove match to bol in this regexp before testing.
-                    (looking-at (substring-no-properties (car (if (fboundp 
'tramp-file-name-structure)
-                                                                  
(tramp-file-name-structure)
-                                                                
tramp-file-name-structure)) 1)))
+                    (looking-at (hpath:tramp-file-name-regexp)))
                (match-string-no-properties 0))
               ((looking-at hpath:url-regexp)
                (if (string-equal (match-string-no-properties 
hpath:protocol-grpn) "ftp")
@@ -660,7 +666,7 @@ program)."
                            (hpath:command-string display-executables
                                                  filename))
                      nil)
-                    ((hypb:functionp display-executables)
+                    ((functionp display-executables)
                      (funcall display-executables filename)
                      t)
                     ((and (listp display-executables) display-executables)
diff --git a/hsettings.el b/hsettings.el
index 1962fcb..7156336 100644
--- a/hsettings.el
+++ b/hsettings.el
@@ -123,6 +123,19 @@ down a windowful."
   (hyperbole-menubar-menu)
   (hyperbole-minibuffer-menu))
 
+(defcustom hyperbole-default-web-search-term-max-lines 2
+  "Provide a default search term using the selected text if the
+active region contains less than or equal to this number of
+lines"
+  :type 'integer
+  :group 'hyperbole-commands)
+
+(defun hyperbole-default-web-search-term ()
+  "Fetch a default search term if region is active and not to big"
+  (and (region-active-p)
+       (<= (count-lines (region-beginning) (region-end)) 
hyperbole-default-web-search-term-max-lines)
+       (buffer-substring (region-beginning) (region-end))))
+
 (defun hyperbole-read-web-search-arguments (&optional service-name search-term)
   "Read from the keyboard a list of (web-search-service-string 
search-term-string) if not given as arguments."
   (let ((completion-ignore-case t))
@@ -130,7 +143,8 @@ down a windowful."
       (setq service-name (completing-read "Search service: " 
hyperbole-web-search-alist
                                          nil t)))
     (while (or (not (stringp search-term)) (equal search-term ""))
-     (setq search-term (read-string (format "Search %s for: " service-name))))
+      (setq search-term (read-string (format "Search %s for: " service-name)
+                                    (hyperbole-default-web-search-term))))
     (list service-name search-term)))
 
 (defun hyperbole-web-search (&optional service-name search-term)
@@ -149,6 +163,24 @@ package to display search results."
                              search-term)))
       (user-error "(Hyperbole): Invalid web search service `%s'" 
service-name))))
 
+(defcustom inhibit-hyperbole-messaging t
+  "*Determines whether Hyperbole supports explicit buttons in mail and news 
buffers.
+The default of t means disable such support (work remains to
+modernize these features).  When t, Hyperbole will not alter
+messaging mode hooks nor overload functions from these packages,
+preventing potential incompatibilities.
+
+If you want to use Hyperbole buttons in mail and news buffers, set
+this variable to nil by adding (hyperbole-toggle-messaging 1)
+to your personal Emacs initialization file, prior to loading
+Hyperbole, and then restart Emacs."
+  :type 'boolean
+  :initialize 'custom-initialize-set
+  :set (lambda (symbol value) 
+        ;; Invert value to produce ARG for hyperbole-toggle-messaging.
+        (hyperbole-toggle-messaging (if value 0 1)))
+  :group 'hyperbole-buttons)
+
 (defcustom hyperbole-web-search-browser-function browse-url-browser-function
   "*Function of one url argument called by any Hyperbole Find/Web search."
   :type 'boolean
diff --git a/hsys-org.el b/hsys-org.el
index f9604db..05ae899 100644
--- a/hsys-org.el
+++ b/hsys-org.el
@@ -4,16 +4,16 @@
 ;;
 ;; Orig-Date:     2-Jul-16 at 14:54:14
 ;;
-;; Copyright (C) 2016  Free Software Foundation, Inc.
+;; Copyright (C) 2016,2018  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
 
 ;;; Commentary:
 ;;
-;;   This defines a context-sensitive implicit button type, org-mode, triggered
-;;   when the major mode is org-mode and point is anywhere other than
-;;   the end of a line.
+;;   This defines a context-sensitive implicit button type, org-mode,
+;;   triggered when the major mode is org-mode or is derived from org
+;;   mode and point is anywhere other than at the end of a line.
 ;;   When:
 ;;     on an Org mode link - displays the link referent
 ;;     on an Org mode heading - cycles through the available display
@@ -28,6 +28,20 @@
 (require 'hbut)
 (require 'org)
 
+(defun hsys-org-cycle ()
+  "Call org-cycle faking this- and last-command in order to cycle
+through all states"
+  (setq last-command 'org-cycle
+       this-command 'org-cycle)
+  (org-cycle))
+
+(defun hsys-org-global-cycle ()
+  "Call org-global-cycle faking this- and last-command in order
+to cycle through all states"
+  (setq last-command 'org-cycle
+       this-command 'org-cycle)
+  (org-global-cycle nil))
+
 ;;; ************************************************************************
 ;;; Public Button Types
 ;;; ************************************************************************
@@ -37,22 +51,22 @@
 The variable, `browse-url-browser-function', customizes the url browser that
 is used for urls.  Valid values of this variable include 
`browse-url-default-browser'
 and `browse-url-generic'."
-  (when (eq major-mode 'org-mode)
+  (when (derived-mode-p 'org-mode)
     (cond ((org-link-at-p)
           (hact 'org-link nil))
          ((org-at-heading-p)
-          (hact 'org-cycle nil))
+          (hact 'hsys-org-cycle))
          (t (hact 'org-meta-return)))))
 
 (defun org-mode:help (&optional _but)
   "If on an Org mode heading, cycles through views of the whole buffer outline.
 If on an Org mode link, displays standard Hyperbole help."
-  (when (eq major-mode 'org-mode)
+  (when (derived-mode-p 'org-mode)
     (cond ((org-link-at-p)
           (hkey-help current-prefix-arg)
           t)
          ((org-at-heading-p)
-          (org-global-cycle nil)
+          (hact 'hsys-org-global-cycle)
           t))))
 
 (defact org-link (link)
diff --git a/hui-jmenu.el b/hui-jmenu.el
index 981ab85..5ff0543 100644
--- a/hui-jmenu.el
+++ b/hui-jmenu.el
@@ -141,13 +141,12 @@
 ;;; ************************************************************************
 
 (defun hui-menu-buffer-mode-name (buffer)
-  (let ((mname (cdr (assq 'mode-name (buffer-local-variables buffer)))))
+  (let ((mname (buffer-local-value 'mode-name buffer)))
     (if mname
        ;; Next line needed to ensure mode name is always formatted as
        ;; a string.
        (format-mode-line mname)
-      (capitalize (symbol-name
-                  (cdr (assq 'major-mode (buffer-local-variables buffer))))))))
+      (capitalize (symbol-name (buffer-local-value 'major-mode buffer))))))
 
 (defun hui-menu-frame-name (frame)
   "Return the name of FRAME."
diff --git a/hui-mini.el b/hui-mini.el
index e582117..8b76252 100644
--- a/hui-mini.el
+++ b/hui-mini.el
@@ -17,6 +17,7 @@
 ;;; ************************************************************************
 
 (require 'hypb)
+(require 'hsettings)                    ;For hyperbole-web-search-alist
 (require 'browse-url)
 
 ;;; ************************************************************************
@@ -366,7 +367,7 @@ constructs.  If not given, the top-level Hyperbole menu is 
used."
 ;;; ************************************************************************
 
 ;; Hyperbole menu mode is suitable only for specially formatted data.
-(put 'hui:menu-mode 'mode-class 'special)
+(put 'hui:menu-mode 'mode-class 'special) ;FIXME: Never used as a major mode!?
 
 (defvar hui:menu-mode-map nil
   "Keymap containing Hyperbole minibuffer menu commands.")
diff --git a/hui-mouse.el b/hui-mouse.el
index 4247a6c..2325c3c 100644
--- a/hui-mouse.el
+++ b/hui-mouse.el
@@ -244,7 +244,8 @@ Its default value is #'smart-scroll-down."
     ;; Python files - ensure this comes before Imenu for more advanced
     ;; definition lookups
     ((and (or (and (eq major-mode 'python-mode) buffer-file-name)
-             (string-match "^Pydoc:\\|\\*?Python" (buffer-name)))
+             (let ((case-fold-search))
+               (string-match "\\`\\(Pydoc:\\|\\*?Python\\)" (buffer-name))))
          (smart-python-at-tag-p)) .
          ((smart-python) . (smart-python nil 'next-tag)))
     ;;
diff --git a/hui-select.el b/hui-select.el
index 596bb25..b4bd52b 100644
--- a/hui-select.el
+++ b/hui-select.el
@@ -310,6 +310,19 @@ Also, add language-specific syntax setups to aid in thing 
selection."
                          (setq sentence-end "\\([^ 
\t\n\r>]<\\|>\\(<[^>]*>\\)*\\|[.?!][]\"')}]*\\($\\| $\\|\t\\|  \\)\\)[ \t\n]*")
                          (define-key web-mode-map "\C-c." 
'hui-select-goto-matching-tag))))
 
+(defun hui-select-get-region-boundaries ()
+  "Return the (START . END) boundaries of region for `hui-select-thing'."
+  (or (hui-select-boundaries (point))
+      (when (eq hui-select-previous 'punctuation)
+       (hui-select-word (point)))))
+
+;;;###autoload
+(defun hui-select-get-region ()
+  "Return the region that `hui-select-thing' would select."
+  (let ((region-bounds (hui-select-get-region-boundaries)))
+    (when region-bounds
+      (buffer-substring-no-properties (car region-bounds) (cdr 
region-bounds)))))
+
 ;;;###autoload
 (defun hui-select-thing ()
   "Select a region based on the syntax of the thing at point.
@@ -325,7 +338,7 @@ interactively, the type of selection is displayed in the 
minibuffer."
          ;; Reset selection based on the syntax of character at point.
          (hui-select-reset)
          nil)))
-  (let ((region (hui-select-boundaries (point))))
+  (let ((region (hui-select-get-region-boundaries)))
     (unless region
       (when (eq hui-select-previous 'punctuation)
        (setq region (hui-select-word (point)))))
diff --git a/hui-treemacs.el b/hui-treemacs.el
index db1aee6..7994a7a 100644
--- a/hui-treemacs.el
+++ b/hui-treemacs.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:    19-Nov-17
 ;;
-;; Copyright (C) 2017  Free Software Foundation, Inc.
+;; Copyright (C) 2017-2018  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -18,9 +18,9 @@
 
 (eval-and-compile (require 'treemacs nil t))
 
-(eval-when (load)
-  (unless (>= (string-to-number treemacs-version) 1.14)
-    (error "(hui-treemacs): Hyperbole requires Treemacs package version 1.14 
or greater")))
+(progn ()
+  (unless (>= (string-to-number treemacs-version) 2.0)
+    (error "(hui-treemacs): Hyperbole requires Treemacs package version 2.0 or 
greater")))
 
 ;;; ************************************************************************
 ;;; smart-treemacs functions
@@ -51,10 +51,10 @@ If key is pressed:
   (interactive)
   (cond ((first-line-p)
         (if (eolp)
-            (treemacs-toggle)
+            (bury-buffer)
           (hact 'link-to-directory default-directory)))
        ((and (last-line-p) (eolp))
-        (treemacs-toggle))
+        (bury-buffer))
        ((eolp)
         (funcall (if assist-flag assist-key-eol-function 
action-key-eol-function)))
        (t (let ((over-icon (and (treemacs-current-button)
@@ -65,7 +65,7 @@ If key is pressed:
                     (hact 'link-to-buffer-tmp (seq-elt result 0) (seq-elt 
result 1))
                   ;; (bufferp result)
                   (hact 'link-to-buffer-tmp result))
-              (treemacs-push-button current-prefix-arg))))))
+              (treemacs-toggle-node current-prefix-arg))))))
 
 ;;;###autoload
 (defun smart-treemacs-modeline ()
@@ -86,7 +86,7 @@ Suitable for use as a value of 
`action-key-modeline-buffer-id-function'."
              (treemacs-is-treemacs-window? action-key-depress-window)
            (string-match " Treemacs " (format-mode-line mode-line-format)))
          ;; Quit/hide treemacs.
-         (treemacs-toggle))
+         (bury-buffer))
         ;;
         ;; Treemacs is visible and displaying the same dir as
         ;; the default dir of the clicked on modeline.
@@ -95,7 +95,7 @@ Suitable for use as a value of 
`action-key-modeline-buffer-id-function'."
                             (with-current-buffer (treemacs-buffer-exists?)
                               default-directory)))
          ;; Quit/hide treemacs.
-         (treemacs-toggle))
+         (bury-buffer))
         ;;
         ;; Otherwise, invoke treemacs on the default dir of the clicked on 
modeline.
         (t (treemacs))))
diff --git a/hui-window.el b/hui-window.el
index 8858af0..b9a3e7d 100644
--- a/hui-window.el
+++ b/hui-window.el
@@ -250,7 +250,7 @@ drag release window.")
 (defun hmouse-at-item-p ()
   "Return t if point is on an item draggable by Hyperbole, otherwise nil."
   (let* ((buf (and (window-live-p action-key-depress-window) (window-buffer 
action-key-depress-window)))
-        (mode (and buf (cdr (assq 'major-mode (buffer-local-variables buf))))))
+        (mode (and buf (buffer-local-value 'major-mode buf))))
     (and buf (with-current-buffer buf
               ;; Point must be on an item, not after one
               (not (looking-at "\\s-*$")))
diff --git a/hui.el b/hui.el
index d32ea3d..a0a9228 100644
--- a/hui.el
+++ b/hui.el
@@ -823,7 +823,7 @@ Optional NO-SORT means display in decreasing priority order 
(natural order)."
       (let ((file (buffer-file-name but-buf)))
        (if file
            (file-name-directory (hpath:symlink-referent file))
-         (cdr (assq 'default-directory (buffer-local-variables but-buf)))))
+         (buffer-local-value 'default-directory but-buf)))
     (hypb:error "(hui:key-dir): '%s' is not a valid buffer.")))
 
 (defun hui:key-src (but-buf)
diff --git a/hypb.el b/hypb.el
index 8701d85..febe94b 100644
--- a/hypb.el
+++ b/hypb.el
@@ -4,7 +4,7 @@
 ;;
 ;; Orig-Date:     6-Oct-91 at 03:42:38
 ;;
-;; Copyright (C) 1991-2017  Free Software Foundation, Inc.
+;; Copyright (C) 1991-2019  Free Software Foundation, Inc.
 ;; See the "HY-COPY" file for license information.
 ;;
 ;; This file is part of GNU Hyperbole.
@@ -242,17 +242,6 @@ FILE is temporarily read into a buffer to determine the 
major mode if necessary.
                   nil t)
        nil t)))
 
-;;;###autoload
-(defun hypb:functionp (obj)
-"Returns t if OBJ is a function, nil otherwise."
-  (cond
-    ((symbolp obj) (fboundp obj))
-    ((subrp obj))
-    ((hypb:emacs-byte-code-p obj))
-    ((consp obj)
-     (if (eq (car obj) 'lambda) (listp (car (cdr obj)))))
-    (t nil)))
-
 (defun hypb:function-copy (func-symbol)
   "Copies FUNC-SYMBOL's body for overloading.  Returns copy of body."
   (if (fboundp func-symbol)
@@ -512,7 +501,7 @@ NEWTEXT may instead be a function of one argument (the 
string to replace in)
 that returns a replacement string."
   (unless (stringp str)
     (error "(hypb:replace-match-string): 2nd arg must be a string: %s" str))
-  (unless (or (stringp newtext) (hypb:functionp newtext))
+  (unless (or (stringp newtext) (functionp newtext))
     (error "(hypb:replace-match-string): 3rd arg must be a string or function: 
%s"
           newtext))
   (let ((rtn-str "")
@@ -526,7 +515,7 @@ that returns a replacement string."
            (concat
              rtn-str
              (substring str prev-start match)
-             (cond ((hypb:functionp newtext)
+             (cond ((functionp newtext)
                     (hypb:replace-match-string
                      regexp (substring str match start)
                      (funcall newtext str) literal))
diff --git a/hyperbole.el b/hyperbole.el
index 9931090..9ec3564 100644
--- a/hyperbole.el
+++ b/hyperbole.el
@@ -177,24 +177,6 @@ context (wherever point is).  {C-u \\[hkey-help]} shows 
what the Assist Key will
   :type 'boolean
   :group 'hyperbole-keys)
 
-(defcustom inhibit-hyperbole-messaging t
-  "*Determines whether Hyperbole supports explicit buttons in mail and news 
buffers.
-The default of t means disable such support (work remains to
-modernize these features).  When t, Hyperbole will not alter
-messaging mode hooks nor overload functions from these packages,
-preventing potential incompatibilities.
-
-If you want to use Hyperbole buttons in mail and news buffers, set
-this variable to nil by adding (hyperbole-toggle-messaging t)
-to your personal Emacs initialization file, prior to loading
-Hyperbole, and then restart Emacs."
-  :type 'boolean
-  :initialize (lambda (symbol value) (set symbol value))
-  :set (lambda (symbol value) 
-        (set symbol (not value))
-        (hyperbole-toggle-messaging nil))
-  :group 'hyperbole-buttons)
-
 ;;; ************************************************************************
 ;;; Public key bindings
 ;;; ************************************************************************
@@ -362,7 +344,8 @@ frame, those functions by default still return the prior 
frame."
            (if (consp frame-x-dot-y) (setcar frame-x-dot-y (selected-frame)))
            frame-x-dot-y)))
 
-(require 'hmouse-key)
+;; hmouse-drv will load hui-mouse and hmouse-key
+(mapc #'require '(hsettings hmouse-drv hmouse-sh))
 
 ;;; ************************************************************************
 ;;; You shouldn't need to modify anything below here.
@@ -661,8 +644,6 @@ If FLAG is nil then text is shown, while if FLAG is t the 
text is hidden."
 ;;; Load Site-specific Configurations and Initialize Hyperbole Package
 ;;; ************************************************************************
 
-(require 'hsettings)
-
 (defun hyperb:init ()
   "Standard configuration routine for Hyperbole."
   (interactive)
diff --git a/hyrolo.el b/hyrolo.el
index b5fbb92..22d411a 100644
--- a/hyrolo.el
+++ b/hyrolo.el
@@ -694,7 +694,7 @@ If ARG is zero, move to the beginning of the current line."
   (if (null arg) (setq arg 1))
   (forward-visible-line arg))
 
-;; Derived from `sort-lines' in "sort.el" since through Emacs 25.0
+;; Derived from `sort-lines' in "sort.el" since through at least Emacs 25.0
 ;; invisible lines are not grouped with the prior visible line, making
 ;; rolo entry (or any record) sorts fail.  This next function fixes that.
 (defun hyrolo-sort-lines (reverse beg end)
diff --git a/kotl/kexport.el b/kotl/kexport.el
index 1e9dc09..cea41c6 100644
--- a/kotl/kexport.el
+++ b/kotl/kexport.el
@@ -88,10 +88,10 @@
    ;; make klinks into hyperlinks
    (cons (concat "&lt;address@hidden" kexport:kcell-reference-regexp
                 "[^&>]*&gt;")
-        "<A HREF=\"#\\1\">\\0</A>")
+        "<A HREF=\"#k\\1\">\\0</A>")
    (cons (format "&lt;address@hidden(%s\\)[^=&>]*&gt;"
                 kexport:kcell-partial-reference-regexp)
-        "<A HREF=\"#\\1\">\\0</A>")
+        "<A HREF=\"#k\\1\">\\0</A>")
    (cons (format "&lt;\\s-*\\([^ \t\n\r,<>]+\\)\\s-*,\\s-*%s[^=&>]*&gt;"
                 kexport:kcell-reference-regexp)
         'kexport:html-file-klink)
@@ -170,7 +170,7 @@ STILL TODO:
                                 title)))
 
     (princ "<HTML><HEAD>\n\n")
-    (princ "<A ID=\"top\"></A><A ID=\"0\"></A>\n")
+    (princ "<A ID=\"top\"></A><A ID=\"k0\"></A>\n")
     (princ (format "<TITLE>%s</TITLE>\n" title))
     (if kexport:html-description
        (princ (format "<META ID=\"description\" CONTENT=\"%s\">\n"
@@ -196,8 +196,8 @@ STILL TODO:
           (setq i (1- i)))
         (princ "<TABLE><TR>\n")
         (setq label (kcell-view:label))
-        (princ (format "<A ID=\"%s\"></A>" label))
-        (princ (format "<A ID=\"%s\"></A>\n" (kcell-view:idstamp)))
+        (princ (format "<A ID=\"k%s\"></A>" label))
+        (princ (format "<A ID=\"k%s\"></A>\n" (kcell-view:idstamp)))
         (princ "<TD WIDTH=2% VALIGN=top><PRE>\n")
         (princ (format
                 "<FONT %s>%s%s</FONT></PRE></TD>\n"
@@ -236,8 +236,8 @@ Works exclusively within a call to 
`hypb:replace-match-string'."
                             (match-end 1))))
     (if (equal filename (file-name-nondirectory
                         kexport:input-filename))
-       "<A HREF=\"#\\2\">\\0</A>"
-      (format "<A HREF=\"file://%s#\\2\">\\0</A>"
+       "<A HREF=\"#k\\2\">\\0</A>"
+      (format "<A HREF=\"file://%s#k\\2\">\\0</A>"
              (expand-file-name filename
                                (if kexport:input-filename
                                    (file-name-directory
diff --git a/kotl/kfill.el b/kotl/kfill.el
index f26ece6..d1be8ea 100644
--- a/kotl/kfill.el
+++ b/kotl/kfill.el
@@ -95,7 +95,7 @@ number of lines that could not be moved, otherwise 0."
     (forward-visible-line n)
     (if (< n 0)
        nil
-      (skip-chars-forward "[\n\r]"))
+      (skip-chars-forward "\n\r"))
 ;    (- (abs n) (count-matches "\n" opoint (point)))
     0))
 
@@ -227,6 +227,7 @@ fill prefix at the beginning of each line."
          (fill-region-as-paragraph from (point) justify-flag)))))
 
 (defun kfill:funcall (function &rest args)
+  "Call the original FUNCTION with rest of ARGS that kfill overloaded."
   (apply (cdr (assq function kfill:function-table)) args))
 
 (defun kfill:hanging-list (paragraph)
diff --git a/kotl/kotl-mode.el b/kotl/kotl-mode.el
index eff51b8..503b163 100644
--- a/kotl/kotl-mode.el
+++ b/kotl/kotl-mode.el
@@ -1967,7 +1967,7 @@ If key is pressed:
      otherwise hide it;
  (3) between cells or within the read-only indentation region to the left of
      a cell, then move point to prior location and begin creation of a
-     klink to some other outline cell; hit the Action Key twice to select the
+     klink to some other outline cell; press the Action Key twice to select the
      link referent cell;
  (4) anywhere else, invoke `action-key-eol-function', typically to scroll up
      a windowful."
@@ -2002,7 +2002,7 @@ If assist-key is pressed:
      each cell in tree beginning at point;
  (3) between cells or within the read-only indentation region to the left of
      a cell, then move point to prior location and prompt to move one tree to
-     a new location in the outline; hit the Action Key twice to select the
+     a new location in the outline; press the Action Key twice to select the
      tree to move and where to move it;
  (4) anywhere else, invoke `assist-key-eol-function', typically to scroll down
      a windowful."
diff --git a/man/hyperbole.pdf b/man/hyperbole.pdf
index 314f65f..ac66dff 100644
Binary files a/man/hyperbole.pdf and b/man/hyperbole.pdf differ
diff --git a/man/hyperbole.texi b/man/hyperbole.texi
index c699a03..4a6aa37 100644
--- a/man/hyperbole.texi
+++ b/man/hyperbole.texi
@@ -1517,7 +1517,7 @@ windows, instead use the @bkbd{M-o t 
<id-of-window-to-display-item-in>} key sequ
 @c normally under Hyperbole.
 
 @c The code for Smart Key modifiers can be found in
address@hidden @address@hidden@{hyperb:address@hidden/hmouse-mod.el}.
address@hidden @address@hidden:address@hidden/hmouse-mod.el}.
 
 
 @node Buttons, Menus, Smart Keys, Top
@@ -7882,7 +7882,7 @@ When in a Treemacs file browser buffer:
      (3) at the end of an entry line: invoke @code{action-key-eol-function},
          typically to scroll up proportionally, if an Action Key press; invoke
          @code{assist-key-eol-function}, typically to scroll down 
proportionally,
-         if an Asisst Key press;
+         if an Assist Key press;
      (4) on the first line of the buffer (other than the end of line),
          dired is run on the current directory of this Treemacs;
      (5) at the end of the first or last line of the buffer,
diff --git a/man/im/C-hh.png b/man/im/C-hh.png
index c6e5bb3..10dde2e 100644
Binary files a/man/im/C-hh.png and b/man/im/C-hh.png differ



reply via email to

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