Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 25 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,28 @@
2026-09-05 Mats Lidell <matsl@gnu.org>

* Makefile (install-elpa install-elpa-devel install-tarball
install-melpa install-melpa-releases install-straight install-elpaca):
Mount install-test folder in docker container and run test from there.
(install-local): Remove target.

* install-test/elpaca-early-init: New file for elpaca early init.

* install-test/install-test.sh: Use shorter name, use interactive
Emacs and simplify to the environment in the docker container.

* install-test/MANIFEST: Add elpaca-early-init, remove local-emacs,
rename local-install-test.sh to install-test.sh.

* install-test/elpa-devel-emacs:
install-test/elpa-emacs:
install-test/elpaca-emacs:
install-test/local-emacs:
install-test/melpa-emacs:
install-test/melpa-releases-emacs:
install-test/straight-emacs: Added lexical-binding cookie, removed
message about install, use use-package config and other small
refactoring.

2026-08-30 Bob Weiner <rsw@gnu.org>

* test/hywiki-tests.el (hywiki-tests--preserve-hywiki-mode): Call
Expand Down
15 changes: 6 additions & 9 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
# Author: Bob Weiner
#
# Orig-Date: 15-Jun-94 at 03:42:38
# Last-Mod: 28-Aug-26 at 17:58:19 by Mats Lidell
# Last-Mod: 5-Sep-26 at 00:25:03 by Mats Lidell
#
# Copyright (C) 1994-2026 Free Software Foundation, Inc.
# See the file HY-COPY for license information.
Expand Down Expand Up @@ -645,17 +645,14 @@ docker-batch-tests:

# Hyperbole install tests - Verify that hyperbole can be installed
# using different sources. See folder "install-test"
.PHONY: install-elpa install-elpa-devel install-tarball install-straight install-all install-local
install-all: install-elpa install-elpa-devel install-melpa install-melpa-releases install-tarball install-straight install-local
.PHONY: install-elpa install-elpa-devel install-tarball install-straight install-all
install-all: install-elpa install-elpa-devel install-melpa install-melpa-releases install-tarball install-straight

install-elpa install-elpa-devel install-tarball install-melpa install-melpa-releases install-straight install-elpaca:
@echo "Install Hyperbole using $@"
(cd ./install-test/ && ./local-install-test.sh $(subst install-,,$@))

install-local:
@echo "Install Hyperbole using $@"
(cd ./install-test/ && \
./local-install-test.sh $(subst install-,,$@) $(shell pwd) $(shell git rev-parse --abbrev-ref HEAD 2>/dev/null))
cd ./install-test/ && \
docker run -v $$(pwd):/hypb-install -v /tmp:/hypb-tmp -it --rm silex/emacs:${DOCKER_VERSION} \
bash -c "cd /hypb-install && ./install-test.sh $(subst install-,,$@)"

.PHONY: lint
lint:
Expand Down
4 changes: 2 additions & 2 deletions install-test/MANIFEST
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
--- HYPERBOLE INSTALLATION TEST CONFIGURATIONS ---
elpa-devel-emacs - Elpa-devel package personal configuration
elpa-emacs - Elpa package personal configuration
elpaca-early-init - Early init file for elpaca
elpaca-emacs - Elpaca package configuration (elpa-devel install)
local-emacs - Straight git package from local repo and branch
local-install-test.sh - Run one or more test installations
install-test.sh - Run one or more test installations
melpa-emacs - Melpa legacy package personal configuration
melpa-releases-emacs - Melpa releases package personal configuration
straight-emacs - Straight git package personal configuration
Expand Down
49 changes: 43 additions & 6 deletions install-test/elpa-devel-emacs
Original file line number Diff line number Diff line change
@@ -1,11 +1,48 @@
;; .emacs
;;; -*- lexical-binding: t; -*-

