From 42aa4786a713d1aaca165540027d54f91b78b754 Mon Sep 17 00:00:00 2001 From: "LaFreniere, Joseph" Date: Fri, 2 Aug 2019 23:16:19 -0500 Subject: gnu: Add emacs-hyperbole. * gnu/packages/emacs-xyz.scm (emacs-hyperbole): Add at 7.0.3 --- gnu/packages/emacs-xyz.scm | 68 +++++++++++++++++ .../patches/emacs-hyperbole-do-not-check-dir.patch | 24 ++++++ .../patches/emacs-hyperbole-domainname.patch | 29 ++++++++ .../patches/emacs-hyperbole-toggle-messaging.patch | 86 ++++++++++++++++++++++ 4 files changed, 207 insertions(+) create mode 100644 gnu/packages/patches/emacs-hyperbole-do-not-check-dir.patch create mode 100644 gnu/packages/patches/emacs-hyperbole-domainname.patch create mode 100644 gnu/packages/patches/emacs-hyperbole-toggle-messaging.patch diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c472958886..bd312c2f87 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -243,6 +243,74 @@ using geiser.") (license license:bsd-3) (home-page "https://github.com/xiaohanyu/ac-geiser")))) +(define-public emacs-hyperbole + (package + (name "emacs-hyperbole") + (version "7.0.3") + (source (origin + (method url-fetch) + (uri (string-append + "http://ftpmirror.gnu.org/hyperbole/" + "hyperbole-" version ".tar.gz")) + (sha256 + (base32 + "0znsjhm0lmzpmkgfni4qzx4l6dp604bmrzp3mwxxax2v96wpwmcx")) + (patches + (search-patches + "emacs-hyperbole-do-not-check-dir.patch" + "emacs-hyperbole-domainname.patch" + "emacs-hyperbole-toggle-messaging.patch")))) + (build-system emacs-build-system) + (arguments + `(#:include '("DEMO" + "DEMO-ROLO.otl" + "HY-ABOUT" + "\\.el$" + "\\.info$" + "\\.kotl$") + #:phases + (modify-phases %standard-phases + (add-before 'install 'make-info + (lambda _ + (invoke "make" "info")))))) + (propagated-inputs `(("inetutils" ,inetutils))) + (home-page "https://www.gnu.org/software/hyperbole/") + (synopsis "The Everyday Hypertextual Information Manager") + (description + "GNU Hyperbole, or just Hyperbole, is an easy-to-use, yet powerful and +programmable hypertextual information management system implemented as a GNU +Emacs package. It offers rapid views and interlinking of all kinds of textual +information, utilizing Emacs for editing. It can dramatically increase your +productivity and greatly reduce the number of keyboard/mouse keys you'll need +to work efficiently. Hyperbole lets you: + +@itemize +@item Quickly create hyperlink buttons either from the keyboard or by dragging +between a source and destination window with a mouse button depressed. Later, +activate buttons by pressing/clicking on them or by giving the name of the +button. +@item Activate many kinds of \"implicit buttons\" recognized by context within +text buffers, e.g. URLs, grep output lines, and git commits. A single key or +mouse button automatically does the right thing in dozens of contexts; just +press and go. +@item Build outlines with multi-level numbered outline nodes, e.g. 1.4.8.6, +that all renumber automatically as any node or tree is moved in the outline. +Each node also has a permanent hyperlink anchor that you can reference from +any other node. +@item Manage all your contacts quickly with hierarchical categories and embed +hyperlinks within each entry. Or create an archive of documents with +hierarchical entries and use the same search mechanism to quickly find any +matching entry. +@item Use single keys to easily manage your Emacs windows or frames and +quickly retrieve saved window and frame configurations. +@item Search for things in your current buffers, in a directory tree or across +major web search engines with the touch of a few keys. +@end itemize + +The common thread in all these features is making retrieval, management and +display of information fast and easy. That is Hyperbole's purpose.") + (license license:gpl3+))) + (define-public emacs-paredit (package (name "emacs-paredit") diff --git a/gnu/packages/patches/emacs-hyperbole-do-not-check-dir.patch b/gnu/packages/patches/emacs-hyperbole-do-not-check-dir.patch new file mode 100644 index 0000000000..66c7a0fb08 --- /dev/null +++ b/gnu/packages/patches/emacs-hyperbole-do-not-check-dir.patch @@ -0,0 +1,24 @@ +From 3016fbd61e47978be73bbbaf7a8c2709bec42066 Mon Sep 17 00:00:00 2001 +From: Joseph LaFreniere +Date: Fri, 12 Jul 2019 13:12:40 -0500 +Subject: [PATCH] Do not run hyperb:check-dir-user during initialization + +--- + hyperbole.el | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/hyperbole.el b/hyperbole.el +index 872dbaf..6edb2a7 100644 +--- a/hyperbole.el ++++ b/hyperbole.el +@@ -653,7 +653,6 @@ If FLAG is nil then text is shown, while if FLAG is t the text is hidden." + (interactive) + (message "Initializing Hyperbole...") + (run-hooks 'hyperbole-init-hook) +- (hyperb:check-dir-user) + (or (stringp hyperb:user-email) + (setq hyperb:user-email + (or (and (boundp 'user-mail-address) +-- +2.22.0 + diff --git a/gnu/packages/patches/emacs-hyperbole-domainname.patch b/gnu/packages/patches/emacs-hyperbole-domainname.patch new file mode 100644 index 0000000000..cf4b63b54b --- /dev/null +++ b/gnu/packages/patches/emacs-hyperbole-domainname.patch @@ -0,0 +1,29 @@ +From 17c87ac58ce6d475fa1987347fcb868ef7f75e40 Mon Sep 17 00:00:00 2001 +From: Joseph LaFreniere +Date: Sun, 2 Jun 2019 12:38:27 -0500 +Subject: [PATCH] Replace executable domainname with hostname + +Fixes build failure: +> ice-9/boot-9.scm:752:25: In procedure dispatch-exception: +> patch-el-files: unable to locate "domainname" +--- + hypb.el | 3 +-- + 1 file changed, 1 insertion(+), 2 deletions(-) + +diff --git a/hypb.el b/hypb.el +index 6abc17a..0332946 100644 +--- a/hypb.el ++++ b/hypb.el +@@ -183,8 +183,7 @@ Global keymap is used unless optional KEYMAP is given." + + (defun hypb:domain-name () + "Returns current Internet domain name with '@' prepended or nil if none." +- (let* ((dname-cmd (or (file-exists-p "/usr/bin/domainname") +- (file-exists-p "/bin/domainname"))) ++ (let* ((dname-cmd (file-exists-p "/bin/hostname")) + (dname (or (and (boundp 'message-user-fqdn) (stringp message-user-fqdn) + (string-match "\\." message-user-fqdn) + message-user-fqdn) +-- +2.21.0 + diff --git a/gnu/packages/patches/emacs-hyperbole-toggle-messaging.patch b/gnu/packages/patches/emacs-hyperbole-toggle-messaging.patch new file mode 100644 index 0000000000..ab66e1b389 --- /dev/null +++ b/gnu/packages/patches/emacs-hyperbole-toggle-messaging.patch @@ -0,0 +1,86 @@ +From 6d5c587ec719e3309077c7d637b03b13db65c047 Mon Sep 17 00:00:00 2001 +From: Joseph LaFreniere +Date: Fri, 12 Jul 2019 12:43:46 -0500 +Subject: [PATCH] Move definition of hyperbole-toggle-messaging to hsettings + +--- + hsettings.el | 25 +++++++++++++++++++++++++ + hyperbole.el | 26 -------------------------- + 2 files changed, 25 insertions(+), 26 deletions(-) + +diff --git a/hsettings.el b/hsettings.el +index 6cdd1b8..9632067 100644 +--- a/hsettings.el ++++ b/hsettings.el +@@ -163,6 +163,31 @@ package to display search results." + search-term))) + (user-error "(Hyperbole): Invalid web search service `%s'" service-name)))) + ++;;;###autoload ++(defun hyperbole-toggle-messaging (&optional arg) ++ "Toggle Hyperbole support for explicit buttons in mail and news buffers. ++Toggles the boolean variable `inhibit-hyperbole-messaging’ and either ++adds hooks (nil value) or removes them (t value). ++ ++With optional prefix ARG > 0, enables support. If ARG <= 0, ++disables/inhibits support." ++ (interactive "P") ++ (setq inhibit-hyperbole-messaging (if (null arg) ++ (not inhibit-hyperbole-messaging) ++ (<= (prefix-numeric-value arg) 0))) ++ (if inhibit-hyperbole-messaging ++ (var:remove-all) ++ (var:append-all) ++ ;; Add any hooks that were skipped when inhibit-hyperbole-messaging ++ ;; was nil. ++ (cond ((boundp 'hyperbole-loading)) ++ ((not after-init-time) ++ (add-hook 'after-init-hook (lambda () (load "hyperbole")))) ++ (t (load "hyperbole")))) ++ (if (called-interactively-p 'interactive) ++ (message "Hyperbole messaging button support is %s" ++ (if inhibit-hyperbole-messaging "disabled" "enabled")))) ++ + (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 +diff --git a/hyperbole.el b/hyperbole.el +index 4aa427d..872dbaf 100644 +--- a/hyperbole.el ++++ b/hyperbole.el +@@ -121,32 +121,6 @@ + t))) + (error "(Hyperbole): Startup failure: `hyperb:dir' must be manually added to `load-path' to fix."))) + +-;; This must be defined before the defcustom `inhbit-hyperbole-messaging'. +-;;;###autoload +-(defun hyperbole-toggle-messaging (&optional arg) +- "Toggle Hyperbole support for explicit buttons in mail and news buffers. +-Toggles the boolean variable `inhibit-hyperbole-messaging’ and either +-adds hooks (nil value) or removes them (t value). +- +-With optional prefix ARG > 0, enables support. If ARG <= 0, +-disables/inhibits support." +- (interactive "P") +- (setq inhibit-hyperbole-messaging (if (null arg) +- (not inhibit-hyperbole-messaging) +- (<= (prefix-numeric-value arg) 0))) +- (if inhibit-hyperbole-messaging +- (var:remove-all) +- (var:append-all) +- ;; Add any hooks that were skipped when inhibit-hyperbole-messaging +- ;; was nil. +- (cond ((boundp 'hyperbole-loading)) +- ((not after-init-time) +- (add-hook 'after-init-hook (lambda () (load "hyperbole")))) +- (t (load "hyperbole")))) +- (if (called-interactively-p 'interactive) +- (message "Hyperbole messaging button support is %s" +- (if inhibit-hyperbole-messaging "disabled" "enabled")))) +- + (defgroup hyperbole-koutliner nil + "Hyperbole multi-level autonumbered outliner customizations." + :group 'hyperbole) +-- +2.22.0 + -- cgit v1.2.3