add duplicate line function

This commit is contained in:
2025-12-11 09:41:09 -05:00
parent 83a2de0386
commit cfa6e37b85
2 changed files with 18 additions and 2 deletions

View File

@@ -12,7 +12,7 @@
], ],
"build_systems": [ "build_systems": [
{ {
"cmd": ["odin", "build", "src", "-debug"], "cmd": ["odin", "build", "src", "-debug", "-o:none"],
"name": "odit", "name": "odit",
"selector": "source.odin", "selector": "source.odin",
"working_dir": "${project_path}" "working_dir": "${project_path}"

View File

@@ -2,7 +2,7 @@
- DONE implement movement up and down by paragraph - DONE implement movement up and down by paragraph
- DONE implement scrolling/viewport - DONE implement scrolling/viewport
- DONE implement deletion by word - DONE implement deletion by word
- TODO implement selection - DONE implement selection
- TODO implement duplicate selection/line - TODO implement duplicate selection/line
- TODO implement move selection/line up/down - TODO implement move selection/line up/down
- TODO implement copy/cut/paste - TODO implement copy/cut/paste
@@ -16,6 +16,7 @@ package main
import "core:fmt" import "core:fmt"
import "core:mem" import "core:mem"
import "core:os" import "core:os"
import "core:slice"
import "core:strings" import "core:strings"
import utf8 "core:unicode/utf8" import utf8 "core:unicode/utf8"
import r "vendor:raylib" import r "vendor:raylib"
@@ -129,6 +130,21 @@ main :: proc() {
fmt.println("Wrote file!") fmt.println("Wrote file!")
} }
if r.IsKeyDown(.LEFT_SUPER) && r.IsKeyDown(.LEFT_SHIFT) && r.IsKeyPressed(.D) {
if selection.active {
earliest := selection_earliest()
latest := selection_latest()
#reverse for line, index in lines[earliest.line:latest.line + 1] {
new_line, _ := slice.clone_to_dynamic(line[:])
inject_at(&lines, latest.line + 1, new_line)
}
// NOTE: should we move the selection as well?
} else {
new_line, _ := slice.clone_to_dynamic(current_line()[:])
inject_at(&lines, cursor.line + 1, new_line)
cursor.line += 1
}
}
cursor_padding := 3 cursor_padding := 3
// move viewport up // move viewport up