unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
@ 2019-05-30  9:49 Evgeniy Dushistov
  2019-05-30 11:40 ` Basil L. Contovounesios
  2019-05-30 12:01 ` Noam Postavsky
  0 siblings, 2 replies; 6+ messages in thread
From: Evgeniy Dushistov @ 2019-05-30  9:49 UTC (permalink / raw)
  To: 36001

Hi,

compile-mode.el (compilation-mode) works in really spontaneous way.

I run compilation via:

(defun rust-compile ()
  "Compile using `cargo build`"
  (interactive)
  (compile "cargo build"))
 
Sometimes errors are highlighted, sometimes aren't.
For example I run compilation, and the first error is not highlighted:

https://user-images.githubusercontent.com/156697/58186628-f013bf80-7cbd-11e9-956b-741e64fabbe6.png

Then I switch buffer '*compilation*' and run M-x compilation-mode,
and error is highlighted in the right way:

https://user-images.githubusercontent.com/156697/58186629-f013bf80-7cbd-11e9-88c4-7a1fc90b08d8.png

Also jump to the error via C-x ` sometimes doesn't work (emacs insitead of jump to code,
asks where find source file), but after I would switch to '*compilation*' and
run M-x compilation-mode, C-x ` works again. 

These are spontaneous errors, I have ~10 good cases,
when all works fine vs 1 bad case, when rending or jump to source location works
only for subset of errors/warnings.


In GNU Emacs 26.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.8)
 of 2019-04-12 built on juergen
Windowing system distributor 'The X.Org Foundation', version 11.0.12004000
System Description: Arch Linux

Recent messages:
Mark saved where search started
Mark set
Undo!
Mark set
Saving file /home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib/src/lib.rs...
Formatted buffer with rustfmt.
Wrote /home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib/src/lib.rs
Cargo-Process exited abnormally with code 101
Quit [3 times]
Making completion list...

Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --with-x-toolkit=gtk3 --with-xft --with-modules
 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fstack-protector-strong
 -fno-plt' CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
NOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS LIBSYSTEMD LCMS2

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

Major mode: Rust

Minor modes in effect:
  diff-auto-refine-mode: t
  lsp-ui-mode: t
  lsp-ui-doc-mode: t
  lsp-ui-sideline-mode: t
  column-enforce-mode: t
  show-paren-mode: t
  shell-dirtrack-mode: t
  company-mode: t
  lsp--managed-mode: t
  lsp-mode: t
  flymake-mode: t
  override-global-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:
/home/evgeniy/.emacs.d/elpa/cmake-mode-20180709.1426/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode

Features:
(shadow sort mail-extr emacsbug message rfc822 mml mml-sec epa epg
gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util mail-prsvr mail-utils rect pulse dabbrev company-lsp
misearch multi-isearch vc-git diff-mode company-oddmuse company-keywords
company-etags etags company-gtags company-dabbrev-code company-dabbrev
company-files company-capf company-cmake company-xcode company-clang
company-semantic company-eclim company-bbdb lsp-ui lsp-ui-doc goto-addr
lsp-ui-imenu lsp-ui-peek lsp-ui-sideline lsp-clients lsp-elm lsp-dart
lsp-clojure lsp-go lsp-xml lsp-css lsp-intelephense lsp-vetur lsp-html
lsp-solargraph lsp-rust lsp-pyls column-enforce-mode elec-pair paren
cus-start cus-load company-rtags company-template rtags repeat tramp
tramp-compat tramp-loaddefs trampver ucs-normalize shell pcomplete
parse-time format-spec advice asm-mode cc-mode cc-fonts cc-guess
cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs bookmark
company edmacro kmacro ra-emacs-lsp derived lsp cargo cargo-process
lsp-mode ewoc markdown-mode color noutline outline tree-widget wid-edit
xref url-util spinner pcase network-stream puny nsm rmc starttls tls
gnutls inline imenu filenotify f s em-glob esh-util dash-functional
flymake-proc flymake compile comint ansi-color ring warnings thingatpt
project rust-mode json map req-package view req-package-cycles
req-package-args req-package-hooks ht log4e rx dash el-get
el-get-autoloading el-get-list-packages el-get-dependencies el-get-build
el-get-status pp el-get-methods el-get-fossil el-get-svn el-get-pacman
el-get-github-zip el-get-github-tar el-get-http-zip el-get-http-tar
el-get-hg el-get-go el-get-git-svn el-get-fink el-get-emacswiki
el-get-http el-get-notify el-get-emacsmirror el-get-github el-get-git
el-get-elpa el-get-darcs el-get-cvs el-get-bzr el-get-brew
el-get-builtin el-get-apt-get el-get-recipes el-get-byte-compile subr-x
el-get-custom cl-extra help-mode el-get-core autoload radix-tree
lisp-mnt dired dired-loaddefs use-package use-package-ensure
use-package-delight use-package-diminish use-package-bind-key bind-key
easy-mmode use-package-core cl finder-inf info package easymenu
epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core
cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib time-date mule-util cyril-util
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel term/x-win x-win term/common-win x-dnd tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 minibuffer 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 inotify lcms2 dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 491650 111898)
 (symbols 48 40933 1)
 (miscs 40 1396 3515)
 (strings 32 117161 17565)
 (string-bytes 1 3238003)
 (vectors 16 64057)
 (vector-slots 8 1158194 111302)
 (floats 8 309 1019)
 (intervals 56 9184 4079)
 (buffers 992 26))

