Scintilla教程(4): 复制粘贴以及撤销回退

Overtype

修改模式

整体介绍

该功能不常用,当点击键盘中Insert按键后,输入模式更改。

SCI_SETOVERTYPE,SCI_GETOVERTYPE

SCI_SETOVERTYPE(bool overType) SCI_GETOVERTYPE → bool

启用改写后,每个键入的字符将替换文本插入符号右侧的字符。禁用改写时,将在插入符号处插入字符。如果改写处于活动状态,SCI_GETOVERTYPE将返回true(1),否则将返回false(0)。使用SCI_SETOVERTYPE设置改写模式。

Cut, copy and paste

剪切,复制以及粘贴

整体介绍

用于复制粘贴等常规功能。

SCI_CUT,SCI_COPY,SCI_PASTE,SCI_CLEAR,SCI_CANPASTE,SCI_COPYALLOWLINE

SCI_CUT SCI_COPY SCI_PASTE SCI_CLEAR SCI_CANPASTE → bool SCI_COPYALLOWLINE

这些命令执行标准任务,包括剪切数据并将其复制到剪贴板、从剪贴板粘贴到文档以及清除文档。如果文档不是只读的,并且所选内容不包含受保护的文本,SCI_CANPASTE将返回非零。如果需要“可以复制”或“可以剪切”,请使用SCI_GETSELECTIONEMPTY(),如果有任何非空的选择范围意味着复制或剪切到剪贴板应该有效,则该值将为零。

SCI_COPYALLOWLINE的工作原理与SCI_COPY相同,只是如果选择为空,则复制当前行。在Windows上,将向剪贴板添加一个额外的“MSDEVLineSelect”标记,然后在SCI_粘贴中使用该标记将整行粘贴到当前行之前。

SCI_COPYRANGE,SCI_COPYTEXT

SCI_COPYRANGE(position start, position end) SCI_COPYTEXT(position length, const char *text)

SCI_COPYRANGE将一系列文本从文档复制到系统剪贴板,SCI_COPYTEXT将提供的文本复制到系统剪贴板。

SCI_SETPASTECONVERTENDINGS,SCI_GETPASTECONVERTENDINGS

SCI_SETPASTECONVERTENDINGS(bool convert) SCI_GETPASTECONVERTENDINGS → bool

如果设置了此属性,则在粘贴文本时,任何行尾都会转换为与SCI_SETEOLMODE设置的文档行尾模式相匹配。默认为true。

SCI_REPLACERECTANGULAR

SCI_REPLACERECTANGULAR(position length, const char *text)

用给定文本替换选定文本或空选择。插入的执行方式类似于矩形粘贴:给定文本中的新行被解释为移动到下一行而不插入新行,除非在文档末尾。

Error handling

整体介绍

用于当前Scintilla错误状态。

SCI_SETSTATUS,SCI_GETSTATUS

SCI_SETSTATUS(int status) SCI_GETSTATUS → int

如果发生错误,Scintilla可能会设置一个内部错误号,该编号可以通过SCI_GETSTATUS检索。要清除错误状态,请调用SCI_SETSTATUS(0)。状态值从1到999为错误,状态SC_Status_WARN_START(1000)及以上为警告。当前定义的状态为:

错误码说明
SC_STATUS_OK0No failures
SC_STATUS_FAILURE1Generic failure
SC_STATUS_BADALLOC2Memory is exhausted
SC_STATUS_WARN_REGEX1001Regular expression is invalid

Undo and Redo

整体介绍

回退与重做。

SCI_UNDO,SCI_CANUNDO

SCI_UNDO SCI_CANUNDO → bool

SCI_UNDO撤消一个操作,或者如果撤消缓冲区已达到SCI_ENDUNDOACTION点,则所有操作将返回到相应的SCI_BEGINUNDOACTION

如果没有要撤消的内容,SCI_CANUNDO将返回0,如果有,则返回1。您通常会使用此消息的结果来启用/禁用编辑菜单撤消命令。

SCI_EMPTYUNDOBUFFER

SCI_EMPTYUNDOBUFFER

该消息

该消息用于清空当前撤消缓冲区以及重做缓冲区,执行该命令后,当前文档将显示为未修改。本消息的执行将不会触发SCN_SAVEPOINTREACHED 的通知。

SCI_SETUNDOCOLLECTION,SCI_GETUNDOCOLLECTION

SCI_SETUNDOCOLLECTION(bool collectUndo) SCI_GETUNDOCOLLECTION → bool

SCI_SETUNDOCOLLECTION消息用于控制Scintilla是否收集撤消信息。传入true(1)以收集信息,传入false(0)以停止收集。如果停止收集,还应使用SCI_EMPTYUNDOBUFFER以避免撤消缓冲区与缓冲区中的数据不同步。

如果您使用Scintilla存储程序(日志视图)生成的文本,或者在经常删除和重新生成文本的显示窗口中,可以关闭保存撤消信息。

SCI_BEGINUNDOACTION,SCI_ENDUNDOACTION

SCI_BEGINUNDOACTION SCI_ENDUNDOACTION

这两个消息用来标记一组操作的开始和结束,用来批量撤销或重做。

SCI_ADDUNDOACTION

SCI_ADDUNDOACTION(int token, int flags)

该消息可以将其自己的操作添加到撤消堆栈中,并且在撤消(SC_PERFORMED_UNDO)或重做(SC_PERFORMED_REDO)操作时,将使用SC_MOD_CONTAINER标志向容器发送SCN_MODIFIED通知。提供的令牌参数将在通知的令牌字段中返回。

例如,如果容器希望允许撤消和重做“toggle bookmark”命令,那么它可以在每次执行该命令时调用SCI_ADDUNDOACTION(line,0)。然后,当它收到撤销或重做的通知时,它会在令牌字段给出的行上切换书签。如果有不同类型的命令或参数需要存储到撤销堆栈中,那么容器应该为文档维护自己的堆栈,并使用该堆栈中的当前位置作为SCI_ADDUNDOACTION(line)的参数。SCI_ADDUNDOACTION命令不会组合到单个撤消事务中,除非与SCI_BEGINUNDOACTIONSCI_ENDUNDOACTION组合在一起。

当flags参数是UNDO_MAY_COALESCE(1),则器操作可以与任何插入和删除操作合并到单个复合操作中。否则flags参数为UNDO_NONE(0)。合并将可合并的容器操作视为透明的,所以仍然只将看起来像键入或删除的插入组合在一起,看起来像多次使用退格键或删除键。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值