在GNU Emacs中正确配置包

时间:2017-07-11 17:47:10

标签: emacs packages gnu

我在使用GNU Emacs上安装的文件(通过软件包存档)时遇到了麻烦。文件已正确安装,但似乎没有任何效果。下面是我的.emacs文件的软件包存档部分,它是在我安装软件包时自动添加的:

     '(package-archives
       (quote
        (("gnu" . "http://elpa.gnu.org/packages/")
         ("melpa" . "https://stable.melpa.org/packages/"))))
     '(package-enable-at-startup t)
     '(package-selected-packages
       (quote
        (company-ycmd flycheck-irony company-rtags company-irony company-irony-c-headers dash solarized-theme))))

软件包信息部分的配置部分说明了例如flycheck-irony,包括:

     (eval-after-load 'flycheck
       '(add-hook 'flycheck-mode-hook #'flycheck-irony-setup))

这在我的.emacs文件中无处可见,让我想知道我是否遗漏了某些东西。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

package.el的主要优点是基本的自动化 安装Emacs lisp软件包。对于许多软件包,您只需要安装即可 包裹。但是,对于某些包,尤其是需要添加的包 挂钩到不同的模式或要求用户选择高级功能或 具有package.el无法预测的替代品的功能,尤其如此 根据用户首选项的选择,您需要在init.el或中添加init代码 的.emacs。

我发现use-package包对管理elisp非常有用 包。

以下是我在init.el文件中使用use-package

的内容
(add-to-list 'package-archives `("melpa" . "https://melpa.org/packages/"))
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

(unless (package-installed-p 'use-package)
  (package-refresh-contents)
  (package-install 'use-package))
(setq use-package-verbose nil)
(eval-when-compile
  (require 'use-package))
(require 'diminish)
(require 'bind-key)

然后我为每个需要的软件包使用了包块。一些包 非常简单,例如。

(use-package undo-tree
  :ensure t
  :diminish undo-tree-mode
  :config (global-undo-tree-mode))

use-package swiper
  :ensure t
  :bind ("C-s".  swiper))

:确保密钥告诉use-package确保它从ELPA获得此包 库。还有其他键可以固定到特定的东西 存储库,在加载包之前进行设置,加载包后, 添加到auto = mode-alist,绑定键等。

非常好的是,一旦你定义了所有的use-package块 在init.el文件中,您可以将该init.el文件移动到任何新机器和 第一次启动emacs时,它会自动下载你的所有软件包 需要。 use-package的另一个好处是它可以设置 自动加载包。这可以显着加快您的emacs启动时间。您 也可以使用use-package来管理内置功能的配置或 手动安装的elisp库。真的有助于管理init.el文件 并且使得添加/删除/调试问题非常容易,因为所有相关的 代码在一个地方。它也像你需要的那样强大。这是我的组织模式 组态。它不一定是一个伟大的组织配置,但它确实显示了如何使用use-package进行更复杂的设置 - 我的组织模式已根据我的特定要求进行了大量配置/定制。

(use-package org
  :pin org
  :ensure org-plus-contrib 
  :init
  (setq org-catch-invisible-edits 'smart
        org-ctrl-k-protect-subtree t
        org-default-notes-file "~/Dropbox/org/notes.org"
        org-directory "~/Dropbox/org"
        org-ellipsis "…"
        org-list-allow-alphabetical t
        org-list-indent-offset 2
        org-pretty-entities t
        org-startup-align-all-tables t
        org-startup-with-inline-images (display-graphic-p)
        org-support-shift-select t)
  (setq org-modules '(org-bibtex
                      org-crypt
                      org-docview
                      org-eww
                      org-info
                      org-irc
                      org-protocol))
  (setq org-capture-templates
        (quote
         (("t" "todo" entry
           (file "~/Dropbox/org/refile.org")
           "* TODO %?\n\n  %a"
           :empty-lines-after 1 :clock-in t :clock-resume t)
          ("r" "respond" entry
           (file "~/Dropbox/org/refile.org")
           "* NEXT Respond to %:from on %:subject\n  SCHEDULED: %t\n  %a"
           :empty-lines-after 1 :clock-in t :clock-resume t)
          ("n" "note" entry
           (file "~/Dropbox/org/notes.org")
           "* %? :NOTE:\n\n  %a"
           :empty-lines-after 1 :clock-in t :clock-resume t)
          ("j" "journal" entry
           (file+datetree "~/Dropbox/org/journal.org")
           "* %?\n  "
           :empty-lines-after 1 :clock-in t :clock-resume t)
          ("p" "phone" entry
           (file "~/Dropbox/org/refile.org")
           "* PHONE %? :PHONE:\n  "
           :empty-lines-after 1 :clock-in t :clock-resume t)
          ("m" "mail" entry
           (file "~/Dropbox/org/refile.org")
           "* MAIL from %:from on %:subject\n\n  %a"
           :empty-lines-after 1 :clock-in t :clock-resume t))))
  (setq org-enforce-todo-checkbox-dependencies t
        org-enforce-todo-dependencies t
        org-log-done 'time
        org-log-into-drawer t)
  (setq org-todo-keywords
        (quote
         ((sequence "TODO(t)"
                    "NEXT(n)"
                    "STARTED(s!)"
                    "DELEGATED(w@/!)"
                    "HOLD(h@/!)"
                    "|"
                    "CANCELLED(c@)"
                    "DONE(d!)"))))
  (setq org-log-refile 'time
        org-refile-allow-creating-parent-nodes 'confirm
        org-refile-targets (quote ((nil :maxlevel . 5)
                                   (org-agenda-files :maxlevel . 5)))
        org-refile-use-outline-path (quote file))
  (setq org-clock-in-resume t
        org-clock-out-remove-zero-time-clocks t
        org-clock-persist 'clock
        org-time-clocksum-format '(:hours "%d" :require-hours t
                                          :minutes ":%02d" :require-minutes t))
  (setq org-agenda-files '("~/Dropbox/org")
        org-agenda-remove-tags t)

  (setq org-agenda-custom-commands
        (quote
         (("n" "Agenda and all TODO's"
           ((agenda "" nil)
            (alltodo "" nil))
           nil)
          ("wr" "Weekly Report"
           ((todo "DONE|CANCELLED"
                  ((org-agenda-overriding-header "Completed and Cancelled : Last Week")))
            (todo "STARTED|NEXT"
                  ((org-agenda-overriding-header "WIP")))
            (todo "HOLD|DELEGATED"
                  ((org-agenda-overriding-header "On Hold and Delegated Tasks")))
            (todo "TODO"
                  ((org-agenda-overriding-header "Task Backlog"))))
           nil nil))))
  (setq org-src-tab-acts-natively t
        org-hide-block-startup t)
  (setq org-confirm-babel-evaluate nil
        org-babel-noweb-wrap-start "«"
        org-babel-noweb-wrap-end "»")
  (setq org-babel-clojure-backend 'cider
        org-babel-clojure-sync-nrepl-timeout 0)
  (setq org-plantuml-jar-path (expand-file-name "~/.emacs.d/jars/plantuml.jar")
        org-ditaa-jar-path (expand-file-name "~/.emacs.d/jars/ditaa.jar")
        org-ditaa-eps-jar-path (expand-file-name "~/.emacs.d/jars/DitaaEps.jar"))
  (setq org-export-backends '(ascii beamer html
                                    latex texinfo
                                    md odt org)
        org-export-coding-system 'utf-8)
  (setq org-latex-classes
        '(("beamer"
           "\\documentclass[presentation]{beamer}"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
          ("article"
           "\\documentclass[12pt]{hitec}
  [DEFAULT-PACKAGES]
  [PACKAGES]
  [NO-EXTRA]
  \\settextfraction{0.95}\n"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
           ("\\paragraph{%s}" . "\\paragraph*{%s}")
           ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
          ("report"
           "\\documentclass[11pt]{report}"
           ("\\part{%s}" . "\\part*{%s}")
           ("\\chapter{%s}" . "\\chapter*{%s}")
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
          ("book"
           "\\documentclass[11pt]{book}"
           ("\\part{%s}" . "\\part*{%s}")
           ("\\chapter{%s}" . "\\chapter*{%s}")
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}"))
          ("une-article"
           "\\documentclass[a4paper,12pt]{scrartcl}
  [DEFAULT-PACKAGES]
  [PACKAGES]
  \\usepackage[margin=1.5cm]{geometry}
  [EXTRA]\n"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
           ("\\paragraph{%s}" . "\\paragraph*{%s}")
           ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
          ("une-logo"
           "\\documentclass[a4paper,12pt]{scrartcl}
  [DEFAULT-PACKAGES]
  [PACKAGES]
  \\usepackage[margin=1.5cm]{geometry}
  [EXTRA]
  \\definecolor{unegreen}{HTML}{7AB800}
  \\definecolor{Black}{HTML}{000000}
  \\definecolor{White}{HTML}{FFFFFF}
  \\definecolor{dimgrey}{HTML}{696969}
  \\makeatletter
  \\def\\@maketitle{
   \\noindent \\begin{minipage}[c][4cm][t]{\\linewidth}
     \\colorbox{Black}{%
       \\begin{minipage}[t][4cm][c]{4cm}
       \\flushleft
       \\includegraphics{~/.emacs.d/img/unelogo_medium.png}
     \\end{minipage}}
     \\colorbox{unegreen}{%
       \\begin{minipage}[t][4cm][c]{13.5cm}
         \\flushright
         \\Large \\textbf{\\color{White}{\\@title}} \\\\
          \\vspace{4pt}
         \\small \\color{White}{\\@author} \\\\
         \\small \\color{White}{\\@date}
       \\end{minipage}}
     \\end{minipage}}
  \\makeatother\n"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
           ("\\paragraph{%s}" . "\\paragraph*{%s}")
           ("\\subparagraph{%s}" . "\\subparagraph*{%s}"))
          ("old-article" "\\documentclass[11pt]{article}"
           ("\\section{%s}" . "\\section*{%s}")
           ("\\subsection{%s}" . "\\subsection*{%s}")
           ("\\subsubsection{%s}" . "\\subsubsection*{%s}")
           ("\\paragraph{%s}" . "\\paragraph*{%s}")
           ("\\subparagraph{%s}" . "\\subparagraph*{%s}")))
        )
  (setq org-latex-hyperref-template
        "\\hypersetup{pdfauthor={%a},
                      pdftitle={%t},
                      pdfkeywords={%k},
                      pdfsubject={%d},
                      pdfcreator={%c},
                      pdflang={%L},
                      colorlinks=true,
                      linkcolor=blue}")
  (setq org-latex-listings t
        org-latex-listings-options '(("basicstyle" "\\tiny")
                                     ("frame" "single")
                                     ("stringstyle" "\\color{orange}")
                                     ("commentstyle" "\\color{cyan}")
                                     ("keywordstyle" "\\color{blue}")
                                     ("showstringspaces" "false")
                                     ("breakatwhitespace" "false")
                                     ("breaklines" "true")))
  (setq org-latex-pdf-process
        '("lualatex -interaction nonstopmode -output-directory %o %f"
          "lualatex -interaction nonstopmode -output-directory %o %f"
          "lualatex -interaction nonstopmode -output-directory %o %f"))
  (setq org-latex-packages-alist
        '(("" "parskip")
          ("" "xcolor")
          ("" "listings")))
  (setq org-html-checkbox-type 'unicode
        org-html-html5-fancy t
        org-html-doctype "html5")
  (setq org-ascii-charset 'utf-8
        org-ascii-text-width 79)
  :config
  (org-element-update-syntax)
  (org-clock-persistence-insinuate)

  (add-to-list 'org-structure-template-alist
               '("p" "#+BEGIN_SRC python\n?\n#+END_SRC"
                 "<src lang=\"python\">\n?\n</src>"))

  (add-to-list 'org-structure-template-alist
               '("el" "#+BEGIN_SRC emacs-lisp\n?\n#+END_SRC"
                 "<src lang=\"emacs-lisp\">\n?\n</src>"))

  (add-to-list 'org-structure-template-alist
               '("cl" "#+BEGIN_SRC clojure-mode\n?\n#+END_SRC"
                 "<src lang=\"clojure-mode\">\n?\n</src>"))
  (org-babel-do-load-languages
   'org-babel-load-languages
   '((emacs-lisp . t)
     (clojure . t)
     (css . t)
     (dot . t)
     (java . t)
     (js . t)
     (latex . t)
     (ledger . t)
     (makefile . t)
     (org . t)
     (perl . t)
     (python . t)
     (ruby . t)
     (scheme . t)
     (shell . t)
     (sql . t)
     (C . t)
     (ditaa . t)
     (plantuml . t)))
  (when *is-a-mac*
    (use-package org-mac-link
      :ensure t
      :bind (:map org-mode-map
                  ("C-c g" . org-mac-grab-link))))
  (bind-key "C-c l" 'org-store-link)
  (bind-key "C-c a" 'org-agenda)
  (bind-key "C-c b" 'org-switchb)
  (bind-key "C-c r" 'org-capture))

答案 1 :(得分:0)

你可以用这种方式浪费你的整个生产时间。新emacs中的错误错误。从开始以来的40年里,我一直看到过这样的人!

另一种选择是:带一个真正有效的编辑,为Stallman和他亲切的emacs祈祷。

(顺便说一句:对Ian Murdock来说也是如此!我们在非常严峻的情况下活跃起来!)

经过40年的充分利用:自25版以来,emacs已不再可用。还有很多其他免费软件!数学(随机学)说:这是不可能的,所有这些都可能是一种危险。

似乎,有一群人想要通过隐藏的emacs破坏来杀死Stallman,似乎可能有许多隐藏的自由软件,破坏者和鼹鼠的敌人在免费黑客自己的行列今天......

我不再是最年轻的(在我的高级(原文如此)的ninetiees中!)并且我在我的生活中在全世界看到了很多,我通过经验和高斯分布来说:这种积累的& #34;错误&#34;在过去十年的自由软件项目中没有危险,这是对自由软件理念的有组织破坏加上临床病态过度工程加上产生变化的问题的结果:有很多严格的,受过良好教育的数学家,过去也是开发人员 - 今天我们只有一群疯狂的黑客和脑病患者和#34;载体主义者&#34;所以现在软件的质量正在发生巨大的变化......我眼中的一个灾难......但我现在已经太老了,为了进一步推动这场斗争......

(海拉(近97))

顺便说一句:完全没有电脑也有(并且是),如果我记得的话,这不是最糟糕的时间......