emacs 每次启动都contacting host:elpa.emacs-china.org:80

hi,各位 emacs道友们。最近我用 cask 装了包,本人使用的是 linux 平台 emacs 使用的是 prelude 没有使用 evil mode。现在每次启动 emacs的时候总是 要 contacting host:elpa.emacs-china.org:80。要卡好一会,用自己的 mac 试了一下,也会有这样的问题。请问怎么回事?如何解决?




1 个赞






;;; prelude-packages.el — Emacs Prelude: default package selection. ;; ;; Copyright © 2011-2018 Bozhidar Batsov ;; ;; Author: Bozhidar Batsov [email protected] ;; URL: GitHub - bbatsov/prelude: Prelude is an enhanced Emacs 25.1+ distribution that should make your experience with Emacs both more pleasant and more powerful. ;; Version: 1.0.0 ;; Keywords: convenience

;; This file is not part of GNU Emacs.

;;; Commentary:

;; Takes care of the automatic installation of all the packages required by ;; Emacs Prelude.

;;; License:

;; This program is free software; you can redistribute it and/or ;; modify it under the terms of the GNU General Public License ;; as published by the Free Software Foundation; either version 3 ;; of the License, or (at your option) any later version. ;; ;; This program is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, ;; Boston, MA 02110-1301, USA.

;;; Code: (require 'cl) (require 'package)

