6 (define-foreign-type unichar ()
9 (:simple-parser unichar))
11 (defmethod translate-from-foreign (value (type unichar))
14 (defmethod translate-to-foreign (value (type unichar))
17 (define-g-boxed-ref "GtkTextIter" text-iter
18 (:free-function gtk-text-iter-free)
19 (:alloc-function gtk-text-iter-alloc)
20 (:slots (text-iter-buffer :reader "gtk_text_iter_get_buffer" :type (g-object text-buffer))
21 (text-iter-offset :reader "gtk_text_iter_get_offset" :writer "gtk_text_iter_set_offset" :type :int)
22 (text-iter-line :reader "gtk_text_iter_get_line" :writer "gtk_text_iter_set_line" :type :int)
23 (text-iter-line-offset :reader "gtk_text_iter_get_line_offset" :writer "gtk_text_iter_set_line_offset" :type :int)
24 (text-iter-visible-line-offset :reader "gtk_text_iter_get_visible_line_offset" :writer "gtk_text_iter_set_visible_line_offset" :type :int)
25 (text-iter-char :reader "gtk_text_iter_get_char" :type unichar)
26 (text-iter-pixbuf :reader "gtk_text_iter_get_pixbuf" :type (g-object pixbuf))
27 (text-iter-marks :reader "gtk_text_iter_get_marks" :type (gslist (g-object text-mark) :free-from-foreign t))
28 (text-iter-child-anchor :reader "gtk_text_iter_get_child_anchor" :type (g-object text-child-anchor))
29 (text-iter-tags :reader "gtk_text_iter_get_tags" :type (gslist (g-object text-tag) :free-from-foreign t))
30 (text-iter-chars-in-line :reader "gtk_text_iter_get_chars_in_line" :type :int)
31 (text-iter-language :reader "gtk_text_iter_get_language" :type :pointer)
32 (text-iter-is-end :reader "gtk_text_iter_is_end" :type :boolean)
33 (text-iter-is-start :reader "gtk_text_iter_is_start" :type :boolean)
34 (text-iter-can-insert :reader "gtk_text_iter_can_insert" :type :boolean)
35 (text-iter-starts-word :reader "gtk_text_iter_starts_word" :type :boolean)
36 (text-iter-ends-word :reader "gtk_text_iter_ends_word" :type :boolean)
37 (text-iter-inside-word :reader "gtk_text_iter_inside_word" :type :boolean)
38 (text-iter-starts-line :reader "gtk_text_iter_starts_line" :type :boolean)
39 (text-iter-ends-line :reader "gtk_text_iter_ends_line" :type :boolean)
40 (text-iter-starts-sentence :reader "gtk_text_iter_starts_sentence" :type :boolean)
41 (text-iter-ends-sentence :reader "gtk_text_iter_ends_sentence" :type :boolean)
42 (text-iter-inside-sentence :reader "gtk_text_iter_inside_sentence" :type :boolean)
43 (text-iter-is-cursor-position :reader "gtk_text_iter_is_cursor_position" :type :boolean)
45 (export '(text-iter text-iter-offset text-iter-line text-iter-line-offset text-iter-visible-line-offset text-iter-char text-iter-pixbuf text-iter-marks text-iter-toggled-tags text-iter-child-anchor text-iter-tags text-iter-chars-in-line text-iter-language))
47 (defcstruct %text-iter
63 (defcfun gtk-text-iter-copy :pointer
66 (defcfun gtk-text-iter-free :void
69 (defun gtk-text-iter-alloc ()
70 (with-foreign-object (iter '%text-iter)
71 (gtk-text-iter-copy iter)))
73 (defcfun (text-iter-slice "gtk_text_iter_get_slice") (:string :free-from-foreign t)
74 (start (g-boxed-ref text-iter))
75 (end (g-boxed-ref text-iter)))
77 (export 'text-iter-slice)
79 (defcfun (text-iter-text "gtk_text_iter_get_text") (:string :free-from-foreign t)
80 (start (g-boxed-ref text-iter))
81 (end (g-boxed-ref text-iter)))
83 (export 'text-iter-text)
85 (defcfun (text-iter-visible-slice "gtk_text_iter_get_visible_slice") (:string :free-from-foreign t)
86 (start (g-boxed-ref text-iter))
87 (end (g-boxed-ref text-iter)))
89 (export 'text-iter-visible-slice)
91 (defcfun (text-iter-visible-text "gtk_text_iter_get_visible_text") (:string :free-from-foreign t)
92 (start (g-boxed-ref text-iter))
93 (end (g-boxed-ref text-iter)))
95 (export 'text-iter-visible-text)
97 (defcfun (text-iter-toggled-tags "gtk_text_iter_get_toggled_tags") (gslist (g-object text-tag))
98 (iter (g-boxed-ref text-iter))
99 (toggled-on :boolean))
101 (export 'text-iter-toggled-tags)
103 (defcfun (text-iter-begins-tag "gtk_text_iter_begins_tag") :boolean
104 (iter (g-boxed-ref text-iter))
105 (tag (g-object text-tag)))
107 (export 'text-iter-begins-tag)
109 (defcfun (text-iter-ends-tag "gtk_text_iter_ends_tag") :boolean
110 (iter (g-boxed-ref text-iter))
111 (tag (g-object text-tag)))
113 (export 'text-iter-ends-tag)
115 (defcfun (text-iter-toggles-tag "gtk_text_iter_toggles_tag") :boolean
116 (iter (g-boxed-ref text-iter))
117 (tag (g-object text-tag)))
119 (export 'text-iter-toggles-tag)
121 (defcfun (text-iter-has-tag "gtk_text_iter_has_tag") :boolean
122 (iter (g-boxed-ref text-iter))
123 (tag (g-object text-tag)))
125 (export 'text-iter-has-tag)
127 (defcfun (text-iter-editable "gtk_text_iter_editable") :boolean
128 (iter (g-boxed-ref text-iter))
131 (export 'text-iter-editable)
133 (defcfun gtk-text-iter-get-attributes :boolean
134 (iter (g-boxed-ref text-iter))
135 (values (g-object text-attributes)))
137 (defun text-iter-attributes (iter default-attributes)
138 (let ((changed-p (gtk-text-iter-get-attributes iter default-attributes)))
139 (values default-attributes changed-p)))
141 (export 'text-iter-attributes)
143 (defcfun gtk-text-iter-forward-chars :boolean
144 (iter (g-boxed-ref text-iter))
147 (defcfun gtk-text-iter-forward-lines :boolean
148 (iter (g-boxed-ref text-iter))
151 (defcfun gtk-text-iter-forward-word-ends :boolean
152 (iter (g-boxed-ref text-iter))
155 (defcfun gtk-text-iter-backward-word-starts :boolean
156 (iter (g-boxed-ref text-iter))
159 (defcfun gtk-text-iter-forward-cursor-positions :boolean
160 (iter (g-boxed-ref text-iter))
163 (defcfun gtk-text-iter-forward-sentence-ends :boolean
164 (iter (g-boxed-ref text-iter))
167 (defcfun gtk-text-iter-backward-sentence-starts :boolean
168 (iter (g-boxed-ref text-iter))
171 (defcfun gtk-text-iter-forward-visible-word-ends :boolean
172 (iter (g-boxed-ref text-iter))
175 (defcfun gtk-text-iter-backward-visible-word-starts :boolean
176 (iter (g-boxed-ref text-iter))
179 (defcfun gtk-text-iter-forward-visible-cursor-positions :boolean
180 (iter (g-boxed-ref text-iter))
183 (defcfun gtk-text-iter-forward-visible-lines :boolean
184 (iter (g-boxed-ref text-iter))
187 (defun text-iter-move (iter &key (count 1) (by :char) (direction :forward))
188 (assert (typep by '(member :char :line :word :cursor-position :sentence :visible-word :visible-line :visible-cursor-position)))
189 (assert (typep direction '(member :forward :backward)))
190 (when (and (member by '(:char :ine :cursor-position :visible-line :visible-cursor-position)) (eq direction :backward))
191 (setf count (- count)))
193 (:char (gtk-text-iter-forward-chars iter count))
194 (:line (gtk-text-iter-forward-lines iter count))
195 (:word (if (eq direction :forward)
196 (gtk-text-iter-forward-word-ends iter count)
197 (gtk-text-iter-backward-word-starts iter count)))
198 (:cursor-position (gtk-text-iter-forward-cursor-positions iter count))
199 (:sentence (if (eq direction :forward)
200 (gtk-text-iter-forward-sentence-ends iter count)
201 (gtk-text-iter-backward-sentence-starts iter count)))
202 (:visible-word (if (eq direction :forward)
203 (gtk-text-iter-forward-visible-word-ends iter count)
204 (gtk-text-iter-backward-visible-word-starts iter count)))
205 (:visible-line (gtk-text-iter-forward-visible-lines iter count))
206 (:visible-cursor-position (gtk-text-iter-forward-visible-cursor-positions iter count))))
208 (export 'text-iter-move)
210 (defcfun (text-iter-forward-to-end "gtk_text_iter_forward_to_end") :void
211 (iter (g-boxed-ref text-iter)))
213 (export 'text-iter-forward-to-end)
215 (defcfun (text-iter-forward-to-line-end "gtk_text_iter_forward_to_line_end") :boolean
216 (iter (g-boxed-ref text-iter)))
218 (export 'text-iter-forward-to-line-end)
220 (defcfun (text-iter-forward-to-tag-toggle "gtk_text_iter_forward_to_tag_toggle") :boolean
221 (iter (g-boxed-ref text-iter))
222 (tag (g-object text-tag)))
224 (defcfun (text-iter-backward-to-tag-toggle "gtk_text_iter_backward_to_tag_toggle") :boolean
225 (iter (g-boxed-ref text-iter))
226 (tag (g-object text-tag)))
228 (export '(text-iter-forward-to-tag-toggle text-iter-backward-to-tag-toggle))
230 (defcallback gtk-text-char-predicate :boolean ((char unichar) (user-data :pointer))
231 (let ((function (get-stable-pointer-value user-data)))
232 (funcall function char)))
234 (defcfun gtk-text-iter-forward-find-char :boolean
235 (iter (g-boxed-ref text-iter))
238 (limit (g-boxed-ref text-iter)))
240 (defcfun gtk-text-iter-backward-find-char :boolean
241 (iter (g-boxed-ref text-iter))
244 (limit (g-boxed-ref text-iter)))
246 (defun text-iter-find-char (iter predicate &key limit (direction :forward))
247 (assert (typep direction '(member :forward :backward)))
248 (with-stable-pointer (ptr predicate)
249 (if (eq direction :forward)
250 (gtk-text-iter-forward-find-char iter (callback gtk-text-char-predicate) ptr limit)
251 (gtk-text-iter-backward-find-char iter (callback gtk-text-char-predicate) ptr limit))))
253 (export 'text-iter-find-char)
255 (defcfun gtk-text-iter-forward-search :boolean
256 (iter (g-boxed-ref text-iter))
257 (str (:string :free-to-foreign t))
258 (flags text-search-flags)
259 (match-start (g-boxed-ref text-iter))
260 (match-end (g-boxed-ref text-iter))
261 (limit (g-boxed-ref text-iter)))
263 (defcfun gtk-text-iter-backward-search :boolean
264 (iter (g-boxed-ref text-iter))
265 (str (:string :free-to-foreign t))
266 (flags text-search-flags)
267 (match-start (g-boxed-ref text-iter))
268 (match-end (g-boxed-ref text-iter))
269 (limit (g-boxed-ref text-iter)))
271 (defun text-iter-search (start-position string &key flags limit (direction :forward))
272 (assert (typep direction '(member :forward :backward)))
273 (let ((i1 (make-instance 'text-iter))
274 (i2 (make-instance 'text-iter)))
275 (if (if (eq direction :forward)
276 (gtk-text-iter-forward-search start-position string flags i1 i2 limit)
277 (gtk-text-iter-backward-search start-position string flags i1 i2 limit))
281 (values nil nil nil)))))
283 (export 'text-iter-search)
285 (defcfun (text-iter-equal "gtk_text_iter_equal") :boolean
286 (iter-1 (g-boxed-ref text-iter))
287 (iter-2 (g-boxed-ref text-iter)))
289 (export 'text-iter-equal)
291 (defcfun (text-iter-compare "gtk_text_iter_compare") :int
292 (iter-1 (g-boxed-ref text-iter))
293 (iter-2 (g-boxed-ref text-iter)))
295 (export 'text-iter-compare)
297 (defcfun (text-iter-in-range "gtk_text_iter_in_range") :boolean
298 (iter (g-boxed-ref text-iter))
299 (start (g-boxed-ref text-iter))
300 (end (g-boxed-ref text-iter)))
302 (export 'text-iter-in-range)
304 (defcfun (text-iter-order "gtk_text_iter_order") :void
305 (iter-1 (g-boxed-ref text-iter))
306 (iter-2 (g-boxed-ref text-iter)))
308 (export 'text-iter-order)
312 (defcfun (text-mark-visible "gtk_text_mark_get_visible") :boolean
313 (mark (g-object text-mark)))
315 (defcfun gtk-text-mark-set-visible :void
316 (mark (g-object text-mark))
319 (defun (setf text-mark-visible) (new-value mark)
320 (gtk-text-mark-set-visible mark new-value))
322 (export 'text-mark-visible)
324 (defcfun (text-mark-deleted "gtk_text_mark_get_deleted") :boolean
325 (mark (g-object text-mark)))
327 (export 'text-mark-deleted)
329 (defcfun (text-mark-buffer "gtk_text_mark_get_buffer") (g-object text-buffer)
330 (mark (g-object text-mark)))
332 (export 'text-mark-buffer)
336 (defcfun (text-buffer-line-count "gtk_text_buffer_get_line_count") :int
337 (buffer (g-object text-buffer)))
339 (export 'text-buffer-line-count)
341 (defcfun (text-buffer-char-count "gtk_text_buffer_get_char_count") :int
342 (buffer (g-object text-buffer)))
344 (export 'text-buffer)
346 (defcfun gtk-text-buffer-insert :void
347 (buffer (g-object text-buffer))
348 (iter (g-boxed-ref text-iter))
349 (text (:string :free-to-foreign t))
352 (defcfun gtk-text-buffer-insert-at-cursor :void
353 (buffer (g-object text-buffer))
354 (text (:string :free-to-foreign t))
357 (defcfun gtk-text-buffer-insert-interactive :boolean
358 (buffer (g-object text-buffer))
359 (iter (g-boxed-ref text-iter))
360 (text (:string :free-to-foreign t))
362 (default-editable :boolean))
364 (defcfun gtk-text-buffer-insert-interactive-at-cursor :boolean
365 (buffer (g-object text-buffer))
366 (text (:string :free-to-foreign t))
368 (default-editable :boolean))
370 (defun text-buffer-insert (buffer text &key (position :cursor) (interactive nil) (default-editable t))
371 (assert (typep position '(or text-iter (member :cursor))))
373 (if (eq position :cursor)
374 (gtk-text-buffer-insert-interactive-at-cursor buffer text -1 default-editable)
375 (gtk-text-buffer-insert-interactive buffer position text -1 default-editable))
376 (progn (if (eq position :cursor)
377 (gtk-text-buffer-insert-at-cursor buffer text -1)
378 (gtk-text-buffer-insert buffer position text -1))
381 (export 'text-buffer-insert)
383 (defcfun gtk-text-buffer-insert-range :void
384 (buffer (g-object text-buffer))
385 (iter (g-boxed-ref text-iter))
386 (range-start (g-boxed-ref text-iter))
387 (range-end (g-boxed-ref text-iter)))
389 (defcfun gtk-text-buffer-insert-range-interactive :boolean
390 (buffer (g-object text-buffer))
391 (iter (g-boxed-ref text-iter))
392 (range-start (g-boxed-ref text-iter))
393 (range-end (g-boxed-ref text-iter))
394 (default-editable :boolean))
396 (defun text-buffer-insert-range (buffer position range-start range-end &key interactive default-editable)
398 (gtk-text-buffer-insert-range-interactive buffer position range-start range-end default-editable)
399 (progn (gtk-text-buffer-insert-range buffer position range-start range-end)
402 (export 'text-buffer-insert-range)
404 (defcfun gtk-text-buffer-delete :void
405 (buffer (g-object text-buffer))
406 (range-start (g-boxed-ref text-iter))
407 (range-end (g-boxed-ref text-iter)))
409 (defcfun gtk-text-buffer-delete-interactive :boolean
410 (buffer (g-object text-buffer))
411 (range-start (g-boxed-ref text-iter))
412 (range-end (g-boxed-ref text-iter))
413 (default-editable :boolean))
415 (defun text-buffer-delete (buffer range-start range-end &key interactive default-editable)
417 (gtk-text-buffer-delete-interactive buffer range-start range-end default-editable)
418 (progn (gtk-text-buffer-delete buffer range-start range-end)
421 (export 'text-buffer-delete)
423 (defcfun gtk-text-buffer-backspace :boolean
424 (buffer (g-object text-buffer))
425 (iter (g-boxed-ref text-iter))
426 (interactive :boolean)
427 (default-editable :boolean))
429 (defun text-buffer-backspace (buffer position &key interactive default-editable)
430 (gtk-text-buffer-backspace buffer position interactive default-editable))
432 (export 'text-buffer-backspace)
434 (defcfun gtk-text-buffer-get-slice (:string :free-from-foreign t)
435 (buffer (g-object text-buffer))
436 (range-start (g-boxed-ref text-iter))
437 (range-end (g-boxed-ref text-iter))
438 (include-hidden-chars :boolean))
440 (defun text-buffer-slice (buffer range-start range-end &key include-hidden-chars)
441 (gtk-text-buffer-get-slice buffer range-start range-end include-hidden-chars))
443 (export 'text-buffer-slice)
445 (defcfun (text-buffer-insert-pixbuf "gtk_text_buffer_insert_pixbuf") :void
446 (buffer (g-object text-buffer))
447 (position (g-boxed-ref text-iter))
448 (pixbuf (g-object pixbuf)))
450 (export 'text-buffer-insert-pixbuf)
452 (defcfun gtk-text-buffer-insert-child-anchor :void
453 (buffer (g-object text-buffer))
454 (iter (g-boxed-ref text-iter))
455 (anchor (g-object text-child-anchor)))
457 (defcfun gtk-text-buffer-create-child-anchor (g-object text-child-anchor)
458 (buffer (g-object text-buffer))
459 (iter (g-boxed-ref text-iter)))
461 (defun text-buffer-insert-child-anchor (buffer position &optional anchor)
463 (progn (gtk-text-buffer-insert-child-anchor buffer position anchor)
465 (gtk-text-buffer-create-child-anchor buffer position)))
467 (export 'text-buffer-insert-child-anchor)
469 (defcfun gtk-text-buffer-create-mark (g-object text-mark)
470 (buffer (g-object text-buffer))
471 (name (:string :free-to-foreign t))
472 (position (g-boxed-ref text-iter))
473 (left-gravity :boolean))
475 (defun text-buffer-create-mark (buffer name position &optional (left-gravity t))
476 (gtk-text-buffer-create-mark buffer name position left-gravity))
478 (export 'text-buffer-create-mark)
480 (defcfun gtk-text-buffer-move-mark :void
481 (buffer (g-object text-buffer))
482 (mark (g-object text-mark))
483 (position (g-boxed-ref text-iter)))
485 (defcfun gtk-text-buffer-move-mark-by-name :void
486 (buffer (g-object text-buffer))
487 (name (:string :free-to-foreign t))
488 (position (g-boxed-ref text-iter)))
490 (defun text-buffer-move-mark (buffer mark position)
492 (string (gtk-text-buffer-move-mark-by-name buffer mark position))
493 (text-mark (gtk-text-buffer-move-mark buffer mark position))))
495 (export 'text-buffer-move-mark)
497 (defcfun (text-buffer-add-mark "gtk_text_buffer_add_mark") :void
498 (buffer (g-object text-buffer))
499 (mark (g-object text-mark))
500 (position (g-boxed-ref text-iter)))
502 (export 'text-buffer-add-mark)
504 (defcfun gtk-text-buffer-delete-mark :void
505 (buffer (g-object text-buffer))
506 (mark (g-object text-mark)))
508 (defcfun gtk-text-buffer-delete-mark-by-name :void
509 (buffer (g-object text-buffer))
510 (name (:string :free-to-foreign t)))
512 (defun text-buffer-delete-mark (buffer mark)
514 (string (gtk-text-buffer-delete-mark-by-name buffer mark))
515 (text-mark (gtk-text-buffer-delete-mark buffer mark))))
517 (export 'text-buffer-delete-mark)
519 (defcfun (text-buffer-get-mark "gtk_text_buffer_get_mark") (g-object text-mark)
520 (buffer (g-object text-buffer))
521 (name (:string :free-to-foreign t)))
523 (export 'text-buffer-get-mark)
525 (defcfun (text-buffer-insertion-mark "gtk_text_buffer_get_insert") (g-object text-mark)
526 (buffer (g-object text-buffer)))
528 (export 'text-buffer-insertion-mark)
530 (defcfun (text-buffer-selection-bound "gtk_text_buffer_get_selection_bound") (g-object text-mark)
531 (buffer (g-object text-buffer))
532 (name (:string :free-to-foreign t)))
534 (export 'text-buffer-selection-bound)
536 (defcfun (text-buffer-place-cursor "gtk_text_buffer_place_cursor") :void
537 (buffer (g-object text-buffer))
538 (position (g-boxed-ref text-iter)))
540 (export 'text-buffer-place-cursor)
542 (defcfun (text-buffer-select-range "gtk_text_buffer_select_range") :void
543 (buffer (g-object text-buffer))
544 (insertion-point (g-boxed-ref text-iter))
545 (selection-bound (g-boxed-ref text-iter)))
547 (export 'text-buffer-select-range)
549 (defcfun gtk-text-buffer-apply-tag :void
550 (buffer (g-object text-buffer))
551 (tag (g-object text-tag))
552 (start (g-boxed-ref text-iter))
553 (end (g-boxed-ref text-iter)))
555 (defcfun gtk-text-buffer-apply-tag-by-name :void
556 (buffer (g-object text-buffer))
557 (name (:string :free-to-foreign t))
558 (start (g-boxed-ref text-iter))
559 (end (g-boxed-ref text-iter)))
561 (defun text-buffer-apply-tag (buffer tag start end)
563 (string (gtk-text-buffer-apply-tag-by-name buffer tag start end))
564 (text-tag (gtk-text-buffer-apply-tag buffer tag start end))))
566 (export 'text-buffer-apply-tag)
568 (defcfun gtk-text-buffer-remove-tag :void
569 (buffer (g-object text-buffer))
570 (tag (g-object text-tag))
571 (start (g-boxed-ref text-iter))
572 (end (g-boxed-ref text-iter)))
574 (defcfun gtk-text-buffer-remove-tag-by-name :void
575 (buffer (g-object text-buffer))
576 (name (:string :free-to-foreign t))
577 (start (g-boxed-ref text-iter))
578 (end (g-boxed-ref text-iter)))
580 (defun text-buffer-remove-tag (buffer tag start end)
582 (string (gtk-text-buffer-remove-tag-by-name buffer tag start end))
583 (text-tag (gtk-text-buffer-remove-tag buffer tag start end))))
585 (export 'text-buffer-remove-tag)
587 (defcfun (text-buffer-remove-all-tags "gtk_text_buffer_remove_all_tags") :void
588 (buffer (g-object text-buffer))
589 (start (g-boxed-ref text-iter))
590 (end (g-boxed-ref text-iter)))
592 (defcfun gtk-text-buffer-get-iter-at-line-offset :void
593 (buffer (g-object text-buffer))
594 (iter (g-boxed-ref text-iter))
598 (defun text-buffer-get-iter-at-line-offset (buffer line-number char-offset)
599 (let ((iter (make-instance 'text-iter)))
600 (gtk-text-buffer-get-iter-at-line-offset buffer iter line-number char-offset)
603 (export 'text-buffer-get-iter-at-line-offset)
605 (defcfun gtk-text-buffer-get-iter-at-offset :void
606 (buffer (g-object text-buffer))
607 (iter (g-boxed-ref text-iter))
610 (defun text-buffer-get-iter-at-offset (buffer offset)
611 (let ((iter (make-instance 'text-iter)))
612 (gtk-text-buffer-get-iter-at-offset buffer iter offset)
615 (export 'text-buffer-get-iter-at-offset)
617 (defcfun gtk-text-buffer-get-iter-at-line :void
618 (buffer (g-object text-buffer))
619 (iter (g-boxed-ref text-iter))
622 (defun text-buffer-get-iter-at-line (buffer line-number)
623 (let ((iter (make-instance 'text-iter)))
624 (gtk-text-buffer-get-iter-at-line buffer iter line-number)
627 (export 'text-buffet-get-iter-at-line)
629 (defcfun gtk-text-buffer-get-iter-at-mark :void
630 (buffer (g-object text-buffer))
631 (iter (g-boxed-ref text-iter))
632 (mark (g-object text-mark)))
634 (defun text-buffer-get-iter-at-mark (buffer mark)
636 (setf mark (text-buffer-get-mark buffer mark)))
637 (let ((iter (make-instance 'text-iter)))
638 (gtk-text-buffer-get-iter-at-mark buffer iter mark)
641 (export 'text-buffer-get-iter-at-mark)
643 (defcfun gtk-text-buffer-get-iter-at-child-anchor :void
644 (buffer (g-object text-buffer))
645 (iter (g-boxed-ref text-iter))
646 (anchor (g-object text-child-anchor)))
648 (defun text-buffer-get-iter-at-child-anchor (buffer anchor)
649 (let ((iter (make-instance 'text-iter)))
650 (gtk-text-buffer-get-iter-at-child-anchor buffer iter anchor)
653 (export 'text-buffer-get-iter-at-child-anchor)
655 (defcfun gtk-text-buffer-get-start-iter :void
656 (buffer (g-object text-buffer))
657 (iter (g-boxed-ref text-iter)))
659 (defun text-buffer-get-start-iter (buffer)
660 (let ((iter (make-instance 'text-iter)))
661 (gtk-text-buffer-get-start-iter buffer iter)
664 (export 'text-buffer-get-start-iter)
666 (defcfun gtk-text-buffer-get-end-iter :void
667 (buffer (g-object text-buffer))
668 (iter (g-boxed-ref text-iter)))
670 (defun text-buffer-get-end-iter (buffer)
671 (let ((iter (make-instance 'text-iter)))
672 (gtk-text-buffer-get-end-iter buffer iter)
675 (export 'text-buffer-get-end-iter)
677 (defcfun gtk-text-buffer-get-bounds :void
678 (buffer (g-object text-buffer))
679 (start (g-boxed-ref text-iter))
680 (end (g-boxed-ref text-iter)))
682 (defun text-buffer-get-bounds (buffer)
683 (let ((start (make-instance 'text-iter))
684 (end (make-instance 'text-iter)))
685 (gtk-text-buffer-get-bounds buffer start end)
688 (export 'text-buffer-get-bounds)
690 (defcfun gtk-text-buffer-delete-selection :boolean
691 (bufer (g-object text-buffer))
692 (interactive :boolean)
693 (default-editable :boolean))
695 (defun text-buffer-delete-selection (buffer &key interactive default-editable)
696 (gtk-text-buffer-delete-selection buffer interactive default-editable))
698 (export 'text-buffer-delete-selection)
700 (defcfun gtk-text-buffer-paste-clipboard :void
701 (buffer (g-object text-buffer))
702 (clipboard (g-object clipboard))
703 (override-location (g-boxed-ref text-iter))
704 (default-editable :boolean))
706 (defun text-buffer-paste-clipboard (buffer clipboard &key position default-editable)
707 (gtk-text-buffer-paste-clipboard buffer clipboard position default-editable))
709 (export 'text-buffer-paste-clipboard)
711 (defcfun (text-buffer-copy-clipboard "gtk_text_buffer_copy_clipboard") :void
712 (buffer (g-object text-buffer))
713 (clipboard (g-object clipboard)))
715 (export 'text-buffer-copy-clipboard)
717 (defcfun (text-buffer-cut-clipboard "gtk_text_buffer_cut_clipboard") :void
718 (buffer (g-object text-buffer))
719 (clipboard (g-object clipboard)))
721 (export 'text-buffer-cut-clipboard)
723 (defcfun gtk-text-buffer-get-selection-bounds :boolean
724 (buffer (g-object text-buffer))
725 (start (g-boxed-ref text-iter))
726 (end (g-boxed-ref text-iter)))
728 (defun text-buffer-get-selection-bounds (buffer)
729 (let ((i1 (make-instance 'text-iter))
730 (i2 (make-instance 'text-iter)))
731 (if (gtk-text-buffer-get-selection-bounds buffer i1 i2)
737 (export 'text-buffer-get-selection-bounds)
739 (defcfun (text-buffer-begin-user-action "gtk_text_buffer_begin_user_action") :void
740 (buffer (g-object text-buffer)))
742 (export 'text-buffer-begin-user-action)
744 (defcfun (text-buffer-end-user-action "gtk_text_buffer_end_user_action") :void
745 (buffer (g-object text-buffer)))
747 (export 'text-buffer-end-user-action)
749 (defmacro with-text-buffer-user-action ((buffer) &body body)
752 (text-buffer-begin-user-action ,g)
755 (text-buffer-end-user-action ,g)))))
757 (export 'with-text-buffer-user-action)
759 (defcfun (text-buffer-add-selection-clipboard "gtk_text_buffer_add_selection_clipboard") :void
760 (buffer (g-object text-buffer))
761 (clipboard (g-object clipboard)))
763 (defcfun (text-buffer-remove-selection-clipboard "gtk_text_buffer_remove_selection_clipboard") :void
764 (buffer (g-object text-buffer))
765 (clipboard (g-object clipboard)))
767 (export 'text-buffer-remove-selection-clipboard)
769 ;; enum GtkTextBufferTargetInfo;
770 ;; gboolean (*GtkTextBufferDeserializeFunc) (GtkTextBuffer *register_buffer,
771 ;; GtkTextBuffer *content_buffer,
772 ;; GtkTextIter *iter,
773 ;; const guint8 *data,
775 ;; gboolean create_tags,
776 ;; gpointer user_data,
778 ;; gboolean gtk_text_buffer_deserialize (GtkTextBuffer *register_buffer,
779 ;; GtkTextBuffer *content_buffer,
781 ;; GtkTextIter *iter,
782 ;; const guint8 *data,
785 ;; gboolean gtk_text_buffer_deserialize_get_can_create_tags
786 ;; (GtkTextBuffer *buffer,
788 ;; void gtk_text_buffer_deserialize_set_can_create_tags
789 ;; (GtkTextBuffer *buffer,
791 ;; gboolean can_create_tags);
792 ;; GtkTargetList* gtk_text_buffer_get_copy_target_list
793 ;; (GtkTextBuffer *buffer);
794 ;; GdkAtom* gtk_text_buffer_get_deserialize_formats
795 ;; (GtkTextBuffer *buffer,
797 ;; GtkTargetList* gtk_text_buffer_get_paste_target_list
798 ;; (GtkTextBuffer *buffer);
799 ;; GdkAtom* gtk_text_buffer_get_serialize_formats
800 ;; (GtkTextBuffer *buffer,
802 ;; GdkAtom gtk_text_buffer_register_deserialize_format
803 ;; (GtkTextBuffer *buffer,
804 ;; const gchar *mime_type,
805 ;; GtkTextBufferDeserializeFunc function,
806 ;; gpointer user_data,
807 ;; GDestroyNotify user_data_destroy);
808 ;; GdkAtom gtk_text_buffer_register_deserialize_tagset
809 ;; (GtkTextBuffer *buffer,
810 ;; const gchar *tagset_name);
811 ;; GdkAtom gtk_text_buffer_register_serialize_format
812 ;; (GtkTextBuffer *buffer,
813 ;; const gchar *mime_type,
814 ;; GtkTextBufferSerializeFunc function,
815 ;; gpointer user_data,
816 ;; GDestroyNotify user_data_destroy);
817 ;; GdkAtom gtk_text_buffer_register_serialize_tagset
818 ;; (GtkTextBuffer *buffer,
819 ;; const gchar *tagset_name);
820 ;; guint8* (*GtkTextBufferSerializeFunc) (GtkTextBuffer *register_buffer,
821 ;; GtkTextBuffer *content_buffer,
822 ;; const GtkTextIter *start,
823 ;; const GtkTextIter *end,
825 ;; gpointer user_data);
826 ;; guint8* gtk_text_buffer_serialize (GtkTextBuffer *register_buffer,
827 ;; GtkTextBuffer *content_buffer,
829 ;; const GtkTextIter *start,
830 ;; const GtkTextIter *end,
832 ;; void gtk_text_buffer_unregister_deserialize_format
833 ;; (GtkTextBuffer *buffer,
835 ;; void gtk_text_buffer_unregister_serialize_format
836 ;; (GtkTextBuffer *buffer,
843 (defcallback gtk-text-tag-table-foreach-function :void ((tag (g-object text-tag)) (data :pointer))
844 (funcall (get-stable-pointer-value data) tag))
846 (defcfun (text-tag-table-add "gtk_text_tag_table_add") :void
847 (table (g-object text-tag-table))
848 (tag (g-object text-tag)))
850 (export 'text-tag-table-add)
852 (defcfun (text-tag-table-remove "gtk_text_tag_table_remove") :void
853 (table (g-object text-tag-table))
854 (tag (g-object text-tag)))
856 (export 'text-tag-table-remove)
858 (defcfun (text-tag-table-lookup "gtk_text_tag_table_lookup") (g-object text-tag)
859 (table (g-object text-tag-table))
860 (name (:string :free-to-foreign t)))
862 (export 'text-tag-table-lookup)
864 (defcfun gtk-text-tag-table-foreach :void
865 (table (g-object text-tag-table))
869 (defun text-tag-table-foreach (table function)
870 (with-stable-pointer (ptr function)
871 (gtk-text-tag-table-foreach table (callback gtk-text-tag-table-foreach-function) ptr)))
873 (export 'text-tag-table-foreach)
875 (defcfun (text-tag-table-size "gtk_text_tag_table_get_size") :int
876 (table (g-object text-tag-table)))
878 (export 'text-tag-table-size)
882 (defcfun gtk-text-view-scroll-to-mark :void
883 (text-view (g-object text-view))
884 (mark (g-object text-mark))
885 (within-margin :double)
890 (defun text-view-scroll-to-mark (text-view mark &key (within-margin 0.4) (x-align 0.0 x-align-supplied) (y-align 0.0 y-align-supplied))
891 (gtk-text-view-scroll-to-mark text-view mark within-margin (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
893 (export 'text-view-scroll-to-mark)
895 (defcfun gtk-text-view-scroll-to-iter :void
896 (text-view (g-object text-view))
897 (iter (g-object text-iter))
898 (within-margin :double)
903 (defun text-view-scroll-to-iter (text-view iter &key (within-margin 0.4) (x-align 0.0 x-align-supplied) (y-align 0.0 y-align-supplied))
904 (gtk-text-view-scroll-to-iter text-view iter within-margin (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
906 (export 'text-view-scroll-to-iter)
908 (defcfun (text-view-move-mark-onscreen "gtk_text_view_move_mark_onscreen") :boolean
909 (text-view (g-object text-view))
910 (mark (g-object text-mark)))
912 (export 'text-view-move-mark-onscreen)
914 (defcfun (text-view-place-cursor-onscreen "gtk_text_view_place_cursor_onscreen") :boolean
915 (text-view (g-object text-view)))
917 (export 'text-view-place-cursor-onscreen)
919 (defcfun gtk-text-view-get-visible-rect :void
920 (text-view (g-object text-view))
921 (visible-rect (g-boxed-ptr rectangle :in-out)))
923 (defun text-view-visible-rect (text-view)
924 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
925 (gtk-text-view-get-visible-rect text-view rect)
928 (export 'text-view-visible-rect)
930 (defcfun gtk-text-view-get-iter-location :void
931 (text-view (g-object text-view))
932 (iter (g-boxed-ref text-iter))
933 (location (g-boxed-ptr rectangle :in-out)))
935 (defun text-view-iter-location (text-view iter)
936 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
937 (gtk-text-view-get-iter-location text-view iter rect)
940 (export 'text-view-iter-location)
943 ;; void gtk_text_view_get_line_at_y (GtkTextView *text_view,
944 ;; GtkTextIter *target_iter,
947 ;; void gtk_text_view_get_line_yrange (GtkTextView *text_view,
948 ;; const GtkTextIter *iter,
952 (defcfun gtk-text-view-get-iter-at-location :void
953 (text-view (g-object text-view))
954 (iter (g-boxed-ref text-iter))
958 (defun text-view-get-iter-at-location (view x y)
959 (let ((iter (make-instance 'text-iter)))
960 (gtk-text-view-get-iter-at-location view iter x y)
963 (export 'text-view-get-iter-at-location)
965 ;; void gtk_text_view_get_iter_at_position (GtkTextView *text_view,
966 ;; GtkTextIter *iter,
970 ;; void gtk_text_view_buffer_to_window_coords
971 ;; (GtkTextView *text_view,
972 ;; GtkTextWindowType win,
978 (defcfun gtk-text-view-window-to-buffer-coords :void
979 (text-view (g-object text-view))
980 (win text-window-type)
986 (defun text-view-window-to-buffer-coords (text-view win window-x window-y)
987 (with-foreign-objects ((buffer-x :int) (buffer-y :int))
988 (gtk-text-view-window-to-buffer-coords text-view win window-x window-y buffer-x buffer-y)
989 (values (mem-ref buffer-x :int)
990 (mem-ref buffer-y :int))))
992 (export 'text-view-window-to-buffer-coords)
994 (defcfun gtk-text-view-get-window (g-object gdk:gdk-window)
995 (text-view (g-object text-view))
996 (win text-window-type))
998 (defun text-view-get-window (text-view win)
999 (gtk-text-view-get-window text-view win))
1001 (export 'text-view-get-window)
1003 ;; GtkTextWindowType gtk_text_view_get_window_type (GtkTextView *text_view,
1004 ;; GdkWindow *window);
1005 ;; void gtk_text_view_set_border_window_size
1006 ;; (GtkTextView *text_view,
1007 ;; GtkTextWindowType type,
1009 ;; gint gtk_text_view_get_border_window_size
1010 ;; (GtkTextView *text_view,
1011 ;; GtkTextWindowType type);
1012 ;; gboolean gtk_text_view_forward_display_line (GtkTextView *text_view,
1013 ;; GtkTextIter *iter);
1014 ;; gboolean gtk_text_view_backward_display_line (GtkTextView *text_view,
1015 ;; GtkTextIter *iter);
1016 ;; gboolean gtk_text_view_forward_display_line_end
1017 ;; (GtkTextView *text_view,
1018 ;; GtkTextIter *iter);
1019 ;; gboolean gtk_text_view_backward_display_line_start
1020 ;; (GtkTextView *text_view,
1021 ;; GtkTextIter *iter);
1022 ;; gboolean gtk_text_view_starts_display_line (GtkTextView *text_view,
1023 ;; const GtkTextIter *iter);
1024 ;; gboolean gtk_text_view_move_visually (GtkTextView *text_view,
1025 ;; GtkTextIter *iter,
1027 ;; void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
1028 ;; GtkWidget *child,
1029 ;; GtkTextChildAnchor *anchor);
1031 (defcfun (text-view-add-child-at-anchor "gtk_text_view_add_child_at_anchor") :void
1032 (text-view g-object)
1036 (export 'text-view-add-child-at-anchor)
1038 ;; GtkTextChildAnchor;
1039 ;; GtkTextChildAnchor* gtk_text_child_anchor_new (void);
1040 ;; GList* gtk_text_child_anchor_get_widgets (GtkTextChildAnchor *anchor);
1041 ;; gboolean gtk_text_child_anchor_get_deleted (GtkTextChildAnchor *anchor);
1042 ;; void gtk_text_view_add_child_in_window (GtkTextView *text_view,
1043 ;; GtkWidget *child,
1044 ;; GtkTextWindowType which_window,
1047 ;; void gtk_text_view_move_child (GtkTextView *text_view,
1048 ;; GtkWidget *child,