add duplicate line function
This commit is contained in:
@@ -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}"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user