【问题标题】:How can I make emacs load nXhtml only when php/html files are open and prevent it from loading at startup如何让 emacs 仅在打开 php/html 文件时才加载 nXhtml 并防止它在启动时加载
【发布时间】:2012-04-27 18:50:19
【问题描述】:

因此,为了优化 emacs 启动时间,我更喜欢将所有 mod 封装在一个 hook 或一个 eval-after-load 中。所以我想出了python、cpp和latex,但我被nXhtml困住了。我尝试了以下方法:

(eval-after-load "HTML-mode"
'(progn
(load-file "~/.emacs.d/plugins/nxhtml/autostart.el")
))

这根本不起作用。

代码:

(add-hook 'html-mode-hook (lambda()
(progn
  (load-file "~/.emacs.d/plugins/nxhtml/autostart.el")
)))

加载 nXhtml 的某些部分,但 nXhtml 模式未打开(仅 SGML 和 AC),因此范围在我的 php 源代码中的颜色没有不同,或者自动完成/括号完成不起作用。

它正常工作的唯一方法是让它在启动时加载。

查看跟踪,在启动期间加载 nxhtml 时,它会显示:

“majmodpri-apply-priorities running ...(完成)”

但是,当负载被 n html-mode-hook 或 eval-after-load 封装时,跟踪会显示:

"majmodpri-apply-priorities running ... MU:majmodpri-check 更改 majmodpri-apply-priorities: buffer=index.php, html-mode,nil => sgml-mode,nil majmodpri-apply-priorities running ... (done)"

有什么想法吗?

【问题讨论】:

    标签: html emacs nxhtml


    【解决方案1】:

    我认为 nXhtml 的自动启动文件(这就是您要加载的全部内容)被设计得非常小,因此您可能无法在不限制它的某些功能的情况下进一步减少它?

    实际需要多长时间?看起来应该记录了“Nxml/Nxhtml Autostart.el 在 %.1f 秒内加载”消息。

    【讨论】:

    • 加载所有内容需要 1.7 秒。虽然这不会很糟糕,但我想知道是否有可能在我只需要它用于 Web 开发时加载 nXhtml,因为我使用 Emacs 来编辑几乎所有内容
    • 你对它进行了字节编译吗? (IIRC nXhtml 提供了一个菜单项来执行此操作,因此您无需担心哪些需要编译,哪些不需要。)
    • Nxml/Nxhtml Autostart.el 在 0.1 秒内加载。字节编译做到了。我可以用 0.1 秒而不是 1.7 秒生活得很好 :)
    • 这根本不能回答问题;本地性能统计数据无关紧要。
    • 谢谢你的反对票,菲利普 CM。能够让 octi 满意地解决问题,我感到非常惭愧,我期待您自己的更有用的答案。
    【解决方案2】:

    事实上html-mode 在 sgml-mode.el 文件中定义。

    所以你eval-after-load应该如下

    (eval-after-load "sgml-mode" (lambda ()
    ;;;  code to load your nxhtml
                                   ))
    

    【讨论】:

    • 由于某种原因,当我使用它时,它会给我一个“递归加载错误”。可能是 nxhtml 触发了 sgml-mode 钩子
    【解决方案3】:

    我在编写 ROR 应用程序时也使用 nxhtml-mode 来编辑 erb 文档。 看看我的配置,可能对你有帮助。

    (autoload 'eruby-nxhtml-mumamo-mode "autostart.el" "Edit erb document." t)
    (add-to-list 'auto-mode-alist '("\\.erb" . eruby-nxhtml-mumamo-mode))
    

    【讨论】:

      【解决方案4】:

      我刚刚合并了 OP 代码,它对我有用:

      (add-hook 'html-mode-hook (lambda()
      (progn
        (load-file "~/.emacs.d/vendor/~nxhtml/nxhtml/main/autostart.el")
      ))) 
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-07-16
        • 2011-09-14
        • 2019-10-24
        • 2011-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多