| 136 |
static SCM_DEFINE_STRING_CONST(xyzzylisp_buffer_size__NAME, "buffer-size", 11, 11); |
static SCM_DEFINE_STRING_CONST(xyzzylisp_buffer_size__NAME, "buffer-size", 11, 11); |
| 137 |
static SCM_DEFINE_SUBR(xyzzylisp_buffer_size__STUB, 0, 1, SCM_OBJ(&xyzzylisp_buffer_size__NAME), xyzzylisp_buffer_size, NULL, NULL); |
static SCM_DEFINE_SUBR(xyzzylisp_buffer_size__STUB, 0, 1, SCM_OBJ(&xyzzylisp_buffer_size__NAME), xyzzylisp_buffer_size, NULL, NULL); |
| 138 |
|
|
| 139 |
|
static ScmObj xyzzylisp_erase_buffer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 140 |
|
{ |
| 141 |
|
ScmObj buffer_scm; |
| 142 |
|
ScmObj buffer; |
| 143 |
|
ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1); |
| 144 |
|
SCM_ENTER_SUBR("erase-buffer"); |
| 145 |
|
if (Scm_Length(SCM_OPTARGS) > 1) |
| 146 |
|
Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS)); |
| 147 |
|
if (SCM_NULLP(SCM_OPTARGS)) buffer_scm = SCM_UNBOUND; |
| 148 |
|
else { |
| 149 |
|
buffer_scm = SCM_CAR(SCM_OPTARGS); |
| 150 |
|
SCM_OPTARGS = SCM_CDR(SCM_OPTARGS); |
| 151 |
|
} |
| 152 |
|
buffer = (buffer_scm); |
| 153 |
|
{ |
| 154 |
|
if(buffer == SCM_UNBOUND) |
| 155 |
|
Shiki_erase_buffer(Shiki_CURRENT_TEXT_BUFFER); |
| 156 |
|
else if(SHIKI_BUFFER_P(buffer)) |
| 157 |
|
Shiki_erase_buffer(SHIKI_BUFFER_UNBOX(buffer)); |
| 158 |
|
else |
| 159 |
|
Scm_Error("buffer required, but got %S", buffer); |
| 160 |
|
SCM_RETURN(SCM_UNDEFINED); |
| 161 |
|
} |
| 162 |
|
} |
| 163 |
|
|
| 164 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_erase_buffer__NAME, "erase-buffer", 12, 12); |
| 165 |
|
static SCM_DEFINE_SUBR(xyzzylisp_erase_buffer__STUB, 0, 1, SCM_OBJ(&xyzzylisp_erase_buffer__NAME), xyzzylisp_erase_buffer, NULL, NULL); |
| 166 |
|
|
| 167 |
|
static ScmObj xyzzylisp_delete_buffer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 168 |
|
{ |
| 169 |
|
ScmObj buffer_scm; |
| 170 |
|
ScmObj buffer; |
| 171 |
|
ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1); |
| 172 |
|
SCM_ENTER_SUBR("delete-buffer"); |
| 173 |
|
if (Scm_Length(SCM_OPTARGS) > 1) |
| 174 |
|
Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS)); |
| 175 |
|
if (SCM_NULLP(SCM_OPTARGS)) buffer_scm = SCM_UNBOUND; |
| 176 |
|
else { |
| 177 |
|
buffer_scm = SCM_CAR(SCM_OPTARGS); |
| 178 |
|
SCM_OPTARGS = SCM_CDR(SCM_OPTARGS); |
| 179 |
|
} |
| 180 |
|
buffer = (buffer_scm); |
| 181 |
|
{ |
| 182 |
|
if(buffer == SCM_UNBOUND) |
| 183 |
|
Shiki_delete_buffer(Shiki_CURRENT_TEXT_BUFFER); |
| 184 |
|
else if(SHIKI_BUFFER_P(buffer)) |
| 185 |
|
Shiki_delete_buffer(SHIKI_BUFFER_UNBOX(buffer)); |
| 186 |
|
else |
| 187 |
|
Scm_Error("buffer required, but got %S", buffer); |
| 188 |
|
SCM_RETURN(SCM_UNDEFINED); |
| 189 |
|
} |
| 190 |
|
} |
| 191 |
|
|
| 192 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_delete_buffer__NAME, "delete-buffer", 13, 13); |
| 193 |
|
static SCM_DEFINE_SUBR(xyzzylisp_delete_buffer__STUB, 0, 1, SCM_OBJ(&xyzzylisp_delete_buffer__NAME), xyzzylisp_delete_buffer, NULL, NULL); |
| 194 |
|
|
| 195 |
|
static ScmObj xyzzylisp_find_buffer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 196 |
|
{ |
| 197 |
|
ScmObj buffer_name_scm; |
| 198 |
|
const char * buffer_name; |
| 199 |
|
SCM_ENTER_SUBR("find-buffer"); |
| 200 |
|
buffer_name_scm = SCM_ARGREF(0); |
| 201 |
|
if (!SCM_STRINGP(buffer_name_scm)) Scm_Error("const C string required, but got %S", buffer_name_scm); |
| 202 |
|
buffer_name = SCM_STRING_CONST_CSTRING(buffer_name_scm); |
| 203 |
|
{ |
| 204 |
|
{ |
| 205 |
|
GtkTextBuffer* SCM_RESULT; |
| 206 |
|
SCM_RESULT = Shiki_find_buffer(buffer_name); |
| 207 |
|
SCM_RETURN(SCM_MAKE_MAYBE(SHIKI_BUFFER_BOX, SCM_RESULT)); |
| 208 |
|
} |
| 209 |
|
} |
| 210 |
|
} |
| 211 |
|
|
| 212 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_find_buffer__NAME, "find-buffer", 11, 11); |
| 213 |
|
static SCM_DEFINE_SUBR(xyzzylisp_find_buffer__STUB, 1, 0, SCM_OBJ(&xyzzylisp_find_buffer__NAME), xyzzylisp_find_buffer, NULL, NULL); |
| 214 |
|
|
| 215 |
|
static ScmObj xyzzylisp_new_buffer_create(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 216 |
|
{ |
| 217 |
|
ScmObj buffer_name_scm; |
| 218 |
|
const char * buffer_name; |
| 219 |
|
SCM_ENTER_SUBR("new-buffer-create"); |
| 220 |
|
buffer_name_scm = SCM_ARGREF(0); |
| 221 |
|
if (!SCM_STRINGP(buffer_name_scm)) Scm_Error("const C string required, but got %S", buffer_name_scm); |
| 222 |
|
buffer_name = SCM_STRING_CONST_CSTRING(buffer_name_scm); |
| 223 |
|
{ |
| 224 |
|
{ |
| 225 |
|
GtkTextBuffer* SCM_RESULT; |
| 226 |
|
SCM_RESULT = (Shiki_new_buffer_create(g_strdup(buffer_name))); |
| 227 |
|
SCM_RETURN(SHIKI_BUFFER_BOX(SCM_RESULT)); |
| 228 |
|
} |
| 229 |
|
} |
| 230 |
|
} |
| 231 |
|
|
| 232 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_new_buffer_create__NAME, "new-buffer-create", 17, 17); |
| 233 |
|
static SCM_DEFINE_SUBR(xyzzylisp_new_buffer_create__STUB, 1, 0, SCM_OBJ(&xyzzylisp_new_buffer_create__NAME), xyzzylisp_new_buffer_create, NULL, NULL); |
| 234 |
|
|
| 235 |
|
static ScmObj xyzzylisp_count_buffers(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 236 |
|
{ |
| 237 |
|
SCM_ENTER_SUBR("count-buffers"); |
| 238 |
|
{ |
| 239 |
|
{ |
| 240 |
|
int SCM_RESULT; |
| 241 |
|
SCM_RESULT = (g_list_length(Shiki_EDITOR_BUFFER_LIST)); |
| 242 |
|
SCM_RETURN(Scm_MakeInteger(SCM_RESULT)); |
| 243 |
|
} |
| 244 |
|
} |
| 245 |
|
} |
| 246 |
|
|
| 247 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_count_buffers__NAME, "count-buffers", 13, 13); |
| 248 |
|
static SCM_DEFINE_SUBR(xyzzylisp_count_buffers__STUB, 0, 0, SCM_OBJ(&xyzzylisp_count_buffers__NAME), xyzzylisp_count_buffers, NULL, NULL); |
| 249 |
|
|
| 250 |
static ScmObj xyzzylisp_get_previous_buffer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
static ScmObj xyzzylisp_get_previous_buffer(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 251 |
{ |
{ |
| 252 |
ScmObj buffer_scm; |
ScmObj buffer_scm; |
| 593 |
static SCM_DEFINE_STRING_CONST(xyzzylisp_goto_eol__NAME, "goto-eol", 8, 8); |
static SCM_DEFINE_STRING_CONST(xyzzylisp_goto_eol__NAME, "goto-eol", 8, 8); |
| 594 |
static SCM_DEFINE_SUBR(xyzzylisp_goto_eol__STUB, 0, 0, SCM_OBJ(&xyzzylisp_goto_eol__NAME), xyzzylisp_goto_eol, NULL, NULL); |
static SCM_DEFINE_SUBR(xyzzylisp_goto_eol__STUB, 0, 0, SCM_OBJ(&xyzzylisp_goto_eol__NAME), xyzzylisp_goto_eol, NULL, NULL); |
| 595 |
|
|
| 596 |
|
static ScmObj xyzzylisp_forward_line(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 597 |
|
{ |
| 598 |
|
ScmObj count_scm; |
| 599 |
|
int count; |
| 600 |
|
ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1); |
| 601 |
|
SCM_ENTER_SUBR("forward-line"); |
| 602 |
|
if (Scm_Length(SCM_OPTARGS) > 1) |
| 603 |
|
Scm_Error("too many arguments: up to 1 is expected, %d given.", Scm_Length(SCM_OPTARGS)); |
| 604 |
|
if (SCM_NULLP(SCM_OPTARGS)) count_scm = Scm_MakeInteger(1); |
| 605 |
|
else { |
| 606 |
|
count_scm = SCM_CAR(SCM_OPTARGS); |
| 607 |
|
SCM_OPTARGS = SCM_CDR(SCM_OPTARGS); |
| 608 |
|
} |
| 609 |
|
if (!SCM_EXACTP(count_scm)) Scm_Error("C integer required, but got %S", count_scm); |
| 610 |
|
count = Scm_GetInteger(count_scm); |
| 611 |
|
{ |
| 612 |
|
Shiki_forward_line(count); |
| 613 |
|
SCM_RETURN(SCM_UNDEFINED); |
| 614 |
|
} |
| 615 |
|
} |
| 616 |
|
|
| 617 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_forward_line__NAME, "forward-line", 12, 12); |
| 618 |
|
static SCM_DEFINE_SUBR(xyzzylisp_forward_line__STUB, 0, 1, SCM_OBJ(&xyzzylisp_forward_line__NAME), xyzzylisp_forward_line, NULL, NULL); |
| 619 |
|
|
| 620 |
|
static SCM_DEFINE_STRING_CONST(KEYARG_title__NAME, "title", 5, 5); |
| 621 |
|
static ScmObj KEYARG_title = SCM_UNBOUND; |
| 622 |
|
static ScmObj xyzzylisp_file_name_dialog(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 623 |
|
{ |
| 624 |
|
ScmObj title_scm; |
| 625 |
|
const char * title; |
| 626 |
|
ScmObj SCM_OPTARGS = SCM_ARGREF(SCM_ARGCNT-1); |
| 627 |
|
SCM_ENTER_SUBR("file-name-dialog"); |
| 628 |
|
title_scm = Scm_GetKeyword(SCM_OBJ(KEYARG_title), SCM_OPTARGS, SCM_MAKE_STR("ファイルを開く")); |
| 629 |
|
if (!SCM_STRINGP(title_scm)) Scm_Error("const C string required, but got %S", title_scm); |
| 630 |
|
title = SCM_STRING_CONST_CSTRING(title_scm); |
| 631 |
|
{ |
| 632 |
|
{ |
| 633 |
|
const char * SCM_RESULT; |
| 634 |
|
SCM_RESULT = Shiki_file_name_dialog(title); |
| 635 |
|
SCM_RETURN(SCM_MAKE_MAYBE(SCM_MAKE_STR_COPYING, SCM_RESULT)); |
| 636 |
|
} |
| 637 |
|
} |
| 638 |
|
} |
| 639 |
|
|
| 640 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_file_name_dialog__NAME, "file-name-dialog", 16, 16); |
| 641 |
|
static SCM_DEFINE_SUBR(xyzzylisp_file_name_dialog__STUB, 0, 1, SCM_OBJ(&xyzzylisp_file_name_dialog__NAME), xyzzylisp_file_name_dialog, NULL, NULL); |
| 642 |
|
|
| 643 |
|
static ScmObj xyzzylisp_yes_or_no_p(ScmObj *SCM_FP, int SCM_ARGCNT, void *data_) |
| 644 |
|
{ |
| 645 |
|
ScmObj msg_scm; |
| 646 |
|
const char * msg; |
| 647 |
|
SCM_ENTER_SUBR("yes-or-no-p"); |
| 648 |
|
msg_scm = SCM_ARGREF(0); |
| 649 |
|
if (!SCM_STRINGP(msg_scm)) Scm_Error("const C string required, but got %S", msg_scm); |
| 650 |
|
msg = SCM_STRING_CONST_CSTRING(msg_scm); |
| 651 |
|
{ |
| 652 |
|
{ |
| 653 |
|
int SCM_RESULT; |
| 654 |
|
SCM_RESULT = Shiki_yes_or_no_p(msg); |
| 655 |
|
SCM_RETURN(SCM_MAKE_BOOL(SCM_RESULT)); |
| 656 |
|
} |
| 657 |
|
} |
| 658 |
|
} |
| 659 |
|
|
| 660 |
|
static SCM_DEFINE_STRING_CONST(xyzzylisp_yes_or_no_p__NAME, "yes-or-no-p", 11, 11); |
| 661 |
|
static SCM_DEFINE_SUBR(xyzzylisp_yes_or_no_p__STUB, 1, 0, SCM_OBJ(&xyzzylisp_yes_or_no_p__NAME), xyzzylisp_yes_or_no_p, NULL, NULL); |
| 662 |
|
|
| 663 |
void Scm_Init_xyzzylisp(ScmModule *module) |
void Scm_Init_xyzzylisp(ScmModule *module) |
| 664 |
{ |
{ |
| 665 |
|
|
| 668 |
SCM_DEFINE(module, "get-next-buffer", SCM_OBJ(&xyzzylisp_get_next_buffer__STUB)); |
SCM_DEFINE(module, "get-next-buffer", SCM_OBJ(&xyzzylisp_get_next_buffer__STUB)); |
| 669 |
SCM_DEFINE(module, "buffer-lines", SCM_OBJ(&xyzzylisp_buffer_lines__STUB)); |
SCM_DEFINE(module, "buffer-lines", SCM_OBJ(&xyzzylisp_buffer_lines__STUB)); |
| 670 |
SCM_DEFINE(module, "buffer-size", SCM_OBJ(&xyzzylisp_buffer_size__STUB)); |
SCM_DEFINE(module, "buffer-size", SCM_OBJ(&xyzzylisp_buffer_size__STUB)); |
| 671 |
|
SCM_DEFINE(module, "erase-buffer", SCM_OBJ(&xyzzylisp_erase_buffer__STUB)); |
| 672 |
|
SCM_DEFINE(module, "delete-buffer", SCM_OBJ(&xyzzylisp_delete_buffer__STUB)); |
| 673 |
|
SCM_DEFINE(module, "find-buffer", SCM_OBJ(&xyzzylisp_find_buffer__STUB)); |
| 674 |
|
SCM_DEFINE(module, "new-buffer-create", SCM_OBJ(&xyzzylisp_new_buffer_create__STUB)); |
| 675 |
|
SCM_DEFINE(module, "count-buffers", SCM_OBJ(&xyzzylisp_count_buffers__STUB)); |
| 676 |
SCM_DEFINE(module, "get-previous-buffer", SCM_OBJ(&xyzzylisp_get_previous_buffer__STUB)); |
SCM_DEFINE(module, "get-previous-buffer", SCM_OBJ(&xyzzylisp_get_previous_buffer__STUB)); |
| 677 |
SCM_DEFINE(module, "buffer-list", SCM_OBJ(&xyzzylisp_buffer_list__STUB)); |
SCM_DEFINE(module, "buffer-list", SCM_OBJ(&xyzzylisp_buffer_list__STUB)); |
| 678 |
SCM_DEFINE(module, "next-buffer", SCM_OBJ(&xyzzylisp_next_buffer__STUB)); |
SCM_DEFINE(module, "next-buffer", SCM_OBJ(&xyzzylisp_next_buffer__STUB)); |
| 692 |
SCM_DEFINE(module, "goto-line", SCM_OBJ(&xyzzylisp_goto_line__STUB)); |
SCM_DEFINE(module, "goto-line", SCM_OBJ(&xyzzylisp_goto_line__STUB)); |
| 693 |
SCM_DEFINE(module, "goto-bol", SCM_OBJ(&xyzzylisp_goto_bol__STUB)); |
SCM_DEFINE(module, "goto-bol", SCM_OBJ(&xyzzylisp_goto_bol__STUB)); |
| 694 |
SCM_DEFINE(module, "goto-eol", SCM_OBJ(&xyzzylisp_goto_eol__STUB)); |
SCM_DEFINE(module, "goto-eol", SCM_OBJ(&xyzzylisp_goto_eol__STUB)); |
| 695 |
|
SCM_DEFINE(module, "forward-line", SCM_OBJ(&xyzzylisp_forward_line__STUB)); |
| 696 |
|
SCM_DEFINE(module, "file-name-dialog", SCM_OBJ(&xyzzylisp_file_name_dialog__STUB)); |
| 697 |
|
KEYARG_title = Scm_MakeKeyword(&KEYARG_title__NAME); |
| 698 |
|
SCM_DEFINE(module, "yes-or-no-p", SCM_OBJ(&xyzzylisp_yes_or_no_p__STUB)); |
| 699 |
} |
} |