问题标签 [undo]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
git - 如何在提交之前撤消“git add”?
我错误地使用以下命令将文件添加到 Git:
我还没跑git commit
。有没有办法撤消这个,所以这些文件不会包含在提交中?
java - 如何撤消对 JSpinner 的更改?
我需要验证 a 的用户输入JSpinner
,如果无效,我需要撤消(回滚)值更改。最好的方法是什么?
java - 对 Swing 的撤消管理器隐藏某些操作
我正在尝试编写一个支持某种着色的 JTextPane:当用户键入文本时,我正在运行一些代码,根据某种算法为文本着色。这很好用。
问题是着色操作是在撤消管理器中注册的(带有 EventType.CHANGE 的 DefaultDocumentEvent)。因此,当用户单击撤消时,着色消失。只有在第二个撤消请求时,文本本身才会回滚。
(请注意,着色算法有点慢,因此我无法在插入文本时为其着色)。
如果我试图阻止 CHANGE 事件到达撤消管理器,我会在多次撤消请求后得到一个异常:这是因为文档内容不符合 undoable-edit 对象所期望的内容。
有任何想法吗?
version-control - 如何撤消不属于变更集的 bitkeeper 中的签入?
我在 bitkeeper 存储库中的项目中有一个文件。我签入了一个文件,但我没有提交更改以创建变更集。如何撤消签入?
如果我有一个变更集,我可以撤消提交:
但在这种情况下,我无法提交和撤消变更集,因为我有其他不想接触的签入文件。
language-agnostic - 撤消/重做级联删除
我正在尝试使用命令模式在我的应用程序中实现撤消/重做功能。我面临一个问题。
为了说明这一点,让我们假设您可以使用我的应用程序创建 2D 配置文件(任意数量)。
从这些 2D 配置文件中,您可以创建具有不同属性(名称、颜色、比例等)的 3D 零件。
当一个配置文件被删除时,在这个配置文件上构建的所有 3D 零件也将被自动删除(当一个配置文件即将被删除时,3D 零件经理会收到通知,并将删除过时的 3D 零件。还会通知视图更新图形用户界面)。
这是我面临问题的地方:我正在编写用于删除 2D 配置文件的撤消/重做命令,它看起来像这样(伪代码):
正如您在上面的代码中看到的,删除 2D 轮廓将自动删除依赖于已删除轮廓的所有 3D 零件。
但是在撤消时,将 2D 配置文件重新添加到列表中是不够的:3D 部分丢失了。
我该怎么办 ?撤消/重做命令是否应该负责删除 3D 零件(这实际上是由 3D 零件管理器完成的)?这意味着撤消/重做命令也将负责通知视图更新 GUI。
还是应该撤消/重做命令创建所有将被删除的 3d 零件的内部副本,并让 3d 零件管理器删除 3D 零件?
还是有其他更好的解决方案?
谢谢你的帮助 !
undo - 在事务数据库中撤消
我不知道如何使用事务数据库实现用户友好界面的撤消属性。
一方面,建议用户具有多级(无限)撤消的可能性,如答案中所述。可能有助于解决此问题的模式是Memento 或Command。
然而,使用包含触发器、不断增长的序列号和不可逆过程的复杂数据库,很难想象撤消操作如何在事务边界之外的不同点工作。换句话说,撤消到最后一次提交的事务只是一个回滚,但是怎么可能回到不同的时刻呢?
更新(基于到目前为止的答案):我不一定希望在修改已经提交时撤消工作,我会专注于具有开放事务的正在运行的应用程序。每当用户单击保存时,这意味着提交,但在保存之前 - 在同一事务期间 - 撤消应该起作用。我知道使用数据库作为持久层只是一个实现细节,用户不应该为此烦恼。但是,如果我们认为“数据库中的撤消和 GUI 中的撤消概念是根本不同的东西”并且我们不对数据库使用撤消,那么无限撤消只是一个流行词。我知道“回滚是......不是用户撤消”。
那么如何在同一个事务中实现“任何更改导致的级联效果”的客户端级撤消呢?
datagridview - 如何让我的控件在 DataGridView 关闭我的控件之前检测到 Escape 键?
我有一个具有撤消功能的控件,当用户按下 Escape 时,控件将恢复原始值。
问题是当我将控件集成到 DataGridView 时。DataGridView “吃掉” Escape 键,因此我的控件无法检测到 Escape 键。
当我在 EditingControlWantsInputKey 上设置“return true”时,我的控件能够检测到 Escape 键,但出现了其他问题,DataGridView 无法关闭我的控件,它停留在 EditMode。
如何让我的控件检测 Escape 键同时还允许 DataGridView 关闭我的控件?
vim - 当文件变为只读时,Vim 会忘记它的历史
在我使用 vi 将文件提交到 Perforce 后,它将变为只读的。
如果我在 vim 中打开这个文件,那么当它变为 readonline 时,我会丢失我的撤消重做历史,甚至不会被询问。
当您在编辑时文件变为只读时,VI 中是否有保留撤消重做历史记录的选项?
javascript - 如何撤消最后选中的复选框?
您好我创建了一个 javascript 函数来检查所选模块的数量是否大于给定值。因此,每次调用复选框时都会调用该函数,并且该函数会遍历所有复选框并计算总数以查看它是否更大。但问题是当用户选中复选框时,如果总积分大于值,我想将复选框设置为选中 = false。但我不知道要撤消哪个复选框。javascript中是否有任何撤消最后点击功能?
git - 在 Git 中撤消对一个文件的工作副本修改?
在最后一次提交之后,我修改了工作副本中的一堆文件,但我想撤消对其中一个文件的更改,因为将其重置为与最近提交相同的状态。
但是,我只想单独撤消该文件的工作副本更改,没有其他内容。
我怎么做?