问题标签 [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.

0 投票
22 回答
36625 浏览

design-patterns - 撤消引擎的设计模式

我正在为土木工程应用程序编写结构建模工具。我有一个代表整个建筑的巨大模型类,其中包括节点、线元素、负载等的集合,它们也是自定义类。

我已经编写了一个撤消引擎,它在每次修改模型后保存一个深层副本。现在我开始思考我是否可以用不同的方式编码。除了保存深层副本,我也许可以保存每个修改器操作的列表以及相应的反向修改器。这样我就可以将反向修饰​​符应用于当前模型以撤消,或将修饰符应用于重做。

我可以想象您将如何执行更改对象属性等的简单命令。但是复杂命令呢?就像在模型中插入新节点对象并添加一些保持对新节点引用的线对象一样。

一个人将如何实施呢?

0 投票
4 回答
3237 浏览

python - 使用 GTK TextView 撤消

我正在尝试将我贡献的程序的依赖关系降至最低,它是一个小型文本编辑器。

GTK Textview 似乎没有内置的撤消功能。到目前为止,我是否缺少任何参考实现?每个人都在为他们的 TextView 小部件编写自己的撤消功能吗?

我会对任何示例代码感到高兴——最高兴的是 python 示例代码,因为我们的项目是在 python 中。

0 投票
3 回答
16722 浏览

svn - 撤消 Subversion 中的特定修订

假设我在存储库文件夹中有一组提交......

我想获得一份工作副本,其中包括从修订版 117 开始的所有更改,但不包括修订版 118 和 120 的更改。

编辑:为了使问题更清楚,我想撤消在 118 和 120 中所做的更改,同时保留所有其他更改。该文件夹包含数百个子文件夹中的数千个文件。

实现这一目标的最佳方法是什么?

感谢 Bruno 和 Bert,答案是命令(在这种情况下,用于在执行完全合并后删除 120)

请注意,必须使用前导减号指定修订号。“-120”不是“120”

0 投票
19 回答
1430284 浏览

git - 撤消 git rebase

有人知道如何轻松撤消 git rebase 吗?

想到的唯一方法是手动进行:

  • git checkout 两个分支的提交父级
  • 然后从那里创建一个临时分支
  • 手工挑选所有提交
  • 用手动创建的分支替换我重新设置的分支

在我目前的情况下,这将起作用,因为我可以轻松地发现来自两个分支的提交(一个是我的东西,另一个是我同事的东西)。

然而,我的方法给我的印象是次优且容易出错(假设我刚刚用我自己的 2 个分支重新设置了基础)。

有任何想法吗?

澄清:我说的是重放一堆提交的rebase。不止一个。

0 投票
4 回答
1350 浏览

c# - ASP.net Web App 撤消支持

我有一个简单的 web 表单,上面有几个字段和一个 gridview。我还有一个保存和取消按钮。

我想要一种方法来撤消用户按下取消时对表单上的数据所做的操作。这对于字段来说很简单,但是由于对 gridview 的更改是针对数据库实时发生的,所以我不知道如何获得撤消功能。

我曾考虑在视图状态中存储对 gridview 的更改,但我宁愿不这样做,因为需要额外的空间。

我还想到了一个临时表来存储更改然后根据需要回滚它们。

有谁知道如何从表单中获取撤消功能?

0 投票
5 回答
1426 浏览

ruby-on-rails - 在 Rails 中实现 gmail 样式“撤消”的最佳方法是什么?

我认为在销毁记录时使用“撤消”方法 ala gmail而不是显示一个恼人的弹出窗口,上面写着“你确定吗? ”,这一点很重要。

我实现这一点的方式是在模型中有一个“deleted_at”时间戳列,当调用destroy方法时它会被加上时间戳

还原/撤消,我只需将同一列设置为 nil

当我调用 find 方法时,我只需要添加一个条件来过滤掉“已删除”的 foos。也许设置一个 cron 或后台任务在一段时间后真正销毁“已删除”的 foo。

对我有用且易于实现,但我很好奇是否有更好的方法来实现此功能?也许有一个插件或gem提供了我不知道的这个?

0 投票
3 回答
55373 浏览

svn - 在 TortoiseSVN 中撤销提交

我不小心提交了一堆文件(不同文件夹中的数十个文件)。什么是“撤消”该提交而无需从我的工作目录中删除文件的最简单、最干净(也是最安全!)的方法?

0 投票
2 回答
2216 浏览

c# - .NET RichTextBox 撤消

我在 WinForms 3.5 中使用 RichTextBox,我发现当我以编程方式编辑包含的文本时,这些更改不再可用于内置的撤消功能。

有没有办法使这些更改可用于撤消/重做?

0 投票
4 回答
3065 浏览

java - 我在 Java 中的撤消功能方面需要一些帮助

我用 Java 写了一个文本编辑器,我想给它添加 Undo 功能

但是没有 UndoManager 类,我需要使用 Stack 或 LinkedList 之类的数据结构,但 Java 中的 Stack 类使用 Object 参数,例如: push(Object o) , Not Push(String s) 我需要一些提示或链接。谢谢

0 投票
3 回答
39578 浏览

vba - 将撤消构建到 Excel VBA 宏中

Excel 宏在运行后似乎不允许使用“撤消”。有没有办法将undo功能烘焙到 Excel 中的 VBA 宏中?