全,
我对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))
)
))没有运行,没有命中,没有错误。消息中没有显示一个消息。我确实得到了我的字段号提示。
一个随机生成的测试数据的片段,如果你愿意的话。
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不会做蹲。
这两个函数之间唯一真正的区别是,在这个函数中,我必须提示输入一个字段号。在if中运行两个函数而不是一个函数。在第一次工作之后,第二次应该是一次简单的工作。
我会感谢你的帮助。
发布于 2020-04-21 12:27:25
两个问题:
更正版本:
(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")
(when (and beg end)
(message "inside if")
(sort-numeric-fields field beg end)
(reverse-region beg end)))编辑:根据@phils的提示,代码已更改: if-progn替换为when。
提示:使用适当的编辑器可以简化输入,并使您可以控制括号。
https://stackoverflow.com/questions/61342333
复制相似问题