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 (at-init () (foreign-funcall "gtk_text_iter_get_type" :int))
19 (define-g-boxed-opaque text-iter "GtkTextIter"
20 :alloc (gtk-text-iter-alloc))
22 (define-boxed-opaque-accessor text-iter text-iter-buffer :reader "gtk_text_iter_get_buffer" :type (g-object text-buffer))
23 (define-boxed-opaque-accessor text-iter text-iter-offset :reader "gtk_text_iter_get_offset" :writer "gtk_text_iter_set_offset" :type :int)
24 (define-boxed-opaque-accessor text-iter text-iter-line :reader "gtk_text_iter_get_line" :writer "gtk_text_iter_set_line" :type :int)
25 (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)
26 (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)
27 (define-boxed-opaque-accessor text-iter text-iter-char :reader "gtk_text_iter_get_char" :type unichar)
28 (define-boxed-opaque-accessor text-iter text-iter-pixbuf :reader "gtk_text_iter_get_pixbuf" :type (g-object pixbuf))
29 (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))
30 (define-boxed-opaque-accessor text-iter text-iter-child-anchor :reader "gtk_text_iter_get_child_anchor" :type (g-object text-child-anchor))
31 (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))
32 (define-boxed-opaque-accessor text-iter text-iter-chars-in-line :reader "gtk_text_iter_get_chars_in_line" :type :int)
33 (define-boxed-opaque-accessor text-iter text-iter-language :reader "gtk_text_iter_get_language" :type :pointer)
34 (define-boxed-opaque-accessor text-iter text-iter-is-end :reader "gtk_text_iter_is_end" :type :boolean)
35 (define-boxed-opaque-accessor text-iter text-iter-is-start :reader "gtk_text_iter_is_start" :type :boolean)
36 (define-boxed-opaque-accessor text-iter text-iter-starts-word :reader "gtk_text_iter_starts_word" :type :boolean)
37 (define-boxed-opaque-accessor text-iter text-iter-ends-word :reader "gtk_text_iter_ends_word" :type :boolean)
38 (define-boxed-opaque-accessor text-iter text-iter-inside-word :reader "gtk_text_iter_inside_word" :type :boolean)
39 (define-boxed-opaque-accessor text-iter text-iter-starts-line :reader "gtk_text_iter_starts_line" :type :boolean)
40 (define-boxed-opaque-accessor text-iter text-iter-ends-line :reader "gtk_text_iter_ends_line" :type :boolean)
41 (define-boxed-opaque-accessor text-iter text-iter-starts-sentence :reader "gtk_text_iter_starts_sentence" :type :boolean)
42 (define-boxed-opaque-accessor text-iter text-iter-ends-sentence :reader "gtk_text_iter_ends_sentence" :type :boolean)
43 (define-boxed-opaque-accessor text-iter text-iter-inside-sentence :reader "gtk_text_iter_inside_sentence" :type :boolean)
44 (define-boxed-opaque-accessor text-iter text-iter-is-cursor-position :reader "gtk_text_iter_is_cursor_position" :type :boolean)
46 (export (boxed-related-symbols 'text-iter))
47 (export '(text-iter-buffer text-iter-offset text-iter-line
48 text-iter-line-offset text-iter-visible-line-offset
49 text-iter-char text-iter-pixbuf text-iter-marks
50 text-iter-child-anchor text-iter-tags
51 text-iter-chars-in-line text-iter-language text-iter-is-end
52 text-iter-is-start text-iter-can-insert
53 text-iter-starts-word text-iter-ends-word
54 text-iter-inside-word text-iter-starts-line
55 text-iter-ends-line text-iter-starts-sentence
56 text-iter-ends-sentence text-iter-inside-sentence
57 text-iter-is-cursor-position ))
59 (defcstruct %text-iter
74 (defctype %text-iter (:struct %text-iter))
76 (defcfun gtk-text-iter-copy :pointer
79 (defun gtk-text-iter-alloc ()
80 (with-foreign-object (iter '%text-iter)
81 (gtk-text-iter-copy iter)))
83 (defcfun (text-iter-slice "gtk_text_iter_get_slice") (g-string :free-from-foreign t)
84 (start (g-boxed-foreign text-iter))
85 (end (g-boxed-foreign text-iter)))
87 (export 'text-iter-slice)
89 (defcfun (text-iter-text "gtk_text_iter_get_text") (g-string :free-from-foreign t)
90 (start (g-boxed-foreign text-iter))
91 (end (g-boxed-foreign text-iter)))
93 (export 'text-iter-text)
95 (defcfun (text-iter-visible-slice "gtk_text_iter_get_visible_slice") (g-string :free-from-foreign t)
96 (start (g-boxed-foreign text-iter))
97 (end (g-boxed-foreign text-iter)))
99 (export 'text-iter-visible-slice)
101 (defcfun (text-iter-visible-text "gtk_text_iter_get_visible_text") (g-string :free-from-foreign t)
102 (start (g-boxed-foreign text-iter))
103 (end (g-boxed-foreign text-iter)))
105 (export 'text-iter-visible-text)
107 (defcfun (text-iter-toggled-tags "gtk_text_iter_get_toggled_tags") (gslist (g-object text-tag))
108 (iter (g-boxed-foreign text-iter))
109 (toggled-on :boolean))
111 (export 'text-iter-toggled-tags)
113 (defcfun (text-iter-begins-tag "gtk_text_iter_begins_tag") :boolean
114 (iter (g-boxed-foreign text-iter))
115 (tag (g-object text-tag)))
117 (export 'text-iter-begins-tag)
119 (defcfun (text-iter-ends-tag "gtk_text_iter_ends_tag") :boolean
120 (iter (g-boxed-foreign text-iter))
121 (tag (g-object text-tag)))
123 (export 'text-iter-ends-tag)
125 (defcfun (text-iter-toggles-tag "gtk_text_iter_toggles_tag") :boolean
126 (iter (g-boxed-foreign text-iter))
127 (tag (g-object text-tag)))
129 (export 'text-iter-toggles-tag)
131 (defcfun (text-iter-has-tag "gtk_text_iter_has_tag") :boolean
132 (iter (g-boxed-foreign text-iter))
133 (tag (g-object text-tag)))
135 (export 'text-iter-has-tag)
137 (defcfun (text-iter-editable "gtk_text_iter_editable") :boolean
138 (iter (g-boxed-foreign text-iter))
141 (export 'text-iter-editable)
143 (defcfun (text-iter-can-insert "gtk_text_iter_can_insert") :boolean
144 (iter (g-boxed-foreign text-iter))
145 (default-editable :boolean))
147 (export 'text-iter-can-insert)
149 (defcfun gtk-text-iter-get-attributes :boolean
150 (iter (g-boxed-foreign text-iter))
151 (values (g-object text-attributes)))
153 (defun text-iter-attributes (iter default-attributes)
154 (let ((changed-p (gtk-text-iter-get-attributes iter default-attributes)))
155 (values default-attributes changed-p)))
157 (export 'text-iter-attributes)
159 (defcfun gtk-text-iter-forward-chars :boolean
160 (iter (g-boxed-foreign text-iter))
163 (defcfun gtk-text-iter-forward-lines :boolean
164 (iter (g-boxed-foreign text-iter))
167 (defcfun gtk-text-iter-forward-word-ends :boolean
168 (iter (g-boxed-foreign text-iter))
171 (defcfun gtk-text-iter-backward-word-starts :boolean
172 (iter (g-boxed-foreign text-iter))
175 (defcfun gtk-text-iter-forward-cursor-positions :boolean
176 (iter (g-boxed-foreign text-iter))
179 (defcfun gtk-text-iter-forward-sentence-ends :boolean
180 (iter (g-boxed-foreign text-iter))
183 (defcfun gtk-text-iter-backward-sentence-starts :boolean
184 (iter (g-boxed-foreign text-iter))
187 (defcfun gtk-text-iter-forward-visible-word-ends :boolean
188 (iter (g-boxed-foreign text-iter))
191 (defcfun gtk-text-iter-backward-visible-word-starts :boolean
192 (iter (g-boxed-foreign text-iter))
195 (defcfun gtk-text-iter-forward-visible-cursor-positions :boolean
196 (iter (g-boxed-foreign text-iter))
199 (defcfun gtk-text-iter-forward-visible-lines :boolean
200 (iter (g-boxed-foreign text-iter))
203 (defun text-iter-move (iter &key (count 1) (by :char) (direction :forward))
204 (assert (typep by '(member :char :line :word :cursor-position :sentence :visible-word :visible-line :visible-cursor-position)))
205 (assert (typep direction '(member :forward :backward)))
206 (when (and (member by '(:char :ine :cursor-position :visible-line :visible-cursor-position)) (eq direction :backward))
207 (setf count (- count)))
209 (:char (gtk-text-iter-forward-chars iter count))
210 (:line (gtk-text-iter-forward-lines iter count))
211 (:word (if (eq direction :forward)
212 (gtk-text-iter-forward-word-ends iter count)
213 (gtk-text-iter-backward-word-starts iter count)))
214 (:cursor-position (gtk-text-iter-forward-cursor-positions iter count))
215 (:sentence (if (eq direction :forward)
216 (gtk-text-iter-forward-sentence-ends iter count)
217 (gtk-text-iter-backward-sentence-starts iter count)))
218 (:visible-word (if (eq direction :forward)
219 (gtk-text-iter-forward-visible-word-ends iter count)
220 (gtk-text-iter-backward-visible-word-starts iter count)))
221 (:visible-line (gtk-text-iter-forward-visible-lines iter count))
222 (:visible-cursor-position (gtk-text-iter-forward-visible-cursor-positions iter count))))
224 (export 'text-iter-move)
226 (defcfun (text-iter-forward-to-end "gtk_text_iter_forward_to_end") :void
227 (iter (g-boxed-foreign text-iter)))
229 (export 'text-iter-forward-to-end)
231 (defcfun (text-iter-forward-to-line-end "gtk_text_iter_forward_to_line_end") :boolean
232 (iter (g-boxed-foreign text-iter)))
234 (export 'text-iter-forward-to-line-end)
236 (defcfun (text-iter-forward-to-tag-toggle "gtk_text_iter_forward_to_tag_toggle") :boolean
237 (iter (g-boxed-foreign text-iter))
238 (tag (g-object text-tag)))
240 (defcfun (text-iter-backward-to-tag-toggle "gtk_text_iter_backward_to_tag_toggle") :boolean
241 (iter (g-boxed-foreign text-iter))
242 (tag (g-object text-tag)))
244 (export '(text-iter-forward-to-tag-toggle text-iter-backward-to-tag-toggle))
246 (defcallback gtk-text-char-predicate :boolean ((char unichar) (user-data :pointer))
247 (let ((function (get-stable-pointer-value user-data)))
248 (funcall function char)))
250 (defcfun gtk-text-iter-forward-find-char :boolean
251 (iter (g-boxed-foreign text-iter))
254 (limit (g-boxed-foreign text-iter)))
256 (defcfun gtk-text-iter-backward-find-char :boolean
257 (iter (g-boxed-foreign text-iter))
260 (limit (g-boxed-foreign text-iter)))
262 (defun text-iter-find-char (iter predicate &key limit (direction :forward))
263 (assert (typep direction '(member :forward :backward)))
264 (with-stable-pointer (ptr predicate)
265 (if (eq direction :forward)
266 (gtk-text-iter-forward-find-char iter (callback gtk-text-char-predicate) ptr limit)
267 (gtk-text-iter-backward-find-char iter (callback gtk-text-char-predicate) ptr limit))))
269 (export 'text-iter-find-char)
271 (defcfun gtk-text-iter-forward-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 (defcfun gtk-text-iter-backward-search :boolean
280 (iter (g-boxed-foreign text-iter))
281 (str (:string :free-to-foreign t))
282 (flags text-search-flags)
283 (match-start (g-boxed-foreign text-iter))
284 (match-end (g-boxed-foreign text-iter))
285 (limit (g-boxed-foreign text-iter)))
287 (defun text-iter-search (start-position string &key flags limit (direction :forward))
288 (assert (typep direction '(member :forward :backward)))
289 (let ((i1 (make-instance 'text-iter))
290 (i2 (make-instance 'text-iter)))
291 (if (if (eq direction :forward)
292 (gtk-text-iter-forward-search start-position string flags i1 i2 limit)
293 (gtk-text-iter-backward-search start-position string flags i1 i2 limit))
295 (values nil nil nil))))
297 (export 'text-iter-search)
299 (defcfun (text-iter-equal "gtk_text_iter_equal") :boolean
300 (iter-1 (g-boxed-foreign text-iter))
301 (iter-2 (g-boxed-foreign text-iter)))
303 (export 'text-iter-equal)
305 (defcfun (text-iter-compare "gtk_text_iter_compare") :int
306 (iter-1 (g-boxed-foreign text-iter))
307 (iter-2 (g-boxed-foreign text-iter)))
309 (export 'text-iter-compare)
311 (defcfun (text-iter-in-range "gtk_text_iter_in_range") :boolean
312 (iter (g-boxed-foreign text-iter))
313 (start (g-boxed-foreign text-iter))
314 (end (g-boxed-foreign text-iter)))
316 (export 'text-iter-in-range)
318 (defcfun (text-iter-order "gtk_text_iter_order") :void
319 (iter-1 (g-boxed-foreign text-iter))
320 (iter-2 (g-boxed-foreign text-iter)))
322 (export 'text-iter-order)
326 (defcfun (text-buffer-line-count "gtk_text_buffer_get_line_count") :int
327 (buffer (g-object text-buffer)))
329 (export 'text-buffer-line-count)
331 (defcfun (text-buffer-char-count "gtk_text_buffer_get_char_count") :int
332 (buffer (g-object text-buffer)))
334 (export 'text-buffer)
336 (defcfun gtk-text-buffer-insert :void
337 (buffer (g-object text-buffer))
338 (iter (g-boxed-foreign text-iter))
339 (text (:string :free-to-foreign t))
342 (defcfun gtk-text-buffer-insert-at-cursor :void
343 (buffer (g-object text-buffer))
344 (text (:string :free-to-foreign t))
347 (defcfun gtk-text-buffer-insert-interactive :boolean
348 (buffer (g-object text-buffer))
349 (iter (g-boxed-foreign text-iter))
350 (text (:string :free-to-foreign t))
352 (default-editable :boolean))
354 (defcfun gtk-text-buffer-insert-interactive-at-cursor :boolean
355 (buffer (g-object text-buffer))
356 (text (:string :free-to-foreign t))
358 (default-editable :boolean))
360 (defun text-buffer-insert (buffer text &key (position :cursor) (interactive nil) (default-editable t))
361 (assert (typep position '(or text-iter (member :cursor))))
363 (if (eq position :cursor)
364 (gtk-text-buffer-insert-interactive-at-cursor buffer text -1 default-editable)
365 (gtk-text-buffer-insert-interactive buffer position text -1 default-editable))
366 (progn (if (eq position :cursor)
367 (gtk-text-buffer-insert-at-cursor buffer text -1)
368 (gtk-text-buffer-insert buffer position text -1))
371 (export 'text-buffer-insert)
373 (defcfun gtk-text-buffer-insert-range :void
374 (buffer (g-object text-buffer))
375 (iter (g-boxed-foreign text-iter))
376 (range-start (g-boxed-foreign text-iter))
377 (range-end (g-boxed-foreign text-iter)))
379 (defcfun gtk-text-buffer-insert-range-interactive :boolean
380 (buffer (g-object text-buffer))
381 (iter (g-boxed-foreign text-iter))
382 (range-start (g-boxed-foreign text-iter))
383 (range-end (g-boxed-foreign text-iter))
384 (default-editable :boolean))
386 (defun text-buffer-insert-range (buffer position range-start range-end &key interactive default-editable)
388 (gtk-text-buffer-insert-range-interactive buffer position range-start range-end default-editable)
389 (progn (gtk-text-buffer-insert-range buffer position range-start range-end)
392 (export 'text-buffer-insert-range)
394 (defcfun gtk-text-buffer-delete :void
395 (buffer (g-object text-buffer))
396 (range-start (g-boxed-foreign text-iter))
397 (range-end (g-boxed-foreign text-iter)))
399 (defcfun gtk-text-buffer-delete-interactive :boolean
400 (buffer (g-object text-buffer))
401 (range-start (g-boxed-foreign text-iter))
402 (range-end (g-boxed-foreign text-iter))
403 (default-editable :boolean))
405 (defun text-buffer-delete (buffer range-start range-end &key interactive default-editable)
407 (gtk-text-buffer-delete-interactive buffer range-start range-end default-editable)
408 (progn (gtk-text-buffer-delete buffer range-start range-end)
411 (export 'text-buffer-delete)
413 (defcfun gtk-text-buffer-backspace :boolean
414 (buffer (g-object text-buffer))
415 (iter (g-boxed-foreign text-iter))
416 (interactive :boolean)
417 (default-editable :boolean))
419 (defun text-buffer-backspace (buffer position &key interactive default-editable)
420 (gtk-text-buffer-backspace buffer position interactive default-editable))
422 (export 'text-buffer-backspace)
424 (defcfun gtk-text-buffer-get-slice (:string :free-from-foreign t)
425 (buffer (g-object text-buffer))
426 (range-start (g-boxed-foreign text-iter))
427 (range-end (g-boxed-foreign text-iter))
428 (include-hidden-chars :boolean))
430 (defun text-buffer-slice (buffer range-start range-end &key include-hidden-chars)
431 (gtk-text-buffer-get-slice buffer range-start range-end include-hidden-chars))
433 (export 'text-buffer-slice)
435 (defcfun (text-buffer-insert-pixbuf "gtk_text_buffer_insert_pixbuf") :void
436 (buffer (g-object text-buffer))
437 (position (g-boxed-foreign text-iter))
438 (pixbuf (g-object pixbuf)))
440 (export 'text-buffer-insert-pixbuf)
442 (defcfun gtk-text-buffer-insert-child-anchor :void
443 (buffer (g-object text-buffer))
444 (iter (g-boxed-foreign text-iter))
445 (anchor (g-object text-child-anchor)))
447 (defcfun gtk-text-buffer-create-child-anchor (g-object text-child-anchor)
448 (buffer (g-object text-buffer))
449 (iter (g-boxed-foreign text-iter)))
451 (defun text-buffer-insert-child-anchor (buffer position &optional anchor)
453 (progn (gtk-text-buffer-insert-child-anchor buffer position anchor)
455 (gtk-text-buffer-create-child-anchor buffer position)))
457 (export 'text-buffer-insert-child-anchor)
459 (defcfun gtk-text-buffer-create-mark (g-object text-mark)
460 (buffer (g-object text-buffer))
461 (name (:string :free-to-foreign t))
462 (position (g-boxed-foreign text-iter))
463 (left-gravity :boolean))
465 (defun text-buffer-create-mark (buffer name position &optional (left-gravity t))
466 (gtk-text-buffer-create-mark buffer name position left-gravity))
468 (export 'text-buffer-create-mark)
470 (defcfun gtk-text-buffer-move-mark :void
471 (buffer (g-object text-buffer))
472 (mark (g-object text-mark))
473 (position (g-boxed-foreign text-iter)))
475 (defcfun gtk-text-buffer-move-mark-by-name :void
476 (buffer (g-object text-buffer))
477 (name (:string :free-to-foreign t))
478 (position (g-boxed-foreign text-iter)))
480 (defun text-buffer-move-mark (buffer mark position)
482 (string (gtk-text-buffer-move-mark-by-name buffer mark position))
483 (text-mark (gtk-text-buffer-move-mark buffer mark position))))
485 (export 'text-buffer-move-mark)
487 (defcfun (text-buffer-add-mark "gtk_text_buffer_add_mark") :void
488 (buffer (g-object text-buffer))
489 (mark (g-object text-mark))
490 (position (g-boxed-foreign text-iter)))
492 (export 'text-buffer-add-mark)
494 (defcfun gtk-text-buffer-delete-mark :void
495 (buffer (g-object text-buffer))
496 (mark (g-object text-mark)))
498 (defcfun gtk-text-buffer-delete-mark-by-name :void
499 (buffer (g-object text-buffer))
500 (name (:string :free-to-foreign t)))
502 (defun text-buffer-delete-mark (buffer mark)
504 (string (gtk-text-buffer-delete-mark-by-name buffer mark))
505 (text-mark (gtk-text-buffer-delete-mark buffer mark))))
507 (export 'text-buffer-delete-mark)
509 (defcfun (text-buffer-get-mark "gtk_text_buffer_get_mark") (g-object text-mark)
510 (buffer (g-object text-buffer))
511 (name (:string :free-to-foreign t)))
513 (export 'text-buffer-get-mark)
515 (defcfun (text-buffer-insertion-mark "gtk_text_buffer_get_insert") (g-object text-mark)
516 (buffer (g-object text-buffer)))
518 (export 'text-buffer-insertion-mark)
520 (defcfun (text-buffer-selection-bound "gtk_text_buffer_get_selection_bound") (g-object text-mark)
521 (buffer (g-object text-buffer)))
523 (export 'text-buffer-selection-bound)
525 (defcfun (text-buffer-place-cursor "gtk_text_buffer_place_cursor") :void
526 (buffer (g-object text-buffer))
527 (position (g-boxed-foreign text-iter)))
529 (export 'text-buffer-place-cursor)
531 (defcfun (text-buffer-select-range "gtk_text_buffer_select_range") :void
532 (buffer (g-object text-buffer))
533 (insertion-point (g-boxed-foreign text-iter))
534 (selection-bound (g-boxed-foreign text-iter)))
536 (export 'text-buffer-select-range)
538 (defcfun gtk-text-buffer-apply-tag :void
539 (buffer (g-object text-buffer))
540 (tag (g-object text-tag))
541 (start (g-boxed-foreign text-iter))
542 (end (g-boxed-foreign text-iter)))
544 (defcfun gtk-text-buffer-apply-tag-by-name :void
545 (buffer (g-object text-buffer))
546 (name (:string :free-to-foreign t))
547 (start (g-boxed-foreign text-iter))
548 (end (g-boxed-foreign text-iter)))
550 (defun text-buffer-apply-tag (buffer tag start end)
552 (string (gtk-text-buffer-apply-tag-by-name buffer tag start end))
553 (text-tag (gtk-text-buffer-apply-tag buffer tag start end))))
555 (export 'text-buffer-apply-tag)
557 (defcfun gtk-text-buffer-remove-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-remove-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-remove-tag (buffer tag start end)
571 (string (gtk-text-buffer-remove-tag-by-name buffer tag start end))
572 (text-tag (gtk-text-buffer-remove-tag buffer tag start end))))
574 (export 'text-buffer-remove-tag)
576 (defcfun (text-buffer-remove-all-tags "gtk_text_buffer_remove_all_tags") :void
577 (buffer (g-object text-buffer))
578 (start (g-boxed-foreign text-iter))
579 (end (g-boxed-foreign text-iter)))
581 (defcfun gtk-text-buffer-get-iter-at-line-offset :void
582 (buffer (g-object text-buffer))
583 (iter (g-boxed-foreign text-iter))
587 (defun text-buffer-get-iter-at-line-offset (buffer line-number char-offset)
588 (let ((iter (make-instance 'text-iter)))
589 (gtk-text-buffer-get-iter-at-line-offset buffer iter line-number char-offset)
592 (export 'text-buffer-get-iter-at-line-offset)
594 (defcfun gtk-text-buffer-get-iter-at-offset :void
595 (buffer (g-object text-buffer))
596 (iter (g-boxed-foreign text-iter))
599 (defun text-buffer-get-iter-at-offset (buffer offset)
600 (let ((iter (make-instance 'text-iter)))
601 (gtk-text-buffer-get-iter-at-offset buffer iter offset)
604 (export 'text-buffer-get-iter-at-offset)
606 (defcfun gtk-text-buffer-get-iter-at-line :void
607 (buffer (g-object text-buffer))
608 (iter (g-boxed-foreign text-iter))
611 (defun text-buffer-get-iter-at-line (buffer line-number)
612 (let ((iter (make-instance 'text-iter)))
613 (gtk-text-buffer-get-iter-at-line buffer iter line-number)
616 (export 'text-buffet-get-iter-at-line)
618 (defcfun gtk-text-buffer-get-iter-at-mark :void
619 (buffer (g-object text-buffer))
620 (iter (g-boxed-foreign text-iter))
621 (mark (g-object text-mark)))
623 (defun text-buffer-get-iter-at-mark (buffer mark)
625 (setf mark (text-buffer-get-mark buffer mark)))
626 (let ((iter (make-instance 'text-iter)))
627 (gtk-text-buffer-get-iter-at-mark buffer iter mark)
630 (export 'text-buffer-get-iter-at-mark)
632 (defcfun gtk-text-buffer-get-iter-at-child-anchor :void
633 (buffer (g-object text-buffer))
634 (iter (g-boxed-foreign text-iter))
635 (anchor (g-object text-child-anchor)))
637 (defun text-buffer-get-iter-at-child-anchor (buffer anchor)
638 (let ((iter (make-instance 'text-iter)))
639 (gtk-text-buffer-get-iter-at-child-anchor buffer iter anchor)
642 (export 'text-buffer-get-iter-at-child-anchor)
644 (defcfun gtk-text-buffer-get-start-iter :void
645 (buffer (g-object text-buffer))
646 (iter (g-boxed-foreign text-iter)))
648 (defun text-buffer-get-start-iter (buffer)
649 (let ((iter (make-instance 'text-iter)))
650 (gtk-text-buffer-get-start-iter buffer iter)
653 (export 'text-buffer-get-start-iter)
655 (defcfun gtk-text-buffer-get-end-iter :void
656 (buffer (g-object text-buffer))
657 (iter (g-boxed-foreign text-iter)))
659 (defun text-buffer-get-end-iter (buffer)
660 (let ((iter (make-instance 'text-iter)))
661 (gtk-text-buffer-get-end-iter buffer iter)
664 (export 'text-buffer-get-end-iter)
666 (defcfun gtk-text-buffer-get-bounds :void
667 (buffer (g-object text-buffer))
668 (start (g-boxed-foreign text-iter))
669 (end (g-boxed-foreign text-iter)))
671 (defun text-buffer-get-bounds (buffer)
672 (let ((start (make-instance 'text-iter))
673 (end (make-instance 'text-iter)))
674 (gtk-text-buffer-get-bounds buffer start end)
677 (export 'text-buffer-get-bounds)
679 (defcfun gtk-text-buffer-delete-selection :boolean
680 (bufer (g-object text-buffer))
681 (interactive :boolean)
682 (default-editable :boolean))
684 (defun text-buffer-delete-selection (buffer &key interactive default-editable)
685 (gtk-text-buffer-delete-selection buffer interactive default-editable))
687 (export 'text-buffer-delete-selection)
689 (defcfun gtk-text-buffer-paste-clipboard :void
690 (buffer (g-object text-buffer))
691 (clipboard (g-object clipboard))
692 (override-location (g-boxed-foreign text-iter))
693 (default-editable :boolean))
695 (defun text-buffer-paste-clipboard (buffer clipboard &key position default-editable)
696 (gtk-text-buffer-paste-clipboard buffer clipboard position default-editable))
698 (export 'text-buffer-paste-clipboard)
700 (defcfun (text-buffer-copy-clipboard "gtk_text_buffer_copy_clipboard") :void
701 (buffer (g-object text-buffer))
702 (clipboard (g-object clipboard)))
704 (export 'text-buffer-copy-clipboard)
706 (defcfun (text-buffer-cut-clipboard "gtk_text_buffer_cut_clipboard") :void
707 (buffer (g-object text-buffer))
708 (clipboard (g-object clipboard))
709 (default-editable :boolean))
711 (export 'text-buffer-cut-clipboard)
713 (defcfun gtk-text-buffer-get-selection-bounds :boolean
714 (buffer (g-object text-buffer))
715 (start (g-boxed-foreign text-iter))
716 (end (g-boxed-foreign text-iter)))
718 (defun text-buffer-get-selection-bounds (buffer)
719 (let ((i1 (make-instance 'text-iter))
720 (i2 (make-instance 'text-iter)))
721 (if (gtk-text-buffer-get-selection-bounds buffer i1 i2)
725 (export 'text-buffer-get-selection-bounds)
727 (defcfun (text-buffer-begin-user-action "gtk_text_buffer_begin_user_action") :void
728 (buffer (g-object text-buffer)))
730 (export 'text-buffer-begin-user-action)
732 (defcfun (text-buffer-end-user-action "gtk_text_buffer_end_user_action") :void
733 (buffer (g-object text-buffer)))
735 (export 'text-buffer-end-user-action)
737 (defmacro with-text-buffer-user-action ((buffer) &body body)
740 (text-buffer-begin-user-action ,g)
743 (text-buffer-end-user-action ,g)))))
745 (export 'with-text-buffer-user-action)
747 (defcfun (text-buffer-add-selection-clipboard "gtk_text_buffer_add_selection_clipboard") :void
748 (buffer (g-object text-buffer))
749 (clipboard (g-object clipboard)))
751 (defcfun (text-buffer-remove-selection-clipboard "gtk_text_buffer_remove_selection_clipboard") :void
752 (buffer (g-object text-buffer))
753 (clipboard (g-object clipboard)))
755 (export 'text-buffer-remove-selection-clipboard)
757 (defcfun gtk-text-buffer-deserialize :boolean
758 (register-buffer (g-object text-buffer))
759 (content-buffer (g-object text-buffer))
760 (format gdk-atom-as-string)
761 (iter (g-boxed-foreign text-iter))
766 (defun text-buffer-deserialize (register-buffer content-buffer format iter data)
767 (let ((bytes (foreign-alloc :uint8 :count (length data))))
768 (iter (for i from 0 below (length data))
769 (setf (mem-aref bytes :uint8 i) (aref data i)))
772 (gtk-text-buffer-deserialize register-buffer content-buffer
773 format iter bytes (length data) err))
774 (foreign-free bytes))))
776 (export 'text-buffer-deserialize)
778 (defcfun (text-buffer-deserialize-can-create-tags "gtk_text_buffer_deserialize_get_can_create_tags") :boolean
779 (buffer (g-object text-buffer))
780 (format gdk-atom-as-string))
782 (defcfun gtk-text-buffer-deserialize-set-can-create-tags :void
783 (buffer (g-object text-buffer))
784 (format gdk-atom-as-string)
785 (can-create-tags :boolean))
787 (defun (setf text-buffer-deserialize-can-create-tags) (new-value buffer format)
788 (gtk-text-buffer-deserialize-set-can-create-tags buffer format new-value))
790 (export 'text-buffer-deserialize-can-create-tags)
792 (defcfun gtk-text-buffer-get-deserialize-formats (:pointer gdk-atom-as-string)
793 (text-buffer (g-object text-buffer))
794 (n-formats (:pointer :int)))
796 (defun text-buffer-get-deserialize-formats (text-buffer)
797 (with-foreign-object (n-formats :int)
798 (let ((atoms-ptr (gtk-text-buffer-get-deserialize-formats text-buffer n-formats)))
799 (iter (for i from 0 below (mem-ref n-formats :int))
800 (for atom = (mem-aref atoms-ptr 'gdk-atom-as-string i))
803 (export 'text-buffer-get-deserialize-formats)
805 (defcfun gtk-text-buffer-get-serialize-formats (:pointer gdk-atom-as-string)
806 (text-buffer (g-object text-buffer))
807 (n-formats (:pointer :int)))
809 (defun text-buffer-get-serialize-formats (text-buffer)
810 (with-foreign-object (n-formats :int)
811 (let ((atoms-ptr (gtk-text-buffer-get-serialize-formats text-buffer n-formats)))
812 (iter (for i from 0 below (mem-ref n-formats :int))
813 (for atom = (mem-aref atoms-ptr 'gdk-atom-as-string i))
816 (export 'text-buffer-get-serialize-formats)
818 (defcallback gtk-text-buffer-deserialize-cb :boolean
819 ((register-buffer (g-object text-buffer))
820 (content-buffer (g-object text-buffer))
821 (iter (g-boxed-foreign text-iter))
824 (create-tags :boolean)
827 (with-catching-to-g-error (error)
828 (let ((fn (stable-pointer-value user-data)))
830 (let ((bytes (iter (with bytes = (make-array length :element-type '(unsigned-byte 8)))
831 (for i from 0 below length)
832 (setf (aref bytes i) (mem-ref data :uint8 i))
833 (finally (return bytes)))))
834 (progn (funcall fn register-buffer content-buffer iter bytes create-tags) t))
835 (return-from-text-buffer-deserialize-cb ()
836 (error 'g-error-condition
839 :message "'return-from-text-buffer-deserialize-cb' restart was called"))))))
841 (defcfun gtk-text-buffer-register-deserialize-format gdk-atom-as-string
842 (buffer (g-object text-buffer))
846 (destroy-notify :pointer))
848 (defun text-buffer-register-deserialize-format (buffer mime-type function)
849 (gtk-text-buffer-register-deserialize-format buffer mime-type
850 (callback gtk-text-buffer-deserialize-cb)
851 (allocate-stable-pointer function)
852 (callback stable-pointer-free-destroy-notify-callback)))
854 (export 'text-buffer-register-deserialize-format)
856 (defcfun (text-buffer-register-deserialize-tagset "gtk_text_buffer_register_deserialize_tagset") gdk-atom-as-string
857 (buffer (g-object text-buffer))
858 (tagset-name :string))
860 (export 'text-buffer-register-deserialize-tagset)
862 (defcallback gtk-text-buffer-serialize-cb :pointer
863 ((register-buffer (g-object text-buffer))
864 (content-buffer (g-object text-buffer))
865 (start-iter (g-boxed-foreign text-iter))
866 (end-iter (g-boxed-foreign text-iter))
867 (length (:pointer gsize))
868 (user-data :pointer))
869 (let ((fn (stable-pointer-value user-data)))
871 (let* ((bytes (funcall fn register-buffer content-buffer start-iter end-iter))
872 (bytes-ptr (g-malloc (length bytes))))
873 (setf (mem-ref length 'gsize) (length bytes))
874 (iter (for i from 0 below (length bytes))
875 (setf (mem-aref bytes-ptr :uint8 i) (aref bytes i)))
877 (return-from-text-buffer-serialize-cb () nil))))
879 (defcfun gtk-text-buffer-register-serialize-format gdk-atom-as-string
880 (buffer (g-object text-buffer))
884 (destroy-notify :pointer))
886 (defun text-buffer-register-serialize-format (buffer mime-type function)
887 (gtk-text-buffer-register-serialize-format buffer mime-type
888 (callback gtk-text-buffer-serialize-cb)
889 (allocate-stable-pointer function)
890 (callback stable-pointer-free-destroy-notify-callback)))
892 (export 'text-buffer-register-serialize-format)
894 (defcfun (text-buffer-register-serialize-tagset "gtk_text_buffer_register_serialize_tagset") gdk-atom-as-string
895 (buffer (g-object text-buffer))
896 (tagset-name :string))
898 (export 'text-buffer-register-serialize-tagset)
900 (defcfun gtk-text-buffer-serialize :pointer
901 (register-buffer (g-object text-buffer))
902 (content-buffer (g-object text-buffer))
903 (format gdk-atom-as-string)
904 (start (g-boxed-foreign text-iter))
905 (end (g-boxed-foreign text-iter))
906 (length (:pointer gsize)))
908 (defun text-buffer-serialize (register-buffer content-buffer format start end)
909 (with-foreign-object (length 'gsize)
910 (let ((bytes (gtk-text-buffer-serialize register-buffer content-buffer format start end length)))
911 (iter (for i from 0 to (mem-ref length 'gsize))
912 (for byte = (mem-aref bytes :uint8 i))
913 (collect byte result-type vector)
914 (finally (g-free bytes))))))
916 (export 'text-buffer-serialize)
918 (defcfun (text-buffer-unregister-deserialize-format "gtk_text_buffer_unregister_deserialize_format") :void
919 (buffer (g-object text-buffer))
920 (format gdk-atom-as-string))
922 (export 'text-buffer-unregister-deserialize-format)
924 (defcfun (text-buffer-unregister-serialize-format "gtk_text_buffer_unregister_serialize_format") :void
925 (buffer (g-object text-buffer))
926 (format gdk-atom-as-string))
928 (export 'text-buffer-unregister-serialize-format)
934 (defcallback gtk-text-tag-table-foreach-function :void ((tag (g-object text-tag)) (data :pointer))
935 (funcall (get-stable-pointer-value data) tag))
937 (defcfun (text-tag-table-add "gtk_text_tag_table_add") :void
938 (table (g-object text-tag-table))
939 (tag (g-object text-tag)))
941 (export 'text-tag-table-add)
943 (defcfun (text-tag-table-remove "gtk_text_tag_table_remove") :void
944 (table (g-object text-tag-table))
945 (tag (g-object text-tag)))
947 (export 'text-tag-table-remove)
949 (defcfun (text-tag-table-lookup "gtk_text_tag_table_lookup") (g-object text-tag)
950 (table (g-object text-tag-table))
951 (name (:string :free-to-foreign t)))
953 (export 'text-tag-table-lookup)
955 (defcfun gtk-text-tag-table-foreach :void
956 (table (g-object text-tag-table))
960 (defun text-tag-table-foreach (table function)
961 (with-stable-pointer (ptr function)
962 (gtk-text-tag-table-foreach table (callback gtk-text-tag-table-foreach-function) ptr)))
964 (export 'text-tag-table-foreach)
966 (defcfun (text-tag-table-size "gtk_text_tag_table_get_size") :int
967 (table (g-object text-tag-table)))
969 (export 'text-tag-table-size)
973 (defcfun gtk-text-view-scroll-to-mark :void
974 (text-view (g-object text-view))
975 (mark (g-object text-mark))
976 (within-margin :double)
981 (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))
982 (gtk-text-view-scroll-to-mark text-view mark (coerce within-margin 'double-float) (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
984 (export 'text-view-scroll-to-mark)
986 (defcfun gtk-text-view-scroll-to-iter :void
987 (text-view (g-object text-view))
988 (iter (g-boxed-foreign text-iter))
989 (within-margin :double)
994 (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))
995 (gtk-text-view-scroll-to-iter text-view iter (coerce within-margin 'double-float) (or x-align-supplied y-align-supplied) (coerce x-align 'double-float) (coerce y-align 'double-float)))
997 (export 'text-view-scroll-to-iter)
999 (defcfun (text-view-scroll-mark-onscreen "gtk_text_view_scroll_mark_onscreen") :void
1000 (text-view (g-object text-view))
1001 (mark (g-object text-mark)))
1003 (export 'text-view-scroll-mark-onscreen)
1005 (defcfun (text-view-move-mark-onscreen "gtk_text_view_move_mark_onscreen") :boolean
1006 (text-view (g-object text-view))
1007 (mark (g-object text-mark)))
1009 (export 'text-view-move-mark-onscreen)
1011 (defcfun (text-view-place-cursor-onscreen "gtk_text_view_place_cursor_onscreen") :boolean
1012 (text-view (g-object text-view)))
1014 (export 'text-view-place-cursor-onscreen)
1016 (defcfun gtk-text-view-get-visible-rect :void
1017 (text-view (g-object text-view))
1018 (visible-rect (g-boxed-foreign rectangle)))
1020 (defun text-view-visible-rect (text-view)
1021 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
1022 (gtk-text-view-get-visible-rect text-view rect)
1025 (export 'text-view-visible-rect)
1027 (defcfun gtk-text-view-get-iter-location :void
1028 (text-view (g-object text-view))
1029 (iter (g-boxed-foreign text-iter))
1030 (location (g-boxed-foreign rectangle)))
1032 (defun text-view-iter-location (text-view iter)
1033 (let ((rect (make-rectangle :x 0 :y 0 :width 0 :height 0)))
1034 (gtk-text-view-get-iter-location text-view iter rect)
1037 (export 'text-view-iter-location)
1039 (defcfun gtk-text-view-get-line-at-y :void
1040 (text-view (g-object text-view))
1041 (target-iter (g-boxed-foreign text-iter))
1043 (line-top (:pointer :int)))
1045 (defun text-view-get-line-at-y (text-view y)
1046 (let ((iter (make-instance 'text-iter)))
1047 (with-foreign-object (line-top :int)
1048 (gtk-text-view-get-line-at-y text-view iter y line-top)
1049 (values iter (mem-ref line-top :int)))))
1051 (export 'text-view-get-line-at-y)
1053 (defcfun gtk-text-view-get-line-yrange :void
1054 (text-view (g-object text-view))
1055 (iter (g-boxed-foreign text-iter))
1057 (height (:pointer :int)))
1059 (defun text-view-get-line-yrange (text-view iter)
1060 (with-foreign-objects ((y :int) (height :int))
1061 (gtk-text-view-get-line-yrange text-view iter y height)
1062 (values (mem-ref y :int) (mem-ref height :int))))
1064 (export 'text-view-get-line-yrange)
1066 (defcfun gtk-text-view-get-iter-at-location :void
1067 (text-view (g-object text-view))
1068 (iter (g-boxed-foreign text-iter))
1072 (defun text-view-get-iter-at-location (view x y)
1073 (let ((iter (make-instance 'text-iter)))
1074 (gtk-text-view-get-iter-at-location view iter x y)
1077 (export 'text-view-get-iter-at-location)
1079 (defcfun gtk-text-view-get-iter-at-position :void
1080 (text-view (g-object text-view))
1081 (iter (g-boxed-foreign text-iter))
1082 (trailing (:pointer :int))
1086 (defun text-view-get-iter-at-position (text-view x y)
1087 (with-foreign-object (trailing :int)
1088 (let ((iter (make-instance 'text-iter)))
1089 (gtk-text-view-get-iter-at-position text-view iter trailing x y)
1090 (values iter (mem-ref trailing :int)))))
1092 (export 'text-view-get-iter-at-position)
1094 (defcfun gtk-text-view-buffer-to-window-coords :void
1095 (text-view (g-object text-view))
1096 (win text-window-type)
1099 (window-x (:pointer :int))
1100 (window-y (:pointer :int)))
1102 (defun text-view-buffer-to-window-coords (text-view window-type buffer-x buffer-y)
1103 (with-foreign-objects ((window-x :int) (window-y :int))
1104 (gtk-text-view-buffer-to-window-coords text-view window-type buffer-x buffer-y window-x window-y)
1105 (values (mem-ref window-x :int) (mem-ref window-y :int))))
1107 (export 'text-view-buffer-to-window-coords)
1109 (defcfun gtk-text-view-window-to-buffer-coords :void
1110 (text-view (g-object text-view))
1111 (win text-window-type)
1115 (buffer-y :pointer))
1117 (defun text-view-window-to-buffer-coords (text-view win window-x window-y)
1118 (with-foreign-objects ((buffer-x :int) (buffer-y :int))
1119 (gtk-text-view-window-to-buffer-coords text-view win window-x window-y buffer-x buffer-y)
1120 (values (mem-ref buffer-x :int)
1121 (mem-ref buffer-y :int))))
1123 (export 'text-view-window-to-buffer-coords)
1125 (defcfun gtk-text-view-get-window (g-object gdk:gdk-window)
1126 (text-view (g-object text-view))
1127 (win text-window-type))
1129 (defun text-view-get-window (text-view win)
1130 (gtk-text-view-get-window text-view win))
1132 (export 'text-view-get-window)
1134 (defcfun (text-view-get-window-type "gtk_text_view_get_window_type") text-window-type
1135 (text-view (g-object text-view))
1136 (window (g-object gdk-window)))
1138 (export 'text-view-get-window-type)
1140 (defcfun gtk-text-view-set-border-window-size :void
1141 (text-view (g-object text-view))
1142 (window-type text-window-type)
1145 (defcfun (text-view-border-window-size "gtk_text_view_get_border_window_size") :int
1146 (text-view (g-object text-view))
1147 (window-type text-window-type))
1149 (defun (setf text-view-border-window-size) (new-value text-view window-type)
1150 (gtk-text-view-set-border-window-size text-view window-type new-value)
1153 (export 'text-view-border-window-size)
1155 (defcfun (text-view-forward-display-line "gtk_text_view_forward_display_line") :boolean
1156 (text-view (g-object text-view))
1157 (iter (g-boxed-foreign text-iter)))
1159 (export 'text-view-forward-display-line)
1161 (defcfun (text-view-backward-display-line "gtk_text_view_backward_display_line") :boolean
1162 (text-view (g-object text-view))
1163 (iter (g-boxed-foreign text-iter)))
1165 (export 'text-view-backward-display-line)
1167 (defcfun (text-view-forward-display-line-end "gtk_text_view_forward_display_line_end") :boolean
1168 (text-view (g-object text-view))
1169 (iter (g-boxed-foreign text-iter)))
1171 (export 'text-view-forward-display-line-end)
1173 (defcfun (text-view-backward-display-line-start "gtk_text_view_backward_display_line_start") :boolean
1174 (text-view (g-object text-view))
1175 (iter (g-boxed-foreign text-iter)))
1177 (export 'text-view-backward-display-line-start)
1179 (defcfun (text-view-starts-display-line "gtk_text_view_starts_display_line") :boolean
1180 (text-view (g-object text-view))
1181 (iter (g-boxed-foreign text-iter)))
1183 (export 'text-view-starts-display-line)
1185 (defcfun (text-view-move-visually "gtk_text_view_move_visually") :boolean
1186 (text-view (g-object text-view))
1187 (iter (g-boxed-foreign text-iter))
1190 (export 'text-view-move-visually)
1192 (defcfun (text-view-add-child-at-anchor "gtk_text_view_add_child_at_anchor") :void
1193 (text-view g-object)
1197 (export 'text-view-add-child-at-anchor)
1199 (defcfun (text-child-anchor-widgets "gtk_text_child_anchor_get_widgets") (glist (g-object widget) :free-from-foreign t)
1200 (anchor (g-object text-child-anchor)))
1202 (export 'text-child-anchor-widgets)
1204 (defcfun (text-view-add-child-in-window "gtk_text_view_add_child_in_window") :void
1205 (text-view (g-object text-view))
1206 (child (g-object widget))
1207 (which-window text-window-type)
1211 (export 'text-view-add-child-in-window)
1213 (defcfun (text-view-move-child "gtk_text_view_move_child") :void
1214 (text-view (g-object text-view))
1215 (child (g-object widget))
1219 (export 'text-view-move-child)