| 1 |
aloha |
1.2 |
"#include \"shiki.h\"" |
| 2 |
|
|
|
| 3 |
aloha |
1.5 |
(define-type <buffer> "GtkTextBuffer*" "buffer" |
| 4 |
|
|
"SHIKI_BUFFER_P" "SHIKI_BUFFER_UNBOX" "SHIKI_BUFFER_BOX") |
| 5 |
|
|
|
| 6 |
aloha |
1.6 |
(define-cproc bufferp (buffer) |
| 7 |
|
|
(call <boolean> "SHIKI_BUFFER_P")) |
| 8 |
|
|
|
| 9 |
aloha |
1.5 |
(define-cproc selected-buffer () |
| 10 |
|
|
(body <buffer> |
| 11 |
|
|
" g_object_ref(Shiki_CURRENT_TEXT_BUFFER); |
| 12 |
|
|
SCM_RESULT = Shiki_CURRENT_TEXT_BUFFER;")) |
| 13 |
|
|
|
| 14 |
aloha |
1.6 |
(define-cproc get-next-buffer (&optional buffer) |
| 15 |
|
|
(body <buffer> |
| 16 |
|
|
" if(buffer == SCM_UNBOUND) |
| 17 |
|
|
SCM_RESULT = Shiki_get_next_buffer(Shiki_CURRENT_TEXT_BUFFER); |
| 18 |
|
|
else if(SHIKI_BUFFER_P(buffer)) |
| 19 |
|
|
SCM_RESULT = Shiki_get_next_buffer(SHIKI_BUFFER_UNBOX(buffer)); |
| 20 |
|
|
else |
| 21 |
|
|
Scm_Error(\"buffer required, but got %S\", buffer); |
| 22 |
|
|
if(SCM_RESULT) |
| 23 |
|
|
g_object_ref(SCM_RESULT);")) |
| 24 |
|
|
|
| 25 |
aloha |
1.7 |
(define-cproc buffer-lines (&optional buffer) |
| 26 |
|
|
(body <int> |
| 27 |
|
|
" if(buffer == SCM_UNBOUND) |
| 28 |
|
|
SCM_RESULT = gtk_text_buffer_get_line_count(Shiki_CURRENT_TEXT_BUFFER); |
| 29 |
|
|
else if(SHIKI_BUFFER_P(buffer)) |
| 30 |
|
|
SCM_RESULT = gtk_text_buffer_get_line_count(SHIKI_BUFFER_UNBOX(buffer)); |
| 31 |
|
|
else |
| 32 |
|
|
Scm_Error(\"buffer required, but got %S\", buffer);")) |
| 33 |
|
|
|
| 34 |
|
|
(define-cproc buffer-size (&optional buffer) |
| 35 |
|
|
(body <int> |
| 36 |
|
|
" if(buffer == SCM_UNBOUND) |
| 37 |
|
|
SCM_RESULT = gtk_text_buffer_get_char_count(Shiki_CURRENT_TEXT_BUFFER); |
| 38 |
|
|
else if(SHIKI_BUFFER_P(buffer)) |
| 39 |
|
|
SCM_RESULT = gtk_text_buffer_get_char_count(SHIKI_BUFFER_UNBOX(buffer)); |
| 40 |
|
|
else |
| 41 |
|
|
Scm_Error(\"buffer required, but got %S\", buffer);")) |
| 42 |
|
|
|
| 43 |
aloha |
1.6 |
(define-cproc get-previous-buffer (&optional buffer) |
| 44 |
|
|
(body <buffer> |
| 45 |
|
|
" if(buffer == SCM_UNBOUND) |
| 46 |
|
|
SCM_RESULT = Shiki_get_previous_buffer(Shiki_CURRENT_TEXT_BUFFER); |
| 47 |
|
|
else if(SHIKI_BUFFER_P(buffer)) |
| 48 |
|
|
SCM_RESULT = Shiki_get_previous_buffer(SHIKI_BUFFER_UNBOX(buffer)); |
| 49 |
|
|
else |
| 50 |
|
|
Scm_Error(\"buffer required, but got %S\", buffer); |
| 51 |
|
|
if(SCM_RESULT) |
| 52 |
|
|
g_object_ref(SCM_RESULT);") |
| 53 |
|
|
) |
| 54 |
|
|
|
| 55 |
|
|
(define-cproc buffer-list () |
| 56 |
|
|
(call "Shiki_buffer_list")) |
| 57 |
|
|
|
| 58 |
|
|
(define-cproc next-buffer () |
| 59 |
|
|
(body <void> "gtk_notebook_next_page(Shiki_EDITOR_NOTEBOOK);")) |
| 60 |
aloha |
1.7 |
|
| 61 |
aloha |
1.6 |
(define-cproc previous-buffer () |
| 62 |
|
|
(body <void> "gtk_notebook_prev_page(Shiki_EDITOR_NOTEBOOK);")) |
| 63 |
|
|
|
| 64 |
|
|
(define-cproc buffer-name (buffer::<buffer>) |
| 65 |
|
|
(expr <const-cstring>? "Shiki_buffer_name(buffer)")) |
| 66 |
|
|
|
| 67 |
aloha |
1.7 |
(define-cproc deleted-buffer-p (buffer::<buffer>) |
| 68 |
|
|
(expr <boolean>? "Shiki_deleted_buffer_p(buffer)")) |
| 69 |
|
|
|
| 70 |
aloha |
1.6 |
(define-cproc buffer-modified-p (&optional buffer) |
| 71 |
|
|
(body <boolean> |
| 72 |
|
|
" if(buffer == SCM_UNBOUND) |
| 73 |
|
|
SCM_RESULT = gtk_text_buffer_get_modified(Shiki_CURRENT_TEXT_BUFFER); |
| 74 |
|
|
else if(SHIKI_BUFFER_P(buffer)) |
| 75 |
|
|
SCM_RESULT = gtk_text_buffer_get_modified(SHIKI_BUFFER_UNBOX(buffer)); |
| 76 |
|
|
else |
| 77 |
|
|
Scm_Error(\"buffer required, but got %S\", buffer);")) |
| 78 |
|
|
|
| 79 |
aloha |
1.1 |
(define-cproc buffer-substring (start::<int> end::<int>) |
| 80 |
aloha |
1.3 |
(body <string>? |
| 81 |
|
|
" gchar *substr = Shiki_buffer_substring(start, end); |
| 82 |
|
|
if(substr) |
| 83 |
|
|
SCM_RESULT = SCM_STRING(SCM_MAKE_STR_COPYING(substr)); |
| 84 |
|
|
else |
| 85 |
|
|
SCM_RESULT = SCM_STRING(SCM_FALSE); |
| 86 |
|
|
g_free(substr);")) |
| 87 |
aloha |
1.5 |
|
| 88 |
aloha |
1.4 |
(define-cproc delete-region (start::<int> end::<int>)(call <void> "Shiki_delete_region")) |
| 89 |
|
|
|
| 90 |
aloha |
1.6 |
(define-cproc insert (char_or_string) |
| 91 |
aloha |
1.4 |
(body <void> |
| 92 |
|
|
"if(SCM_CHARP(char_or_string)) { |
| 93 |
|
|
gunichar u = SCM_CHAR_VALUE(char_or_string); |
| 94 |
|
|
gchar *str = g_ucs4_to_utf8(&u, 1, NULL, NULL, NULL); |
| 95 |
|
|
gtk_text_buffer_insert_at_cursor(Shiki_CURRENT_TEXT_BUFFER, str, -1); |
| 96 |
|
|
g_free(str); |
| 97 |
|
|
} else if(SCM_STRINGP(char_or_string)) |
| 98 |
aloha |
1.6 |
gtk_text_buffer_insert_at_cursor(Shiki_CURRENT_TEXT_BUFFER, SCM_STRING_CONST_CSTRING(char_or_string), -1); |
| 99 |
|
|
else |
| 100 |
|
|
Scm_Error(\"character or string required, but got %S\", char_or_string);")) |
| 101 |
aloha |
1.4 |
|
| 102 |
|
|
(define-cproc point () (call <int> "Shiki_point")) |
| 103 |
|
|
(define-cproc point-max () (call <int> "Shiki_point_max")) |
| 104 |
|
|
(define-cproc point-min () (call <int> "Shiki_point_min")) |
| 105 |
|
|
(define-cproc goto-char (offset::<int>) (call <void> "Shiki_goto_char")) |
| 106 |
|
|
(define-cproc forward-char () (call <void> "Shiki_forward_char")) |
| 107 |
|
|
(define-cproc backward-char () (call <void> "Shiki_backward_char")) |
| 108 |
|
|
(define-cproc goto-line (line::<int>) (call <void> "Shiki_goto_line")) |
| 109 |
|
|
(define-cproc goto-bol () (call <void> "Shiki_goto_bol")) |
| 110 |
|
|
(define-cproc goto-eol () (call <void> "Shiki_goto_eol")) |