redguardtoo / emacs.d

Fast and robust Emacs setup.
http://blog.binchen.org
GNU General Public License v3.0
2.41k stars 617 forks source link

启动时卡顿 #354

Closed yangdaweihit closed 8 years ago

yangdaweihit commented 8 years ago
... 
.emacs.d/lisp/init-ido.el: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
 Eager macro-expansion failure: (error "(quote erlang-compile-outdir) is not a valid place expression")
....
Quit
....
C-M-g is undefined

在启动时卡顿很长时间,同时显示出Eager macro-expansion failure: (error "(quote erlang-compile-outdir) is not a valid place expression"),我等了一段时间后启动。现将_Message_中有问题的内容粘帖出来。请看看是哪里出了问题,如何解决。

redguardtoo commented 8 years ago

That's normal.

redguardtoo commented 8 years ago

tested on emacs 24.5.1, no issue found.

yangdaweihit commented 8 years ago

看来是我没描述清楚,卡顿时间很长是指超过了一分钟。这应该是不正常的,如果不是Elisp的问题或解决不了,我另找原因。我用的版本是24.5.1。

redguardtoo commented 8 years ago

restart emacs? more information on environment.

lanceflee commented 8 years ago

我的也卡很久...一样是24.5.1 OS X 10.11 GM

redguardtoo commented 8 years ago

can you give me detailed steps to install emacs

lanceflee commented 8 years ago

rm .emacs.d in ~/ brew install emacs add alias in .bash_profile to use /usr/local/bin/emacs git clone in ~/

redguardtoo commented 8 years ago

I tested with emacs 24.5.1 opened in one second.

yangdaweihit commented 8 years ago

刚得出空来提交这个问题情况。我注释掉所有语句后逐一排查问题出在调用哪个宏包。发现问题出在:

