您只需在循环结束时对其进行评估。
(defun get-hdr ()
(let (mylist)
(while (not (end-of-line)) ; missing closing parenthesis added
(while (re-search-forward ("[A-Za-z]+[^\t\n]" nil t)) ; ditto
(setq mylist (append (match-string 1) mylist)) ) ) ; note setq
mylist) )
不过,习惯上只使用cons
而不是append
在这种情况下;然后最后,您可能想要反转列表。
(defun get-hdr ()
(let (mylist)
(while (not (end-of-line))
(while (re-search-forward ("[A-Za-z]+[^\t\n]" nil t))
(setq mylist (cons (match-string 1) mylist) ) ) )
(reverse mylist)) )
另请参阅http://www.gnu.org/software/emacs/manual/html_node/elisp/Building-Lists.htmlappend
,它在更广泛的背景下讨论了 的功能。
在许多情况下,您的函数不应与用户的正则表达式匹配数据或缓冲区位置混淆;考虑在表单周围添加包装器save-excursion
。save-match-data
let
但是,出于您的既定目的,也许您所需要的只是
(split-string (buffer-substring-no-properties (point) (line-end-position)) "\t")
(文档)