comparison src/luan_editor/find.luan @ 70:f4e393a13d59

no find toggle
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 10 Jun 2025 22:34:24 -0600
parents 3867e9e1b94c
children
comparison
equal deleted inserted replaced
69:3867e9e1b94c 70:f4e393a13d59
187 text = "Replace All" 187 text = "Replace All"
188 action = "replace_all" 188 action = "replace_all"
189 action_listener = replace_match 189 action_listener = replace_match
190 } 190 }
191 new_panel{ 191 new_panel{
192 constraints = "span,wrap" 192 constraints = "span,grow,wrap"
193 layout = new_mig_layout("insets 0,gap 16px") 193 layout = new_mig_layout("insets 0,gap 16px")
194 children = { 194 children = {
195 regex_check_box 195 regex_check_box
196 new_button{ 196 new_button{
197 text = "Learn About Regular Expressions" 197 text = "Learn About Regular Expressions"
198 action_listener = function(_) 198 action_listener = function(_)
199 browse("https://www.reactionary.software/learn.html#regex") 199 browse("https://www.reactionary.software/learn.html#regex")
200 end 200 end
201 } 201 }
202 new_button{
203 constraints = "pushx, align right"
204 text = "Close"
205 action_listener = function(_)
206 window.hide_find_panel()
207 end
208 }
202 } 209 }
203 } 210 }
204 } 211 }
205 } 212 }
206 function window.show_find_panel(is_visible) 213 function window.show_find_panel()
207 find_panel.is_visible = is_visible 214 find_panel.is_visible = true
208 if is_visible then 215 find_field.request_focus_in_window()
209 find_field.request_focus_in_window() 216 find_field.select_all()
210 find_field.select_all() 217 end
211 else 218 function window.hide_find_panel()
212 text_area.clear_hightlights() 219 find_panel.is_visible = false
213 end 220 text_area.clear_hightlights()
214 end 221 end
215 function window.find_case_insensitive(_) 222 function window.find_case_insensitive(_)
216 find_panel.visible = true 223 find_panel.is_visible = true
217 window.find_menu_item.is_selected = true
218 regex_check_box.is_selected = true 224 regex_check_box.is_selected = true
219 find_field.text = "(?i)\Q\E" 225 find_field.text = "(?i)\Q\E"
220 find_field.set_selection(7) 226 find_field.set_selection(7)
221 find_field.request_focus_in_window() 227 find_field.request_focus_in_window()
222 status_bar.text = [[Put search text between "\Q" and "\E"]] 228 status_bar.text = [[Put search text between "\Q" and "\E"]]
223 end 229 end
224 function window.tabs_to_spaces(_) 230 function window.tabs_to_spaces(_)
225 find_panel.visible = true 231 find_panel.is_visible = true
226 window.find_menu_item.is_selected = true
227 regex_check_box.is_selected = true 232 regex_check_box.is_selected = true
228 find_field.text = [[(?m)^(\t*)\t]] 233 find_field.text = [[(?m)^(\t*)\t]]
229 local spaces = repeated( " ", text_area.tab_size ) 234 local spaces = repeated( " ", text_area.tab_size )
230 replace_field.text = "$1"..spaces 235 replace_field.text = "$1"..spaces
231 status_bar.text = [[Do "Replace All" until 0 replacements]] 236 status_bar.text = [[Do "Replace All" until 0 replacements]]
232 end 237 end
233 function window.spaces_to_tabs(_) 238 function window.spaces_to_tabs(_)
234 find_panel.visible = true 239 find_panel.is_visible = true
235 window.find_menu_item.is_selected = true
236 regex_check_box.is_selected = true 240 regex_check_box.is_selected = true
237 local tab_size = text_area.tab_size 241 local tab_size = text_area.tab_size
238 find_field.text = `%>(?m)^(( {<%=tab_size%>})*) {<%=tab_size%>}<%` 242 find_field.text = `%>(?m)^(( {<%=tab_size%>})*) {<%=tab_size%>}<%`
239 replace_field.text = "$1\t" 243 replace_field.text = "$1\t"
240 status_bar.text = [[Do "Replace All" until 0 replacements]] 244 status_bar.text = [[Do "Replace All" until 0 replacements]]