-- 
/Evgeniy





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
  2019-05-30  9:49 bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour Evgeniy Dushistov
@ 2019-05-30 11:40 ` Basil L. Contovounesios
  2019-05-30 14:10   ` Evgeniy Dushistov
  2019-05-30 12:01 ` Noam Postavsky
  1 sibling, 1 reply; 6+ messages in thread
From: Basil L. Contovounesios @ 2019-05-30 11:40 UTC (permalink / raw)
  To: Evgeniy Dushistov; +Cc: 36001

Evgeniy Dushistov <dushistov@mail.ru> writes:

> compile-mode.el (compilation-mode) works in really spontaneous way.
>
> I run compilation via:
>
> (defun rust-compile ()
>   "Compile using `cargo build`"
>   (interactive)
>   (compile "cargo build"))
>  
> Sometimes errors are highlighted, sometimes aren't.
> For example I run compilation, and the first error is not highlighted:
>
> https://user-images.githubusercontent.com/156697/58186628-f013bf80-7cbd-11e9-956b-741e64fabbe6.png
>
> Then I switch buffer '*compilation*' and run M-x compilation-mode,
> and error is highlighted in the right way:
>
> https://user-images.githubusercontent.com/156697/58186629-f013bf80-7cbd-11e9-88c4-7a1fc90b08d8.png
>
> Also jump to the error via C-x ` sometimes doesn't work (emacs insitead of jump to code,
> asks where find source file), but after I would switch to '*compilation*' and
> run M-x compilation-mode, C-x ` works again. 
>
> These are spontaneous errors, I have ~10 good cases,
> when all works fine vs 1 bad case, when rending or jump to source location works
> only for subset of errors/warnings.

Are you able to reproduce these issues starting from 'emacs -Q'?

-- 
Basil





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
  2019-05-30  9:49 bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour Evgeniy Dushistov
  2019-05-30 11:40 ` Basil L. Contovounesios
@ 2019-05-30 12:01 ` Noam Postavsky
  2019-05-30 13:58   ` Evgeniy Dushistov
  1 sibling, 1 reply; 6+ messages in thread
From: Noam Postavsky @ 2019-05-30 12:01 UTC (permalink / raw)
  To: Evgeniy Dushistov; +Cc: 36001

Evgeniy Dushistov <dushistov@mail.ru> writes:

> These are spontaneous errors, I have ~10 good cases,
> when all works fine vs 1 bad case, when rending or jump to source location works
> only for subset of errors/warnings.

