我在Windows XP上运行Emacs 23.0.60.1,从here下载,并将网络打印机配置为默认打印机。
如何设置Emacs以轻松打印缓冲区内容?
Win32的修补Emacs版本的documentation提到了“快速简便”的打印,但是没有出现“快速打印”菜单条目和常规条目(“打印缓冲区”,“Postscript打印缓冲区”) )似乎什么也没做。
修改
我在Emacs 22.3的官方Windows版本中遇到了同样的问题。因此,我们非常感谢任何版本的设置/故障排除说明。
EDIT2:
我选择了下面由Joe Casadonte提供的PrintFile解决方案,效果很好。不过,我仍然对任何有关“正确”方式不起作用的想法感兴趣。
(顺便说一句,这是一个适当的SO问题,只是与编程有关吗?)
答案 0 :(得分:5)
我将使用通用USB打印机描述Windows 7的所有内容。根据您的版本需要调整流程。通常可以以相同的方式访问网络。只需使用//NetworkComputerName/SharedPrinterName
代替// MyComputer / MyPrinter并跳过步骤1.-6 ..
MyPrinter
或您可以记住并且没有空格的内容。 MyComputer
)(setq printer-name "//MyComputer/MyPrinter")
或将其放入.emacs.el文件M-x print-buffer
答案 1 :(得分:4)
这不是“正确的”方式,但是我已经这样做多年了,它运作得非常好。我使用PrintFile,一个免费的打印程序(也可以单独使用)。然后我在我的.emacs中有这个:
(defun joc-make-fname-from-buffer-name (buffer-name-in)
"Returns a valid filename from a given buffer name"
(interactive "b")
(save-match-data
(let* ((start (string-match "[^ \*]" buffer-name-in))
(end (string-match "[ \*]*$" buffer-name-in (match-end 0)))
(rc (substring buffer-name-in start end)))
;; remove some special characters
(while (string-match "[:]+" rc)
(setq rc (replace-match "_" t t rc)))
rc)))
(when is-win32
(defun joc-print-buffer-or-region (prefix)
"Prints buffer or region via PrintFile32. If a prefix arg is set (via C-u) then
the current region is printed, otherwise the current buffer is printed."
(interactive "P")
;; ----- set the print directory, fname and args -----
(let* ((print-dir (expand-file-name "~/emacs/print"))
(print-fname (joc-make-fname-from-buffer-name (buffer-name)))
(print-fullpath (concat print-dir "/" print-fname))
(print-args "/delete")
;; ----- set rstart and rend to the current region -----
(rstart (point-min)) (rend (point-max)))
;; ----- if prefix given, set them to region -----
(if (and prefix)
(if (and (point) (mark) (/= (point) (mark)))
(progn (setq rstart (min (point) (mark)))
(setq rend (max (point) (mark))))
(error "No region defined")))
;; ----- make the directory -----
(if (not (file-directory-p print-dir))
(make-directory print-dir))
;; ----- write buffer/region to a temp file, print it, delete directory -----
(write-region rstart rend print-fullpath)
(call-process "prfile32" nil t nil print-args print-fullpath)
(delete-directory print-dir))))
多年来我没有看过它因为它起作用,所以我相信它可以改进。
答案 2 :(得分:1)
将以下行添加到您的emacs初始文件
(setq printer-name "//domain/printer-name")