Я думаю, что естественным способом работы с файлами в emacs является загрузка файла в буфер, после чего вы можете обрабатывать его построчно.посмотрите также этот ответ в emacs stackexchange и этот пост от ergoemacs
, например, например:
ELISP> (find-file "foo.txt")
#<buffer foo.txt>
ELISP> (goto-char 1)
1 (#o1, #x1, ?\C-a)
ELISP> (while (not (eobp))
(print (current-line-contents))
(forward-line 1))
Чтобы не получить свойства, вы можете использовать функцию вещь в точке:
ELISP> (goto-char 1)
1 (#o1, #x1, ?\C-a)
ELISP> (while (not (eobp))
(print (thing-at-point 'line t))
(forward-line 1))
"line 1
"
"line 2
"
"line 3
"
"line 4
"
nil
, если вам нужно работать с временными буферами для из соображений скорости попробуйте это:
(with-temp-buffer
(insert-file-contents "./foo.txt")
(while (not (eobp))
(print (thing-at-point 'line t))
(forward-line 1)))