Could you evaluate the code below, and then post the contents of the
*trace-output* buffer after a bad case happens.

    (defun bug-36001-clear-trace (&rest _)
      (with-current-buffer trace-buffer
        (let ((inhibit-read-only t))
          (erase-buffer))))
    (advice-add 'compile :before #'bug-36001-clear-trace)
    (trace-function-background 'compilation-filter)





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
  2019-05-30 12:01 ` Noam Postavsky
@ 2019-05-30 13:58   ` Evgeniy Dushistov
  2019-05-30 16:35     ` npostavs
  0 siblings, 1 reply; 6+ messages in thread
From: Evgeniy Dushistov @ 2019-05-30 13:58 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: 36001

[-- Attachment #1: Type: text/plain, Size: 1014 bytes --]

On Thu, May 30, 2019 at 08:01:18AM -0400, Noam Postavsky wrote:
> Evgeniy Dushistov <dushistov@mail.ru> writes:
> 
> > These are spontaneous errors, I have ~10 good cases,
> > when all works fine vs 1 bad case, when rending or jump to source location works
> > only for subset of errors/warnings.
> 
> Could you evaluate the code below, and then post the contents of the
> *trace-output* buffer after a bad case happens.
> 
>     (defun bug-36001-clear-trace (&rest _)
>       (with-current-buffer trace-buffer
>         (let ((inhibit-read-only t))
>           (erase-buffer))))
>     (advice-add 'compile :before #'bug-36001-clear-trace)
>     (trace-function-background 'compilation-filter)

I attached two files,
one is *trace-output* another is *compilation*,
the first error is not marked as error:

> error...
>   --> macroslib/src/lib.rs:428:27

I uses rust-mode, it adds some regexps to
compilation-error-regexp-alist-alist:

https://github.com/rust-lang/rust-mode/blob/master/rust-mode.el


-- 
/Evgeniy

[-- Attachment #2: trace-output --]
[-- Type: text/plain, Size: 9335 bytes --]

======================================================================
1 -> (compilation-filter #<process compilation> "   Compiling rust_swig v0.4.0-pre (/home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib)
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `typemap::TypeMap` in the current scope
   --> macroslib/src/lib.rs:428:27
    |
428 |             self.conv_map.merge(*code_id, code, target_pointer_width)?;
    |                           ^^^^^ help: did you mean: `merge2`
    | 
   ::: macroslib/src/typemap.rs:81:1
    |
81  | pub(crate) struct TypeMap {
    | ------------------------- method `merge` not found for this

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:666:14
    |
666 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:799:14
    |
799 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:349:14
    |
349 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:401:14
    |
401 |     conv_map.merge(SourceId::none(), &new_conv_code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0599`.
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: Could not compile `rust_swig`.

To learn more, run the command again with --verbose.
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "   Compiling rust_swig v0.4.0-pre (/home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib)
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `typemap::TypeMap` in the current scope
   --> macroslib/src/lib.rs:428:27
    |
428 |             self.conv_map.merge(*code_id, code, target_pointer_width)?;
    |                           ^^^^^ help: did you mean: `merge2`
    | 
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "   ::: macroslib/src/typemap.rs:81:1
    |
81  | pub(crate) struct TypeMap {
    | ------------------------- method `merge` not found for this

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:666:14
    |
666 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:799:14
    |
799 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:349:14
    |
349 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:401:14
    |
401 |     conv_map.merge(SourceId::none(), &new_conv_code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0599`.
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: Could not compile `rust_swig`.

To learn more, run the command again with --verbose.
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "   Compiling rust_swig v0.4.0-pre (/home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib)
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `typemap::TypeMap` in the current scope
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "   --> macroslib/src/lib.rs:428:27
    |
428 |             self.conv_map.merge(*code_id, code, target_pointer_width)?;
    |                           ^^^^^ help: did you mean: `merge2`
    | 
   ::: macroslib/src/typemap.rs:81:1
    |
81  | pub(crate) struct TypeMap {
    | ------------------------- method `merge` not found for this

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:666:14
    |
666 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:799:14
    |
799 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:349:14
    |
349 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "
error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:401:14
    |
401 |     conv_map.merge(SourceId::none(), &new_conv_code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0599`.
")
1 <- compilation-filter: nil
======================================================================
1 -> (compilation-filter #<process compilation> "error: Could not compile `rust_swig`.

To learn more, run the command again with --verbose.
")
1 <- compilation-filter: nil

[-- Attachment #3: compilation --]
[-- Type: text/plain, Size: 2068 bytes --]

-*- mode: compilation; default-directory: "~/bigdisk1/projects/rust-infra/swig/macroslib/src/" -*-
Compilation started at Thu May 30 16:54:30

cargo build
   Compiling rust_swig v0.4.0-pre (/home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib)
error[E0599]: no method named `merge` found for type `typemap::TypeMap` in the current scope
   --> macroslib/src/lib.rs:428:27
    |
428 |             self.conv_map.merge(*code_id, code, target_pointer_width)?;
    |                           ^^^^^ help: did you mean: `merge2`
    | 
   ::: macroslib/src/typemap.rs:81:1
    |
81  | pub(crate) struct TypeMap {
    | ------------------------- method `merge` not found for this

error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:666:14
    |
666 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/cpp/mod.rs:799:14
    |
799 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:349:14
    |
349 |     conv_map.merge(SourceId::none(), &code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

error[E0599]: no method named `merge` found for type `&mut typemap::TypeMap` in the current scope
   --> macroslib/src/java_jni/rust_code.rs:401:14
    |
401 |     conv_map.merge(SourceId::none(), &new_conv_code, pointer_target_width)?;
    |              ^^^^^ help: did you mean: `merge2`

error: aborting due to 5 previous errors

For more information about this error, try `rustc --explain E0599`.
error: Could not compile `rust_swig`.

To learn more, run the command again with --verbose.

Compilation exited abnormally with code 101 at Thu May 30 16:54:32

^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
  2019-05-30 11:40 ` Basil L. Contovounesios
@ 2019-05-30 14:10   ` Evgeniy Dushistov
  0 siblings, 0 replies; 6+ messages in thread
From: Evgeniy Dushistov @ 2019-05-30 14:10 UTC (permalink / raw)
  To: Basil L. Contovounesios; +Cc: 36001

On Thu, May 30, 2019 at 12:40:09PM +0100, Basil L. Contovounesios wrote:
> Evgeniy Dushistov <dushistov@mail.ru> writes:
> 
> > compile-mode.el (compilation-mode) works in really spontaneous way.
> >
> > I run compilation via:
> >
> > (defun rust-compile ()
> >   "Compile using `cargo build`"
> >   (interactive)
> >   (compile "cargo build"))
> >  
> > Sometimes errors are highlighted, sometimes aren't.
> > For example I run compilation, and the first error is not highlighted:
> >
> > https://user-images.githubusercontent.com/156697/58186628-f013bf80-7cbd-11e9-956b-741e64fabbe6.png
> >
> > Then I switch buffer '*compilation*' and run M-x compilation-mode,
> > and error is highlighted in the right way:
> >
> > https://user-images.githubusercontent.com/156697/58186629-f013bf80-7cbd-11e9-88c4-7a1fc90b08d8.png
> >
> > Also jump to the error via C-x ` sometimes doesn't work (emacs insitead of jump to code,
> > asks where find source file), but after I would switch to '*compilation*' and
> > run M-x compilation-mode, C-x ` works again. 
> >
> > These are spontaneous errors, I have ~10 good cases,
> > when all works fine vs 1 bad case, when rending or jump to source location works
> > only for subset of errors/warnings.
> 
> Are you able to reproduce these issues starting from 'emacs -Q'?
> 

I can reproduce it with:
emacs -Q 
M-: (load "~/.emacs.d/elpa/rust-mode-20190517.2037/rust-mode.el")

and then 
M-x compile
cargo build <-- command to run rust code compilation

Interesting, that `cargo build` works in deterministic way, it produces
the same output for the same code set on the Rust language.
So the content of *compilation* buffer is always the same,
except of course:
Compilation started at ...
Compilation exited abnormally with code 101 ...

But sometimes it renders ok, sometimes bad.
And if I run 
M-x compile
cat /tmp/saved-compilation-buffer-content.txt

the *compilation* rendering is always fine, no errors.


-- 
/Evgeniy





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour
  2019-05-30 13:58   ` Evgeniy Dushistov
@ 2019-05-30 16:35     ` npostavs
  0 siblings, 0 replies; 6+ messages in thread
From: npostavs @ 2019-05-30 16:35 UTC (permalink / raw)
  To: Evgeniy Dushistov; +Cc: 36001, Noam Postavsky

[-- Attachment #1: Type: text/plain, Size: 444 bytes --]

merge 36001 25133
quit

Evgeniy Dushistov <dushistov@mail.ru> writes:

> the first error is not marked as error:
>
>> error...
>>   --> macroslib/src/lib.rs:428:27
>
> I uses rust-mode, it adds some regexps to
> compilation-error-regexp-alist-alist:
>
> https://github.com/rust-lang/rust-mode/blob/master/rust-mode.el

Thanks, I attach a simple reproducer based on this, run as

    emacs -Q -l bug-36001-reproducer.el -f bug-36001-reproducer


[-- Attachment #2: bug reproducer --]
[-- Type: text/plain, Size: 2883 bytes --]

(require 'compile)

(defun bug-36001-reproducer ()
  (interactive)
  (with-current-buffer (get-buffer-create "*test bug 36001*")
    (compilation-mode)
    (display-buffer (current-buffer))
    (mapc
     (lambda (s)
       (let ((inhibit-read-only t))
         (insert s))
       (sit-for 0))
     '("   Compiling rust_swig v0.4.0-pre (/home/evgeniy/bigdisk1/projects/rust-infra/swig/macroslib)
"
              "error[E0599]: no method named `merge` found for type `typemap::TypeMap` in the current scope
"
              "   --> macroslib/src/lib.rs:428:27
    |
428 |             self.conv_map.merge(*code_id, code, target_pointer_width)?;
    |                           ^^^^^ help: did you mean: `merge2`
    | 
   ::: macroslib/src/typemap.rs:81:1
    |
81  | pub(crate) struct TypeMap {
    | ------------------------- method `merge` not found for this

"))))

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; Copied from https://github.com/rust-lang/rust-mode/raw/master/rust-mode.el
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defvar rustc-compilation-regexps
  (let ((file "\\([^\n]+\\)")
        (start-line "\\([0-9]+\\)")
        (start-col  "\\([0-9]+\\)"))
    (let ((re (concat "^\\(?:error\\|\\(warning\\)\\)[^-]+--> \\(" file ":" start-line ":" start-col "\\)")))
      (cons re '(3 4 5 (1) 2))))
  "Specifications for matching errors in rustc invocations.
See `compilation-error-regexp-alist' for help on their format.")


(defvar rustc-colon-compilation-regexps
  (let ((file "\\([^\n]+\\)")
        (start-line "\\([0-9]+\\)")
        (start-col  "\\([0-9]+\\)"))
    (let ((re (concat "^ *::: " file ":" start-line ":" start-col ; ::: foo/bar.rs
                      )))
      (cons re '(1 2 3 0)))) ;; 0 for info type
  "Specifications for matching `:::` hints in rustc invocations.
See `compilation-error-regexp-alist' for help on their format.")

;; Match test run failures and panics during compilation as
;; compilation warnings
(defvar cargo-compilation-regexps
  '("^\\s-+thread '[^']+' panicked at \\('[^']+', \\([^:]+\\):\\([0-9]+\\)\\)" 2 3 nil nil 1)
  "Specifications for matching panics in cargo test invocations.
See `compilation-error-regexp-alist' for help on their format.")

(progn
   (add-to-list 'compilation-error-regexp-alist-alist
                (cons 'rustc rustc-compilation-regexps))
   (add-to-list 'compilation-error-regexp-alist 'rustc)
   (add-to-list 'compilation-error-regexp-alist-alist
                (cons 'rustc-colon rustc-colon-compilation-regexps))
   (add-to-list 'compilation-error-regexp-alist 'rustc-colon)
   (add-to-list 'compilation-error-regexp-alist-alist
                (cons 'cargo cargo-compilation-regexps))
   (add-to-list 'compilation-error-regexp-alist 'cargo)
   (add-hook 'next-error-hook 'rustc-scroll-down-after-next-error))

[-- Attachment #3: Type: text/plain, Size: 94 bytes --]


The basic problem is that rust-mode is using a multiline regexp, so it's
the same bug#25133.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-05-30 16:35 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-05-30  9:49 bug#36001: 26.2; compile-mode.el/compilation-mode spontaneous behaviour Evgeniy Dushistov
2019-05-30 11:40 ` Basil L. Contovounesios
2019-05-30 14:10   ` Evgeniy Dushistov
2019-05-30 12:01 ` Noam Postavsky
2019-05-30 13:58   ` Evgeniy Dushistov
2019-05-30 16:35     ` npostavs

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).