【问题标题】:.emacs, automake and cmake.emacs、automake 和 cmake
【发布时间】:2010-09-05 20:50:47
【问题描述】:

很久以前,当我编写我的 .emacs setup[1] 时,我使用了一个 shell 脚本来编译并加入整个事情。这东西现在已经很老了,而且很“硬”,所以我现在正在重写它以替换以下内容:

(defmacro make-new-comment( mode face strcom color1 color2)
   (list 'progn
         `(make-face ',face)     
         `(if (not (assoc ,strcom ,(intern (concat (symbol-name mode) "-comments-alist"))))
              (setf ,(intern (concat (symbol-name mode) "-comments-alist"))
              (append ,(intern (concat (symbol-name mode) "-comments-alist")) '((,strcom . ,face)))
              )
          )
        `(modify-face ',face ,color1 ,color2 nil t nil nil nil nil)
   )
)

我发生了一些事情。编译时,我访问几个环境变量,提供有关系统的信息,例如 [2],大多数程序的全名,由使用 comint[3] 的某种模式调用。而不是读取环境变量,我可以使用一些类似 autoconf 的工具来调整 .emacs 文件,然后编译它们。

问题是 autoconf 实在是太难看了。我考虑过 cmake,但是文档很差,尤其是在构建自己的构建系统方面。我不熟悉备用系统。

建议?

[1]:为了清楚起见,.emacs 设置是指我拥有的 30 个左右的文件和两个代码子目录。更不用说几个包(在包含的时候)不是标准 emacs 发行版的一部分。

[2] 我已将 eg 替换为 "",因为显然很多人不知道 eg 的含义。要么,要么他们不知道一个例子是什么。

[3] 如diff-mode、ruby-mode。

【问题讨论】:

  • 你为什么不能改变你的 PATH 设置来找到常见的程序,比如 diff ?
  • 为什么你需要设置一些环境变量来查找像 diff 或 grep 这样通常应该已经在你的 PATH 中的工具?
  • 你为什么要彻底改变这个问题。请开始一个新问题并恢复这个问题。谢谢。
  • 当 emacs 通过 GUI 启动时,例如从“开始菜单”或从 Windows“打开方式...”,或其他 GUI 中的等效项,通常没有正确设置 $PATH。可以肯定的是,它没有读取我的 zsh 设置文件。

标签: emacs autoconf automake


【解决方案1】:

which diff?

更多细节在这里会很有用。这些环境变量是你自己设置的吗?还是您的发行版提供的东西?

有点讽刺的是,这听起来有点像 emacs 令人难以置信的强大的内置脚本是您正在寻找的。​​p>

【讨论】:

    【解决方案2】:

    我同意 jkerian 的观点:为什么要从零件组装 .emacs?这是我所做的:按语言或功能分解并使用requireprovide。我的 .emacs 看起来像:

    ; -*- emacs-lisp -*-
    (add-to-list 'load-path "~/elisp/personal")
    
    (require 'jdk-generic)
    (require 'jdk-haskell)
    (require 'jdk-keywiz)
    (require 'jdk-lua)
    (require 'jdk-ocaml)
    (require 'jdk-org)
    (require 'jdk-php)
    (require 'jdk-tex)
    (require 'jdk-text)
    (require 'jdk-whitespace)
    

    ~/elisp/personal 中的每个单独文件然后设置对一种语言或其他任何内容的支持,然后是 provides jdk-whatever。这是jdk-lua.el:

    (add-to-list 'load-path "~/elisp/packages/lua-mode-20071122")
    (add-to-list 'auto-mode-alist '("\\.lua$" . lua-mode))
    (autoload 'lua-mode "lua-mode" "Lua editing mode." t)
    (provide 'jdk-lua)
    

    请注意,我将所有 elisp 包保存在 ~/elisp/packages 中。这意味着我可以将我的 .emacs 和 ~/elisp 目录复制到几乎任何地方并立即运行。

    【讨论】:

      【解决方案3】:

      据我了解,您需要一个脚本来自动检测您的工具(如 diff、grep...)在哪里,而不是通过环境变量手动告诉您的 .emacs。

      如果您使用的是类 unix 平台,则您的所有工具(如 diff、grep)都应该已经在您的 PATH 中,并且 emacs 应该可以轻松找到它们。因此,在您的 .emacs 中,您不应使用任何环境变量,而应直接将工具名称放入您的配置中。

      如果您的目标是制作一个可以在 Windows 上执行的可移植 .emacs,那么您应该将所有 gnuwin32 tools 也放入您的 PATH 中,以便 emacs 可以毫无问题地找到它们。但是对于 Windows,您必须做许多其他微小的安排才能使 emacs 命令像在 unix 系统上一样正常工作。

      使用像 autoconf 这样的工具是一件非常耗时的事情,因为这些事情可以通过自定义一个 .emacs 文件来很好地处理。如果您对特定系统有特定的事情要做,您可以编写这样的 elisp 代码:

      (if (eq window-system 'w32)
          (progn ... ))
      

      另外,如果你想自动编译所有 .el 文件的字节,你可以在你的 shell 上使用这样的命令:

      emacs --batch -f batch-byte-compile *.el
      

      【讨论】:

        猜你喜欢
        • 2016-07-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多