Subversion Repositories Kolibri OS

Compare Revisions

Regard whitespace Rev 5837 → Rev 5838

/programs/develop/tinypad/trunk/tp-key.asm
69,7 → 69,7
.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
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
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
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
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
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
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
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
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
@@: 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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]