(defvar org-babel-result-lines-limit 10)
(defvar org-babel-result-length-limit 100)
(defun org-babel-insert-result@limit (orig-fn result &rest args)
(if (and result (or org-babel-result-lines-limit org-babel-result-length-limit))
(let (new-result plines plenght limit)
(with-temp-buffer
(insert result)
(setq plines (if org-babel-result-lines-limit
(goto-line org-babel-result-lines-limit)
(point-max)))
(setq plenght (if org-babel-result-length-limit
(min org-babel-result-length-limit (point-max))
(point-max)))
(setq limit (min plines plenght))
(setq new-result (concat (buffer-substring (point-min) limit)
(if (< limit (point-max)) "..."))))
(apply orig-fn new-result args))
(apply orig-fn result args)))
(advice-add 'org-babel-insert-result :around #'org-babel-insert-result@limit)
#+begin_src emacs-lisp :results output
(dotimes (i 100)
(print i))
#+end_src
#+RESULTS:
#+begin_example
0
1
2
3
...
#+end_example
UPDATE: 2021-10-09T08:41:22+08:00
判断 result 非空:
- (if (or org-babel-result-lines-limit org-babel-result-length-limit)
+ (if (and result (or org-babel-result-lines-limit org-babel-result-length-limit))
result 为空时不应使用 new-result:
- (apply orig-fn new-result args)))
+ (apply orig-fn result args)))