summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxime Coste <frrrwww@gmail.com>2014-06-16 19:49:58 +0100
committerMaxime Coste <frrrwww@gmail.com>2014-06-16 19:50:20 +0100
commit3ef5bf53d5747c2369ff5124e9bdba95d7a72dee (patch)
tree942212c910b0600d80930a6b83d8a99c575b8455
parente78fd2d23523b78c9629b0e8a13a1c338225fd6b (diff)
Add BufCloseFifo hook and use that to remove fifo directories
-rw-r--r--README.asciidoc8
-rw-r--r--rc/git-tools.kak2
-rw-r--r--rc/grep.kak2
-rw-r--r--rc/make.kak2
-rw-r--r--src/buffer_utils.cc2
5 files changed, 11 insertions, 5 deletions
diff --git a/README.asciidoc b/README.asciidoc
index add67f68..c88d5d52 100644
--- a/README.asciidoc
+++ b/README.asciidoc
@@ -677,10 +677,14 @@ existing hooks are:
* +BufOpen+: A buffer for an existing file has been created, filename is
used for filtering
* +BufCreate+: A buffer has been created, filename is used for filtering
- * +BufWritePre+: Executre just before a buffer is written, filename is
+ * +BufWritePre+: Executed just before a buffer is written, filename is
used for filtering.
- * +BufWritePost+: Executre just after a buffer is written, filename is
+ * +BufWritePost+: Executed just after a buffer is written, filename is
used for filtering.
+ * +BufClose+: Executed when a buffer is deleted, while it is still valid.
+ * +BufCloseFifo+: Executed when a fifo buffer closes its fifo file descriptor
+ either because the buffer is being deleted, or because the writing
+ end has been closed.
* +RuntimeError+: an error was encountered while executing an user command
the error message is used for filtering
* +KakBegin+: Kakoune started, this is called just after reading the user
diff --git a/rc/git-tools.kak b/rc/git-tools.kak
index b53238ed..a34022c7 100644
--- a/rc/git-tools.kak
+++ b/rc/git-tools.kak
@@ -39,7 +39,7 @@ def -shell-params \
echo "eval -try-client '$kak_opt_docsclient' %{
edit! -fifo ${output} *git*
set buffer filetype '${filetype}'
- hook buffer BufClose .* %{ nop %sh{ rm -r $(dirname ${output}) } }
+ hook buffer BufCloseFifo .* %{ nop %sh{ rm -r $(dirname ${output}) } }
}"
}
diff --git a/rc/grep.kak b/rc/grep.kak
index 728dce76..8029e956 100644
--- a/rc/grep.kak
+++ b/rc/grep.kak
@@ -14,7 +14,7 @@ def -shell-params -file-completion \
echo "eval -try-client '$kak_opt_toolsclient' %{
edit! -fifo ${output} -scroll *grep*
set buffer filetype grep
- hook buffer BufClose .* %{ nop %sh{ rm -r $(dirname ${output}) } }
+ hook buffer BufCloseFifo .* %{ nop %sh{ rm -r $(dirname ${output}) } }
}"
}}
diff --git a/rc/make.kak b/rc/make.kak
index c020a4e0..213328cf 100644
--- a/rc/make.kak
+++ b/rc/make.kak
@@ -9,7 +9,7 @@ def -shell-params make %{ %sh{
echo "eval -try-client '$kak_opt_toolsclient' %{
edit! -fifo ${output} -scroll *make*
set buffer filetype make
- hook buffer BufClose .* %{ nop %sh{ rm -r $(dirname ${output}) } }
+ hook buffer BufCloseFifo .* %{ nop %sh{ rm -r $(dirname ${output}) } }
}"
}}
diff --git a/src/buffer_utils.cc b/src/buffer_utils.cc
index f05db777..5f8cb9fd 100644
--- a/src/buffer_utils.cc
+++ b/src/buffer_utils.cc
@@ -64,6 +64,7 @@ Buffer* create_fifo_buffer(String name, int fd, bool scroll)
buffer->flags() &= ~Buffer::Flags::Fifo;
buffer->flags() &= ~Buffer::Flags::NoUndo;
close(fifo);
+ buffer->run_hook_in_own_context("BufCloseFifo", "");
delete &watcher;
}
});
@@ -74,6 +75,7 @@ Buffer* create_fifo_buffer(String name, int fd, bool scroll)
if (buffer->flags() & Buffer::Flags::Fifo)
{
close(watcher->fd());
+ buffer->run_hook_in_own_context("BufCloseFifo", "");
delete watcher;
}
});