首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GNU Emacs中软件包的正确配置

GNU Emacs中软件包的正确配置
EN

Stack Overflow用户
提问于 2017-07-12 01:47:10
回答 2查看 882关注 0票数 0

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

代码语言:javascript
复制
     '(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,要包括:

代码语言:javascript
复制
     (eval-after-load 'flycheck
       '(add-hook 'flycheck-mode-hook #'flycheck-irony-setup))

这在我的.emacs文件中没有出现,这让我怀疑我是否遗漏了什么。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-07-15 08:24:40

package.el的主要优点是自动化了Emacs lisp包的基本安装。对于许多包,您所需要做的就是安装包。然而,对于一些包,特别是需要添加钩子到不同模式的包,或者需要用户选择高级特性或具有package.el无法预测的替代方案的特性,特别是基于用户偏好的选择,您将需要在init.el或.emacs中添加初始化代码。

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

下面是我的init.el文件中要使用的use-package

代码语言:javascript
复制
(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块。有些包非常简单,例如:

代码语言:javascript
复制
(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- etc,绑定键,等等。

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

代码语言:javascript
复制
(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
EN

Stack Overflow用户

发布于 2017-07-25 06:29:28

这样你就会浪费掉你所有的工作时间。新emacs中的错误。从一开始到现在,我已经有40年没见过这样的了!

另一种选择是:找一位真正工作的编辑,为斯托尔曼和他亲切的主编祈祷。

(顺便说一句:还有伊恩·默多克!)我们生活在非常严重的环境中!)

经过40年的良好使用后:从版本25开始,emacs不再可用。还有很多其他的自由软件!数学(随机)说:这是不可能的,所有这一切都可能是一种危险。

似乎,有一群人想通过emacs的隐藏破坏来毒死Stallman,而且看起来,今天可能有很多自由软件的隐藏敌人,破坏者和内鬼在自由黑客的队伍中……

我不再是最年轻的(在我的更高(原文如此)。)九个人!)在我的一生中,我在世界各地看到了很多东西,我说是通过经验和高斯分布:过去十年来自由软件项目中“错误”的积累并不是一种危险,它是对自由软件理念的有组织破坏的结果,加上临床上病态的过度工程以及代变的问题:有很多严肃的、受过良好教育的数学家,这在过去也是开发人员的问题--今天我们只有一群疯狂的黑客和脑残的“携带者”,所以软件的质量现在正在戏剧性地向坏的一面转变……我眼中的灾难..。但是我现在太老了,再也不能通过这场比赛了。

(海拉(将近97岁))

顺便说一句:当时(现在也是)完全没有电脑的生活--如果我没记错的话,那还不是最糟糕的时候……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45041399

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档