mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Use notifys for alerts too.
This commit is contained in:
		
							
								
								
									
										11
									
								
								alerts.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								alerts.c
									
									
									
									
									
								
							| @@ -75,17 +75,12 @@ alerts_callback(__unused int fd, __unused short events, __unused void *arg) | |||||||
| static void | static void | ||||||
| alerts_run_hook(struct session *s, struct winlink *wl, int flags) | alerts_run_hook(struct session *s, struct winlink *wl, int flags) | ||||||
| { | { | ||||||
| 	struct cmd_find_state	 fs; |  | ||||||
|  |  | ||||||
| 	if (cmd_find_from_winlink(&fs, s, wl) != 0) |  | ||||||
| 		return; |  | ||||||
|  |  | ||||||
| 	if (flags & WINDOW_BELL) | 	if (flags & WINDOW_BELL) | ||||||
| 		hooks_run(s->hooks, NULL, &fs, "alert-bell"); | 		notify_winlink("alert-bell", s, wl); | ||||||
| 	if (flags & WINDOW_SILENCE) | 	if (flags & WINDOW_SILENCE) | ||||||
| 		hooks_run(s->hooks, NULL, &fs, "alert-silence"); | 		notify_winlink("alert-silence", s, wl); | ||||||
| 	if (flags & WINDOW_ACTIVITY) | 	if (flags & WINDOW_ACTIVITY) | ||||||
| 		hooks_run(s->hooks, NULL, &fs, "alert-activity"); | 		notify_winlink("alert-activity", s, wl); | ||||||
| } | } | ||||||
|  |  | ||||||
| static int | static int | ||||||
|   | |||||||
							
								
								
									
										56
									
								
								notify.c
									
									
									
									
									
								
							
							
						
						
									
										56
									
								
								notify.c
									
									
									
									
									
								
							| @@ -113,8 +113,8 @@ notify_callback(struct cmdq_item *item, void *data) | |||||||
| } | } | ||||||
|  |  | ||||||
| static void | static void | ||||||
| notify_add(const char *name, struct client *c, struct session *s, | notify_add(const char *name, struct cmd_find_state *fs, struct client *c, | ||||||
|     struct window *w, struct window_pane *wp) |     struct session *s, struct window *w, struct window_pane *wp) | ||||||
| { | { | ||||||
| 	struct notify_entry	*ne; | 	struct notify_entry	*ne; | ||||||
| 	struct cmdq_item	*new_item; | 	struct cmdq_item	*new_item; | ||||||
| @@ -138,17 +138,7 @@ notify_add(const char *name, struct client *c, struct session *s, | |||||||
| 	if (w != NULL) | 	if (w != NULL) | ||||||
| 		w->references++; | 		w->references++; | ||||||
|  |  | ||||||
| 	cmd_find_clear_state(&ne->fs, NULL, 0); | 	cmd_find_copy_state(&ne->fs, fs); | ||||||
| 	if (s != NULL && w != NULL) |  | ||||||
| 		cmd_find_from_session_window(&ne->fs, s, w); |  | ||||||
| 	else if (w != NULL) |  | ||||||
| 		cmd_find_from_window(&ne->fs, w); |  | ||||||
| 	else if (s != NULL && session_alive(s)) |  | ||||||
| 		cmd_find_from_session(&ne->fs, s); |  | ||||||
| 	else if (wp != NULL) |  | ||||||
| 		cmd_find_from_pane(&ne->fs, wp); |  | ||||||
| 	else |  | ||||||
| 		cmd_find_current(&ne->fs, NULL, CMD_FIND_QUIET); |  | ||||||
| 	if (ne->fs.s != NULL) | 	if (ne->fs.s != NULL) | ||||||
| 		ne->fs.s->references++; /* cmd_find_valid_state need session */ | 		ne->fs.s->references++; /* cmd_find_valid_state need session */ | ||||||
|  |  | ||||||
| @@ -170,29 +160,59 @@ notify_input(struct window_pane *wp, struct evbuffer *input) | |||||||
| void | void | ||||||
| notify_client(const char *name, struct client *c) | notify_client(const char *name, struct client *c) | ||||||
| { | { | ||||||
| 	notify_add(name, c, NULL, NULL, NULL); | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	if (c->session != NULL) | ||||||
|  | 		cmd_find_from_session(&fs, c->session); | ||||||
|  | 	else | ||||||
|  | 		cmd_find_current(&fs, NULL, CMD_FIND_QUIET); | ||||||
|  | 	notify_add(name, &fs, c, NULL, NULL, NULL); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| notify_session(const char *name, struct session *s) | notify_session(const char *name, struct session *s) | ||||||
| { | { | ||||||
| 	notify_add(name, NULL, s, NULL, NULL); | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	if (session_alive(s)) | ||||||
|  | 		cmd_find_from_session(&fs, s); | ||||||
|  | 	else | ||||||
|  | 		cmd_find_current(&fs, NULL, CMD_FIND_QUIET); | ||||||
|  | 	notify_add(name, &fs, NULL, s, NULL, NULL); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | void | ||||||
|  | notify_winlink(const char *name, struct session *s, struct winlink *wl) | ||||||
|  | { | ||||||
|  | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	cmd_find_from_winlink(&fs, s, wl); | ||||||
|  | 	notify_add(name, &fs, NULL, s, wl->window, NULL); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| notify_session_window(const char *name, struct session *s, struct window *w) | notify_session_window(const char *name, struct session *s, struct window *w) | ||||||
| { | { | ||||||
| 	notify_add(name, NULL, s, w, NULL); | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	cmd_find_from_session_window(&fs, s, w); | ||||||
|  | 	notify_add(name, &fs, NULL, s, w, NULL); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| notify_window(const char *name, struct window *w) | notify_window(const char *name, struct window *w) | ||||||
| { | { | ||||||
| 	notify_add(name, NULL, NULL, w, NULL); | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	cmd_find_from_window(&fs, w); | ||||||
|  | 	notify_add(name, &fs, NULL, NULL, w, NULL); | ||||||
| } | } | ||||||
|  |  | ||||||
| void | void | ||||||
| notify_pane(const char *name, struct window_pane *wp) | notify_pane(const char *name, struct window_pane *wp) | ||||||
| { | { | ||||||
| 	notify_add(name, NULL, NULL, NULL, wp); | 	struct cmd_find_state	fs; | ||||||
|  |  | ||||||
|  | 	cmd_find_from_pane(&fs, wp); | ||||||
|  | 	notify_add(name, &fs, NULL, NULL, NULL, wp); | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								tmux.h
									
									
									
									
									
								
							| @@ -1585,6 +1585,7 @@ enum mode_key_cmd mode_key_lookup(struct mode_key_data *, key_code); | |||||||
| void	notify_input(struct window_pane *, struct evbuffer *); | void	notify_input(struct window_pane *, struct evbuffer *); | ||||||
| void	notify_client(const char *, struct client *); | void	notify_client(const char *, struct client *); | ||||||
| void	notify_session(const char *, struct session *); | void	notify_session(const char *, struct session *); | ||||||
|  | void	notify_winlink(const char *, struct session *, struct winlink *); | ||||||
| void	notify_session_window(const char *, struct session *, struct window *); | void	notify_session_window(const char *, struct session *, struct window *); | ||||||
| void	notify_window(const char *, struct window *); | void	notify_window(const char *, struct window *); | ||||||
| void	notify_pane(const char *, struct window_pane *); | void	notify_pane(const char *, struct window_pane *); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 nicm
					nicm