Fresh IDE . Check-in [cef068fcbf]
Not logged in

This repository is a mirror!

The original is located on: https://fresh.flatassembler.net/fossil/repo/fresh
If you want to follow the project, please update your remote-url

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Improved the words handling (AEM_GETWORDATCARET) in the AsmEdit to better handle some specific cases, for example labels with "$" inside. As long as this code is widely used for many code navigation, help and other processing, this change have pretty big impact on the users workflow. Actually it was inspired by working with the rwasa/heavything sources.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:cef068fcbfdb8697556343d2f7ad3cddf0e14a13
User & Date: johnfound 2018-06-26 06:14:45
Context
2018-06-26
07:15
Small bug fixed. check-in: 41498af8b7 user: johnfound tags: trunk
06:14
Improved the words handling (AEM_GETWORDATCARET) in the AsmEdit to better handle some specific cases, for example labels with "$" inside. As long as this code is widely used for many code navigation, help and other processing, this change have pretty big impact on the users workflow. Actually it was inspired by working with the rwasa/heavything sources. check-in: cef068fcbf user: johnfound tags: trunk
2018-06-25
20:05
Reverted the file msgutils to rev.6dd632694ae65 because it fixes the problem with the main window, but disables the shortcut keys in the dialog windows. More research is needed. Again, the mentioned problem is in WINE only. It seems that IsWindowEnabled API works not very correct in some circumstances. check-in: b4ac052701 user: johnfound tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to include/libs/asmedit/asmedit.asm.

3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
....
4318
4319
4320
4321
4322
4323
4324


4325
4326

4327
4328
4329





4330

4331
4332

4333
4334

4335
4336

4337
4338

4339
4340

4341
4342

4343
4344
4345

4346
4347
4348
4349
4350
4351
4352
        or      edx,edx
        jz      .left_edge_ok

        mov     ax, [esi+AELINE.text + aeCharSize * edx - aeCharSize]
        cmp     byte [.wparam+2], 0
        jne     .pointok

        cmp     al, '.'
        je      .inword

        cmp     al, ':'
        je      .inword

.pointok:
        call    .recognize_character
        jc      .left_edge_ok

.inword:
................................................................................

; overwrites the character in position edx, line pointed by esi with the character in ax

    .delete:
        mov     [esi + AELINE.text + aeCharSize*edx], ax
        ret




.recognize_character:

        cmp     ax,20h
        jb      .neutral_character
        cmp     ax,30h





        jb      .separator_character

        cmp     ax,3Ah
        jb      .neutral_character

        cmp     ax,40h
        jb      .separator_character

        cmp     ax,5Bh
        jb      .neutral_character

        cmp     ax,5Fh
        jb      .separator_character

        cmp     ax,7Bh
        jb      .neutral_character

        cmp     ax,7Fh
        jb      .separator_character

    .neutral_character:
        clc
        ret

    .separator_character:
        stc
        ret


.find_line:
        mov     esi,[.first_line]







|


|







 







>
>


>
|
|
|
>
>
>
>
>
|
>
|

>
|

>
|

>
|

>
|

>
|

>



>







3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
....
4318
4319
4320
4321
4322
4323
4324
4325
4326
4327
4328
4329
4330
4331
4332
4333
4334
4335
4336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4347
4348
4349
4350
4351
4352
4353
4354
4355
4356
4357
4358
4359
4360
4361
4362
4363
4364
4365
4366
4367
4368
        or      edx,edx
        jz      .left_edge_ok

        mov     ax, [esi+AELINE.text + aeCharSize * edx - aeCharSize]
        cmp     byte [.wparam+2], 0
        jne     .pointok

        cmp     ax, '.'
        je      .inword

        cmp     ax, ':'
        je      .inword

.pointok:
        call    .recognize_character
        jc      .left_edge_ok

.inword:
................................................................................

; overwrites the character in position edx, line pointed by esi with the character in ax

    .delete:
        mov     [esi + AELINE.text + aeCharSize*edx], ax
        ret

; +-*/=<>()[]{}:,|&~#`
; "'

.recognize_character:

        cmp     ax, '!'
        je      .neutral_character
        cmp     ax, '$'
        je      .neutral_character
        cmp     ax, '?'
        je      .neutral_character

        cmp     ax,' '
        jbe     .separator_character

        cmp     ax, ':'
        jb      .neutral_character

        cmp     ax, '@'
        jb      .separator_character

        cmp     ax, '['
        jb      .neutral_character

        cmp     ax, '_'
        jb      .separator_character

        cmp     ax, '{'
        jb      .neutral_character

        cmp     ax, $7f
        jb      .separator_character

    .neutral_character:
        clc
        ret

    .separator_character:
        stc
        ret


.find_line:
        mov     esi,[.first_line]