Hi, Here's V3 of hook support for commands. Compared to V2, I've done the following:
* Grouped together header includes to remove blank lines (I hope :P); * Removed extraneous tab characters from prepare() for struct assignments; * Made error messages not use capitalisation on first word or add a full-stop at the end of the sentence. * Removed the on-bell hook for now -- will add something more generic later on pending further discussion (I've my own ideas/questions about this point anyway.) * Added a man page entry for all of this. I don't think I've missed converting a command to use hooks, but if I have, do shout. I'm keen to get as much testing on this either way -- whether that's through independant testing, or merging this to OpenBSD to see if it beds in well, or not. Things to watch out for will be existing commands still working the same way they used to without hooks defined. Due to the changes I've had to make to support hooks, this has lead to changes in how commands run, and whilst I've made every effort not to bugger it up, I have a wonderful history of doing just that -- so please, test away. :) Any questions, do please ask. Kindly, -- Thomas Adam Thomas Adam (3): Define hooks infrasructure Convert commands to use prepare() Add man page entry for hooks Makefile.am | 3 ++ cmd-attach-session.c | 14 ++++++- cmd-bind-key.c | 3 +- cmd-break-pane.c | 17 +++++++- cmd-capture-pane.c | 15 ++++++- cmd-choose-buffer.c | 17 ++++++-- cmd-choose-client.c | 17 ++++++-- cmd-choose-list.c | 17 ++++++-- cmd-choose-tree.c | 26 +++++++++--- cmd-clear-history.c | 17 ++++++-- cmd-clock-mode.c | 17 ++++++-- cmd-command-prompt.c | 14 ++++++- cmd-confirm-before.c | 14 ++++++- cmd-copy-mode.c | 15 +++++-- cmd-delete-buffer.c | 3 +- cmd-detach-client.c | 24 ++++++++--- cmd-display-message.c | 42 +++++++++++++------ cmd-display-panes.c | 17 ++++++-- cmd-find-window.c | 17 ++++++-- cmd-has-session.c | 15 +++++-- cmd-if-shell.c | 34 ++++++++++----- cmd-join-pane.c | 27 +++++++++--- cmd-kill-pane.c | 17 ++++++-- cmd-kill-server.c | 3 +- cmd-kill-session.c | 14 ++++++- cmd-kill-window.c | 17 +++++++- cmd-link-window.c | 23 +++++++++-- cmd-list-buffers.c | 3 +- cmd-list-clients.c | 21 ++++++---- cmd-list-commands.c | 3 +- cmd-list-keys.c | 3 +- cmd-list-panes.c | 24 +++++++++-- cmd-list-sessions.c | 3 +- cmd-list-windows.c | 18 ++++++-- cmd-load-buffer.c | 3 +- cmd-lock-server.c | 31 ++++++++++---- cmd-move-window.c | 28 +++++++++++-- cmd-new-session.c | 4 +- cmd-new-window.c | 24 +++++++++-- cmd-paste-buffer.c | 18 ++++++-- cmd-pipe-pane.c | 16 +++++++- cmd-queue.c | 45 +++++++++++++++++++- cmd-refresh-client.c | 14 ++++++- cmd-rename-session.c | 14 ++++++- cmd-rename-window.c | 16 ++++++-- cmd-resize-pane.c | 16 +++++++- cmd-respawn-pane.c | 17 +++++++- cmd-respawn-window.c | 16 +++++++- cmd-rotate-window.c | 15 +++++-- cmd-run-shell.c | 19 ++++++++- cmd-save-buffer.c | 6 ++- cmd-select-layout.c | 20 +++++++-- cmd-select-pane.c | 28 ++++++++++--- cmd-select-window.c | 46 +++++++++++++++++---- cmd-send-keys.c | 20 +++++++-- cmd-server-info.c | 3 +- cmd-set-buffer.c | 3 +- cmd-set-environment.c | 14 ++++++- cmd-set-hook.c | 98 ++++++++++++++++++++++++++++++++++++++++++++ cmd-set-option.c | 6 ++- cmd-show-environment.c | 14 ++++++- cmd-show-hooks.c | 69 +++++++++++++++++++++++++++++++ cmd-show-messages.c | 17 ++++++-- cmd-show-options.c | 28 ++++++++++--- cmd-source-file.c | 3 +- cmd-split-window.c | 17 +++++++- cmd-start-server.c | 3 +- cmd-suspend-client.c | 17 ++++++-- cmd-swap-pane.c | 17 ++++++-- cmd-swap-window.c | 25 ++++++++---- cmd-switch-client.c | 20 ++++++--- cmd-unbind-key.c | 3 +- cmd-unlink-window.c | 17 ++++++-- cmd-wait-for.c | 3 +- cmd.c | 16 ++++++++ hooks.c | 109 +++++++++++++++++++++++++++++++++++++++++++++++++ session.c | 2 + tmux.1 | 79 +++++++++++++++++++++++++++++++++++ tmux.c | 2 + tmux.h | 81 ++++++++++++++++++++++++++++-------- 80 files changed, 1376 insertions(+), 240 deletions(-) create mode 100644 cmd-set-hook.c create mode 100644 cmd-show-hooks.c create mode 100644 hooks.c -- 1.7.11.4 ------------------------------------------------------------------------------ Precog is a next-generation analytics platform capable of advanced analytics on semi-structured data. The platform includes APIs for building apps and a phenomenal toolset for data science. Developers can use our toolset for easy data analysis & visualization. Get a free account! http://www2.precog.com/precogplatform/slashdotnewsletter _______________________________________________ tmux-users mailing list tmux-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/tmux-users