如何把eww里的内容输出到stdout?

试了以下几种都不行。。。

> emacs --batch --eval '(with-current-buffer (eww-open-file "/path/to/file.html") (append-to-file (buffer-string) nil "/dev/null"))'
Selecting deleted buffer

> emacs --batch --eval '(eww-open-file "/path/to/file.html") ((with-current-buffer (get-buffer-create "*eww*") (princ (buffer-string))))'
Trailing garbage following expression:  ((with-current-buffer (get-buffer-create "*eww*") (princ (buffer-string))))

> emacs --batch --eval '(add-hook `kill-buffer-hook (lambda () (append-to-file (buffer-string) nil "/dev/null"))) (eww-open-file "/path/to/file.html")'
Trailing garbage following expression:  (eww-open-file "/path/to/file.html")
1 个赞
$ emacs --batch --eval '(progn (eww-open-file "/path/to/index.html") (with-current-buffer "*eww*" (print (buffer-string))))'

这个方法的frame宽度始终是10,输出的内容有很多换行符,我当前一个不太完美的做法是把"\n\n…\n"替换成" \n…\n"。

emacs --batch --eval '(progn (eww-open-file "'%s'") (with-current-buffer "*eww*" (princ (apply `concat (let ((f nil)) (mapcar (lambda (c) (char-to-string (if (= c 10) (if f (progn (setq f nil) 32) c) (progn (setq f t) c)))) (string-to-list (buffer-string))))))))'

这个主意不错嘛,又给 Emacs 解锁了一个新功能——文本界面的网页浏览器,作为 w3m、lynx、elinks 的同类。

本来eww就可以这么用啊,我主要是想非交互式的用emacs输出html的内容,类似lynx的dump。

没错,我想强调的是作为一个单独的命令行程序,那些即便不是 Emacs 用户也照样能使用,比如:

~ $ eww https://emacs-china.org
 Forum  Book  ELPA   Donate  Fork Us

如何把eww里的内容输出到stdout? [Emacs-general] (5)
spacemacs ivy layer 中文搜索问题 [Spacemacs] (16)
我的vps炸了,你们的还好吗? [闲聊灌水] (17)
elpl: 一个简陋但是不污染当前 Emacs 的 elisp repl [Emacs-general] (4)
小白要如何学习linux ( 2 3 4 ) [闲聊灌水] (67)
Treemacs display long file names [Emacs-general] (4)
org文档完整格式复制与黏贴网页中的表格等 [Org-mode] (4)
为什么我放弃emacs了? ( 2 ) [闲聊灌水] (24)
Cmake文件代码跳转 [Emacs-general] (1)
[rtags] Rtags protocol version mismatch [Spacemacs] (3)
spacemacs 配置成这样,需要做什么 [Emacs-general] (3)
batch 模式下如何 read 多行字符? [Emacs-general] (11)
org文档调整行内显示图片的尺寸 [Org-mode] (6)
go import add 和 go impl 执行后都需要很长一段时间才有反应 [Programming] (11)
怎么加快forward-char的速度? [Emacs-general] (2)
lsp-mode 下,语法检查,错误信息高亮,实在影响视觉,有方法吗, [Emacs-general] (3)
求助:windows下emacs运行shell出现乱码 [Emacs-general] (13)
跨文件的标题索引 [Org-mode] (4)
有没有16色的mutt主题可以分享一下的? [闲聊灌水] (3)
前辈们,lsp-clangd 如何配置 msvc ? [Emacs-general] (11)
helm-fd - 用 fd 结合上 helm 查找文件 [Emacs-general] (3)
有没有命令行shell的snippet? [Emacs-general] (16)
(while t (read-key)) 卡住 Emacs 了,还有救吗? [Emacs-general] (2)
dap-mode和gud-gdb哪个好用些 [Emacs-general] (1)
我的谷歌浏览器不能同步,显示连接失败 [闲聊灌水] (10)
插入文件的文件名中有空格 [Emacs-general] (7)
大家平时还逛那些论坛? ( 2 ) [闲聊灌水] (24)
Spacemacs projectile 查找文件列表显示异常 [Spacemacs] (1)
重置计时任务的idle time [Org-mode] (1)
求推荐c++配置 [Emacs-general] (7)
下一页 →
首页 分类 FAQ/指引 服务条款 隐私政策

采用 Discourse,启用 JavaScript 以获得最佳体验
~ $

eww 是个 Shell 脚本:

#!/bin/sh

URL=$1
WIDTH=`tput cols`

emacs --batch \
      --eval "(add-hook 'eww-after-render-hook (lambda () (princ (buffer-string)) (kill-emacs 0)))" \
      --eval "(setq shr-use-fonts nil shr-width $WIDTH)" \
      --eval "(setq url-show-status nil)" \
      --eval "(eww \"$URL\")" \
      --eval "(sit-for 15)"
1 个赞