我以为,XWidget 的意义就在于它支持的是 HTML。
在 Emacs 中需要查看 HTML 的需求还是存在的,而你很难把一个网页压成一个视频。
我以为,XWidget 的意义就在于它支持的是 HTML。
在 Emacs 中需要查看 HTML 的需求还是存在的,而你很难把一个网页压成一个视频。
我有点没看明白,字体都太小了… 效果很赞,不知道能不能再展开看看?
我的理解是,你用 XWidget 渲染了一段嵌入了 html 代码的 src block?
我实验成功了!
(defun org-xwidget-video (video-url &optional width height)
"Inert video link or file address"
(interactive "sURL or FILE address: ")
(let* ((width (or width 640))
(height (or height 360))
(is-youtube (string-match "youtube\\.com/watch\\?v=\\([^&]*\\)" video-url))
(youtube-id (if is-youtube (match-string 1 video-url) nil))
(html-content
(if is-youtube
;; YouTube embed
(format "<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width\">
<title>Video Player</title>
</head>
<body style=\"margin: 0; padding: 0;\">
<iframe width=\"%d\" height=\"%d\"
src=\"https://www.youtube.com/embed/%s\"
frameborder=\"0\" allowfullscreen>
</iframe>
</body>
</html>" width height youtube-id)
;; video file address
(format "<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\">
<meta name=\"viewport\" content=\"width=device-width\">
<title>Video Player</title>
</head>
<body style=\"margin: 0; padding: 0;\">
<video width=\"%d\" height=\"%d\" controls>
<source src=\"%s\" type=\"video/mp4\">
Not Supported.
</video>
</body>
</html>" width height video-url)))
(temp-file (make-temp-file "emacs-video-" nil ".html")))
;; write html in a temp-file
(with-temp-file temp-file
(insert html-content))
;; create xwidget
(let ((start-point (point)))
(let ((object (xwidget-insert start-point 'webkit "Video Player"
width height)))
(xwidget-webkit-goto-uri object (concat "file://" temp-file))))))
你是对的
根据窗口尺寸调整大小的函数可以参考下面这个我给 WanderLust HTML MIME 写的函数(一个 XWidget Object 和上下少量文字的情况):
(defun xwidget-wl-window-adjust (frame)
(walk-windows (lambda (window)
(with-current-buffer (window-buffer window)
(when (or (eq major-mode 'wl-message-mode)
(eq major-mode 'mime-view-mode))
(when-let* ((object (car (get-buffer-xwidgets (buffer-name))))
(width (xwidget-window-inside-pixel-width window))
(height (xwidget-wl-window-remnant window)))
(xwidget-resize object width height)))) 'none frame)))
(defun xwidget-wl-window-remnant (window)
(when-let* ((object (next-single-property-change (point-min) 'display))
(total (xwidget-window-inside-pixel-height window))
(remnant 0))
(save-excursion
(goto-char (point-min))
(while (< (point) object)
(setq remnant (+ remnant (line-pixel-height)))
(forward-line 1))
(goto-char (+ object 2))
(while (< (point) (point-max))
(setq remnant (+ remnant (line-pixel-height)))
(forward-line 1)))
(- total (+ remnant 6))))
顺便,xwidget.el
里的一些函数实现没有考虑 XWidget Object 和正文嵌入的情况,默认它在(point-min)
。
当时我就是被这位版主锁帖踢人,毕竟是人家的地盘,所以我已经很少在 r/org-mode 上玩了
我觉得 r/emacs 和 r/org-mode 的意识形态都很严重,不喜欢过于意识形态的氛围
不耐烦看他们英语唠叨,我让人工智能帮我看了一下。可怕,1秒都不到,就帮我总结了
好的,我来帮你总结一下这个帖子里面的讨论内容:
这个帖子主要讨论的是 r/emacs 社区未来的发展方向以及对新晋版主的行为的担忧。发帖者认为,新版主似乎倾向于通过排除某些类型的用户来“提升”社区质量,例如新手、不熟悉技术术语的人,以及那些并非从小就接触技术的人。
主要争论点包括:
发帖者主要表达了以下担忧:
总而言之,这个帖子反映了 r/emacs 社区成员对于社区未来发展方向的担忧,以及对于新版主管理方式的质疑。他们希望确保 r/emacs 能够保持其包容性和友好性,而不是变成一个只为资深用户服务的精英社区。
我不研究emacs上的扩展开发,我只是从使用者的角度看待它, 把它当做我最主要的开发和文档工具。 我觉得emacs org能够插入音视频和网页(通过org-embd),将成为一个全功能的文档产品,超过word. 加上文学编程能力,这就是一个最伟大的产品。我还没有看到其他产品(无论开源还是商业,或者其他非Linux操作系统之上的)比他更强了。如果有,请大家告诉我
后面也就是如何更加完善,比如org文档的各方面性能优化(比如大表格的性能),展示的细节方面(比如更漂亮适合代替ppt)。
哦,基于 Xwidget 还是有局限性的,因为这个框架不支持 Windows。但我看 Emacs English 群上的开发者说,正在考虑移除 Xwidget 的 GTK 代码,这会令它变成全平台支持的东西。
且等且看吧。还有就是等懒猫大大的新框架我估计处理效率会很高(但对 Mac 支持不好)。
我觉得老外这种吵吵挺好的,有事不憋着,提供了合理的迭代机制
holo-layer 改改就可以支持.
原理很简单:
嗯,也是一个方式。我抽空看看怎么弄,最近的注意力被 MCP 吸引过去了,想在 Emacs 实现一个完善的 MCP 支持。
实践证明,holo-layer 应该是比较好方案,应该也是现代化富文本编辑器中比较通用的方案,Android 中对应是 ReplacementSpan , Mac OS X 中是 NSAttachment ,都是使用占位符提供一块绘制区域(attachment),然后 attachment 有自己独立的文本排版和渲染环境,从而可以在 Emacs 中实现各种现代化的功能,比如 table 和 src block 不换行,可左右滚动等。
不过如果完整实现起来工作量可能不小,我在使用 attachment 方案实现时 attachment 内部与全局的坐标转换,attachment 的动态解析和移除,局部更新等处理起来都比较耗时耗力
如果思路清晰, 直接上 Cursor 帮忙做坐标转换吧, 我主要不想用 org-mode (会很浪费我时间), holo-layer 应该会很快实现 org 展示 web 内容的功能。
也可以用这套方案在 Emacs 上实现一个现代化的 markdown mode.
org mode 浪费时间指的是什么?是配置比较麻烦吗?还是可折腾的东西太多?我最近也一直想转 markdown,用 markdown 的形,结合 org mode 的意来使用
我觉得 org-mode 用多了会浪费太多时间在配置Org和折腾Org上, 我现实生活中, 只需要PC和手机端创建任务、规划任务和同步任务。
我现在用 懒猫清单 非常高效。
反观 org-mode 我觉得太折腾, 而且只能用在PC端, 出差的时候非常不方便。