@@ -48,7 +48,7 @@ module readline |
| 48 | integer, parameter :: KEY_CTRL_C = 3 | 48 | integer, parameter :: KEY_CTRL_C = 3 |
| 49 | integer, parameter :: KEY_CTRL_D = 4 | 49 | integer, parameter :: KEY_CTRL_D = 4 |
| 50 | integer, parameter :: KEY_CTRL_V = 22 ! Paste from system clipboard / kill buffer | 50 | integer, parameter :: KEY_CTRL_V = 22 ! Paste from system clipboard / kill buffer |
| 51 | - integer, parameter :: KEY_CTRL_X = 24 ! Process kill mode | 51 | + integer, parameter :: KEY_CTRL_X = 24 ! Cut selection / Process kill mode |
| 52 | integer, parameter :: KEY_CTRL_A = 1 ! Home (beginning of line) | 52 | integer, parameter :: KEY_CTRL_A = 1 ! Home (beginning of line) |
| 53 | integer, parameter :: KEY_CTRL_E = 5 ! End (end of line) | 53 | integer, parameter :: KEY_CTRL_E = 5 ! End (end of line) |
| 54 | integer, parameter :: KEY_CTRL_K = 11 ! Kill to end of line | 54 | integer, parameter :: KEY_CTRL_K = 11 ! Kill to end of line |
@@ -1576,8 +1576,15 @@ contains |
| 1576 | done = .true. | 1576 | done = .true. |
| 1577 | | 1577 | |
| 1578 | case(KEY_CTRL_X) | 1578 | case(KEY_CTRL_X) |
| 1579 | - ! Ctrl+X - Enter process kill mode (no-op in search mode) | 1579 | + ! Ctrl+X — dual-mode (Sprint 5): |
| 1580 | - if (.not. module_input_state%in_search .and. & | 1580 | + ! 1. If a selection is active, CUT (same as Ctrl+W on selection: |
| | 1581 | + ! copy to kill buffer + system clipboard, then delete range). |
| | 1582 | + ! 2. Otherwise, enter process kill mode (existing behavior). |
| | 1583 | + if (module_input_state%selection_active) then |
| | 1584 | + call copy_selection_to_kill_buffer(module_input_state) |
| | 1585 | + call delete_selection(module_input_state) |
| | 1586 | + call update_autosuggestion(module_input_state) |
| | 1587 | + else if (.not. module_input_state%in_search .and. & |
| 1581 | .not. module_input_state%in_process_kill_mode) then | 1588 | .not. module_input_state%in_process_kill_mode) then |
| 1582 | call enter_process_kill_mode(module_input_state) | 1589 | call enter_process_kill_mode(module_input_state) |
| 1583 | end if | 1590 | end if |