joaotavora / eglot

A client for Language Server Protocol servers
GNU General Public License v3.0
2.27k stars 200 forks source link

Eldoc flicker #527

Closed casouri closed 4 years ago

casouri commented 4 years ago

Eldoc signature flickers:

eglot-eldoc-flicker

I tried with vanilla Emacs and it's the same. OTOH, eldoc in elisp mode is like before, no flickering.

eglot version:

;; Version: 1.6
;; Package-Version: 20200821.2227
;; Package-Commit: 209b227c4ef9f4ececbcc87c64b8d4b760c52994

eldoc version:

;; Version: 1.8.0

Emacs version:

In GNU Emacs 28.0.50 (build 8, x86_64-apple-darwin19.6.0, NS appkit-1894.60 Version 10.15.6 (Build 19G2021))
 of 2020-08-23 built on Brown
Repository revision: 4aff89ece6d9ceee882375879518b71ca6a89a70
Repository branch: master
Windowing system distributor 'Apple', version 10.3.1894
System Description:  Mac OS X 10.15.6

Configured using:
 'configure --with-modules --with-pdumper=yes
 --oldincludedir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2/
 --with-ns
 PKG_CONFIG_PATH=/usr/local/Cellar/zlib/1.2.8/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig'

Configured features:
PNG RSVG DBUS GLIB NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB
TOOLKIT_SCROLL_BARS XIM NS MODULES THREADS JSON PDUMPER LCMS2

Important settings:
  value of $LC_CTYPE: UTF-8
  value of $LANG: en_CN.UTF-8
  locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:
  bug-reference-prog-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/Users/yuan/.emacs.d/package/hierarchy-20190425.842/hierarchy hides /Users/yuan/emacs/lisp/emacs-lisp/hierarchy
/Users/yuan/.emacs.d/package/faceup-20170925.1946/faceup hides /Users/yuan/emacs/lisp/emacs-lisp/faceup

Features:
(shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs
rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail
rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047
rfc2045 ietf-drums mm-util mail-prsvr mail-utils bug-reference
markdown-mode edit-indirect color noutline outline time-date cl-extra
cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine
cc-vars cc-defs vc-git diff-mode easy-mmode vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs vc vc-dispatcher eglot array filenotify jsonrpc ert pp
ewoc debug backtrace help-mode find-func xref flymake-proc flymake
thingatpt warnings compile comint ansi-color ring pcase url-util project
imenu finder-inf tex-site proof-site proof-autoloads rx info advice
package easymenu browse-url url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map
url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite charscript charprop case-table epa-hook jka-cmpr-hook help
simple abbrev obarray cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
threads dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process
emacs)

Memory information:
((conses 16 153913 5453)
 (symbols 48 17287 1)
 (strings 32 53578 1912)
 (string-bytes 1 1886575)
 (vectors 16 27357)
 (vector-slots 8 357446 9469)
 (floats 8 142 23)
 (intervals 56 691 0)
 (buffers 992 19))

Test file:

/* Awesome ADD.  */
int add(int a, int b) {
  return a + b;
}

int main() {
  add(1, 2);
}
joaotavora commented 4 years ago

Yuan, the gif shows part of the problem, but the big reporting instructions in the README are also important. I need the event transcript. Thanks, João

On Fri, Aug 28, 2020, 21:32 Yuan Fu notifications@github.com wrote:

Eldoc signature flickers:

[image: eglot-eldoc-flicker] https://user-images.githubusercontent.com/13118647/91612696-f0344d80-e94b-11ea-808e-ae0122cde4cf.gif

I tried with vanilla Emacs and it's the same. OTOH, eldoc in elisp mode is like before, no flickering.

;; Version: 1.6 ;; Package-Version: 20200821.2227 ;; Package-Commit: 209b227c4ef9f4ececbcc87c64b8d4b760c52994

;; Version: 1.8.0

In GNU Emacs 28.0.50 (build 8, x86_64-apple-darwin19.6.0, NS appkit-1894.60 Version 10.15.6 (Build 19G2021)) of 2020-08-23 built on Brown Repository revision: 4aff89ece6d9ceee882375879518b71ca6a89a70 Repository branch: master Windowing system distributor 'Apple', version 10.3.1894 System Description: Mac OS X 10.15.6

Configured using: 'configure --with-modules --with-pdumper=yes --oldincludedir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/libxml2/ --with-ns PKG_CONFIG_PATH=/usr/local/Cellar/zlib/1.2.8/lib/pkgconfig:/usr/local/lib/pkgconfig:/opt/X11/lib/pkgconfig'

Configured features: PNG RSVG DBUS GLIB NOTIFY KQUEUE ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS XIM NS MODULES THREADS JSON PDUMPER LCMS2

Important settings: value of $LC_CTYPE: UTF-8 value of $LANG: en_CN.UTF-8 locale-coding-system: utf-8-unix

Major mode: ELisp/l

Minor modes in effect: bug-reference-prog-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t

Load-path shadows: /Users/yuan/.emacs.d/package/hierarchy-20190425.842/hierarchy hides /Users/yuan/emacs/lisp/emacs-lisp/hierarchy /Users/yuan/.emacs.d/package/faceup-20170925.1946/faceup hides /Users/yuan/emacs/lisp/emacs-lisp/faceup

Features: (shadow sort mail-extr emacsbug message rmc puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg epg-config gnus-util rmail rmail-loaddefs text-property-search mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils bug-reference markdown-mode edit-indirect color noutline outline time-date cl-extra cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs vc-git diff-mode easy-mmode vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc vc-dispatcher eglot array filenotify jsonrpc ert pp ewoc debug backtrace help-mode find-func xref flymake-proc flymake thingatpt warnings compile comint ansi-color ring pcase url-util project imenu finder-inf tex-site proof-site proof-autoloads rx info advice package easymenu browse-url url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese composite charscript charprop case-table epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote threads dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process emacs)

Memory information: ((conses 16 153913 5453) (symbols 48 17287 1) (strings 32 53578 1912) (string-bytes 1 1886575) (vectors 16 27357) (vector-slots 8 357446 9469) (floats 8 142 23) (intervals 56 691 0) (buffers 992 19))

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/joaotavora/eglot/issues/527, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAC6PQ5G2CZWRL5KY5ZR6ZTSDAH7JANCNFSM4QOPZZFA .

joaotavora commented 4 years ago

Hi, Yuan. In the meantime I reproduced this. I tracked it down to a small bug in eldoc.el, which I've fixed in the meantime.

The eldoc.el 1.9.0 version that fixes this should be in ELPA shortly, but in the meantime you can do this:

(advice-add 'eldoc-documentation-enthusiast :around
            (lambda (oldfun &rest r)
              (apply oldfun r)
              t))

which amounts to the fix I did in eldoc.el

casouri commented 4 years ago

Thanks!