(require 'init-elisp)

一走到这里就会停滞很长时间。之前出现的错误提示只是耽误不到一秒时间。当然,如果没有任何错误就会很快启动。一旦卡在调用init-elsip上,之前的错误提示就会停留在在minibuffer中,我误以为是卡在那个错误了。

另外,init.el第一行是

;; -*- coding: utf-9 -*-

当我每次编译该文件时都提示编码不一致,是否确认。后来我改成utf-8再没提示。这是什么问题呢?

redguardtoo commented 8 years ago

check my init.el on github, it's always utf-8, what's your hardware spec?

some warning message at mini-buffer is totally fine. btw, depends on your hardward, 20 seconds startup time is normal in Emacs.

albert748 commented 8 years ago

Hi,Bin:

问题发生在init-elisp这个模块的加载上,因为不熟悉eslip的语法,我还不清楚怎样进一步追查下去,请你帮忙看一下。

我只能暂时注释掉了init.el中初始化:

;(require 'init-elisp)

我这边的情况是Arch,加载257秒:

You need install either aspell or hunspell for ispell .emacs.d/lisp/init-ido.el: flet' is an obsolete macro (as of 24.3); use eithercl-flet' or cl-letf'. Eager macro-expansion failure: (error "(quote erlang-compile-outdir) is not a valid place expression") [yas] Discovered there was already *scratch* in fundamental-mode [yas] Discovered there was already *code-conversion-work* in fundamental-mode [yas] Discovered there was already *load* in fundamental-mode [yas] Discovered there was already *Echo Area 0* in fundamental-mode [yas] Discovered there was already *Echo Area 1* in fundamental-mode [yas] Discovered there was already *load*-938810 in fundamental-mode [yas] Loading forfundamental-mode', just-in-time: (lambda nil (yas--load-directory-1 (quote /home/albert/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode) (quote fundamental-mode)))! [yas] Loading compiled snippets from /home/albert/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode Loading /home/albert/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode/.yas-setup...done [yas] Prepared just-in-time loading for /home/albert/.emacs.d/elpa/yasnippet-0.9.0.1/snippets [yas] Prepared just-in-time loading for ~/.emacs.d/snippets [yas] Reloaded everything (snippets will load just-in-time).... Emacs startup time: 257 seconds.

redguardtoo commented 8 years ago

have you done anything in yasnippet?

emacs -Q -l ~/bin/profile-dotemacs.el -f profile-dotemacs lisp/init.el, send me the report

then emacs -Q -l ~/bin/profile-dotemacs.el -f profile-dotemacs lisp/init-elisp.el and send me the report

profile-dotemacs.el is at http://www.emacswiki.org/emacs/ProfileDotEmacs

yangdaweihit commented 8 years ago

什么也没做,只是正常git clone,然后启动。我也是注释掉了(require 'init-elisp),就不出有卡顿的现象。

lanceflee commented 8 years ago

咱们都没装那一堆插件的原因。 我brew install aspell 和下面的几个,然后就启动很快了...

redguardtoo commented 8 years ago

我查一下,可能是aspell

redguardtoo commented 8 years ago

查不出,即使我关掉aspell或者hunspell,启动速度也很快.

yangdaweihit commented 8 years ago

远程吧,我们启动时间长的系统肯定存在共性。请你来调试看看。

redguardtoo commented 8 years ago

in init-elisp.el, for following code:

(defun elisp-mode-hooks ()
  "lisp-mode-hooks"
  (unless (is-buffer-file-temp)
    (when (require 'eldoc nil t)
      (setq eldoc-idle-delay 0.2)
      (setq eldoc-echo-area-use-multiline-p t)
      (turn-on-eldoc-mode))
    (enable-paredit-mode)
    (rainbow-delimiters-mode t)
    (set-up-hippie-expand-for-elisp)
    (flymake-mode)
    (checkdoc-minor-mode)))

replace unless (is-buffer-file-temp) with when t, restart emacs, see what happens

replace when (require 'eldoc nil t) with when t, restart emacs, see what happens

comment out the next line(s), see what happens.

yangdaweihit commented 8 years ago
  1. do u mean use when t without brace replace unless ...?
  2. all of three ways have been tried and don't work for the problem.
lanceflee commented 8 years ago

现在我的情况是,在ipv4网络下会出现长时间卡顿

在ipv4+ipv6网络下,没有卡顿,瞬间就启动了。

这是什么情况?

lanceflee commented 8 years ago

重启,断网环境下也没问题...

但是估计到了工作环境,又会长时间卡顿...真是怪了...

redguardtoo commented 8 years ago

是否工作环境使用的net drive?

lanceflee commented 8 years ago

DNS的原因...有什么东西要发网络请求么? 路由器分的192.168.**就会卡顿。 刚在本地替换掉了,就不卡了...

redguardtoo commented 8 years ago

what's your content of /etct/hosts? I did not do any network thing in my setup, but some 3rd party plugins may do the thing.

lanceflee commented 8 years ago

Nothing other than localhost mappings. I think the problem is ether my company's DNS (set in my router ) or my local DNS (my Mi-wifi router assigned, maybe Xiaomi router filters something AND/OR add some mappings )

gttiankai commented 8 years ago

我也出现了和yangdaweihit 一样的问题 os x10.11 正式版 emacs 24.5.1注释掉(require 'init-elisp) 就会快很多。请问该如何解决

redguardtoo commented 8 years ago

加上log找出哪一行卡

redguardtoo commented 8 years ago

try (setq tramp-ssh-controlmaster-options), see https://github.com/bbatsov/prelude/issues/896#issuecomment-147782934

lanceflee commented 8 years ago

I pulled your the latest version with tramp***

It doesn't work = =

redguardtoo commented 8 years ago

can you insert log code into init-elisp.el? replace elisp-mode-hooks with below code

(defun elisp-mode-hooks ()
  "lisp-mode-hooks"
  (unless nil
    (message "1===")
    (when (require 'eldoc nil t)
      (message "2===")
      (setq eldoc-idle-delay 0.2)
      (message "3===")
      (setq eldoc-echo-area-use-multiline-p t)
      (message "4===")
      (turn-on-eldoc-mode)
      (message "5==="))
    (message "6===")
    (enable-paredit-mode)
    (message "7===")
    (rainbow-delimiters-mode t)
    (message "8===")
    (set-up-hippie-expand-for-elisp)
    (message "9===")
    (flymake-mode)
    (message "10===")
    (checkdoc-minor-mode)
    (message "11===")
    ))
lanceflee commented 8 years ago
lance@lances-MacBook .backups$ cat \!Users\!lance\!.emacs.d\!recentf.~1~ 
;;; Automatically generated by `recentf' on Wed Oct 14 09:29:26 2015.

(setq recentf-list
      '(
        "/Users/lance/Desktop/ceph/src/OSD/OSD.cc"
        "/Users/lance/Desktop/ceph/src/OSD/ECBackend.h"
        "/Users/lance/.vimrc"
        ))

(setq recentf-filter-changer-current 'nil)

;; Local Variables:
;; coding: utf-8-emacs
;; End:
redguardtoo commented 8 years ago

what's the recentf?

gttiankai commented 8 years ago

@redguardtoo 启动卡顿的问题,现在莫名其妙的好了,不卡顿了,一开始在init.el中注释掉(require 'init-elisp), 今天经过测试,不注释也可以了,不卡顿了。

lanceflee commented 8 years ago
../.emacs.d/lisp/init-ido.el: `flet' is an obsolete macro (as of 24.3); use either `cl-flet' or `cl-letf'.
Eager macro-expansion failure: (error "(quote erlang-compile-outdir) is not a valid place expression")
[yas] Discovered there was already *scratch* in fundamental-mode
[yas] Discovered there was already  *code-conversion-work* in fundamental-mode
[yas] Discovered there was already  *load* in fundamental-mode
[yas] Discovered there was already  *Echo Area 0* in fundamental-mode
[yas] Discovered there was already  *Echo Area 1* in fundamental-mode
[yas] Discovered there was already  *load*-936788 in fundamental-mode
[yas] Loading for `fundamental-mode', just-in-time: (lambda nil (yas--load-directory-1 (quote /Users/lance/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode) (quote fundamental-mode)))!
[yas] Loading compiled snippets from /Users/lance/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode
Loading /Users/lance/.emacs.d/elpa/yasnippet-0.9.0.1/snippets/fundamental-mode/.yas-setup...done
[yas] Prepared just-in-time loading for /Users/lance/.emacs.d/elpa/yasnippet-0.9.0.1/snippets
[yas] Prepared just-in-time loading for ~/.emacs.d/snippets
[yas] Reloaded everything (snippets will load just-in-time)....
Emacs startup time: 85 seconds.
Loading /Users/lance/.emacs.d/.session...done
No desktop file.
Loading /Users/lance/.emacs.d/company-statistics-cache.el (source)...done
For information about GNU Emacs and the GNU system, type C-h C-a.
Beginning idle-require
idle-require: require init-misc-lazy
Loading /Users/lance/.emacs.d/recentf...done
Cleaning up the recentf list...done (0 removed)
Failed to access ~/.emacs.d/history
Package assoc is obsolete!
idle-require: require init-which-func
idle-require: require init-fonts
idle-require: require init-hs-minor-mode
idle-require: require init-stripe-buffer
idle-require: require init-textile
idle-require: require init-csv
idle-require: require init-writting
idle-require: require init-doxygen
idle-require: require init-pomodoro
idle-require: require init-emacspeak
idle-require: require init-artbollocks-mode
idle-require: require init-semantic
idle-require finished
keyfreq data saved into ~/.emacs.keyfreq
redguardtoo commented 8 years ago

maybe it's melpa network issue. I'm 100% sure I did nothing nasty

redguardtoo commented 8 years ago

6e7237f remove obsolete flymake.el (Chen Bin) thanks for reporting the issue.