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

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

[elpa] externals-release/activities a2a69d698b 5/8: Release: v0.5


From: ELPA Syncer
Subject: [elpa] externals-release/activities a2a69d698b 5/8: Release: v0.5
Date: Sun, 11 Feb 2024 15:57:22 -0500 (EST)

branch: externals-release/activities
commit a2a69d698b3011316afa603766732483f35e870e
Merge: 73880028f0 30b1a9f204
Author: Adam Porter <adam@alphapapa.net>
Commit: Adam Porter <adam@alphapapa.net>

    Release: v0.5
---
 README.org         |  46 +++++++++++----
 activities-list.el |   2 +-
 activities-tabs.el |   9 +--
 activities.el      | 163 +++++++++++++++++++++++++++++++++++----------------
 activities.info    | 169 +++++++++++++++++++++++++++++++++++++----------------
 5 files changed, 274 insertions(+), 115 deletions(-)

diff --git a/README.org b/README.org
index ed2fab5bfd..5011cda950 100644
--- a/README.org
+++ b/README.org
@@ -52,17 +52,19 @@ This is the recommended configuration, in terms of a 
~use-package~ form to be pl
     :init
     (activities-mode)
     (activities-tabs-mode)
+    ;; Prevent `edebug' default bindings from interfering.
+    (setq edebug-inhibit-emacs-lisp-mode-bindings t)
 
     :bind
-    (("C-x C-a n" . activities-new)
-     ("C-x C-a g" . activities-revert)
-     ("C-x C-a s" . activities-suspend)
-     ("C-x C-a C-k" . activities-kill)    ; Alias for `-suspend'
-     ("C-x C-a a" . activities-resume)
-     ;; For convenience, we also bind `activities-resume' to "C-x C-a
-     ;; C-a", so the user need not lift the Control key.
+    (("C-x C-a C-n" . activities-new)
+     ;; As resuming is expected to be one of the most commonly used
+     ;; commands, this binding is one of the easiest to press.
      ("C-x C-a C-a" . activities-resume)
+     ("C-x C-a C-s" . activities-suspend)
+     ("C-x C-a C-k" . activities-kill)
+     ;; This binding mirrors, e.g. "C-x t RET".
      ("C-x C-a RET" . activities-switch)
+     ("C-x C-a g" . activities-revert)
      ("C-x C-a l" . activities-list)))
 #+END_SRC
 
@@ -97,12 +99,19 @@ An example of a workflow using activities:
 8. Call ~activities-new~ with a universal prefix argument (~C-u C-x C-a n~) to 
redefine an activity's default state.
 9. Suspend the activity with ~activities-suspend~ (~C-x C-a s~) (which saves 
its last state and closes its frame/tab).
 
+** Bindings
+
+Key bindings are, as always, ultimately up to the user.  However, in 
[[Configuration][Configuration]], we suggest a set of bindings with a simple 
philosophy behind them:
+
++ A binding ending in a ~C~-prefixed key is expected to result in the set of 
active activities being changed (e.g. defining a new activity, activating one, 
or deactivating one).
++ A binding not ending in a ~C~-prefixed key is expected to merely change an 
active one (e.g. reverting it) or do something else (like listing activities.)
+
 ** Commands
 
 + ~activities-list~ (~C-x C-a l~) :: List activities in a ~vtable~ buffer in 
which they can be managed with various commands.
-+ ~activities-new~ (~C-x C-a n~) :: Define a new activity whose default state 
is the current frame's or tab's window configuration.  With prefix argument, 
overwrite an existing activity (thereby updating its default state to the 
current state).
-+ ~activities-suspend~ (~C-x C-a s~) :: Save an activity's state and close its 
frame or tab.
-+ ~activities-kill~ (~C-x C-a C-k~) :: Alias for ~activities-suspend~.
++ ~activities-new~ (~C-x C-a C-n~) :: Define a new activity whose default 
state is the current frame's or tab's window configuration.  With prefix 
argument, overwrite an existing activity (thereby updating its default state to 
the current state).
++ ~activities-suspend~ (~C-x C-a C-s~) :: Save an activity's state and close 
its frame or tab.
++ ~activities-kill~ (~C-x C-a C-k~) :: Discard an activity's last state (so 
when it is resumed, its default state will be used), and close its frame or tab.
 + ~activities-resume~ (~C-x C-a C-a~) :: Resume an activity, switching to a 
new frame or tab for its window configuration, and restoring its buffers.  With 
prefix argument, restore its default state rather than its last.
 + ~activities-revert~ (~C-x C-a g~) :: Revert an activity to its default state.
 + ~activities-switch~ (~C-x C-a RET~) :: Switch to an already-active activity.
@@ -129,6 +138,23 @@ When option ~activities-bookmark-store~ is enabled, an 
Emacs bookmark is stored
 
 * Changelog
 
+** v0.5
+
+*Additions*
++ Suggest setting variable ~edebug-inhibit-emacs-lisp-mode-bindings~ to avoid 
conflicts with suggested keybindings.
++ Option ~activities-bookmark-warnings~ enables warning messages when a 
non-file-visiting buffer can't be bookmarked (for debugging purposes).
++ Option ~activities-resume-into-frame~ controls whether resuming an activity 
opens a new frame or uses the current one (when ~activities-tabs-mode~ is 
disabled).  ([[https://github.com/alphapapa/activities.el/issues/22][#22]].  
Thanks to [[https://github.com/Icy-Thought][Icy-Thought]] for suggesting.)
+
+*Changes*
++ Command ~activities-kill~ now discards an activity's last state (while 
~activities-suspend~ saves its last state), and closes its frame or tab.
++ Face ~activities-tabs-face~ is renamed to ~activities-tabs~, and now 
inherits from another face by default, which allows it to adjust with the 
loaded theme.  ([[https://github.com/alphapapa/activities.el/issues/24][#24]].  
Thanks to [[https://github.com/karthink][Karthik Chikmagalur]] for suggesting.)
+
+*Fixes*
++ Show a helpful error if a bookmark's target file is missing.  
([[https://github.com/alphapapa/activities.el/issues/17][#17]].  Thanks to 
[[https://github.com/jdtsmith][JD Smith]] for reporting.)
++ Sort order in ~activities-list~.
++ When discarding an inactive activity, don't switch to it first.  
([[https://github.com/alphapapa/activity.el/issues/18][#18]].  Thanks to 
[[https://github.com/jdtsmith][JD Smith]] for reporting.)
++ Don't signal an error when ~debug-on-error~ is enabled and a buffer is not 
visiting a file.  ([[https://github.com/alphapapa/activity.el/issues/25][#25]]. 
 Thanks to [[https://github.com/karthink][Karthik Chikmagalur]] for reporting.)
+
 ** v0.4
 
 *Additions*
diff --git a/activities-list.el b/activities-list.el
index 6ae7b89463..84a3185a63 100644
--- a/activities-list.el
+++ b/activities-list.el
@@ -75,7 +75,7 @@
            :formatter activities-list--format-time))
        :objects-function (lambda ()
                            (map-values activities-activities))
-       :sort-by '((2 . ascend) (0 . descend))
+       :sort-by '((2 . descend) (0 . descend))
        :actions `("q" (lambda (&rest _) (bury-buffer))
                   "n" (lambda (&rest _) (forward-line 1))
                   "p" (lambda (&rest _) (forward-line -1))
diff --git a/activities-tabs.el b/activities-tabs.el
index 9cc8f17ed8..8e02fc62a0 100644
--- a/activities-tabs.el
+++ b/activities-tabs.el
@@ -50,8 +50,8 @@ Each is called with one argument, the activity."
   "Prepended to activity names in tabs."
   :type 'string)
 
-(defface activities-tabs-face
-  `((t :foreground ,(face-foreground 'font-lock-function-name-face nil 
'default)))
+(defface activities-tabs
+  `((t :inherit font-lock-function-name-face))
   "Applied to tab-bar faces for tabs representing activities.")
 
 ;;;; Mode
@@ -126,11 +126,12 @@ Selects its tab, making one if needed.  Its state is not 
changed."
 
 (defun activities-tabs--tab-bar-tab-face-function (tab)
   "Return a face for TAB.
-If TAB represents an activity, `activities-tabs-face' is added."
+If TAB represents an activity, face `activities-tabs' is added as
+inherited."
   ;; TODO: Propose a tab-bar equivalent of `tab-line-tab-face-functions'.
   (let ((face (funcall activities-tabs-tab-bar-tab-face-function-original 
tab)))
     (if (activities-tabs--tab-parameter 'activity tab)
-        `(:inherit (activities-tabs-face ,face))
+        `(:inherit (activities-tabs ,face))
       face)))
 
 (defun activities-tabs-activity--set (activity)
diff --git a/activities.el b/activities.el
index c2eb302031..70d59347b3 100644
--- a/activities.el
+++ b/activities.el
@@ -6,7 +6,7 @@
 ;; Maintainer: Adam Porter <adam@alphapapa.net>
 ;; URL: https://github.com/alphapapa/activities.el
 ;; Keywords: convenience
-;; Version: 0.4
+;; Version: 0.5
 ;; Package-Requires: ((emacs "29.1") (persist "0.6"))
 
 ;; This program is free software; you can redistribute it and/or modify
@@ -284,6 +284,23 @@ non-nil, the activity's state is not saved."
               (function-item activities--backtrace-visible-p)
               (function :tag "Other predicate")))
 
+(defcustom activities-resume-into-frame 'current
+  "Which frame to resume an activity into.
+Only applies when `activities-tabs-mode' is disabled."
+  :type '(choice (const :tag "Current frame"
+                        :doc "Replace current frame's window configuration"
+                        current)
+                 (const :tag "New frame" :doc "Make a new frame" new)))
+
+(defcustom activities-bookmark-warnings nil
+  "Warn when a buffer can't be bookmarked.
+This is expected to be the case for non-file-visiting buffers
+whose major mode does not provide bookmark support, for which no
+warning is necessary.  This option may be enabled for debugging,
+which will cause a message to be printed for such buffers when an
+activity's state is saved."
+  :type 'boolean)
+
 ;;;; Commands
 
 ;;;###autoload
@@ -314,7 +331,9 @@ activity."
 If RESETP (interactively, with universal prefix), reset to
 ACTIVITY's default state; otherwise, resume its last state, if
 available."
-  (interactive (list (activities-completing-read) :resetp current-prefix-arg))
+  (interactive
+   (list (activities-completing-read :prompt "Resume activity" :default nil)
+         :resetp current-prefix-arg))
   (let ((already-active-p (activities-activity-active-p activity)))
     (activities--switch activity)
     (unless (or resetp already-active-p)
@@ -326,24 +345,32 @@ Interactively, offers active activities."
   (interactive
    (list (activities-completing-read
           :activities (cl-remove-if-not #'activities-activity-active-p 
activities-activities :key #'cdr)
-          :prompt "Switch to: ")))
+          :prompt "Switch to activity")))
   (activities--switch activity))
 
 (defun activities-suspend (activity)
   "Suspend ACTIVITY.
-Its last is saved, and its frames, windows, and tabs are closed."
+Its last state is saved, and its frames, windows, and tabs are closed."
   (interactive
-   (let ((default (when (activities-current)
-                    (activities-activity-name (activities-current)))))
-     (list (activities-completing-read
-            :activities (cl-remove-if-not #'activities-activity-active-p
-                                          activities-activities :key #'cdr)
-            :prompt (format-prompt "Suspend activity" default)
-            :default default))))
+   (list (activities-completing-read
+          :activities (cl-remove-if-not #'activities-activity-active-p
+                                        activities-activities :key #'cdr)
+          :prompt "Suspend activity")))
   (activities-save activity :lastp t)
   (activities-close activity))
 
-(defalias 'activities-kill #'activities-suspend)
+(defun activities-kill (activity)
+  "Kill ACTIVITY.
+Its last state is discarded (so when it is resumed, its default
+state will be used), and close its frame or tab."
+  (interactive
+   (list (activities-completing-read
+          :activities (cl-remove-if-not #'activities-activity-active-p
+                                        activities-activities :key #'cdr)
+          :prompt "Kill activity")))
+  (setf (activities-activity-last activity) nil)
+  (activities-save activity)
+  (activities-close activity))
 
 (defun activities-save-all ()
   "Save all active activities' last states.
@@ -366,14 +393,13 @@ In order to be safe for `kill-emacs-hook', this demotes 
errors."
 It will not be recoverable."
   ;; TODO: Discard relevant bookmarks when `activities-bookmark-store' is 
enabled.
   (interactive
-   (let ((default (when (activities-current)
-                    (activities-activity-name (activities-current)))))
-     (list (activities-completing-read :prompt (format-prompt "Discard 
activity" default)
-                                       :default default))))
-  (ignore-errors
-    ;; FIXME: After fixing all the bugs, remove ignore-errors.
-    (activities-close activity))
-  (setf activities-activities (map-delete activities-activities 
(activities-activity-name activity))))
+   (list (activities-completing-read :prompt "Discard activity")))
+  (when (yes-or-no-p (format "Discard activity %S permanently?" 
(activities-activity-name activity)))
+    (ignore-errors
+      ;; FIXME: After fixing all the bugs, remove ignore-errors.
+      (when (activities-activity-active-p activity)
+        (activities-close activity)))
+    (setf activities-activities (map-delete activities-activities 
(activities-activity-name activity)))))
 
 ;;;; Activity mode
 
@@ -419,17 +445,16 @@ To be called from `kill-emacs-hook'."
 If DEFAULTP, save its default state; if LASTP, its last.  If
 PERSISTP, force persisting of data (otherwise, data is persisted
 according to option `activities-always-persist', which see)."
-  (unless (or defaultp lastp)
-    (user-error "Neither DEFAULTP nor LASTP specified"))
   (activities-with activity
-    ;; Don't try to save if a minibuffer is active, because we
-    ;; wouldn't want to try to restore that layout.
-    (unless (run-hook-with-args-until-success 'activities-anti-save-predicates)
-      (pcase-let* (((cl-struct activities-activity name default last) activity)
-                   (new-state (activities-state)))
-        (setf (activities-activity-default activity) (if (or defaultp (not 
default)) new-state default)
-              (activities-activity-last activity) (if (or lastp (not last)) 
new-state last)
-              (map-elt activities-activities name) activity))))
+    (when (or defaultp lastp)
+      (unless (run-hook-with-args-until-success 
'activities-anti-save-predicates)
+        (pcase-let* (((cl-struct activities-activity default last) activity)
+                     (new-state (activities-state)))
+          (setf (activities-activity-default activity) (if (or defaultp (not 
default)) new-state default)
+                (activities-activity-last activity) (if (or lastp (not last)) 
new-state last)))))
+    ;; Always set the value so, e.g. the activity can be modified
+    ;; externally and saved here.
+    (setf (map-elt activities-activities (activities-activity-name activity)) 
activity))
   (activities--persist persistp))
 
 (cl-defun activities-set (activity &key (state 'last))
@@ -475,8 +500,11 @@ closed."
   "Switch to ACTIVITY.
 Select's ACTIVITY's frame, making a new one if needed.  Its state
 is not changed."
-  (select-frame (or (activities--frame activity)
-                    (make-frame `((activity . ,activity)))))
+  (if (activities-activity-active-p activity)
+      (select-frame (activities--frame activity))
+    (pcase activities-resume-into-frame
+      ('current nil)
+      ('new (select-frame (make-frame `((activity . ,activity)))))))
   (unless activities-saving-p
     ;; HACK: Don't raise the frame when saving the activity's state.
     ;; (I don't love this solution, largely because it only applies
@@ -603,12 +631,13 @@ activity's name is NAME."
   "Return `activities-buffer' struct for BUFFER."
   (with-current-buffer buffer
     (make-activities-buffer
-     :bookmark (condition-case-unless-debug err
+     :bookmark (condition-case err
                    (bookmark-make-record)
                  (error
                   (pcase (error-message-string err)
                     ("Buffer not visiting a file or directory")
-                    (_ (message (format "Activities: Error while making 
bookmark for buffer %S: %%S" buffer) err)))
+                    (_ (when activities-bookmark-warnings
+                         (message (format "Activities: Error while making 
bookmark for buffer %S: %%S" buffer) err))))
                   nil))
      :filename (buffer-file-name buffer)
      :name (buffer-name buffer)
@@ -642,18 +671,49 @@ activity's name is NAME."
   ;; back (which actually break the entire bookmark system when
   ;; such a props is saved in the bookmarks file), we have to
   ;; workaround a failure to read here.  See bug#56643.
-  (pcase-let* (((cl-struct activities-buffer bookmark) struct))
-    (save-window-excursion
-      (condition-case err
-          (progn
-            (bookmark-jump bookmark)
-            (when-let ((local-variable-map
-                        (bookmark-prop-get bookmark 
'activities-buffer-local-variables)))
-              (cl-loop for (variable . value) in local-variable-map
-                       do (setf (buffer-local-value variable (current-buffer)) 
value))))
-        (error (delay-warning 'activity
-                              (format "Error while opening bookmark: ERROR:%S  
RECORD:%S" err struct))))
-      (current-buffer))))
+
+  ;; Unfortunately, when a bookmarked file no longer exists,
+  ;; `bookmark-handle-bookmark' handles the error itself and returns
+  ;; nil, preventing us from handling the error.  Since
+  ;; `bookmark-jump' works by side effect, we have to test whether the
+  ;; buffer was changed in order to know whether it worked.  We call
+  ;; it from a temp buffer in case the jumped-to buffer would be the
+  ;; same as the current buffer.
+  (with-temp-buffer
+    (pcase-let* (((cl-struct activities-buffer bookmark) struct)
+                 (temp-buffer (current-buffer))
+                 (jumped-to-buffer
+                  (save-window-excursion
+                    (condition-case err
+                        (progn
+                          (bookmark-jump bookmark)
+                          (when-let ((local-variable-map
+                                      (bookmark-prop-get bookmark 
'activities-buffer-local-variables)))
+                            (cl-loop for (variable . value) in 
local-variable-map
+                                     do (setf (buffer-local-value variable 
(current-buffer)) value))))
+                      (error (delay-warning 'activity
+                                            (format "Error while opening 
bookmark: ERROR:%S  RECORD:%S" err struct))))
+                    (current-buffer))))
+      (if (not (eq temp-buffer jumped-to-buffer))
+          ;; Bookmark appears to have been jumped to: return that buffer.
+          jumped-to-buffer
+        ;; Bookmark appears to have not changed the buffer: return a new one 
showing an error.
+        (activities--error-buffer
+         (format "%s:%s" (car bookmark) (bookmark-prop-get bookmark 'filename))
+         (list "Activities was unable to get a buffer for bookmark:\n\n"
+              (prin1-to-string bookmark) "\n\n"
+              "It's likely that the bookmark's file no longer exists, in which 
case you may need to relocate it and redefine this activity.\n\n"
+               "If this is not the case, please report this error to the 
`activities' maintainer.\n\n"
+               "In the meantime, you may ignore this error and use the other 
buffers in the activity.\n\n"))))))
+
+(defun activities--error-buffer (name strings)
+  "Return a new error buffer having NAME and content STRINGS."
+  ;; TODO: Use this elsewhere too.
+  (with-current-buffer (get-buffer-create (format "*Activities (error): %s*" 
name))
+    (visual-line-mode)
+    (goto-char (point-max))
+    (apply #'insert strings)
+    (current-buffer)))
 
 (defun activities--filename-buffer (activities-buffer)
   "Return buffer for ACTIVITIES-BUFFER having `filename' set."
@@ -672,10 +732,15 @@ activity's name is NAME."
           (current-buffer)))))
 
 (cl-defun activities-completing-read
-    (&key (activities activities-activities) (prompt "Open activity: ") 
default)
+    (&key (activities activities-activities)
+          (default (when (activities-current)
+                     (activities-activity-name (activities-current))))
+          (prompt "Activity"))
   "Return an activity read with completion from ACTIVITIES.
-PROMPT and DEFAULT are passed to `completing-read', which see."
-  (let* ((names (activities-names activities))
+PROMPT is passed to `completing-read' by way of `format-prompt',
+which see, with DEFAULT."
+  (let* ((prompt (format-prompt prompt default))
+         (names (activities-names activities))
          (name (completing-read prompt names nil t nil 
'activities-completing-read-history default)))
     (or (map-elt activities-activities name)
         (make-activities-activity :name name))))
diff --git a/activities.info b/activities.info
index 2268ce6753..f8d7197d5f 100644
--- a/activities.info
+++ b/activities.info
@@ -64,11 +64,13 @@ Usage
 * Compatibility::
 * Modes::
 * Workflow::
+* Bindings::
 * Commands::
 * Bookmarks::
 
 Changelog
 
+* v0.5: v05.
 * v0.4: v04.
 * v0.3.3: v033.
 * v0.3.2: v032.
@@ -141,17 +143,19 @@ to be placed in the user’s init file:
        :init
        (activities-mode)
        (activities-tabs-mode)
+       ;; Prevent `edebug' default bindings from interfering.
+       (setq edebug-inhibit-emacs-lisp-mode-bindings t)
 
        :bind
-       (("C-x C-a n" . activities-new)
-        ("C-x C-a g" . activities-revert)
-        ("C-x C-a s" . activities-suspend)
-        ("C-x C-a C-k" . activities-kill)    ; Alias for `-suspend'
-        ("C-x C-a a" . activities-resume)
-        ;; For convenience, we also bind `activities-resume' to "C-x C-a
-        ;; C-a", so the user need not lift the Control key.
+       (("C-x C-a C-n" . activities-new)
+        ;; As resuming is expected to be one of the most commonly used
+        ;; commands, this binding is one of the easiest to press.
         ("C-x C-a C-a" . activities-resume)
+        ("C-x C-a C-s" . activities-suspend)
+        ("C-x C-a C-k" . activities-kill)
+        ;; This binding mirrors, e.g. "C-x t RET".
         ("C-x C-a RET" . activities-switch)
+        ("C-x C-a g" . activities-revert)
         ("C-x C-a l" . activities-list)))
 
 
@@ -166,6 +170,7 @@ File: README.info,  Node: Usage,  Next: FAQ,  Prev: 
Configuration,  Up: Top
 * Compatibility::
 * Modes::
 * Workflow::
+* Bindings::
 * Commands::
 * Bookmarks::
 
@@ -222,7 +227,7 @@ File: README.info,  Node: Modes,  Next: Workflow,  Prev: 
Compatibility,  Up: Usa
      please report them._)
 
 
-File: README.info,  Node: Workflow,  Next: Commands,  Prev: Modes,  Up: Usage
+File: README.info,  Node: Workflow,  Next: Bindings,  Prev: Modes,  Up: Usage
 
 3.4 Workflow
 ============
@@ -247,23 +252,41 @@ An example of a workflow using activities:
      saves its last state and closes its frame/tab).
 
 
-File: README.info,  Node: Commands,  Next: Bookmarks,  Prev: Workflow,  Up: 
Usage
+File: README.info,  Node: Bindings,  Next: Commands,  Prev: Workflow,  Up: 
Usage
 
-3.5 Commands
+3.5 Bindings
+============
+
+Key bindings are, as always, ultimately up to the user.  However, in
+*note Configuration::, we suggest a set of bindings with a simple
+philosophy behind them:
+
+   • A binding ending in a ‘C’-prefixed key is expected to result in the
+     set of active activities being changed (e.g.  defining a new
+     activity, activating one, or deactivating one).
+   • A binding not ending in a ‘C’-prefixed key is expected to merely
+     change an active one (e.g.  reverting it) or do something else
+     (like listing activities.)
+
+
+File: README.info,  Node: Commands,  Next: Bookmarks,  Prev: Bindings,  Up: 
Usage
+
+3.6 Commands
 ============
 
 ‘activities-list’ (‘C-x C-a l’)
      List activities in a ‘vtable’ buffer in which they can be managed
      with various commands.
-‘activities-new’ (‘C-x C-a n’)
+‘activities-new’ (‘C-x C-a C-n’)
      Define a new activity whose default state is the current frame’s or
      tab’s window configuration.  With prefix argument, overwrite an
      existing activity (thereby updating its default state to the
      current state).
-‘activities-suspend’ (‘C-x C-a s’)
+‘activities-suspend’ (‘C-x C-a C-s’)
      Save an activity’s state and close its frame or tab.
 ‘activities-kill’ (‘C-x C-a C-k’)
-     Alias for ‘activities-suspend’.
+     Discard an activity’s last state (so when it is resumed, its
+     default state will be used), and close its frame or tab.
 ‘activities-resume’ (‘C-x C-a C-a’)
      Resume an activity, switching to a new frame or tab for its window
      configuration, and restoring its buffers.  With prefix argument,
@@ -281,7 +304,7 @@ File: README.info,  Node: Commands,  Next: Bookmarks,  
Prev: Workflow,  Up: Usag
 
 File: README.info,  Node: Bookmarks,  Prev: Commands,  Up: Usage
 
-3.6 Bookmarks
+3.7 Bookmarks
 =============
 
 When option ‘activities-bookmark-store’ is enabled, an Emacs bookmark is
@@ -354,6 +377,7 @@ File: README.info,  Node: Changelog,  Next: Development,  
Prev: FAQ,  Up: Top
 
 * Menu:
 
+* v0.5: v05.
 * v0.4: v04.
 * v0.3.3: v033.
 * v0.3.2: v032.
@@ -366,9 +390,50 @@ File: README.info,  Node: Changelog,  Next: Development,  
Prev: FAQ,  Up: Top
 * v0.1: v01.
 
 
-File: README.info,  Node: v04,  Next: v033,  Up: Changelog
+File: README.info,  Node: v05,  Next: v04,  Up: Changelog
+
+5.1 v0.5
+========
+
+*Additions*
+   • Suggest setting variable ‘edebug-inhibit-emacs-lisp-mode-bindings’
+     to avoid conflicts with suggested keybindings.
+   • Option ‘activities-bookmark-warnings’ enables warning messages when
+     a non-file-visiting buffer can’t be bookmarked (for debugging
+     purposes).
+   • Option ‘activities-resume-into-frame’ controls whether resuming an
+     activity opens a new frame or uses the current one (when
+     ‘activities-tabs-mode’ is disabled).  (#22
+     (https://github.com/alphapapa/activities.el/issues/22).  Thanks to
+     Icy-Thought (https://github.com/Icy-Thought) for suggesting.)
+
+   *Changes*
+   • Command ‘activities-kill’ now discards an activity’s last state
+     (while ‘activities-suspend’ saves its last state), and closes its
+     frame or tab.
+   • Face ‘activities-tabs-face’ is renamed to ‘activities-tabs’, and
+     now inherits from another face by default, which allows it to
+     adjust with the loaded theme.  (#24
+     (https://github.com/alphapapa/activities.el/issues/24).  Thanks to
+     Karthik Chikmagalur (https://github.com/karthink) for suggesting.)
+
+   *Fixes*
+   • Show a helpful error if a bookmark’s target file is missing.  (#17
+     (https://github.com/alphapapa/activities.el/issues/17).  Thanks to
+     JD Smith (https://github.com/jdtsmith) for reporting.)
+   • Sort order in ‘activities-list’.
+   • When discarding an inactive activity, don’t switch to it first.
+     (#18 (https://github.com/alphapapa/activity.el/issues/18).  Thanks
+     to JD Smith (https://github.com/jdtsmith) for reporting.)
+   • Don’t signal an error when ‘debug-on-error’ is enabled and a buffer
+     is not visiting a file.  (#25
+     (https://github.com/alphapapa/activity.el/issues/25).  Thanks to
+     Karthik Chikmagalur (https://github.com/karthink) for reporting.)
+
+
+File: README.info,  Node: v04,  Next: v033,  Prev: v05,  Up: Changelog
 
-5.1 v0.4
+5.2 v0.4
 ========
 
 *Additions*
@@ -385,7 +450,7 @@ File: README.info,  Node: v04,  Next: v033,  Up: Changelog
 
 File: README.info,  Node: v033,  Next: v032,  Prev: v04,  Up: Changelog
 
-5.2 v0.3.3
+5.3 v0.3.3
 ==========
 
 *Fixes*
@@ -399,7 +464,7 @@ File: README.info,  Node: v033,  Next: v032,  Prev: v04,  
Up: Changelog
 
 File: README.info,  Node: v032,  Next: v031,  Prev: v033,  Up: Changelog
 
-5.3 v0.3.2
+5.4 v0.3.2
 ==========
 
 Updated documentation, etc.
@@ -407,7 +472,7 @@ Updated documentation, etc.
 
 File: README.info,  Node: v031,  Next: v03,  Prev: v032,  Up: Changelog
 
-5.4 v0.3.1
+5.5 v0.3.1
 ==========
 
 *Fixes*
@@ -419,7 +484,7 @@ File: README.info,  Node: v031,  Next: v03,  Prev: v032,  
Up: Changelog
 
 File: README.info,  Node: v03,  Next: v02,  Prev: v031,  Up: Changelog
 
-5.5 v0.3
+5.6 v0.3
 ========
 
 *Additions*
@@ -432,7 +497,7 @@ File: README.info,  Node: v03,  Next: v02,  Prev: v031,  
Up: Changelog
 
 File: README.info,  Node: v02,  Next: v013,  Prev: v03,  Up: Changelog
 
-5.6 v0.2
+5.7 v0.2
 ========
 
 *Additions*
@@ -448,7 +513,7 @@ File: README.info,  Node: v02,  Next: v013,  Prev: v03,  
Up: Changelog
 
 File: README.info,  Node: v013,  Next: v012,  Prev: v02,  Up: Changelog
 
-5.7 v0.1.3
+5.8 v0.1.3
 ==========
 
 *Fixes*
@@ -458,7 +523,7 @@ File: README.info,  Node: v013,  Next: v012,  Prev: v02,  
Up: Changelog
 
 File: README.info,  Node: v012,  Next: v011,  Prev: v013,  Up: Changelog
 
-5.8 v0.1.2
+5.9 v0.1.2
 ==========
 
 *Fixes*
@@ -467,8 +532,8 @@ File: README.info,  Node: v012,  Next: v011,  Prev: v013,  
Up: Changelog
 
 File: README.info,  Node: v011,  Next: v01,  Prev: v012,  Up: Changelog
 
-5.9 v0.1.1
-==========
+5.10 v0.1.1
+===========
 
 *Fixes*
    • Silence message about non-file-visiting buffers.
@@ -476,7 +541,7 @@ File: README.info,  Node: v011,  Next: v01,  Prev: v012,  
Up: Changelog
 
 File: README.info,  Node: v01,  Prev: v011,  Up: Changelog
 
-5.10 v0.1
+5.11 v0.1
 =========
 
 Initial release.
@@ -513,31 +578,33 @@ to request the assignment form.
 
 Tag Table:
 Node: Top231
-Node: Installation2437
-Node: GNU ELPA2588
-Node: Quelpa2953
-Node: Configuration3673
-Node: Usage4520
-Node: Activities4709
-Node: Compatibility5697
-Node: Modes6181
-Node: Workflow6849
-Node: Commands7802
-Node: Bookmarks9158
-Node: FAQ9510
-Node: Changelog12586
-Node: v0412850
-Node: v03313379
-Node: v03213809
-Node: v03113937
-Node: v0314267
-Node: v0214657
-Node: v01315149
-Node: v01215298
-Node: v01115475
-Node: v0115638
-Node: Development15739
-Node: Copyright assignment16011
+Node: Installation2463
+Node: GNU ELPA2614
+Node: Quelpa2979
+Node: Configuration3699
+Node: Usage4655
+Node: Activities4857
+Node: Compatibility5845
+Node: Modes6329
+Node: Workflow6997
+Node: Bindings7950
+Node: Commands8596
+Node: Bookmarks10045
+Node: FAQ10397
+Node: Changelog13473
+Node: v0513750
+Node: v0415714
+Node: v03316255
+Node: v03216685
+Node: v03116813
+Node: v0317143
+Node: v0217533
+Node: v01318025
+Node: v01218174
+Node: v01118351
+Node: v0118516
+Node: Development18617
+Node: Copyright assignment18889
 
 End Tag Table
 



reply via email to

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