找一个 CSS prettifier 格式一下就行
M-x global-so-long-mode
之后再打开。
Emacs 收费?
哪里那么好的事。
起先推出的代码托管叫GNU ELPA,但是为了愚蠢的规则,不收欢迎。比如,五年前有人帮我写个包,进入GNU ELPA之前要找这位的授予版权。此外,进入的包不能接受包于民营企业的API,比如github。2012年,MELPA推出托管没法令这些文书工作要求,迅速超越GNU ELPA。GNU老板Richard Stallman觉得不大妙。2020年推出NON-GNU ELPA放宽GNU的限制。
用否定来定义某物,这种方法取名字不来是。如果GNU相当于non-commercial,那NON-GNU等于commercial。
那个用户和 Emacs 开发者一直过不去,最后因为恶意行为成为了史上第一个被 emacs-devel 禁言的人士。其实 “commercial emacs” 没有真正解决长行的问题,只是随便删除了 bidi 等功能,重命名了代码中的一些函数,不值得尝试。顺便建议观众不要与他辩论,多珍稀自己宝贵的时间。(所谓的 “don’t feed the troll”)
我觉得,没有必要硬磕长行文本, 因为那种 minify 的一行字符上青天的文件, 根本没法做什么有意义的编辑. 可以用现在 Emacs 自带的 so-long
, 这个插件可以提醒你小心不要误打开了含有超长行的文件.
这种只有一行的文本文件我也遇到过(json)即使用vim在终端打开,除去搜索到句末这些操作,左右移动也会卡顿……
我的解决办法如下:
;; 使用 fundamental-mode 打开大文件。
(defun my/large-file-hook ()
(when (and (> (buffer-size) (* 1024 2))
(or (string-equal (file-name-extension (buffer-file-name)) "json")
(string-equal (file-name-extension (buffer-file-name)) "yaml")
(string-equal (file-name-extension (buffer-file-name)) "yml")
(string-equal (file-name-extension (buffer-file-name)) "log")))
(fundamental-mode)
(setq buffer-read-only t)
;;(buffer-disable-undo)
(font-lock-mode -1)
(rainbow-delimiters-mode -1)
(smartparens-global-mode -1)
(show-smartparens-mode -1)
(smartparens-mode -1)))
(add-hook 'find-file-hook 'my/large-file-hook)
;; 默认直接用 fundamental-mode 打开 json 和 log 文件, 确保其它 major-mode 不会先执行。
(add-to-list 'auto-mode-alist '("\\.log?\\'" . fundamental-mode))
(add-to-list 'auto-mode-alist '("\\.json?\\'" . fundamental-mode))
global-so-long-mode 也支持检测到长行后执行指定的 `so-long-action’。
commercial-emacs 是 类似于xemacs的emacs fork吗?
可能是代码着色卡住了,建议用 tree-sitter 着色
希望大家能了解 so-long-mode
不是办法。
Output:
GNU Emacs 28.0.92
so-long--active[t] 13.508238 seconds
Commercial Emacs 0.3.1snapshot 3de8c3d in master
so-long--active[nil] 0.009560 seconds
Input:
curl -sSL -O https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.5.0/css/bootstrap.min.css.map \
&& 2>/var/tmp/foo emacs-28.0.92.1 -Q -nw -l so-long -f global-so-long-mode \
--eval "(find-file \"bootstrap.min.css.map\")" \
--eval "(end-of-line)" \
--eval "(redisplay)" \
--eval "(let ((start (float-time))) \
(dotimes (_i 3) (save-excursion (scroll-down) \
(redisplay) (scroll-down) (redisplay))) \
(princ (with-temp-buffer (insert \"\n\") (version t) (buffer-string)) \
(function external-debugging-output)) \
(princ (format \"\nso-long--active[%S] %f seconds\n\" \
(bound-and-true-p so-long--active)
(- (float-time) start)) \
(function external-debugging-output)))" \
--eval "(call-interactively (function save-buffers-kill-emacs))" \
&& cat /var/tmp/foo \
&& 2>/var/tmp/foo commercial-emacs -Q -nw \
--eval "(fset (quote y-or-n-p) (lambda (&rest _args) t))" \
--eval "(find-file \"bootstrap.min.css.map\")" \
--eval "(end-of-line)" \
--eval "(redisplay)" \
--eval "(let ((start (float-time))) \
(dotimes (_i 3) (save-excursion (scroll-down) \
(redisplay) (scroll-down) (redisplay))) \
(princ (with-temp-buffer (insert \"\n\") (version t) (buffer-string)) \
(function external-debugging-output)) \
(princ (format \"\nso-long--active[%S] %f seconds\n\" \
(bound-and-true-p so-long--active)
(- (float-time) start)) \
(function external-debugging-output)))" \
--eval "(call-interactively (function save-buffers-kill-emacs))" \
&& cat /var/tmp/foo
commercial emacs 比 emacs 强大很多吗? 能具体说一下吗?
不比 GNU Emacs 强大,比如说不支持 bidi 和像素滚动。
global-so-long-mode 与 so-long-mode 的关系也不大,主要是检测到 long lines 后会执行 so-long-action。
Commercial Emacs 不同意。
HELLO 中只有 embedding,没有真正意义上的 bidi。
请二位不要人身攻击, 友善讨论
也希望你能修改你这里的用词
好的,谢谢提醒。