(require 'package)
(setq package-native-compile t)
(add-to-list 'package-archives '("gnu-devel" . "https://elpa.gnu.org/devel/"))
(unless (package-installed-p 'hyperbole)
(package-refresh-contents)
(package-install 'hyperbole))
(hyperbole-mode 1)

(message "%s" "Hyperbole successfully installed and activated")
(use-package hyperbole

;; ensure Hyperbole is installed
:ensure t

;; Initialize the global HyWiki minor mode to one of these values:
;; :all - highlights and makes HyWikiWord links active in
;; all text and programming buffer comments
;; :pages - highlights and makes HyWikiWord links active in
;; only within HyWiki page buffers
;; nil - leaves HyWiki mode disabled.
:config
(progn
;; Older Hyperbole releases do not have HyWiki
(when (fboundp 'hywiki-mode)
(hywiki-mode :all))

;; Initialize the global Hyperbole minor mode to one of these values:
;; 1 - enabled on startup so the Action and Assist Smart Keys are active
;; 0 - off until you toggle it on
;; If you left hywiki-mode enabled above, that enables hyperbole-mode too.
(unless (and (fboundp 'hywiki-mode) hywiki-mode)
(hyperbole-mode 1)))

:bind
(("M-RET" . hkey-either)
;; Uncomment the next binding if you want to emulate Hyperbole mouse drag
;; events from your keyboard.
;; See "https://www.gnu.org/s/hyperbole/man/hyperbole.html#Keyboard-Drags".
;; ("M-o" . hkey-operate)
)

;; Customize how Hyperbole and Org mode share the M-RET key:
;; t - With hyperbole-mode enabled, Hyperbole controls the key
;; 'buttons - With hyperbole-mode enabled, Hyperbole controls the key
;; only when on a button or link; otherwise, Org controls it
;; nil - In Org mode, Org controls the key
:custom
(hsys-org-enable-smart-keys t)
)

(hyperbole-mode 1)
49 changes: 43 additions & 6 deletions install-test/elpa-emacs
Original file line number Diff line number Diff line change
@@ -1,10 +1,47 @@
;; .emacs
;;; -*- lexical-binding: t; -*-

(require 'package)
(setq package-native-compile t)
(unless (package-installed-p 'hyperbole)
(package-refresh-contents)
(package-install 'hyperbole))
(hyperbole-mode 1)

(message "%s" "Hyperbole successfully installed and activated")
(use-package hyperbole

;; ensure Hyperbole is installed
:ensure t

;; Initialize the global HyWiki minor mode to one of these values:
;; :all - highlights and makes HyWikiWord links active in
;; all text and programming buffer comments
;; :pages - highlights and makes HyWikiWord links active in
;; only within HyWiki page buffers
;; nil - leaves HyWiki mode disabled.
:config
(progn
;; Older Hyperbole releases do not have HyWiki
(when (fboundp 'hywiki-mode)
(hywiki-mode :all))

;; Initialize the global Hyperbole minor mode to one of these values:
;; 1 - enabled on startup so the Action and Assist Smart Keys are active
;; 0 - off until you toggle it on
;; If you left hywiki-mode enabled above, that enables hyperbole-mode too.
(unless (and (fboundp 'hywiki-mode) hywiki-mode)
(hyperbole-mode 1)))

:bind
(("M-RET" . hkey-either)
;; Uncomment the next binding if you want to emulate Hyperbole mouse drag
;; events from your keyboard.
;; See "https://www.gnu.org/s/hyperbole/man/hyperbole.html#Keyboard-Drags".
;; ("M-o" . hkey-operate)
)

;; Customize how Hyperbole and Org mode share the M-RET key:
;; t - With hyperbole-mode enabled, Hyperbole controls the key
;; 'buttons - With hyperbole-mode enabled, Hyperbole controls the key
;; only when on a button or link; otherwise, Org controls it
;; nil - In Org mode, Org controls the key
:custom
(hsys-org-enable-smart-keys t)
)

(hyperbole-mode 1)
3 changes: 3 additions & 0 deletions install-test/elpaca-early-init
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
;;; -*- lexical-binding: t; -*-

(setq package-enable-at-startup nil)
96 changes: 62 additions & 34 deletions install-test/elpaca-emacs
Original file line number Diff line number Diff line change
@@ -1,65 +1,93 @@
;; .emacs
;;; -*- lexical-binding: t; -*-

;; elpaca
(defvar elpaca-installer-version 0.5)
(defvar elpaca-installer-version 0.12)
(defvar elpaca-directory (expand-file-name "elpaca/" user-emacs-directory))
(defvar elpaca-builds-directory (expand-file-name "builds/" elpaca-directory))
(defvar elpaca-repos-directory (expand-file-name "repos/" elpaca-directory))
(defvar elpaca-sources-directory (expand-file-name "sources/" elpaca-directory))
(defvar elpaca-order '(elpaca :repo "https://github.com/progfolio/elpaca.git"
:ref nil
:files (:defaults (:exclude "extensions"))
:build (:not elpaca--activate-package)))
(let* ((repo (expand-file-name "elpaca/" elpaca-repos-directory))
:ref nil :depth 1 :inherit ignore
:files (:defaults "elpaca-test.el" (:exclude "extensions"))
:build (:not elpaca-activate)))
(let* ((repo (expand-file-name "elpaca/" elpaca-sources-directory))
(build (expand-file-name "elpaca/" elpaca-builds-directory))
(order (cdr elpaca-order))
(default-directory repo))
(add-to-list 'load-path (if (file-exists-p build) build repo))
(unless (file-exists-p repo)
(make-directory repo t)
(when (< emacs-major-version 28) (require 'subr-x))
(when (<= emacs-major-version 28) (require 'subr-x))
(condition-case-unless-debug err
(if-let ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (call-process "git" nil buffer t "clone"
(plist-get order :repo) repo)))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(if-let* ((buffer (pop-to-buffer-same-window "*elpaca-bootstrap*"))
((zerop (apply #'call-process `("git" nil ,buffer t "clone"
,@(when-let* ((depth (plist-get order :depth)))
(list (format "--depth=%d" depth) "--no-single-branch"))
,(plist-get order :repo) ,repo))))
((zerop (call-process "git" nil buffer t "checkout"
(or (plist-get order :ref) "--"))))
(emacs (concat invocation-directory invocation-name))
((zerop (call-process emacs nil buffer nil "-Q" "-L" "." "--batch"
"--eval" "(byte-recompile-directory \".\" 0 'force)")))
((require 'elpaca))
((elpaca-generate-autoloads "elpaca" repo)))
(progn (message "%s" (buffer-string)) (kill-buffer buffer))
(error "%s" (with-current-buffer buffer (buffer-string))))
((error) (warn "%s" err) (delete-directory repo 'recursive))))
(unless (require 'elpaca-autoloads nil t)
(require 'elpaca)
(elpaca-generate-autoloads "elpaca" repo)
(load "./elpaca-autoloads")))
(let ((load-source-file-function nil)) (load "./elpaca-autoloads"))))
(add-hook 'after-init-hook #'elpaca-process-queues)
(elpaca `(,@elpaca-order))

;; Install use-package support
(elpaca elpaca-use-package
;; Enable :elpaca use-package keyword.
(elpaca-use-package-mode)
;; Assume :elpaca t unless otherwise specified.
(setq elpaca-use-package-by-default t))
(elpaca-use-package-mode))

;; Block until current queue processed.
(elpaca-wait)

;; (setq package-native-compile t)

(use-package hyperbole
:pin #:elpa-devel
:elpaca (:files ("*" "man/*" (:exclude "man"))))

(elpaca-process-queues)
(elpaca-wait)
;; ensure Hyperbole is installed
:ensure (:wait t
:files ("*" (:exclude "man" "man/*")))
:demand t

;; Initialize the global HyWiki minor mode to one of these values:
;; :all - highlights and makes HyWikiWord links active in
;; all text and programming buffer comments
;; :pages - highlights and makes HyWikiWord links active in
;; only within HyWiki page buffers
;; nil - leaves HyWiki mode disabled.
:config
(progn
;; Older Hyperbole releases do not have HyWiki
(when (fboundp 'hywiki-mode)
(hywiki-mode :all))

;; Initialize the global Hyperbole minor mode to one of these values:
;; 1 - enabled on startup so the Action and Assist Smart Keys are active
;; 0 - off until you toggle it on
;; If you left hywiki-mode enabled above, that enables hyperbole-mode too.
(unless (and (fboundp 'hywiki-mode) hywiki-mode)
(hyperbole-mode 1)))

:bind
(("M-RET" . hkey-either)
;; Uncomment the next binding if you want to emulate Hyperbole mouse drag
;; events from your keyboard.
;; See "https://www.gnu.org/s/hyperbole/man/hyperbole.html#Keyboard-Drags".
;; ("M-o" . hkey-operate)
)

;; (unless (package-installed-p 'hyperbole)
;; (package-refresh-contents)
;; (package-install 'hyperbole))
(elpaca nil (hyperbole-mode 1))
;; Customize how Hyperbole and Org mode share the M-RET key:
;; t - With hyperbole-mode enabled, Hyperbole controls the key
;; 'buttons - With hyperbole-mode enabled, Hyperbole controls the key
;; only when on a button or link; otherwise, Org controls it
;; nil - In Org mode, Org controls the key
:custom
(hsys-org-enable-smart-keys t)
)

(elpaca nil (message "%s" "Hyperbole successfully installed and activated"))
(hyperbole-mode 1)
38 changes: 38 additions & 0 deletions install-test/install-test.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
#!/bin/bash

echo *** Install test ***

set -e

im="$1"

mkdir -p ${HOME}/.emacs.d

[ -e ${im}-install-local.sh ] && ./${im}-install-local.sh

cp ${im}-emacs ${HOME}/.emacs.d/init.el
[ -e ${im}-early-init ] && cp ${im}-early-init ${HOME}/.emacs.d/early-init.el

cd $HOME

# Initial startup will install Hyperbole
emacs -nw --init-directory="${HOME}/.emacs.d" --eval "(kill-emacs 0)"

# Verify installation
if emacs -nw --init-directory="${HOME}/.emacs.d" \
--eval "(kill-emacs
(if (and (featurep (quote hyperbole))
hyperbole-mode)
0
1))"
then
echo -e "\n\n*** Hyperbole ${im} installed OK ***\n\n"
else
echo -e "\n\n*** ERROR: Hyperbole ${im} was not installed properly ***\n\n"
# Inspect the installation on error
bash
exit 1
fi

## Uncomment for inspecting the installation
# bash
29 changes: 0 additions & 29 deletions install-test/local-emacs

This file was deleted.

Loading