comparison editor.luan @ 16:90abee9e07d5

add show_column
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 06 Apr 2025 18:40:15 -0600
parents 93e46dadb694
children 273aebbcf90b
comparison
equal deleted inserted replaced
15:93e46dadb694 16:90abee9e07d5
21 local new_menu = require("luan:swing/Menu.luan").new or error() 21 local new_menu = require("luan:swing/Menu.luan").new or error()
22 local new_menu_item = require("luan:swing/Menu_item.luan").new or error() 22 local new_menu_item = require("luan:swing/Menu_item.luan").new or error()
23 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error() 23 local new_check_box_menu_item = require("luan:swing/Check_box_menu_item.luan").new or error()
24 local int_to_color = require("luan:swing/Color.luan").int_to_color or error() 24 local int_to_color = require("luan:swing/Color.luan").int_to_color or error()
25 local create_empty_border = require("luan:swing/Border.luan").create_empty_border or error() 25 local create_empty_border = require("luan:swing/Border.luan").create_empty_border or error()
26 local Option_pane = require "luan:swing/Option_pane.luan"
27 local show_message_dialog = Option_pane.show_message_dialog or error()
26 local Logging = require "luan:logging/Logging.luan" 28 local Logging = require "luan:logging/Logging.luan"
27 local logger = Logging.logger "editor" 29 local logger = Logging.logger "editor"
28 30
29 31
30 local new_window 32 local new_window
160 show_whitespace.add_action_listener(function() 162 show_whitespace.add_action_listener(function()
161 window.text_area.show_whitespace(show_whitespace.state) 163 window.text_area.show_whitespace(show_whitespace.state)
162 end) 164 end)
163 view_menu.add(show_whitespace) 165 view_menu.add(show_whitespace)
164 end 166 end
167 do
168 local show_column = new_menu_item()
169 show_column.text = "Show Cursor Column"
170 show_column.add_action_listener(function()
171 --logger.info(window.cursor_column())
172 show_message_dialog( window.frame, "Cursor Column: "..window.cursor_column() )
173 end)
174 view_menu.add(show_column)
175 end
165 menu_bar.add(view_menu) 176 menu_bar.add(view_menu)
166 end 177 end
167 return menu_bar 178 return menu_bar
168 end 179 end
169 180
172 183
173 function new_window(file) 184 function new_window(file)
174 local window = {} 185 local window = {}
175 window.has_file = file~=nil and file.is_file() 186 window.has_file = file~=nil and file.is_file()
176 local frame = new_frame() 187 local frame = new_frame()
188 window.frame = frame
177 local title = file and file.canonical().to_string() or "new" 189 local title = file and file.canonical().to_string() or "new"
178 frame.add_close_listener(function() 190 frame.add_close_listener(function()
179 n_windows = n_windows - 1 191 n_windows = n_windows - 1
180 if n_windows == 0 then 192 if n_windows == 0 then
181 Luan.exit() 193 Luan.exit()
293 local end_selection = r.end_selection - (len1 - len2) 305 local end_selection = r.end_selection - (len1 - len2)
294 text = sub_string(text,2) 306 text = sub_string(text,2)
295 text_area.replace(r.start_pos,r.length,text) 307 text_area.replace(r.start_pos,r.length,text)
296 text_area.set_selection(start_seletion,end_selection) 308 text_area.set_selection(start_seletion,end_selection)
297 end 309 end
310 function window.cursor_column()
311 local cursor_pos = text_area.get_selection()
312 local line = text_area.get_line_from_position(cursor_pos)
313 local start_line_pos = text_area.get_line_start_position(line)
314 return cursor_pos - start_line_pos + 1
315 end
298 local menu_bar = make_menu_bar(window) 316 local menu_bar = make_menu_bar(window)
299 frame.set_menu_bar(menu_bar) 317 frame.set_menu_bar(menu_bar)
300 frame.pack() 318 frame.pack()
301 frame.visible = true 319 frame.visible = true
302 text_area.request_focus_in_window() 320 text_area.request_focus_in_window()