Add paste-buffer-deleted notification and fix name of paste-buffer-changed.
authornicm <nicm@openbsd.org>
Fri, 28 Oct 2022 13:00:02 +0000 (13:00 +0000)
committernicm <nicm@openbsd.org>
Fri, 28 Oct 2022 13:00:02 +0000 (13:00 +0000)
usr.bin/tmux/control-notify.c
usr.bin/tmux/input.c
usr.bin/tmux/notify.c
usr.bin/tmux/paste.c
usr.bin/tmux/tmux.1
usr.bin/tmux/tmux.h

index 3eab6d9..e181086 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: control-notify.c,v 1.30 2022/08/15 09:10:34 nicm Exp $ */
+/* $OpenBSD: control-notify.c,v 1.31 2022/10/28 13:00:02 nicm Exp $ */
 
 /*
  * Copyright (c) 2012 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -244,6 +244,19 @@ control_notify_paste_buffer_changed(const char *name)
                if (!CONTROL_SHOULD_NOTIFY_CLIENT(c))
                        continue;
 
-               control_write(c, "%%paste-changed %s", name);
+               control_write(c, "%%paste-buffer-changed %s", name);
+       }
+}
+
+void
+control_notify_paste_buffer_deleted(const char *name)
+{
+       struct client   *c;
+
+       TAILQ_FOREACH(c, &clients, entry) {
+               if (!CONTROL_SHOULD_NOTIFY_CLIENT(c))
+                       continue;
+
+               control_write(c, "%%paste-buffer-deleted %s", name);
        }
 }
index a5974a7..6d2974c 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: input.c,v 1.210 2022/10/28 12:20:28 nicm Exp $ */
+/* $OpenBSD: input.c,v 1.211 2022/10/28 13:00:02 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -1755,7 +1755,6 @@ static void
 input_csi_dispatch_sm_private(struct input_ctx *ictx)
 {
        struct screen_write_ctx *sctx = &ictx->ctx;
-       struct window_pane      *wp = ictx->wp;
        struct grid_cell        *gc = &ictx->cell.cell;
        u_int                    i;
 
index 18cee5c..8fc3704 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: notify.c,v 1.42 2022/08/15 09:10:34 nicm Exp $ */
+/* $OpenBSD: notify.c,v 1.43 2022/10/28 13:00:02 nicm Exp $ */
 
 /*
  * Copyright (c) 2012 George Nachman <tmux@georgester.com>
@@ -153,6 +153,8 @@ notify_callback(struct cmdq_item *item, void *data)
                control_notify_session_window_changed(ne->session);
        if (strcmp(ne->name, "paste-buffer-changed") == 0)
                control_notify_paste_buffer_changed(ne->pbname);
+       if (strcmp(ne->name, "paste-buffer-deleted") == 0)
+               control_notify_paste_buffer_deleted(ne->pbname);
 
        notify_insert_hook(item, ne);
 
@@ -307,10 +309,16 @@ notify_pane(const char *name, struct window_pane *wp)
 }
 
 void
-notify_paste_buffer(const char *pbname)
+notify_paste_buffer(const char *pbname, int deleted)
 {
        struct cmd_find_state   fs;
 
        cmd_find_clear_state(&fs, 0);
-       notify_add("paste-buffer-changed", &fs, NULL, NULL, NULL, NULL, pbname);
+       if (deleted) {
+               notify_add("paste-buffer-deleted", &fs, NULL, NULL, NULL, NULL,
+                   pbname);
+       } else {
+               notify_add("paste-buffer-changed", &fs, NULL, NULL, NULL, NULL,
+                   pbname);
+       }
 }
index f50549c..ba4e6a5 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: paste.c,v 1.44 2022/08/15 09:10:34 nicm Exp $ */
+/* $OpenBSD: paste.c,v 1.45 2022/10/28 13:00:02 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -151,7 +151,7 @@ paste_get_name(const char *name)
 void
 paste_free(struct paste_buffer *pb)
 {
-       notify_paste_buffer(pb->name);
+       notify_paste_buffer(pb->name, 1);
 
        RB_REMOVE(paste_name_tree, &paste_by_name, pb);
        RB_REMOVE(paste_time_tree, &paste_by_time, pb);
@@ -210,7 +210,7 @@ paste_add(const char *prefix, char *data, size_t size)
        RB_INSERT(paste_name_tree, &paste_by_name, pb);
        RB_INSERT(paste_time_tree, &paste_by_time, pb);
 
-       notify_paste_buffer(pb->name);
+       notify_paste_buffer(pb->name, 0);
 }
 
 /* Rename a paste buffer. */
