mirror of
https://github.com/irssi/irssi.git
synced 2026-08-17 15:42:26 +02:00
add perl code for textbuffer-formats
- compatibility shim for new line - make format accessible from perl - fix perl line IDs being mixed up due to wrapper
This commit is contained in:
parent
6b93d6e338
commit
57fb173130
7 changed files with 170 additions and 17 deletions
|
|
@ -1,5 +1,7 @@
|
|||
#define PERL_NO_GET_CONTEXT
|
||||
#include "module.h"
|
||||
#include "wrapper_buffer_line.h"
|
||||
#include <irssi/src/fe-text/textbuffer-formats.h>
|
||||
|
||||
MODULE = Irssi::TextUI::TextBuffer PACKAGE = Irssi
|
||||
PROTOTYPES: ENABLE
|
||||
|
|
@ -12,7 +14,7 @@ Irssi::TextUI::Line
|
|||
textbuffer_line_prev(line)
|
||||
Irssi::TextUI::Line line
|
||||
CODE:
|
||||
RETVAL = line->prev;
|
||||
RETVAL = perl_wrap_buffer_line(line->buffer, line->line->prev);
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
|
|
@ -20,13 +22,12 @@ Irssi::TextUI::Line
|
|||
textbuffer_line_next(line)
|
||||
Irssi::TextUI::Line line
|
||||
CODE:
|
||||
RETVAL = line->next;
|
||||
RETVAL = perl_wrap_buffer_line(line->buffer, line->line->next);
|
||||
OUTPUT:
|
||||
RETVAL
|
||||
|
||||
void
|
||||
textbuffer_line_get_text(buffer, line, coloring)
|
||||
Irssi::TextUI::TextBuffer buffer
|
||||
textbuffer_line_get_text(line, coloring)
|
||||
Irssi::TextUI::Line line
|
||||
int coloring
|
||||
PREINIT:
|
||||
|
|
@ -34,8 +35,36 @@ PREINIT:
|
|||
SV *result;
|
||||
PPCODE:
|
||||
str = g_string_new(NULL);
|
||||
textbuffer_line2text(buffer, line, coloring, str);
|
||||
textbuffer_line2text(line->buffer, line->line, coloring, str);
|
||||
result = new_pv(str->str);
|
||||
XPUSHs(sv_2mortal(result));
|
||||
g_string_free(str, TRUE);
|
||||
|
||||
void
|
||||
textbuffer_line_get_format(line)
|
||||
Irssi::TextUI::Line line
|
||||
PREINIT:
|
||||
HV *hv;
|
||||
AV *av;
|
||||
LINE_REC *l;
|
||||
TEXT_BUFFER_FORMAT_REC *f;
|
||||
int i;
|
||||
PPCODE:
|
||||
hv = newHV();
|
||||
l = line->line;
|
||||
if (l->info.format != NULL) {
|
||||
f = l->info.format;
|
||||
(void) hv_store(hv, "module", 6, new_pv(f->module), 0);
|
||||
(void) hv_store(hv, "format", 6, new_pv(f->format), 0);
|
||||
(void) hv_store(hv, "server_tag", 10, new_pv(f->server_tag), 0);
|
||||
(void) hv_store(hv, "target", 6, new_pv(f->target), 0);
|
||||
(void) hv_store(hv, "nick", 4, new_pv(f->nick), 0);
|
||||
av = newAV();
|
||||
for (i = 0; i < f->nargs; i++) {
|
||||
av_push(av, new_pv(f->args[i]));
|
||||
}
|
||||
(void) hv_store(hv, "args", 4, newRV_noinc((SV *) av), 0);
|
||||
} else {
|
||||
(void) hv_store(hv, "text", 4, new_pv(l->info.text), 0);
|
||||
}
|
||||
XPUSHs(sv_2mortal(newRV_noinc((SV *) hv)));
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue