0

私は自分のアプリケーションの「検索と置換ボタン」を行っています。私はgtkとルビーを使用しています。そして、もしあれば、単語の数を見つけることができます。また、単語を検索した選択単語を取得したいので、それらをマークする必要があります。私のいくつかのコード:

def search(ent, txtvu)
start = txtvu.buffer.start_iter
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil)
count = 0
while (first)
mark = start.buffer.create_mark(nil, first, false)
txtvu.scroll_mark_onscreen(mark)
txtvu.buffer.delete_mark(mark)
txtvu.buffer.select_range(first, last)
start.forward_char
first, last = start.forward_search(ent.text, Gtk::TextIter::SEARCH_TEXT_ONLY, nil)
start = first
count += 1
end

countコードが機能しない :(なぜですか? 検索されたすべての単語をマークしたい.

4

1 に答える 1

0

私の理解が正しければ、1 つだけでなく、見つかったすべての単語を強調表示する必要があります。その場合select_rangeは、選択を現在の単語に変更し、GtkTextView選択が単一で連続しているため、呼び出す関数ではありません。

代わりに、ハイライト タグを作成してすべての検索に適用します。例えば:

# create the "highlight" tag (run this only once)
textvu.buffer.create_tag("highlight", {background => "yellow"})

# ... later, in the loop:
textvu.buffer.apply_tag("highlight", first, last)

一致するものはすべて強調表示されます。

于 2013-03-02T08:47:45.090 に答える