|
|
|
@ -69,7 +69,7 @@ key:
|
|
|
|
|
.lp0: test al,0x80
|
|
|
|
|
jnz still.skip_write
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
; it is CAPS LOCK correct processing for chars
|
|
|
|
|
; CAPS LOCK correct processing for chars
|
|
|
|
|
test [shi], 0x00000040 ; CAPS LOCK is on?
|
|
|
|
|
jz .no_caps_lock
|
|
|
|
|
cmp ecx,1
|
|
|
|
@ -81,13 +81,11 @@ key:
|
|
|
|
|
jnz .no_caps_lock
|
|
|
|
|
dec ecx
|
|
|
|
|
.no_caps_lock:
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
; alt gr pressed?
|
|
|
|
|
test [shi], 0x00000020
|
|
|
|
|
jz .no_alt_gr
|
|
|
|
|
mov ecx, 3
|
|
|
|
|
.no_alt_gr:
|
|
|
|
|
;--------------------------------------
|
|
|
|
|
push eax
|
|
|
|
|
mcall 26,2,,key1
|
|
|
|
|
pop eax
|
|
|
|
@ -164,9 +162,9 @@ key:
|
|
|
|
|
mov eax,1
|
|
|
|
|
jmp key.tab.direct
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_a ;///// SELECT ALL DOCUMENT ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_a ;///// SELECT ALL DOCUMENT /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [cur_editor.SelStart.X],eax
|
|
|
|
|
mov [cur_editor.SelStart.Y],eax
|
|
|
|
@ -180,9 +178,9 @@ proc key.ctrl_a ;///// SELECT ALL DOCUMENT ///////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_o ;///// ENTER OPEN FILENAME /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [bot_mode2],0
|
|
|
|
|
|
|
|
|
|
.direct:
|
|
|
|
@ -207,9 +205,9 @@ proc key.ctrl_o ;///// ENTER OPEN FILENAME ///////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_s ;///// ENTER SAVE FILENAME ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_s ;///// ENTER SAVE FILENAME /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [cur_editor.FilePath], 0
|
|
|
|
|
je key.shift_ctrl_s
|
|
|
|
|
cmp [cur_editor.Modified],0
|
|
|
|
@ -224,16 +222,16 @@ proc key.ctrl_s ;///// ENTER SAVE FILENAME ///////////////////////////////////
|
|
|
|
|
jmp key.ctrl_o.direct
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_n ;///// CREATE NEW FILE (TAB) /////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_n ;///// CREATE NEW FILE (TAB) ///////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call create_tab
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f ;///// ENTER KEYWORD TO FIND /////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f ;///// ENTER KEYWORD TO FIND ///////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [bot_mode2],0
|
|
|
|
|
mov [bot_dlg_height],16*2+4*2-1
|
|
|
|
|
|
|
|
|
@ -260,42 +258,39 @@ proc key.ctrl_f ;///// ENTER KEYWORD TO FIND /////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_h
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [bot_mode2],1
|
|
|
|
|
mov [bot_dlg_height],16*3+4*2+1
|
|
|
|
|
|
|
|
|
|
mov [s_status],s_enter_text_to_replace
|
|
|
|
|
|
|
|
|
|
jmp key.ctrl_f.direct
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_g
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
ret
|
|
|
|
|
@^
|
|
|
|
|
mov [bot_mode2],0
|
|
|
|
|
mov [bot_dlg_height],16*2+4*2-1
|
|
|
|
|
|
|
|
|
|
mov [bot_mode],1
|
|
|
|
|
mov [bot_dlg_handler],gotodlg_handler
|
|
|
|
|
mov [focused_tb],tb_gotorow
|
|
|
|
|
|
|
|
|
|
mov al,[tb_gotorow.length]
|
|
|
|
|
mov [tb_gotorow.pos.x],al
|
|
|
|
|
mov [tb_gotorow.sel.x],0
|
|
|
|
|
mov [tb_casesen],0
|
|
|
|
|
call drawwindow
|
|
|
|
|
ret
|
|
|
|
|
^@
|
|
|
|
|
; mov [bot_mode2],0
|
|
|
|
|
; mov [bot_dlg_height],16*2+4*2-1
|
|
|
|
|
; mov [bot_mode],1
|
|
|
|
|
; mov [bot_dlg_handler],gotodlg_handler
|
|
|
|
|
; mov [focused_tb],tb_gotorow
|
|
|
|
|
; mov al,[tb_gotorow.length]
|
|
|
|
|
; mov [tb_gotorow.pos.x],al
|
|
|
|
|
; mov [tb_gotorow.sel.x],0
|
|
|
|
|
; mov [tb_casesen],0
|
|
|
|
|
; call drawwindow
|
|
|
|
|
; ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_left ;///// GO TO PREVIOUS WORD ////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_left ;///// GO TO PREVIOUS WORD //////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_left: ;///// GO TO PREVIOUS WORD, WITH SELECTION /////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_left: ; GO TO PREVIOUS WORD, WITH SELECTION
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ebx,[cur_editor.Caret.Y]
|
|
|
|
|
mov edx,[cur_editor.Caret.X]
|
|
|
|
|
cld
|
|
|
|
@ -381,14 +376,13 @@ proc key.ctrl_left ;///// GO TO PREVIOUS WORD ////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_right ;///// GO TO NEXT WORD ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_right ;///// GO TO NEXT WORD /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_right: ;///// GO TO NEXT WORD, WITH SELECTION ////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_right: ;/ GO TO NEXT WORD, WITH SELECTION //
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ebx,[cur_editor.Caret.Y]
|
|
|
|
|
mov edx,[cur_editor.Caret.X]
|
|
|
|
|
cld
|
|
|
|
@ -470,8 +464,9 @@ proc key.ctrl_right ;///// GO TO NEXT WORD ///////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_x
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_x ;///// CUT /////////////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [sel.selected],0
|
|
|
|
|
je @f
|
|
|
|
|
call key.ctrl_c
|
|
|
|
@ -480,8 +475,9 @@ proc key.ctrl_x
|
|
|
|
|
@@: ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_c
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_c ;///// COPY ////////////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [copy_size],0
|
|
|
|
|
cmp [sel.selected],0
|
|
|
|
|
je .exit
|
|
|
|
@ -582,8 +578,9 @@ proc key.ctrl_c
|
|
|
|
|
jmp @b
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_v
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_v ;///// PASTE ///////////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [replace_mode],0
|
|
|
|
|
jne @f
|
|
|
|
|
call get_from_clipboard
|
|
|
|
@ -690,9 +687,9 @@ proc key.ctrl_v
|
|
|
|
|
pop eax
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_d ;///// INSERT SEPARATOR ////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,90+sizeof.EDITOR_LINE_DATA
|
|
|
|
|
call editor_realloc_lines
|
|
|
|
|
|
|
|
|
@ -729,9 +726,9 @@ proc key.ctrl_d ;///// INSERT SEPARATOR //////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_y ;///// DELETE CURRENT LINE ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_y ;///// DELETE CURRENT LINE /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,[cur_editor.Caret.Y]
|
|
|
|
|
inc eax
|
|
|
|
|
cmp eax,[cur_editor.Lines.Count]
|
|
|
|
@ -766,14 +763,15 @@ proc key.ctrl_y ;///// DELETE CURRENT LINE ///////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.up ;///// GO TO PREVIOUS LINE ///////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.up ;///// GO TO PREVIOUS LINE /////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call key.shift_up
|
|
|
|
|
jmp clear_selection
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_up: ;///// GO TO PREVIOUS LINE, WITH SELECTION ////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_up: ;/// GO TO PREVIOUS LINE, WITH SELECTION ////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ecx,[cur_editor.Caret.Y]
|
|
|
|
|
dec ecx
|
|
|
|
|
js .exit
|
|
|
|
@ -787,14 +785,15 @@ proc key.up ;///// GO TO PREVIOUS LINE ///////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.down ;///// GO TO NEXT LINE /////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.down ;///// GO TO NEXT LINE ///////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call key.shift_down
|
|
|
|
|
jmp clear_selection
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_down: ;///// GO TO NEXT LINE, WITH SELECTION //////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_down: ;//// GO TO NEXT LINE, WITH SELECTION /////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ecx,[cur_editor.Caret.Y]
|
|
|
|
|
inc ecx
|
|
|
|
|
cmp [cur_editor.Lines.Count],ecx
|
|
|
|
@ -809,14 +808,15 @@ proc key.down ;///// GO TO NEXT LINE /////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.left ;///// GO TO PREVIOUS CHAR /////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.left ;///// GO TO PREVIOUS CHAR ///////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call key.shift_left
|
|
|
|
|
jmp clear_selection
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_left: ;///// GO TO PREVIOUS CHAR, WITH SELECTION //////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_left: ;// GO TO PREVIOUS CHAR, WITH SELECTION ///
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,[cur_editor.Caret.X]
|
|
|
|
|
dec eax
|
|
|
|
|
jns @f
|
|
|
|
@ -832,14 +832,15 @@ proc key.left ;///// GO TO PREVIOUS CHAR /////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.right ;///// GO TO NEXT CHAR ////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.right ;///// GO TO NEXT CHAR //////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call key.shift_right
|
|
|
|
|
jmp clear_selection
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_right: ;///// GO TO NEXT CHAR, WITH SELECTION /////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_right: ;//// GO TO NEXT CHAR, WITH SELECTION ////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ecx,[cur_editor.Caret.Y]
|
|
|
|
|
call get_line_offset
|
|
|
|
|
mov eax,[cur_editor.Caret.X]
|
|
|
|
@ -857,14 +858,13 @@ proc key.right ;///// GO TO NEXT CHAR ////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.pgup ;///// GO TO PREVIOUS PAGE /////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.pgup ;///// GO TO PREVIOUS PAGE ///////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_pgup: ;///// GO TO PREVIOUS PAGE, WITH SELECTION //////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_pgup: ;// GO TO PREVIOUS PAGE, WITH SELECTION ///
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov edx,[lines.scr]
|
|
|
|
|
dec edx
|
|
|
|
|
mov eax,[cur_editor.Caret.Y]
|
|
|
|
@ -885,14 +885,13 @@ proc key.pgup ;///// GO TO PREVIOUS PAGE /////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.pgdn ;///// GO TO NEXT PAGE /////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.pgdn ;///// GO TO NEXT PAGE ///////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_pgdn: ;///// GO TO NEXT PAGE, WITH SELECTION //////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_pgdn: ;//// GO TO NEXT PAGE, WITH SELECTION /////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov edx,[lines.scr]
|
|
|
|
|
dec edx
|
|
|
|
|
mov eax,[cur_editor.Caret.Y]
|
|
|
|
@ -913,14 +912,13 @@ proc key.pgdn ;///// GO TO NEXT PAGE /////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.home ;///// GO TO LINE START ////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.home ;///// GO TO LINE START //////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_home: ;///// GO TO LINE START, WITH SELECTION /////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_home: ;//// GO TO LINE START, WITH SELECTION ////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [cur_editor.Caret.X],0
|
|
|
|
|
test [chr],KM_SHIFT
|
|
|
|
|
jnz @f
|
|
|
|
@ -931,14 +929,13 @@ proc key.home ;///// GO TO LINE START ////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.end ;///// GO TO LINE END ///////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.end ;///// GO TO LINE END /////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_end: ;///// GO TO LINE END, WITH SELECTION ////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_end: ;///// GO TO LINE END, WITH SELECTION //////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ecx,[cur_editor.Caret.Y]
|
|
|
|
|
call get_line_offset
|
|
|
|
|
call get_real_length
|
|
|
|
@ -952,14 +949,13 @@ proc key.end ;///// GO TO LINE END ///////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_home ;///// GO TO PAGE START ///////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_home ;///// GO TO PAGE START /////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_home: ;///// GO TO PAGE START, WITH SELECTION ////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_home: ;/ GO TO PAGE START, WITH SELECTION //
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,[cur_editor.TopLeft.Y]
|
|
|
|
|
mov ecx,eax
|
|
|
|
|
test [chr],KM_SHIFT
|
|
|
|
@ -972,14 +968,13 @@ proc key.ctrl_home ;///// GO TO PAGE START ///////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_end ;///// GO TO PAGE END //////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_end ;///// GO TO PAGE END ////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_end: ;///// GO TO PAGE END, WITH SELECTION ///////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_end: ;/// GO TO PAGE END, WITH SELECTION ///
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov ecx,[cur_editor.TopLeft.Y]
|
|
|
|
|
mov eax,[lines.scr]
|
|
|
|
|
cmp eax,[cur_editor.Lines.Count]
|
|
|
|
@ -997,14 +992,13 @@ proc key.ctrl_end ;///// GO TO PAGE END //////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_pgup ;///// GO TO DOCUMENT START ///////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_pgup ;///// GO TO DOCUMENT START /////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_pgup: ;///// GO TO DOCUMENT START, WITH SELECTION ////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_pgup: ; GO TO DOCUMENT START, WITH SELECTION
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
xor eax,eax
|
|
|
|
|
mov [cur_editor.TopLeft.Y],eax
|
|
|
|
|
mov [cur_editor.Caret.Y],eax
|
|
|
|
@ -1017,14 +1011,13 @@ proc key.ctrl_pgup ;///// GO TO DOCUMENT START ///////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_pgdn ;///// GO TO DOCUMENT END /////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_pgdn ;///// GO TO DOCUMENT END ///////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call clear_selection
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_pgdn: ;///// GO TO DOCUMENT END, WITH SELECTION //////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
key.shift_ctrl_pgdn: ; GO TO DOCUMENT END, WITH SELECTION /
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,[cur_editor.Lines.Count]
|
|
|
|
|
mov [cur_editor.Caret.Y],eax
|
|
|
|
|
sub eax,[lines.scr]
|
|
|
|
@ -1041,9 +1034,9 @@ proc key.ctrl_pgdn ;///// GO TO DOCUMENT END /////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.del ;///// DELETE NEXT CHAR OR SELECTION ////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.del ;///// DELETE NEXT CHAR OR SELECTION //////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call delete_selection
|
|
|
|
|
jnc .exit
|
|
|
|
|
|
|
|
|
@ -1182,9 +1175,9 @@ proc key.del ;///// DELETE NEXT CHAR OR SELECTION ////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ins ;///// TOGGLE INSERT/OVERWRITE MODE /////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ins ;///// TOGGLE INSERT/OVERWRITE MODE ///////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
xor [ins_mode],1
|
|
|
|
|
mov eax,[cur_editor.Caret.Y]
|
|
|
|
|
mov ebx,eax
|
|
|
|
@ -1193,9 +1186,9 @@ proc key.ins ;///// TOGGLE INSERT/OVERWRITE MODE /////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION ////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION //////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call delete_selection
|
|
|
|
|
jnc key.del.exit
|
|
|
|
|
|
|
|
|
@ -1256,9 +1249,9 @@ proc key.bkspace ;///// DELETE PREVIOUS CHAR OR SELECTION ////////////////////
|
|
|
|
|
jmp key.del.line_up
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.tab ;///// TABULATE /////////////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.tab ;///// TABULATE ///////////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call delete_selection
|
|
|
|
|
mov eax,[cur_editor.Caret.X]
|
|
|
|
|
|
|
|
|
@ -1341,9 +1334,9 @@ proc key.tab ;///// TABULATE /////////////////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.return ;///// CARRIAGE RETURN ///////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.return ;///// CARRIAGE RETURN /////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
call delete_selection
|
|
|
|
|
; unknown how many times the user wants to press "Enter",
|
|
|
|
|
; so you should do a little more value
|
|
|
|
@ -1478,9 +1471,9 @@ proc key.return ;///// CARRIAGE RETURN ///////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_tab ;///// SWITCH TO NEXT TAB //////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_tab ;///// SWITCH TO NEXT TAB ////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [tab_bar.Items.Count],1
|
|
|
|
|
je .exit
|
|
|
|
|
xor eax,eax
|
|
|
|
@ -1505,9 +1498,9 @@ proc key.ctrl_tab ;///// SWITCH TO NEXT TAB //////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB ////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB //////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [tab_bar.Items.Count],1
|
|
|
|
|
je .exit
|
|
|
|
|
xor eax,eax
|
|
|
|
@ -1533,9 +1526,9 @@ proc key.shift_ctrl_tab ;///// SWITCH TO PREVIOUS TAB ////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f4 ;///// CLOSE CURRENT TAB ////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f4 ;///// CLOSE CURRENT TAB //////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [cur_editor.Modified],0
|
|
|
|
|
je .close
|
|
|
|
|
mov [bot_mode2],2
|
|
|
|
@ -1557,9 +1550,9 @@ proc key.ctrl_f4 ;///// CLOSE CURRENT TAB ////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.shift_f9 ;///// SET DEFAULT TAB /////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.shift_f9 ;///// SET DEFAULT TAB ///////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov eax,[tab_bar.Current.Ptr]
|
|
|
|
|
cmp eax,[tab_bar.Default.Ptr]
|
|
|
|
|
jne @f
|
|
|
|
@ -1575,36 +1568,36 @@ proc key.shift_f9 ;///// SET DEFAULT TAB /////////////////////////////////////
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.f3 ;///// FIND NEXT MATCH ///////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.f3 ;///// FIND NEXT MATCH /////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
jmp search
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f9 ;///// COMPILE //////////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_f9 ;///// COMPILE ////////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov bl,0
|
|
|
|
|
jmp start_fasm
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.f9 ;///// COMPILE AND RUN ///////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.f9 ;///// COMPILE AND RUN /////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov bl,1
|
|
|
|
|
jmp start_fasm
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.f10 ;///// COMPILE AND RUN UNDER DEBUG //////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.f10 ;///// COMPILE AND RUN UNDER DEBUG ////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov bl,2
|
|
|
|
|
jmp start_fasm
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc key.alt_x ;///// EXIT PROGRAM ///////////////////////////////////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.alt_x ;///// EXIT PROGRAM /////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
mov [main_closing],1
|
|
|
|
|
mov eax,[tab_bar.Items]
|
|
|
|
|
mov [exit_tab_item],eax
|
|
|
|
@ -1624,9 +1617,33 @@ proc key.alt_x ;///// EXIT PROGRAM ///////////////////////////////////////////
|
|
|
|
|
mcall -1
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
proc try_to_close_tabs ;///// FIND TABS TO BE SAVED BEFORE CLOSE /////////////
|
|
|
|
|
;-----------------------------------------------------------------------------
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_plus ;///// ZOOM IN //////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [scale],7
|
|
|
|
|
jz @f
|
|
|
|
|
inc [scale]
|
|
|
|
|
add [lineHeight],LINEH
|
|
|
|
|
add [charWidth],6
|
|
|
|
|
jmp draw_editor
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc key.ctrl_minus ;///// ZOOM OUT ////////////////////////////
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
cmp [scale],0
|
|
|
|
|
jz @f
|
|
|
|
|
dec [scale]
|
|
|
|
|
sub [lineHeight],LINEH
|
|
|
|
|
sub [charWidth],6
|
|
|
|
|
jmp draw_editor
|
|
|
|
|
@@:
|
|
|
|
|
ret
|
|
|
|
|
endp
|
|
|
|
|
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
proc try_to_close_tabs ;// FIND TABS TO BE SAVED BEFORE CLOSE //
|
|
|
|
|
;---------------------------------------------------------------
|
|
|
|
|
push ecx ebp
|
|
|
|
|
call flush_cur_tab
|
|
|
|
|
mov ebp,[exit_tab_item] ; [tab_bar.Items]
|
|
|
|
|