如何在电子表格计算器sc中撤消?

Jin*_*ing 6 spreadsheet sc-spreadsheet

电子表格计算器sc是一个非常古老的基于控制台的程序。它的作用正如其名称所示。我在其手册页中找不到如何撤消操作。我目前将它与 RCS 一起使用,. 在进行重大更改之前,在 RCS 中手动创建版本,并根据需要轮换回某个版本。我想知道是否有更好的方法来做到这一点。谢谢。

小智 2

这可能是虚假的希望,但使用来自 Fedora 的 7.16 RPM 源(可能是 Debian 软件包源)似乎可以撤消,具有 Yank 和 Pull 功能以及一些策略调整。

例如,=命令,在sc.c中,第1140行,改变了一行,

            case '=':
                if (locked_cell(currow, curcol))
                    break;
                /* set mark 0 */
                savedrow[27] = currow;
                savedcol[27] = curcol;
                savedstrow[27] = strow;
                savedstcol[27] = stcol;

                /* btiffin, yank current cell to buffer 0 */
                yankr(lookat(currow, curcol), lookat(currow, curcol));

                (void) sprintf(line,"let %s = ", v_name(currow, curcol));
                linelim = strlen(line);
                insert_mode();
                break;
Run Code Online (Sandbox Code Playgroud)

调用将yankr当前单元格内容放入“0”缓冲区中,就像“x”命令或“yy”一样。因此,如果犯了错误,至少是简单的输入,“pp”会将旧的单元格内容放回原处。

这可能是错误的,但它在这里发挥了魅力。接下来是yankr范围操作。乍一看,应该不再需要 50 个左右的战略调用来在yankr(start, end)出现错误时依靠 Pull 命令。至少达到一个水平。

前四个实验成功了

= LET, < LEFTSTRING, > RIGHTSTRING and \ LABEL
Run Code Online (Sandbox Code Playgroud)

使用时的“边缘”感觉已经sc大大减弱。用例不仅仅是电子表格,而是从外部脚本驱动电子表格并通过简单的popen调用设置/获取单元格值,顺便说一句,在 COBOL 中,GnuCOBOL

请注意,这只是今天。明天可能会发现致命的错误头脑,似乎是一个简单的解决方案。嗯,现在思考一下,在点击“发布”之前先读一遍,它可能不是缓冲区“0”,...更多阅读源代码,无论如何点击“发布”。