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 个赞

有道理,我在看看。

就想问问有没有遇到过这样的坑。传授一下。

二分法,不断的删一半留一半,找到有问题的那部分

启动的时候自动更新了,看看有没有(package-refresh-contents)这样的代码,看看其是放在怎么样的一个环境下的,不过话说回来了,这种问题你一般最好把自己的配置放出来,大家也更加容易给出建议。

有啊!我的配制一部分。我也是用人家的。

;;; 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…”)
    (package-refresh-contents)
    (message “%s” " done.")
    ;; install the missing packages
    (prelude-require-packages prelude-packages)))

不用lisp,自己会识别。highlight.js只支持clojure的高亮。

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

我没有用过这个配置,也不知道会有啥影响,给不出啥建议。你觉得对自己没啥影响的话,就注释掉好了。