;; accessing a package repo over https on Windows is a no go, so we ;; fallback to http there (if (eq system-type 'windows-nt) (add-to-list 'package-archives '(“melpa” . “http://elpa.emacs-china.org/melpa/”) t) (add-to-list 'package-archives '(“melpa” . “http://elpa.emacs-china.org/melpa/”) t))

;; load the pinned packages (let ((prelude-pinned-packages-file (expand-file-name “prelude-pinned-packages.el” prelude-dir))) (if (file-exists-p prelude-pinned-packages-file) (load prelude-pinned-packages-file)))

;; set package-user-dir to be relative to Prelude install path (setq package-user-dir (expand-file-name “elpa” prelude-dir)) (package-initialize)

(defvar prelude-packages '(ace-window avy anzu beacon browse-kill-ring crux discover-my-major diff-hl diminish easy-kill editorconfig epl expand-region flycheck gist git-timemachine gitconfig-mode gitignore-mode guru-mode hl-todo imenu-anywhere projectile magit move-text operate-on-number smartparens smartrep super-save undo-tree volatile-highlights which-key zenburn-theme zop-to-char) “A list of packages to ensure are installed at launch.”)

(defun prelude-packages-installed-p () “Check if all packages in `prelude-packages’ are installed.” (every #'package-installed-p prelude-packages))

(defun prelude-require-package (package) “Install PACKAGE unless already installed.” (unless (memq package prelude-packages) (add-to-list 'prelude-packages package)) (unless (package-installed-p package) (package-install package)))

(defun prelude-require-packages (packages) “Ensure PACKAGES are installed. Missing packages are installed automatically.” (mapc #'prelude-require-package packages))

(define-obsolete-function-alias 'prelude-ensure-module-deps 'prelude-require-packages)

(defun prelude-install-packages () “Install all packages listed in `prelude-packages’.” (unless (prelude-packages-installed-p) ;; check for new packages (package versions) (message “%s” “Emacs Prelude is now refreshing its package database…”) (package-refresh-contents) (message “%s” " done.") ;; install the missing packages (prelude-require-packages prelude-packages)))

;; run package installation (prelude-install-packages)

(defun prelude-list-foreign-packages () "Browse third-party packages not bundled with Prelude.

Behaves similarly to package-list-packages', but shows only the packages that are installed and are not in prelude-packages’. Useful for removing unwanted packages." (interactive) (package-show-package-list (set-difference package-activated-list prelude-packages)))

(defmacro prelude-auto-install (extension package mode) “When file with EXTENSION is opened triggers auto-install of PACKAGE. PACKAGE is installed only if not already present. The file is opened in MODE.” (add-to-list 'auto-mode-alist (,extension . (lambda () (unless (package-installed-p ',package) (package-install ',package)) (,mode)))))

(defvar prelude-auto-install-alist ‘(("\.clj\’" clojure-mode clojure-mode) (“\.cmake\'” cmake-mode cmake-mode) (“CMakeLists\.txt\'” cmake-mode cmake-mode) (“\.coffee\'” coffee-mode coffee-mode) (“\.css\'” css-mode css-mode) (“\.csv\'” csv-mode csv-mode) (“Cask” cask-mode cask-mode) (“\.d\'” d-mode d-mode) (“\.dart\'” dart-mode dart-mode) (“\.elm\'” elm-mode elm-mode) (“\.ex\'” elixir-mode elixir-mode) (“\.exs\'” elixir-mode elixir-mode) (“\.elixir\'” elixir-mode elixir-mode) (“\.erl\'” erlang erlang-mode) (“\.feature\'” feature-mode feature-mode) (“\.go\'” go-mode go-mode) (“\.graphql\'” graphql-mode graphql-mode) (“\.groovy\'” groovy-mode groovy-mode) (“\.haml\'” haml-mode haml-mode) (“\.hs\'” haskell-mode haskell-mode) (“\.json\'” json-mode json-mode) (“\.kt\'” kotlin-mode kotlin-mode) (“\.kv\'” kivy-mode kivy-mode) (“\.latex\'” auctex LaTeX-mode) (“\.less\'” less-css-mode less-css-mode) (“\.lua\'” lua-mode lua-mode) (“\.markdown\'” markdown-mode markdown-mode) (“\.md\'” markdown-mode markdown-mode) (“\.ml\'” tuareg tuareg-mode) (“\.pp\'” puppet-mode puppet-mode) (“\.php\'” php-mode php-mode) (“\.proto\'” protobuf-mode protobuf-mode) (“\.pyd\'” cython-mode cython-mode) (“\.pyi\'” cython-mode cython-mode) (“\.pyx\'” cython-mode cython-mode) (“PKGBUILD\'” pkgbuild-mode pkgbuild-mode) (“\.rs\'” rust-mode rust-mode) (“\.sass\'” sass-mode sass-mode) (“\.scala\'” scala-mode scala-mode) (“\.scss\'” scss-mode scss-mode) (“\.slim\'” slim-mode slim-mode) (“\.styl\'” stylus-mode stylus-mode) (“\.swift\'” swift-mode swift-mode) (“\.textile\'” textile-mode textile-mode) (“\.thrift\'” thrift thrift-mode) (“\.yml\'” yaml-mode yaml-mode) (“\.yaml\'” yaml-mode yaml-mode) (“Dockerfile\'” dockerfile-mode dockerfile-mode)))

;; markdown-mode doesn’t have autoloads for the auto-mode-alist ;; so we add them manually if it’s already installed (when (package-installed-p 'markdown-mode) (add-to-list 'auto-mode-alist ‘("\.markdown\’" . gfm-mode)) (add-to-list 'auto-mode-alist ‘("\.md\’" . gfm-mode)))

(when (package-installed-p 'pkgbuild-mode) (add-to-list 'auto-mode-alist ‘("PKGBUILD\’" . pkgbuild-mode)))

;; build auto-install mappings (mapc (lambda (entry) (let ((extension (car entry)) (package (cadr entry)) (mode (cadr (cdr entry)))) (unless (package-installed-p package) (prelude-auto-install extension package mode)))) prelude-auto-install-alist)

(provide 'prelude-packages) ;; Local Variables: ;; byte-compile-warnings: (not cl-functions) ;; End:

;;; prelude-packages.el ends here

我大致稍微看了一下,你应该是第一次使用这个配置吧,它预定义了一些软件包,这些包保存在 prelude-packages 这个变量里了,每次启动的时候他会检查你是不是已经将这些包安装在了你的系统里,如果没有安装,那么刷新安装。


PS:对了,你放代码的时候可以使用 ``` 和 ```lisp 包裹下代码,看起来会舒服很多,大致效果如下

(defun prelude-install-packages ()
  "Install all packages listed in `prelude-packages’."
  (unless (prelude-packages-installed-p)
    ;; check for new packages  (package versions)
    (message “%s” “Emacs Prelude is now refreshing its package database…”)
    (message “%s” " done.")
    ;; install the missing packages
    (prelude-require-packages prelude-packages)))


我直接把 prelude-install-packages 这个函数注掉就可以