是否有人知道如何使用保证金中代码的行号进行打印?我可以显示行号,在打印输出中不能有。谢谢!
答案 0 :(得分:4)
您可以使用临时叠加层添加行号,并使用htmlize
包将缓冲区转换为HTML,之后您可以使用lpr
或浏览器保存HTML并进行打印。
(defun htmlize-with-line-numbers ()
(interactive)
(goto-char (point-min))
(let ((n 1))
(while (not (eobp))
(htmlize-make-tmp-overlay (point) (point) `(before-string ,(format "%4d " n)))
(setq n (1+ n))
(forward-line 1)))
(switch-to-buffer (htmlize-buffer)))
这需要最新版本的htmlize
。
答案 1 :(得分:3)
一种简单而又狡猾的方式当然是暂时将行号直接插入缓冲区
C-<
C-M-% ^ RET \,(1+ \#) SPC RET
然后打印
M-x print-buffer
然后再次撤消行号:
C-/
C-u C-SPC
结果不是很漂亮,但可以使用。有三个主要问题:
您可以使用更复杂的替换字符串来修复第二点:
\,(format "%4d " (1+ \#))
但是你必须知道最大行号是多少,这样你就可以在%
和d
之间给出正确的位数。您当然可以快速跳转到缓冲区的末尾以检查最大行号。但更重要的是,每次要打印行号时都要输入所有内容。
答案 2 :(得分:2)
很抱歉这个旧帖子的解决方案。我使用ps-print-buffer
而不是print-buffer
,因为结果很多更好看。无论如何,由于某种原因,它没有在手册中记录,但如果你查看ps-print.el
的来源,你会发现ps-line-number
变量你可以设置为非零,顺序包括行号。
M-x set-variable RET ps-line-number RET t
这应该暂时设置,以便您可以打印。您可能希望将其永久设置在init.el
。
您还可以使用M-x pr-interface
命令进行打印,这会打开各种打印选项的缓冲区。