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-opaque text-iter "GtkTextIter"
18 :alloc (gtk-text-iter-alloc))
20 (define-boxed-opaque-accessor text-iter text-iter-buffer :reader "gtk_text_iter_get_buffer" :type (g-object text-buffer))
21 (define-boxed-opaque-accessor text-iter text-iter-offset :reader "gtk_text_iter_get_offset" :writer "gtk_text_iter_set_offset" :type :int)
22 (define-boxed-opaque-accessor text-iter text-iter-line :reader "gtk_text_iter_get_line" :writer "gtk_text_iter_set_line" :type :int)
23 (define-boxed-opaque-accessor text-iter text-iter-line-offset :reader "gtk_text_iter_get_line_offset" :writer "gtk_text_iter_set_line_offset" :type :int)
24 (define-boxed-opaque-accessor text-iter text-iter-visible-line-offset :reader "gtk_text_iter_get_visible_line_offset" :writer "gtk_text_iter_set_visible_line_offset" :type :int)
25 (define-boxed-opaque-accessor text-iter text-iter-char :reader "gtk_text_iter_get_char" :type unichar)
26 (define-boxed-opaque-accessor text-iter text-iter-pixbuf :reader "gtk_text_iter_get_pixbuf" :type (g-object pixbuf))
27 (define-boxed-opaque-accessor text-iter text-iter-marks :reader "gtk_text_iter_get_marks" :type (gslist (g-object text-mark) :free-from-foreign t))
28 (define-boxed-opaque-accessor text-iter text-iter-child-anchor :reader "gtk_text_iter_get_child_anchor" :type (g-object text-child-anchor))
29 (define-boxed-opaque-accessor text-iter text-iter-tags :reader "gtk_text_iter_get_tags" :type (gslist (g-object text-tag) :free-from-foreign t))
30 (define-boxed-opaque-accessor text-iter text-iter-chars-in-line :reader "gtk_text_iter_get_chars_in_line" :type :int)
31 (define-boxed-opaque-accessor text-iter text-iter-language :reader "gtk_text_iter_get_language" :type :pointer)
32 (define-boxed-opaque-accessor text-iter text-iter-is-end :reader "gtk_text_iter_is_end" :type :boolean)
33 (define-boxed-opaque-accessor text-iter text-iter-is-start :reader "gtk_text_iter_is_start" :type :boolean)
34 (define-boxed-opaque-accessor text-iter text-iter-can-insert :reader "gtk_text_iter_can_insert" :type :boolean)
35 (define-boxed-opaque-accessor text-iter text-iter-starts-word :reader "gtk_text_iter_starts_word" :type :boolean)
36 (define-boxed-opaque-accessor text-iter text-iter-ends-word :reader "gtk_text_iter_ends_word" :type :boolean)
37 (define-boxed-opaque-accessor text-iter text-iter-inside-word :reader "gtk_text_iter_inside_word" :type :boolean)
38 (define-boxed-opaque-accessor text-iter text-iter-starts-line :reader "gtk_text_iter_starts_line" :type :boolean)
39 (define-boxed-opaque-accessor text-iter text-iter-ends-line :reader "gtk_text_iter_ends_line" :type :boolean)
40 (define-boxed-opaque-accessor text-iter text-iter-starts-sentence :reader "gtk_text_iter_starts_sentence" :type :boolean)
41 (define-boxed-opaque-accessor text-iter text-iter-ends-sentence :reader "gtk_text_iter_ends_sentence" :type :boolean)
42 (define-boxed-opaque-accessor text-iter text-iter-inside-sentence :reader "gtk_text_iter_inside_sentence" :type :boolean)
43 (define-boxed-opaque-accessor text-iter text-iter-is-cursor-position :reader "gtk_text_iter_is_cursor_position" :type :boolean)
45 (export (boxed-related-symbols 'text-iter))
46 (export '(text-iter-buffer text-iter-offset text-iter-line
47 text-iter-line-offset text-iter-visible-line-offset
48 text-iter-char text-iter-pixbuf text-iter-marks
49 text-iter-child-anchor text-iter-tags
50 text-iter-chars-in-line text-iter-language text-iter-is-end
51 text-iter-is-start text-iter-can-insert
52 text-iter-starts-word text-iter-ends-word
53 text-iter-inside-word text-iter-starts-line
54 text-iter-ends-line text-iter-starts-sentence
55 text-iter-ends-sentence text-iter-inside-sentence
56 text-iter-is-cursor-position ))
58 (defcstruct %text-iter
74 (defcfun gtk-text-iter-copy :pointer
77 (defun gtk-text-iter-alloc ()
78 (with-foreign-object (iter '%text-iter)
79 (gtk-text-iter-copy iter)))
81 (defcfun (text-iter-slice "gtk_text_iter_get_slice") (:string :free-from-foreign t)
82 (start (g-boxed-foreign text-iter))
83 (end (g-boxed-foreign text-iter)))
85 (export 'text-iter-slice)
87 (defcfun (text-iter-text "gtk_text_iter_get_text") (:string :free-from-foreign t)
88 (start (g-boxed-foreign text-iter))
89 (end (g-boxed-foreign text-iter)))
91 (export 'text-iter-text)
93 (defcfun (text-iter-visible-slice "gtk_text_iter_get_visible_slice") (:string :free-from-foreign t)
94 (start (g-boxed-foreign text-iter))
95 (end (g-boxed-foreign text-iter)))
97 (export 'text-iter-visible-slice)
99 (defcfun (text-iter-visible-text "gtk_text_iter_get_visible_text") (:string :free-from-foreign t)
100 (start (g-boxed-foreign text-iter))
101 (end (g-boxed-foreign text-iter)))
103 (export 'text-iter-visible-text)
105 (defcfun (text-iter-toggled-tags "gtk_text_iter_get_toggled_tags") (gslist (g-object text-tag))
106 (iter (g-boxed-foreign text-iter))
107 (toggled-on :boolean))
109 (export 'text-iter-toggled-tags)
111 (defcfun (text-iter-begins-tag "gtk_text_iter_begins_tag") :boolean
112 (iter (g-boxed-foreign text-iter))
113 (tag (g-object text-tag)))
115 (export 'text-iter-begins-tag)
117 (defcfun (text-iter-ends-tag "gtk_text_iter_ends_tag") :boolean
118 (iter (g-boxed-foreign text-iter))
119 (tag (g-object text-tag)))
121 (export 'text-iter-ends-tag)
123 (defcfun (text-iter-toggles-tag "gtk_text_iter_toggles_tag") :boolean
124 (iter (g-boxed-foreign text-iter))
125 (tag (g-object text-tag)))
127 (export 'text-iter-toggles-tag)
129 (defcfun (text-iter-has-tag "gtk_text_iter_has_tag") :boolean
130 (iter (g-boxed-foreign text-iter))
131 (tag (g-object text-tag)))
133 (export 'text-iter-has-tag)
135 (defcfun (text-iter-editable "gtk_text_iter_editable") :boolean
136 (iter (g-boxed-foreign text-iter))
139 (export 'text-iter-editable)
141 (defcfun gtk-text-iter-get-attributes :boolean
142 (iter (g-boxed-foreign text-iter))
143 (values (g-object text-attributes)))
145 (defun text-iter-attributes (iter default-attributes)
146 (let ((changed-p (gtk-text-iter-get-attributes iter default-attributes)))
147 (values default-attributes changed-p)))
149 (export 'text-iter-attributes)
151 (defcfun gtk-text-iter-forward-chars :boolean
152 (iter (g-boxed-foreign text-iter))
155 (defcfun gtk-text-iter-forward-lines :boolean
156 (iter (g-boxed-foreign text-iter))
159 (defcfun gtk-text-iter-forward-word-ends :boolean
160 (iter (g-boxed-foreign text-iter))
163 (defcfun gtk-text-iter-backward-word-starts :boolean
164 (iter (g-boxed-foreign text-iter))
167 (defcfun gtk-text-iter-forward-cursor-positions :boolean
168 (iter (g-boxed-foreign text-iter))
171 (defcfun gtk-text-iter-forward-sentence-ends :boolean
172 (iter (g-boxed-foreign text-iter))
175 (defcfun gtk-text-iter-backward-sentence-starts :boolean
176 (iter (g-boxed-foreign text-iter))
179 (defcfun gtk-text-iter-forward-visible-word-ends :boolean
180 (iter (g-boxed-foreign text-iter))
183 (defcfun gtk-text-iter-backward-visible-word-starts :boolean
184 (iter (g-boxed-foreign text-iter))
187 (defcfun gtk-text-iter-forward-visible-cursor-positions :boolean
188 (iter (g-boxed-foreign text-iter))
191 (defcfun gtk-text-iter-forward-visible-lines :boolean
192 (iter (g-boxed-foreign text-iter))
195 (defun text-iter-move (iter &key (count 1) (by :char) (direction :forward))
196 (assert (typep by '(member :char :line :word :cursor-position :sentence :visible-word :visible-line :visible-cursor-position)))
197 (assert (typep direction '(member :forward :backward)))
198 (when (and (member by '(:char :ine :cursor-position :visible-line :visible-cursor-position)) (eq direction :backward))
199 (setf count (- count)))
201 (:char (gtk-text-iter-forward-chars iter count))
202 (:line (gtk-text-iter-forward-lines iter count))
203 (:word (if (eq direction :forward)
204 (gtk-text-iter-forward-word-ends iter count)
205 (gtk-text-iter-backward-word-starts iter count)))
206 (:cursor-position (gtk-text-iter-forward-cursor-positions iter count))
207 (:sentence (if (eq direction :forward)
208 (gtk-text-iter-forward-sentence-ends iter count)
209 (gtk-text-iter-backward-sentence-starts iter count)))
210 (:visible-word (if (eq direction :forward)
211 (gtk-text-iter-forward-visible-word-ends iter count)
212 (gtk-text-iter-backward-visible-word-starts iter count)))
213 (:visible-line (gtk-text-iter-forward-visible-lines iter count))
214 (:visible-cursor-position (gtk-text-iter-forward-visible-cursor-positions iter count))))
216 (export 'text-iter-move)
218 (defcfun (text-iter-forward-to-end "gtk_text_iter_forward_to_end") :void
219 (iter (g-boxed-foreign text-iter)))
221 (export 'text-iter-forward-to-end)
223 (defcfun (text-iter-forward-to-line-end "gtk_text_iter_forward_to_line_end") :boolean
224 (iter (g-boxed-foreign text-iter)))
226 (export 'text-iter-forward-to-line-end)
228 (defcfun (text-iter-forward-to-tag-toggle "gtk_text_iter_forward_to_tag_toggle") :boolean
229 (iter (g-boxed-foreign text-iter))
230 (tag (g-object text-tag)))
232 (defcfun (text-iter-backward-to-tag-toggle "gtk_text_iter_backward_to_tag_toggle") :boolean
233 (iter (g-boxed-foreign text-iter))
234 (tag (g-object text-tag)))
236 (export '(text-iter-forward-to-tag-toggle text-iter-backward-to-tag-toggle))
238 (defcallback gtk-text-char-predicate :boolean ((char unichar) (user-data :pointer))
239 (let ((function (get-stable-pointer-value user-data)))
240 (funcall function char)))
242 (defcfun gtk-text-iter-forward-find-char :boolean
243 (iter (g-boxed-foreign text-iter))
246 (limit (g-boxed-foreign text-iter)))
248 (defcfun gtk-text-iter-backward-find-char :boolean
249 (iter (g-boxed-foreign text-iter))
252 (limit (g-boxed-foreign text-iter)))
254 (defun text-iter-find-char (iter predicate &key limit (direction :forward))
255 (assert (typep direction '(member :forward :backward)))
256 (with-stable-pointer (ptr predicate)
257 (if (eq direction :forward)
258 (gtk-text-iter-forward-find-char iter (callback gtk-text-char-predicate) ptr limit)
259 (gtk-text-iter-backward-find-char iter (callback gtk-text-char-predicate) ptr limit))))
261 (export 'text-iter-find-char)
263 (defcfun gtk-text-iter-forward-search :boolean
264 (iter (g-boxed-foreign text-iter))
265 (str (:string :free-to-foreign t))
266 (flags text-search-flags)
267 (match-start (g-boxed-foreign text-iter))
268 (match-end (g-boxed-foreign text-iter))
269 (limit (g-boxed-foreign text-iter)))
271 (defcfun gtk-text-iter-backward-search :boolean
272 (iter (g-boxed-foreign text-iter))
273 (str (:string :free-to-foreign t))
274 (flags text-search-flags)
275 (match-start (g-boxed-foreign text-iter))
276 (match-end (g-boxed-foreign text-iter))
277 (limit (g-boxed-foreign text-iter)))
279 (defun text-iter-search (start-position string &key flags limit (direction :forward))
280 (assert (typep direction '(member :forward :backward)))
281 (let ((i1 (make-instance 'text-iter))
282 (i2 (make-instance 'text-iter)))
283 (if (if (eq direction :forward)
284 (gtk-text-iter-forward-search start-position string flags i1 i2 limit)
285 (gtk-text-iter-backward-search start-position string flags i1 i2 limit))
289 (values nil nil nil)))))
291 (export 'text-iter-search)
293 (defcfun (text-iter-equal "gtk_text_iter_equal") :boolean
294 (iter-1 (g-boxed-foreign text-iter))
295 (iter-2 (g-boxed-foreign text-iter)))
297 (export 'text-iter-equal)
299 (defcfun (text-iter-compare "gtk_text_iter_compare") :int
300 (iter-1 (g-boxed-foreign text-iter))
301 (iter-2 (g-boxed-foreign text-iter)))
303 (export 'text-iter-compare)
305 (defcfun (text-iter-in-range "gtk_text_iter_in_range") :boolean
306 (iter (g-boxed-foreign text-iter))
307 (start (g-boxed-foreign text-iter))
308 (end (g-boxed-foreign text-iter)))
310 (export 'text-iter-in-range)
312 (defcfun (text-iter-order "gtk_text_iter_order") :void
313 (iter-1 (g-boxed-foreign text-iter))
314 (iter-2 (g-boxed-foreign text-iter)))
316 (export 'text-iter-order)
320 (defcfun (text-mark-visible "gtk_text_mark_get_visible") :boolean
321 (mark (g-object text-mark)))
323 (defcfun gtk-text-mark-set-visible :void
324 (mark (g-object text-mark))
327 (defun (setf text-mark-visible) (new-value mark)
328 (gtk-text-mark-set-visible mark new-value))
330 (export 'text-mark-visible)
332 (defcfun (text-mark-deleted "gtk_text_mark_get_deleted") :boolean
333 (mark (g-object text-mark)))
335 (export 'text-mark-deleted)
337 (defcfun (text-mark-buffer "gtk_text_mark_get_buffer") (g-object text-buffer)
338 (mark (g-object text-mark)))
340 (export 'text-mark-buffer)
344 (defcfun (text-buffer-line-count "gtk_text_buffer_get_line_count") :int
345 (buffer (g-object text-buffer)))
347 (export 'text-buffer-line-count)
349 (defcfun (text-buffer-char-count "gtk_text_buffer_get_char_count") :int
350 (buffer (g-object text-buffer)))
352 (export 'text-buffer)
354 (defcfun gtk-text-buffer-insert :void
355 (buffer (g-object text-buffer))
356 (iter (g-boxed-foreign text-iter))
357 (text (:string :free-to-foreign t))
360 (defcfun gtk-text-buffer-insert-at-cursor :void
361 (buffer (g-object text-buffer))
362 (text (:string :free-to-foreign t))
365 (defcfun gtk-text-buffer-insert-interactive :boolean
366 (buffer (g-object text-buffer))
367 (iter (g-boxed-foreign text-iter))
368 (text (:string :free-to-foreign t))
370 (default-editable :boolean))
372 (defcfun gtk-text-buffer-insert-interactive-at-cursor :boolean
373 (buffer (g-object text-buffer))
374 (text (:string :free-to-foreign t))
376 (default-editable :boolean))
378 (defun text-buffer-insert (buffer text &key (position :cursor) (interactive nil) (default-editable t))
379 (assert (typep position '(or text-iter (member :cursor))))
381 (if (eq position :cursor)
382 (gtk-text-buffer-insert-interactive-at-cursor buffer text -1 default-editable)
383 (gtk-text-buffer-insert-interactive buffer position text -1 default-editable))
384 (progn (if (eq position :cursor)
385 (gtk-text-buffer-insert-at-cursor buffer text -1)
386 (gtk-text-buffer-insert buffer position text -1))
389 (export 'text-buffer-insert)
391 (defcfun gtk-text-buffer-insert-range :void
392 (buffer (g-object text-buffer))
393 (iter (g-boxed-foreign text-iter))
394 (range-start (g-boxed-foreign text-iter))
395 (range-end (g-boxed-foreign text-iter)))
397 (defcfun gtk-text-buffer-insert-range-interactive :boolean
398 (buffer (g-object text-buffer))
399 (iter (g-boxed-foreign text-iter))
400 (range-start (g-boxed-foreign text-iter))
401 (range-end (g-boxed-foreign text-iter))
402 (default-editable :boolean))
404 (defun text-buffer-insert-range (buffer position range-start range-end &key interactive default-editable)
406 (gtk-text-buffer-insert-range-interactive buffer position range-start range-end default-editable)
407 (progn (gtk-text-buffer-insert-range buffer position range-start range-end)
410 (export 'text-buffer-insert-range)
412 (defcfun gtk-text-buffer-delete :void
413 (buffer (g-object text-buffer))
414 (range-start (g-boxed-foreign text-iter))
415 (range-end (g-boxed-foreign text-iter)))
417 (defcfun gtk-text-buffer-delete-interactive :boolean
418 (buffer (g-object text-buffer))
419 (range-start (g-boxed-foreign text-iter))
420 (range-end (g-boxed-foreign text-iter))
421 (default-editable :boolean))
423 (defun text-buffer-delete (buffer range-start range-end &key interactive default-editable)
425 (gtk-text-buffer-delete-interactive buffer range-start range-end default-editable)
426 (progn (gtk-text-buffer-delete buffer range-start range-end)
429 (export 'text-buffer-delete)
431 (defcfun gtk-text-buffer-backspace :boolean
432 (buffer (g-object text-buffer))
433 (iter (g-boxed-foreign text-iter))
434 (interactive :boolean)
435 (default-editable :boolean))
437 (defun text-buffer-backspace (buffer position &key interactive default-editable)
438 (gtk-text-buffer-backspace buffer position interactive default-editable))
440 (export 'text-buffer-backspace)
442 (defcfun gtk-text-buffer-get-slice (:string :free-from-foreign t)
443 (buffer (g-object text-buffer))
444 (range-start (g-boxed-foreign text-iter))
445 (range-end (g-boxed-foreign text-iter))
446 (include-hidden-chars :boolean))
448 (defun text-buffer-slice (buffer range-start range-end &key include-hidden-chars)
449 (gtk-text-buffer-get-slice buffer range-start range-end include-hidden-chars))
451 (export 'text-buffer-slice)
453 (defcfun (text-buffer-insert-pixbuf "gtk_text_buffer_insert_pixbuf") :void
454 (buffer (g-object text-buffer))
455 (position (g-boxed-foreign text-iter))
456 (pixbuf (g-object pixbuf)))
458 (export 'text-buffer-insert-pixbuf)
460 (defcfun gtk-text-buffer-insert-child-anchor :void
461 (buffer (g-object text-buffer))
462 (iter (g-boxed-foreign text-iter))
463 (anchor (g-object text-child-anchor)))
465 (defcfun gtk-text-buffer-create-child-anchor (g-object text-child-anchor)
466 (buffer (g-object text-buffer))
467 (iter (g-boxed-foreign text-iter)))
469 (defun text-buffer-insert-child-anchor (buffer position &optional anchor)
471 (progn (gtk-text-buffer-insert-child-anchor buffer position anchor)
473 (gtk-text-buffer-create-child-anchor buffer position)))
475 (export 'text-buffer-insert-child-anchor)
477 (defcfun gtk-text-buffer-create-mark (g-object text-mark)
478 (buffer (g-object text-buffer))
479 (name (:string :free-to-foreign t))
480 (position (g-boxed-foreign text-iter))
481 (left-gravity :boolean))
483 (defun text-buffer-create-mark (buffer name position &optional (left-gravity t))
484 (gtk-text-buffer-create-mark buffer name position left-gravity))
486 (export 'text-buffer-create-mark)
488 (defcfun gtk-text-buffer-move-mark :void
489 (buffer (g-object text-buffer))
490 (mark (g-object text-mark))
491 (position (g-boxed-foreign text-iter)))
493 (defcfun gtk-text-buffer-move-mark-by-name :void
494 (buffer (g-object text-buffer))
495 (name (:string :free-to-foreign t))
496 (position (g-boxed-foreign text-iter)))
498 (defun text-buffer-move-mark (buffer mark position)
500 (string (gtk-text-buffer-move-mark-by-name buffer mark position))
501 (text-mark (gtk-text-buffer-move-mark buffer mark position))))
503 (export 'text-buffer-move-mark)
505 (defcfun (text-buffer-add-mark "gtk_text_buffer_add_mark") :void
506 (buffer (g-object text-buffer))
507 (mark (g-object text-mark))
508 (position (g-boxed-foreign text-iter)))
510 (export 'text-buffer-add-mark)
512 (defcfun gtk-text-buffer-delete-mark :void
513 (buffer (g-object text-buffer))
514 (mark (g-object text-mark)))
516 (defcfun gtk-text-buffer-delete-mark-by-name :void
517 (buffer (g-object text-buffer))
518 (name (:string :free-to-foreign t)))
520 (defun text-buffer-delete-mark (buffer mark)
522 (string (gtk-text-buffer-delete-mark-by-name buffer mark))
523 (text-mark (gtk-text-buffer-delete-mark buffer mark))))
525 (export 'text-buffer-delete-mark)
527 (defcfun (text-buffer-get-mark "gtk_text_buffer_get_mark") (g-object text-mark)
528 (buffer (g-object text-buffer))
529 (name (:string :free-to-foreign t)))
531 (export 'text-buffer-get-mark)
533 (defcfun (text-buffer-insertion-mark "gtk_text_buffer_get_insert") (g-object text-mark)
534 (buffer (g-object text-buffer)))
536 (export 'text-buffer-insertion-mark)
538 (defcfun (text-buffer-selection-bound "gtk_text_buffer_get_selection_bound") (g-object text-mark)
539 (buffer (g-object text-buffer))
540 (name (:string :free-to-foreign t)))
542 (export 'text-buffer-selection-bound)
544 (defcfun (text-buffer-place-cursor "gtk_text_buffer_place_cursor") :void
545 (buffer (g-object text-buffer))
546 (position (g-boxed-foreign text-iter)))
548 (export 'text-buffer-place-cursor)
550 (defcfun (text-buffer-select-range "gtk_text_buffer_select_range") :void
551 (buffer (g-object text-buffer))
552 (insertion-point (g-boxed-foreign text-iter))
553 (selection-bound (g-boxed-foreign text-iter)))
555 (export 'text-buffer-select-range)
557 (defcfun gtk-text-buffer-apply-tag :void
558 (buffer (g-object text-buffer))
559 (tag (g-object text-tag))
560 (start (g-boxed-foreign text-iter))
561 (end (g-boxed-foreign text-iter)))
563 (defcfun gtk-text-buffer-apply-tag-by-name :void
564 (buffer (g-object text-buffer))
565 (name (:string :free-to-foreign t))
566 (start (g-boxed-foreign text-iter))
567 (end (g-boxed-foreign text-iter)))
569 (defun text-buffer-apply-tag (buffer tag start end)
571 (string (gtk-text-buffer-apply-tag-by-name buffer tag start end))
572 (text-tag (gtk-text-buffer-apply-tag buffer tag start end))))
574 (export 'text-buffer-apply-tag)
576 (defcfun gtk-text-buffer-remove-tag :void
577 (buffer (g-object text-buffer))
578 (tag (g-object text-tag))
579 (start (g-boxed-foreign text-iter))
580 (end (g-boxed-foreign text-iter)))
582 (defcfun gtk-text-buffer-remove-tag-by-name :void
583 (buffer (g-object text-buffer))
584 (name (:string :free-to-foreign t))
585 (start (g-boxed-foreign text-iter))
586 (end (g-boxed-foreign text-iter)))
588 (defun text-buffer-remove-tag (buffer tag start end)
590 (string (gtk-text-buffer-remove-tag-by-name buffer tag start end))
591 (text-tag (gtk-text-buffer-remove-tag buffer tag start end))))
593 (export 'text-buffer-remove-tag)
595 (defcfun (text-buffer-remove-all-tags "gtk_text_buffer_remove_all_tags") :void
596 (buffer (g-object text-buffer))
597 (start (g-boxed-foreign text-iter))
598 (end (g-boxed-foreign text-iter)))
600 (defcfun gtk-text-buffer-get-iter-at-line-offset :void
601 (buffer (g-object text-buffer))
602 (iter (g-boxed-foreign text-iter))
606 (defun text-buffer-get-iter-at-line-offset (buffer line-number char-offset)
607 (let ((iter (make-instance 'text-iter)))
608 (gtk-text-buffer-get-iter-at-line-offset buffer iter line-number char-offset)
611 (export 'text-buffer-get-iter-at-line-offset)
613 (defcfun gtk-text-buffer-get-iter-at-offset :void
614 (buffer (g-object text-buffer))
615 (iter (g-boxed-foreign text-iter))
618 (defun text-buffer-get-iter-at-offset (buffer offset)
619 (let ((iter (make-instance 'text-iter)))
620 (gtk-text-buffer-get-iter-at-offset buffer iter offset)
623 (export 'text-buffer-get-iter-at-offset)
625 (defcfun gtk-text-buffer-get-iter-at-line :void
626 (buffer (g-object text-buffer))
627 (iter (g-boxed-foreign text-iter))
630 (defun text-buffer-get-iter-at-line (buffer line-number)
631 (let ((iter (make-instance 'text-iter)))
632 (gtk-text-buffer-get-iter-at-line buffer iter line-number)
635 (export 'text-buffet-get-iter-at-line)
637 (defcfun gtk-text-buffer-get-iter-at-mark :void
638 (buffer (g-object text-buffer))
639 (iter (g-boxed-foreign text-iter))
640 (mark (g-object text-mark)))
642 (defun text-buffer-get-iter-at-mark (buffer mark)
644 (setf mark (text-buffer-get-mark buffer mark)))
645 (let ((iter (make-instance 'text-iter)))
646 (gtk-text-buffer-get-iter-at-mark buffer iter mark)
649 (export 'text-buffer-get-iter-at-mark)
651 (defcfun gtk-text-buffer-get-iter-at-child-anchor :void
652 (buffer (g-object text-buffer))
653 (iter (g-boxed-foreign text-iter))
654 (anchor (g-object text-child-anchor)))
656 (defun text-buffer-get-iter-at-child-anchor (buffer anchor)
657 (let ((iter (make-instance 'text-iter)))
658 (gtk-text-buffer-get-iter-at-child-anchor buffer iter anchor)
661 (export 'text-buffer-get-iter-at-child-anchor)
663 (defcfun gtk-text-buffer-get-start-iter :void
664 (buffer (g-object text-buffer))
665 (iter (g-boxed-foreign text-iter)))
667 (defun text-buffer-get-start-iter (buffer)
668 (let ((iter (make-instance 'text-iter)))
669 (gtk-text-buffer-get-start-iter buffer iter)
672 (export 'text-buffer-get-start-iter)
674 (defcfun gtk-text-buffer-get-end-iter :void
675 (buffer (g-object text-buffer))
676 (iter (g-boxed-foreign text-iter)))
678 (defun text-buffer-get-end-iter (buffer)
679 (let ((iter (make-instance 'text-iter)))
680 (gtk-text-buffer-get-end-iter buffer iter)
683 (export 'text-buffer-get-end-iter)
685 (defcfun gtk-text-buffer-get-bounds :void
686 (buffer (g-object text-buffer))
687 (start (g-boxed-foreign text-iter))
688 (end (g-boxed-foreign text-iter)))
690 (defun text-buffer-get-bounds (buffer)
691 (let ((start (make-instance 'text-iter))
692 (end (make-instance 'text-iter)))
693 (gtk-text-buffer-get-bounds buffer start end)
696 (export 'text-buffer-get-bounds)
698 (defcfun gtk-text-buffer-delete-selection :boolean
699 (bufer (g-object text-buffer))
700 (interactive :boolean)
701 (default-editable :boolean))
703 (defun text-buffer-delete-selection (buffer &key interactive default-editable)
704 (gtk-text-buffer-delete-selection buffer interactive default-editable))
706 (export 'text-buffer-delete-selection)
708 (defcfun gtk-text-buffer-paste-clipboard :void
709 (buffer (g-object text-buffer))
710 (clipboard (g-object clipboard))
711 (override-location (g-boxed-foreign text-iter))
712 (default-editable :boolean))
714 (defun text-buffer-paste-clipboard (buffer clipboard &key position default-editable)
715 (gtk-text-buffer-paste-clipboard buffer clipboard position default-editable))
717 (export 'text-buffer-paste-clipboard)
719 (defcfun (text-buffer-copy-clipboard "gtk_text_buffer_copy_clipboard") :void
720 (buffer (g-object text-buffer))
721 (clipboard (g-object clipboard)))
723 (export 'text-buffer-copy-clipboard)
725 (defcfun (text-buffer-cut-clipboard "gtk_text_buffer_cut_clipboard") :void
726 (buffer (g-object text-buffer))
727 (clipboard (g-object clipboard)))
729 (export 'text-buffer-cut-clipboard)
731 (defcfun gtk-text-buffer-get-selection-bounds :boolean
732 (buffer (g-object text-buffer))
733 (start (g-boxed-foreign text-iter))
734 (end (g-boxed-foreign text-iter)))
736 (defun text-buffer-get-selection-bounds (buffer)
737 (let ((i1 (make-instance 'text-iter))
738 (i2 (make-instance 'text-iter)))
739 (if (gtk-text-buffer-get-selection-bounds buffer i1 i2)
745 (export 'text-buffer-get-selection-bounds)
747 (defcfun (text-buffer-begin-user-action "gtk_text_buffer_begin_user_action") :void
748 (buffer (g-object text-buffer)))
750 (export 'text-buffer-begin-user-action)
752 (defcfun (text-buffer-end-user-action "gtk_text_buffer_end_user_action") :void
753 (buffer (g-object text-buffer)))
755 (export 'text-buffer-end-user-action)
757 (defmacro with-text-buffer-user-action ((buffer) &body body)
760 (text-buffer-begin-user-action ,g)
763 (text-buffer-end-user-action ,g)))))
765 (export 'with-text-buffer-user-action)
767 (defcfun (text-buffer-add-selection-clipboard "gtk_text_buffer_add_selection_clipboard") :void
768 (buffer (g-object text-buffer))
769 (clipboard (g-object clipboard)))
771 (defcfun (text-buffer-remove-selection-clipboard "gtk_text_buffer_remove_selection_clipboard") :void
772 (buffer (g-object text-buffer))
773 (clipboard (g-object clipboard)))
775 (export 'text-buffer-remove-selection-clipboard)
777 ;; enum GtkTextBufferTargetInfo;
778 ;; gboolean (*GtkTextBufferDeserializeFunc) (GtkTextBuffer *register_buffer,
779 ;; GtkTextBuffer *content_buffer,
780 ;; GtkTextIter *iter,
781 ;; const guint8 *data,
783 ;; gboolean create_tags,
784 ;; gpointer user_data,
786 ;; gboolean gtk_text_buffer_deserialize (GtkTextBuffer *register_buffer,
787 ;; GtkTextBuffer *content_buffer,
789 ;; GtkTextIter *iter,
790 ;; const guint8 *data,
793 ;; gboolean gtk_text_buffer_deserialize_get_can_create_tags
794 ;; (GtkTextBuffer *buffer,
796 ;; void gtk_text_buffer_deserialize_set_can_create_tags
797 ;; (GtkTextBuffer *buffer,
799 ;; gboolean can_create_tags);
800 ;; GtkTargetList* gtk_text_buffer_get_copy_target_list
801 ;; (GtkTextBuffer *buffer);
802 ;; GdkAtom* gtk_text_buffer_get_deserialize_formats
803 ;; (GtkTextBuffer *buffer,
805 ;; GtkTargetList* gtk_text_buffer_get_paste_target_list
806 ;; (GtkTextBuffer *buffer);
807 ;; GdkAtom* gtk_text_buffer_get_serialize_formats
808 ;; (GtkTextBuffer *buffer,
810 ;; GdkAtom gtk_text_buffer_register_deserialize_format
811 ;; (GtkTextBuffer *buffer,
812 ;; const gchar *mime_type,
813 ;; GtkTextBufferDeserializeFunc function,
814 ;; gpointer user_data,
815 ;; GDestroyNotify user_data_destroy);
816 ;; GdkAtom gtk_text_buffer_register_deserialize_tagset
817 ;; (GtkTextBuffer *buffer,
818 ;; const gchar *tagset_name);
819 ;; GdkAtom gtk_text_buffer_register_serialize_format
820 ;; (GtkTextBuffer *buffer,
821 ;; const gchar *mime_type,
822 ;; GtkTextBufferSerializeFunc function,
823 ;; gpointer user_data,
824 ;; GDestroyNotify user_data_destroy);
825 ;; GdkAtom gtk_text_buffer_register_serialize_tagset
826 ;; (GtkTextBuffer *buffer,
827 ;; const gchar *tagset_name);
828 ;; guint8* (*GtkTextBufferSerializeFunc) (GtkTextBuffer *register_buffer,
829 ;; GtkTextBuffer *content_buffer,
830 ;; const GtkTextIter *start,
831 ;; const GtkTextIter *end,
833 ;; gpointer user_data);
834 ;; guint8* gtk_text_buffer_serialize (GtkTextBuffer *register_buffer,
835 ;; GtkTextBuffer *content_buffer,
837 ;; const GtkTextIter *start,
838 ;; const GtkTextIter *end,
840 ;; void gtk_text_buffer_unregister_deserialize_format
841 ;; (GtkTextBuffer *buffer,
843 ;; void gtk_text_buffer_unregister_serialize_format
844 ;; (GtkTextBuffer *buffer,
851 (defcallback gtk-text-tag-table-foreach-function :void ((tag (g-object text-tag)) (data :pointer))
852 (funcall (get-stable-pointer-value data) tag))
854 (defcfun (text-tag-table-add "gtk_text_tag_table_add") :void
855 (table (g-object text-tag-table))
856 (tag (g-object text-tag)))
858 (export 'text-tag-table-add)
860 (defcfun (text-tag-table-remove "gtk_text_tag_table_remove") :void
861 (table (g-object text-tag-table))
862 (tag (g-object text-tag)))
864 (export 'text-tag-table-remove)
866 (defcfun (text-tag-table-lookup "gtk_text_tag_table_lookup") (g-object text-tag)
867 (table (g-object text-tag-table))
868 (name (:string :free-to-foreign t)))
870 (export 'text-tag-table-lookup)
872 (defcfun gtk-text-tag-table-foreach :void
873 (table (g-object text-tag-table))
877 (defun text-tag-table-foreach (table function)
878 (with-stable-pointer (ptr function)
879 (gtk-text-tag-table-foreach table (callback gtk-text-tag-table-foreach-function) ptr)))
881 (export 'text-tag-table-foreach)
883 (defcfun (text-tag-table-size "gtk_text_tag_table_get_size") :int
884 (table (g-object text-tag-table)))
886 (export 'text-tag-table-size)
890 (defcfun gtk-text-view-scroll-to-mark :void
891 (text-view (g-object text-view))
892 (mark (g-object text-mark))
893 (within-margin :double)
898 (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))
899 (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)))
901 (export 'text-view-scroll-to-mark)
903 (defcfun gtk-text-view-scroll-to-iter :void
904 (text-view (g-object text-view))
905 (iter (g-object text-iter))
906 (within-margin :double)
911 (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))
912 (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)))
914 (export 'text-view-scroll-to-iter)
916 (defcfun (text-view-move-mark-onscreen "gtk_text_view_move_mark_onscreen") :boolean
917 (text-view (g-object text-view))
918 (mark (g-object text-mark)))
920 (export 'text-view-move-mark-onscreen)
922 (defcfun (text-view-place-cursor-onscreen "gtk_text_view_place_cursor_onscreen") :boolean
923 (text-view (g-object text-view)))
925 (export 'text-view-place-cursor-onscreen)
927 (defcfun gtk-text-view-get-visible-rect :void
928 (text-view (g-object text-view))
929 (visible-rect (g-boxed-foreign rectangle)))
931 (defun text-view-visible-rect (text-view)
932 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
933 (gtk-text-view-get-visible-rect text-view rect)
936 (export 'text-view-visible-rect)
938 (defcfun gtk-text-view-get-iter-location :void
939 (text-view (g-object text-view))
940 (iter (g-boxed-foreign text-iter))
941 (location (g-boxed-foreign rectangle)))
943 (defun text-view-iter-location (text-view iter)
944 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
945 (gtk-text-view-get-iter-location text-view iter rect)
948 (export 'text-view-iter-location)
951 ;; void gtk_text_view_get_line_at_y (GtkTextView *text_view,
952 ;; GtkTextIter *target_iter,
955 ;; void gtk_text_view_get_line_yrange (GtkTextView *text_view,
956 ;; const GtkTextIter *iter,
960 (defcfun gtk-text-view-get-iter-at-location :void
961 (text-view (g-object text-view))
962 (iter (g-boxed-foreign text-iter))
966 (defun text-view-get-iter-at-location (view x y)
967 (let ((iter (make-instance 'text-iter)))
968 (gtk-text-view-get-iter-at-location view iter x y)
971 (export 'text-view-get-iter-at-location)
973 ;; void gtk_text_view_get_iter_at_position (GtkTextView *text_view,
974 ;; GtkTextIter *iter,
978 ;; void gtk_text_view_buffer_to_window_coords
979 ;; (GtkTextView *text_view,
980 ;; GtkTextWindowType win,
986 (defcfun gtk-text-view-window-to-buffer-coords :void
987 (text-view (g-object text-view))
988 (win text-window-type)
994 (defun text-view-window-to-buffer-coords (text-view win window-x window-y)
995 (with-foreign-objects ((buffer-x :int) (buffer-y :int))
996 (gtk-text-view-window-to-buffer-coords text-view win window-x window-y buffer-x buffer-y)
997 (values (mem-ref buffer-x :int)
998 (mem-ref buffer-y :int))))
1000 (export 'text-view-window-to-buffer-coords)
1002 (defcfun gtk-text-view-get-window (g-object gdk:gdk-window)
1003 (text-view (g-object text-view))
1004 (win text-window-type))
1006 (defun text-view-get-window (text-view win)
1007 (gtk-text-view-get-window text-view win))
1009 (export 'text-view-get-window)
1011 ;; GtkTextWindowType gtk_text_view_get_window_type (GtkTextView *text_view,
1012 ;; GdkWindow *window);
1013 ;; void gtk_text_view_set_border_window_size
1014 ;; (GtkTextView *text_view,
1015 ;; GtkTextWindowType type,
1017 ;; gint gtk_text_view_get_border_window_size
1018 ;; (GtkTextView *text_view,
1019 ;; GtkTextWindowType type);
1020 ;; gboolean gtk_text_view_forward_display_line (GtkTextView *text_view,
1021 ;; GtkTextIter *iter);
1022 ;; gboolean gtk_text_view_backward_display_line (GtkTextView *text_view,
1023 ;; GtkTextIter *iter);
1024 ;; gboolean gtk_text_view_forward_display_line_end
1025 ;; (GtkTextView *text_view,
1026 ;; GtkTextIter *iter);
1027 ;; gboolean gtk_text_view_backward_display_line_start
1028 ;; (GtkTextView *text_view,
1029 ;; GtkTextIter *iter);
1030 ;; gboolean gtk_text_view_starts_display_line (GtkTextView *text_view,
1031 ;; const GtkTextIter *iter);
1032 ;; gboolean gtk_text_view_move_visually (GtkTextView *text_view,
1033 ;; GtkTextIter *iter,
1035 ;; void gtk_text_view_add_child_at_anchor (GtkTextView *text_view,
1036 ;; GtkWidget *child,
1037 ;; GtkTextChildAnchor *anchor);
1039 (defcfun (text-view-add-child-at-anchor "gtk_text_view_add_child_at_anchor") :void
1040 (text-view g-object)
1044 (export 'text-view-add-child-at-anchor)
1046 ;; GtkTextChildAnchor;
1047 ;; GtkTextChildAnchor* gtk_text_child_anchor_new (void);
1048 ;; GList* gtk_text_child_anchor_get_widgets (GtkTextChildAnchor *anchor);
1049 ;; gboolean gtk_text_child_anchor_get_deleted (GtkTextChildAnchor *anchor);
1050 ;; void gtk_text_view_add_child_in_window (GtkTextView *text_view,
1051 ;; GtkWidget *child,
1052 ;; GtkTextWindowType which_window,
1055 ;; void gtk_text_view_move_child (GtkTextView *text_view,
1056 ;; GtkWidget *child,