@@ -258,8 +258,8 @@ paste_rename(const char *oldname, const char *newname, char **cause)
 
        RB_INSERT(paste_name_tree, &paste_by_name, pb);
 
-       notify_paste_buffer(oldname);
-       notify_paste_buffer(newname);
+       notify_paste_buffer(oldname, 1);
+       notify_paste_buffer(newname, 0);
 
        return (0);
 }
@@ -309,7 +309,7 @@ paste_set(char *data, size_t size, const char *name, char **cause)
        RB_INSERT(paste_name_tree, &paste_by_name, pb);
        RB_INSERT(paste_time_tree, &paste_by_time, pb);
 
-       notify_paste_buffer(name);
+       notify_paste_buffer(name, 0);
 
        return (0);
 }
@@ -322,7 +322,7 @@ paste_replace(struct paste_buffer *pb, char *data, size_t size)
        pb->data = data;
        pb->size = size;
 
-       notify_paste_buffer(pb->name);
+       notify_paste_buffer(pb->name, 0);
 }
 
 /* Convert start of buffer into a nice string. */
index 32a08a0..5a2dcad 100644 (file)
@@ -1,4 +1,4 @@
-.\" $OpenBSD: tmux.1,v 1.903 2022/09/28 07:59:50 nicm Exp $
+.\" $OpenBSD: tmux.1,v 1.904 2022/10/28 13:00:02 nicm Exp $
 .\"
 .\" Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
 .\"
@@ -14,7 +14,7 @@
 .\" IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
 .\" OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 .\"
-.Dd $Mdocdate: September 28 2022 $
+.Dd $Mdocdate: October 28 2022 $
 .Dt TMUX 1
 .Os
 .Sh NAME
@@ -6612,6 +6612,10 @@ has changed mode.
 Paste buffer
 .Ar name
 has been changed.
+.It Ic %paste-buffer-deleted Ar name
+Paste buffer
+.Ar name
+has been deleted.
 .It Ic %pause Ar pane-id
 The pane has been paused (if the
 .Ar pause-after
index 8b1405e..7c7dbd5 100644 (file)
@@ -1,4 +1,4 @@
-/* $OpenBSD: tmux.h,v 1.1182 2022/09/28 07:55:29 nicm Exp $ */
+/* $OpenBSD: tmux.h,v 1.1183 2022/10/28 13:00:02 nicm Exp $ */
 
 /*
  * Copyright (c) 2007 Nicholas Marriott <nicholas.marriott@gmail.com>
@@ -2163,7 +2163,7 @@ void      notify_winlink(const char *, struct winlink *);
 void   notify_session_window(const char *, struct session *, struct window *);
 void   notify_window(const char *, struct window *);
 void   notify_pane(const char *, struct window_pane *);
-void   notify_paste_buffer(const char *);
+void   notify_paste_buffer(const char *, int);
 
 /* options.c */
 struct options *options_create(struct options *);
@@ -3185,6 +3185,7 @@ void      control_notify_session_created(struct session *);
 void   control_notify_session_closed(struct session *);
 void   control_notify_session_window_changed(struct session *);
 void   control_notify_paste_buffer_changed(const char *);
+void   control_notify_paste_buffer_deleted(const char *);
 
 /* session.c */
 extern struct sessions sessions;