diff options
Diffstat (limited to 'lib/editor.ml')
| -rw-r--r-- | lib/editor.ml | 57 |
1 files changed, 44 insertions, 13 deletions
diff --git a/lib/editor.ml b/lib/editor.ml index 2e031e1..adc9994 100644 --- a/lib/editor.ml +++ b/lib/editor.ml | |||
| @@ -228,37 +228,68 @@ let handle_normal_command = | |||
| 228 | (* | Key 'x' | Delete -> Buffer.Action.delete_after |> on_focused_buffer_or_new *) | 228 | (* | Key 'x' | Delete -> Buffer.Action.delete_after |> on_focused_buffer_or_new *) |
| 229 | (* | Key 'X' -> Buffer.Action.delete_before |> on_focused_buffer_or_new *) | 229 | (* | Key 'X' -> Buffer.Action.delete_before |> on_focused_buffer_or_new *) |
| 230 | (* | Key '$' -> Buffer.Action.eol |> on_focused_buffer_or_new *) | 230 | (* | Key '$' -> Buffer.Action.eol |> on_focused_buffer_or_new *) |
| 231 | | Shortcut (_, n, Change, Line) -> | 231 | (* Change *) |
| 232 | | Shortcut (_, n, Change) -> | ||
| 232 | let n = Option.value ~default:1 n - 1 in | 233 | let n = Option.value ~default:1 n - 1 in |
| 234 | (Buffer.Action.( | ||
| 235 | delete_to_eol &> move_down &> delete_lines ~n &> move_up &> eol) | ||
| 236 | |> on_focused_buffer_or_new) | ||
| 237 | *> set_mode Insert | ||
| 238 | | Chord (_, n1, Change, n2, Line) -> | ||
| 239 | let n = Option.((value ~default:1 n1 * value ~default:1 n2) - 1) in | ||
| 240 | (Buffer.Action.(delete_lines ~n &> bol &> delete_to_eol) | ||
| 241 | |> on_focused_buffer_or_new) | ||
| 242 | *> set_mode Insert | ||
| 243 | | Chord (_, n1, Change, n2, Down) -> | ||
| 244 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in | ||
| 233 | (Buffer.Action.(delete_lines ~n &> bol &> delete_to_eol) | 245 | (Buffer.Action.(delete_lines ~n &> bol &> delete_to_eol) |
| 234 | |> on_focused_buffer_or_new) | 246 | |> on_focused_buffer_or_new) |
| 235 | *> set_mode Insert | 247 | *> set_mode Insert |
| 236 | | Shortcut (_, _, Change, To_eol) -> | 248 | | Chord (_, n1, Change, n2, Left) -> |
| 237 | (Buffer.Action.delete_to_eol |> on_focused_buffer_or_new) | 249 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in |
| 250 | (Buffer.Action.delete_before ~n |> on_focused_buffer_or_new) | ||
| 238 | *> set_mode Insert | 251 | *> set_mode Insert |
| 239 | | Shortcut (_, _, Change, To_bol) -> | 252 | | Chord (_, n1, Change, n2, Right) -> |
| 240 | (Buffer.Action.delete_to_bol |> on_focused_buffer_or_new) | 253 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in |
| 254 | (Buffer.Action.delete_after ~n |> on_focused_buffer_or_new) | ||
| 255 | *> set_mode Insert | ||
| 256 | | Chord (_, n1, Change, n2, Up) -> | ||
| 257 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in | ||
| 258 | (Buffer.Action.(bol &> delete_to_eol &> delete_lines_before ~n) | ||
| 259 | |> on_focused_buffer_or_new) | ||
| 241 | *> set_mode Insert | 260 | *> set_mode Insert |
| 242 | (* Delete *) | 261 | (* Delete *) |
| 262 | | Shortcut (_, n, Delete) -> | ||
| 263 | let n = Option.value ~default:1 n - 1 in | ||
| 264 | Buffer.Action.( | ||
| 265 | delete_to_eol &> move_down &> delete_lines ~n &> move_up &> eol) | ||
| 266 | |> on_focused_buffer_or_new | ||
| 267 | | Chord (_, n1, Delete, n2, Line) -> | ||
| 268 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in | ||
| 269 | Buffer.Action.delete_lines ~n |> on_focused_buffer_or_new | ||
| 243 | | Chord (_, n1, Delete, n2, Down) -> | 270 | | Chord (_, n1, Delete, n2, Down) -> |
| 244 | let n = Option.((value ~default:1 n1 * value ~default:1 n2) + 1) in | 271 | let n = Option.((value ~default:1 n1 * value ~default:1 n2) + 1) in |
| 245 | Buffer.Action.delete_lines ~n |> on_focused_buffer_or_new | 272 | Buffer.Action.delete_lines ~n |> on_focused_buffer_or_new |
| 246 | | Chord (_, n1, Delete, n2, Left) -> | 273 | | Chord (_, n1, Delete, n2, Left) -> |
| 247 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in | 274 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in |
| 248 | Buffer.Action.delete_before ~n |> on_focused_buffer_or_new | 275 | Buffer.Action.delete_before ~n |> on_focused_buffer_or_new |
| 276 | | Shortcut (_, n, Erase_before) -> | ||
| 277 | let n = Option.(value ~default:1 n) in | ||
| 278 | Buffer.Action.delete_before ~n |> on_focused_buffer_or_new | ||
| 249 | | Chord (_, n1, Delete, n2, Right) -> | 279 | | Chord (_, n1, Delete, n2, Right) -> |
| 250 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in | 280 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in |
| 251 | Buffer.Action.delete_after ~n |> on_focused_buffer_or_new | 281 | Buffer.Action.delete_after ~n |> on_focused_buffer_or_new |
| 282 | | Shortcut (_, n, Erase_after) -> | ||
| 283 | let n = Option.(value ~default:1 n) in | ||
| 284 | Buffer.Action.delete_after ~n |> on_focused_buffer_or_new | ||
| 252 | | Chord (_, n1, Delete, n2, Up) -> | 285 | | Chord (_, n1, Delete, n2, Up) -> |
| 253 | let n = Option.((value ~default:1 n1 * value ~default:1 n2) + 1) in | 286 | let n = Option.(value ~default:1 n1 * value ~default:1 n2) in |
| 254 | Buffer.Action.delete_lines_before ~n |> on_focused_buffer_or_new | 287 | Buffer.Action.(delete_lines ~n:1 &> delete_lines_before ~n) |
| 255 | | Shortcut (_, n, Delete, Line) -> | ||
| 256 | Buffer.Action.delete_lines ~n:Option.(value ~default:1 n) | ||
| 257 | |> on_focused_buffer_or_new | 288 | |> on_focused_buffer_or_new |
| 258 | | Shortcut (_, _, Delete, To_eol) -> | 289 | (* Join *) |
| 259 | Buffer.Action.delete_to_eol |> on_focused_buffer_or_new | 290 | | Shortcut (_, n, Join) -> |
| 260 | | Shortcut (_, _, Delete, To_bol) -> | 291 | let n = Option.(value ~default:1 n) in |
| 261 | Buffer.Action.delete_to_bol |> on_focused_buffer_or_new | 292 | Buffer.Action.join_lines ~n |> on_focused_buffer_or_new |
| 262 | | _ -> noop | 293 | | _ -> noop |
| 263 | 294 | ||
| 264 | let handle_next_command m e = | 295 | let handle_next_command m e = |
