Compare commits
2 Commits
ef0cbe9a59
...
49d9980662
Author | SHA1 | Date | |
---|---|---|---|
49d9980662 | |||
2f7fbcdc5d |
@ -196,7 +196,7 @@ add_custom_target (clang-tidy
|
|||||||
# Installation
|
# Installation
|
||||||
install (TARGETS xB xC xD DESTINATION ${CMAKE_INSTALL_BINDIR})
|
install (TARGETS xB xC xD DESTINATION ${CMAKE_INSTALL_BINDIR})
|
||||||
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})
|
||||||
# XXX: our defaults for XDG_DATA_DIRS expect /usr/local/shore or /usr/share
|
# XXX: our defaults for XDG_DATA_DIRS expect /usr/local/share or /usr/share
|
||||||
install (DIRECTORY plugins/xB/
|
install (DIRECTORY plugins/xB/
|
||||||
DESTINATION ${CMAKE_INSTALL_DATADIR}/xB/plugins USE_SOURCE_PERMISSIONS)
|
DESTINATION ${CMAKE_INSTALL_DATADIR}/xB/plugins USE_SOURCE_PERMISSIONS)
|
||||||
install (DIRECTORY plugins/xC/
|
install (DIRECTORY plugins/xC/
|
||||||
|
2
NEWS
2
NEWS
@ -1,5 +1,7 @@
|
|||||||
Unreleased
|
Unreleased
|
||||||
|
|
||||||
|
* xC: improved backlog helper integration capabilities
|
||||||
|
|
||||||
* xC: made it show WALLOPS messages, as PRIVMSG for the server buffer
|
* xC: made it show WALLOPS messages, as PRIVMSG for the server buffer
|
||||||
|
|
||||||
* xD: implemented WALLOPS, choosing to make it target even non-operators
|
* xD: implemented WALLOPS, choosing to make it target even non-operators
|
||||||
|
2
liberty
2
liberty
@ -1 +1 @@
|
|||||||
Subproject commit 1b9d89cab3bb1df73c58ccd8528eafd21a8c6e40
|
Subproject commit f545be725df9195a5b5897ad95a0220acf10f148
|
31
xC.c
31
xC.c
@ -2480,9 +2480,11 @@ static struct config_schema g_config_behaviour[] =
|
|||||||
.default_ = "1000",
|
.default_ = "1000",
|
||||||
.on_change = on_config_backlog_limit_change },
|
.on_change = on_config_backlog_limit_change },
|
||||||
{ .name = "backlog_helper",
|
{ .name = "backlog_helper",
|
||||||
.comment = "Shell command to display a buffer's history",
|
.comment = "Shell command to page buffer history (args: name [path])",
|
||||||
.type = CONFIG_ITEM_STRING,
|
.type = CONFIG_ITEM_STRING,
|
||||||
.default_ = "\"LESSSECURE=1 less -M -R +Gb\"" },
|
.default_ = "`name=$(echo \"$1\" | sed 's/[%?:.]/\\\\&/g'); "
|
||||||
|
"prompt='?f%F:'$name'. ?db- page %db?L of %D. .(?eEND:?PB%PB\\%..)'; "
|
||||||
|
"LESSSECURE=1 less +Gb -Ps\"$prompt\" \"${2:--R}\"`" },
|
||||||
{ .name = "backlog_helper_strip_formatting",
|
{ .name = "backlog_helper_strip_formatting",
|
||||||
.comment = "Strip formatting from backlog helper input",
|
.comment = "Strip formatting from backlog helper input",
|
||||||
.type = CONFIG_ITEM_BOOLEAN,
|
.type = CONFIG_ITEM_BOOLEAN,
|
||||||
@ -13366,15 +13368,19 @@ input_editor_cleanup (struct app_context *ctx)
|
|||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
||||||
static void
|
static void
|
||||||
launch_backlog_helper (struct app_context *ctx, int backlog_fd)
|
launch_backlog_helper (struct app_context *ctx, int backlog_fd,
|
||||||
|
const char *name, const char *path)
|
||||||
{
|
{
|
||||||
hard_assert (!ctx->running_backlog_helper);
|
hard_assert (!ctx->running_backlog_helper);
|
||||||
switch (spawn_helper_child (ctx))
|
switch (spawn_helper_child (ctx))
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
dup2 (backlog_fd, STDIN_FILENO);
|
dup2 (backlog_fd, STDIN_FILENO);
|
||||||
execl ("/bin/sh", "/bin/sh", "-c", get_config_string
|
char *localized_name =
|
||||||
(ctx->config.root, "behaviour.backlog_helper"), NULL);
|
iconv_xstrdup (ctx->term_from_utf8, (char *) name, -1, NULL);
|
||||||
|
execl ("/bin/sh", "/bin/sh", "-c",
|
||||||
|
get_config_string (ctx->config.root, "behaviour.backlog_helper"),
|
||||||
|
PROGRAM_NAME, localized_name, path, NULL);
|
||||||
print_error ("%s: %s",
|
print_error ("%s: %s",
|
||||||
"Failed to launch backlog helper", strerror (errno));
|
"Failed to launch backlog helper", strerror (errno));
|
||||||
_exit (EXIT_FAILURE);
|
_exit (EXIT_FAILURE);
|
||||||
@ -13419,7 +13425,7 @@ display_backlog (struct app_context *ctx, int flush_opts)
|
|||||||
|
|
||||||
rewind (backlog);
|
rewind (backlog);
|
||||||
set_cloexec (fileno (backlog));
|
set_cloexec (fileno (backlog));
|
||||||
launch_backlog_helper (ctx, fileno (backlog));
|
launch_backlog_helper (ctx, fileno (backlog), buffer->name, NULL);
|
||||||
fclose (backlog);
|
fclose (backlog);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -13447,24 +13453,25 @@ on_display_full_log (int count, int key, void *user_data)
|
|||||||
(void) key;
|
(void) key;
|
||||||
struct app_context *ctx = user_data;
|
struct app_context *ctx = user_data;
|
||||||
|
|
||||||
char *path = buffer_get_log_path (ctx->current_buffer);
|
struct buffer *buffer = ctx->current_buffer;
|
||||||
|
char *path = buffer_get_log_path (buffer);
|
||||||
FILE *full_log = fopen (path, "rb");
|
FILE *full_log = fopen (path, "rb");
|
||||||
free (path);
|
|
||||||
|
|
||||||
if (!full_log)
|
if (!full_log)
|
||||||
{
|
{
|
||||||
log_global_error (ctx, "Failed to open log file for #s: #l",
|
log_global_error (ctx, "Failed to open log file for #s: #l",
|
||||||
ctx->current_buffer->name, strerror (errno));
|
ctx->current_buffer->name, strerror (errno));
|
||||||
|
free (path);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ctx->current_buffer->log_file)
|
if (buffer->log_file)
|
||||||
// The regular flush will log any error eventually
|
// The regular flush will log any error eventually
|
||||||
(void) fflush (ctx->current_buffer->log_file);
|
(void) fflush (buffer->log_file);
|
||||||
|
|
||||||
set_cloexec (fileno (full_log));
|
set_cloexec (fileno (full_log));
|
||||||
launch_backlog_helper (ctx, fileno (full_log));
|
launch_backlog_helper (ctx, fileno (full_log), buffer->name, path);
|
||||||
fclose (full_log);
|
fclose (full_log);
|
||||||
|
free (path);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user