joaotavora / yasnippet

A template system for Emacs
http://joaotavora.github.io/yasnippet/
2.81k stars 311 forks source link

Issues with native compilation when using straight.el and use-package #1166

Closed Panadestein closed 1 year ago

Panadestein commented 1 year ago

Hello,

I'm having an issue with yasnippet when using straight.el and use-package.

Here's my setup:

Emacs version: 3a50773ab0071addba98249d26c309f5fb78bd74 yasnippet version: master Package setup: Installed via straight.el and use-package

Here's the configuration I use to set up yasnippet:

(use-package yasnippet
  :straight t
  :config
  (yas-global-mode 1))

When I run emacs --debug-init I get the following error:

⛔ Warning (initialization): An error occurred while loading ‘/home/loren/.emacs.d/init.el’:

Symbol's function definition is void: (setf internal--with-suppressed-warnings)

To ensure normal operation, you should investigate and remove the
cause of the error in your initialization file.  Start Emacs with
the ‘--debug-init’ option to view a complete error backtrace.

If I run some command afterward, I get this error:

yas--template-menu-binding-pair-get-create: Symbol's function definition is void: \(setf\ internal--with-suppressed-warnings\)

How can this be solved? Thanks in advance.

SjB commented 1 year ago

I'm also seeing this error. on GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.38, cairo version 1.17.8) of 2023-06-25 using the Melpa 20200604.246 version of yasnippets.

SjB commented 1 year ago

The error is from the yasnippet-snippets package.

Panadestein commented 1 year ago

@SjB how did you debug this? Did you find a workaround?

SjB commented 1 year ago

No workaround yet didn't have time.

dalugm commented 1 year ago

The error is from the yasnippet-snippets package.

I guess not, I'm not using yasnippet-snippets and I still met this error.

And this error also happens in my config, one in borg managed, one in use-package managed.

I think it's the new version Emacs leads to this.

Using Emacs 29.0.92 works fine, but using the master branch broke.

The only problem is to figure out which commit leads this...

Panadestein commented 1 year ago

There is relevant information on the Emacs mailing list. It has been suggested that it is related to refactoring macroexpand in this commit e85ebb3d82466c5838e9c6836e6d8b5c8d0a7c33

Panadestein commented 1 year ago

I haven't debugged in detail yet, but rolling back to 8806bbbf2cdae00faacab9cec634072ce4e80b6f lets me use yasnippet again.

dalugm commented 1 year ago

This issue seems like related to this:

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64292

After add lexical-binding: t in yasnippets.el, I can use yasnippet just like before.

edkolev commented 1 year ago

Adding lexical-binding: t in yasnippets.el mitigates the issue for me as well. However, I can't help but wonder what it breaks in yasnippet :)

Panadestein commented 1 year ago

Shall we make a pull request adding it?

edkolev commented 1 year ago

I don't think it's as simple as just enabling it - there might be places in the code which rely on a dynamic (as opposed to lexical) scoping. The challenge would be to check there are no regressions after the switch.

I see this comment mentions making the switch https://github.com/joaotavora/yasnippet/issues/926#issuecomment-380424668

Panadestein commented 1 year ago

As discussed in the emacs-devel mailing list, the issue got solved in dcd92090950929eeea3040fcac0294b7a4d839f0.