【发布时间】:2020-04-22 04:29:57
【问题描述】:
全部,
我必须对 eLisp 感到厌烦。很快就完成了第一个功能。
(defun sort-lines-reverse (beg end)
"sort lines in reverse order"
(interactive
(if (use-region-p)
(list (region-beginning) (region-end))
(list (point-min) (point-max))))
(if (and beg end)
(sort-lines 1 beg end))
)
完美运行。用软管冲洗下一个
(defun sort-numeric-fields-reverse (field beg end)
"sort numeric fields in reverse order"
(interactive
(if (use-region-p)
(list (read-number "Field number: " 1) (region-beginning) (region-end))
(list (read-number "Field number: " 1) (point-min) (point-max)))
(message "calling if")
(if (and beg end)
((message "inside if")
(sort-numeric-fields field beg end)
(reverse-region beg end))
)
))
没有运行没有命中没有错误。在消息中看不到一条消息。我确实收到了我的字段编号提示。
一个随机生成的测试数据的sn-p,如果你愿意的话。
8 412086510
8 744308263
8 1482781895
8 995992436
1 1021762533
1 897682569
1 963686690
1 166565707
1 2096612583
1 829723388
1 587753131
1 264251710
32 139885828
32 781244288
在我的 KDE Neon 环境中雪上加霜的是,用于调出 lisp 调试器的 C-M-x 不会下蹲。
这两个函数之间唯一真正的区别在于,我必须提示输入字段编号。在 if 我运行 2 个函数而不是一个函数的内部。在让第一个工作之后,第二个应该是小菜一碟。
我们将不胜感激。
【问题讨论】:
-
您的
interactive表单包含整个函数体。由于这是多种形式,并且只需要/评估一个形式,if之后的所有内容都将被忽略。这样就获得了参数,然后函数立即返回。
标签: elisp