IUP Text Format Tag Status After Interacting
IUP Text Format Tag Status After Interacting
结论
增加
- 若前一个操作为移动光标,
- 若左侧非空,使用左侧的状态;
- 若左侧为空,使用右侧的状态;
- 若前一个操作为删除,参见[[#删除]];
- 若前一个操作为增加,保持状态;
- 另见[[#覆盖替换]]。
删除
- 不论单光标或选中了字符串,向左删除(Backspace),会保持被删除对象左端的状态(不论左侧是否为空);
- 选中了字符串,向右删除(Delete),会保持被删除对象左端的状态;
- 单光标,向右删除(Delete),
- 若左侧非空,会使用左侧的状态;
- 若左侧为空,会使用右侧的状态;
即:
序号 | 单光标或选中了字符串 | 向左(Backspace) 或向右(Delete)删除 |
删除后的状态 |
---|---|---|---|
1 | 单光标 | 向左删除 | 保持被删除对象的左端的状态 |
2 | 选中了字符串 | 向左删除 | 同序号1 |
3 | 单光标 | 向右删除 | 若左侧非空,使用左侧的状态 若左侧为空,使用右侧的状态 |
4 | 选中了字符串 | 向右删除 | 同序号1 |
覆盖替换
- 选中了字符串,覆盖替换,如同先向左[[#删除]],按删除后的状态,再[[#增加]];
[!tip] 若选中了字符串
状态与光标、锚点的前、后无关。
[!related] 参考
[[#小结]]
过程
(可只看[[#结论]],跳过至结束)
测试
-
在区域内增加或删除,且不跨区域边界,则不改变所在区域及其后区域的状态。
1(234)56(789)0
1(23x4)5y6(7z9)0 -
在区域边界处,(向后)增加,若左侧非空,则使用左侧区域的状态
1(234)56(789)0
1(234x)56x(789x)0 -
在区域边界处,(向后)增加,若左侧为空,则使用右侧区域的状态
(234)56(789)0
(x234)56(789)0 -
在区域边界处,先向后删除(Delete),再(向后)增加,若左侧非空,则使用左侧区域的状态
-
在区域边界处,先向后删除(Delete),再(向后)增加,若左侧为空,则使用右侧区域的状态
-
从区域中或区域尾,向前删除(Backspace),到区域边界处(不进入前一个区域)(不跨区域边界),且不改变光标,状态不变
1(234)56(789)0
1(234)56(789)
1(234)56(789)a1(234)56(789)0
1(234)56(78)0
1(234)56(7)0
1(234)56()0
1(234)56(b)01(234)56(789)0
1(234)5(789)0
1(234)(789)0
1(234)c(789)01(234)56(789)0
(234)56(789)0
d(234)56(789)0
小结
- 增加,
-
若前一个状态存在,则保持;
-
若前一个状态不存在,则按如下初始状态,
- 位于区域内时,为区域的状态;
- 位于边界处时,
- 若左侧非空,为左侧的状态;
- 若左侧为空(字符串首端),为右侧的状态;
(不论位于区域或边界)
- 若左侧非空,为左侧的状态;
- 若左侧为空(字符串首端),为右侧的状态;
-
- 向左删除(Backspace),不论是单光标或选中了字符串,会保持被删除对象(光标左侧的字符,或选中的字符串)的状态;
- 向右删除(Delete),
- 单光标时,删除后,
- 若左侧非空,会使用左侧的状态;
- 若左侧为空(字符串首端),会使用右侧的状态;
- 选中了字符串时,会使用原字符串首端的状态(与光标、锚点的前、后无关)
- 单光标时,删除后,