Add Number Lines command

This commit is contained in:
No Time To Play 2024-02-08 06:54:19 +00:00
parent afbd317453
commit bc078a87b5
1 changed files with 25 additions and 2 deletions

View File

@ -41,6 +41,7 @@ void do_new(Fl_Widget *w, void *data) {
file_name = "";
buffer.remove(0, buffer.length());
top.status1->value(empty_status);
top.status2->value("");
top.status3->value("");
modified = false;
}
@ -49,11 +50,11 @@ void load_file(const char *name, bool change=true) {
fl_message_title(window_title);
switch (buffer.loadfile(name)) {
case 0:
top.status1->value("Opened");
if (change) {
file_name = name;
top.status2->value(fl_filename_name(name));
}
top.status1->value("Opened");
top.status3->value("");
modified = false;
break;
@ -90,11 +91,11 @@ void save_file(const char *name, bool change=true) {
fl_message_title(window_title);
switch (buffer.savefile(name)) {
case 0:
top.status1->value("Saved");
if (change) {
file_name = name;
top.status2->value(fl_filename_name(name));
}
top.status1->value("Saved");
top.status3->value("");
modified = false;
break;
@ -318,6 +319,27 @@ void do_prefix_lines(Fl_Widget *w, void *data) {
}
}
void do_number_lines(Fl_Widget *w, void *data) {
if (buffer.selected()) {
char *t = buffer.selection_text();
std::stringstream sel(t);
free(t);
std::string line;
std::string result;
int n = 0;
while (std::getline(sel, line)) {
n++;
result += std::to_string(n);
result += ". ";
result += line;
result += "\n";
}
buffer.replace_selection(result.c_str());
} else {
top.status1->value("Nothing selected");
}
}
void toggle_word_wrap(Fl_Widget *w, void *data) {
if (word_wrap) {
top.editor->wrap_mode(Fl_Text_Editor::WRAP_NONE, 80);
@ -386,6 +408,7 @@ const Fl_Menu_Item menu_items[] = {
{ " &Upper case", FL_ALT + 'u', do_upper_case, 0,
FL_MENU_DIVIDER },
{ " &Prefix lines... ", FL_ALT + 'p', do_prefix_lines },
{ " &Number lines ", FL_ALT + 'n', do_number_lines },
{ 0 },
{ "&View", 0, 0, 0, FL_SUBMENU },
{ " &Word wrap", 0, toggle_word_wrap, 0,