Hi Nicholas,

Sorry I missed this when it first came in.

First, if you aren't already, try using the version of matlab-mode from git in case you happen to have an older version.  I happen to be on Emacs 27 which required some changes to mlint / linemark to work correctly with those versions of eieio (the clos library in Emacs.)  I haven't tried it with E29.

You stack trace is a bit hard to interpret when byte compiled.  If you do this:
M-x load-librry RET mlint.el RET

it will load the src, not the byte compiled version, and you should get an easier to understand stack.

Since the error is related to a cl-* variable within one of the clos macros, I wouldn't be surprised if more changes were needed to account for anything new in E29.  In the E29 NEWS file in git, I see it says you may need to add '(require 'eieio-compat')' to some files written against older versions of eieio, so that is a possibility.

Eric

On 7/18/22 5:48 AM, Nicholas Harrison wrote:
Hi and thanks for the package!

I'm trying to get linting to work, but nothing will show. I would love help debugging.
My steps:
1. Open .m file and turn on matlab-mode
2. Turn on mlint-minor-mode
3. Run mlint-buffer

This is run from emacs -Q with packages loaded first and variables to executables set. Apparently something right is happening since I see some lines in the *M-Lint* buffer, but I get the following error and stack trace:

    Debugger entered--Lisp error: (void-variable cl--nm)
      #f(compiled-function (&rest args) #<bytecode -0x155fd570868d38f2>)()
      #f(compiled-function (cl--cnm e active-p) #<bytecode
    0xbaea774c3e9d26b>)(#f(compiled-function (&rest args) #<bytecode
    -0x155fd570868d38f2>) #<mlint-lm-entry
    mlint-lm-entry-158f7c4907cc> nil)
      apply(#f(compiled-function (cl--cnm e active-p) #<bytecode
    0xbaea774c3e9d26b>) #f(compiled-function (&rest args) #<bytecode
    -0x155fd570868d38f2>) (#<mlint-lm-entry
    mlint-lm-entry-158f7c4907cc> nil))
      #f(compiled-function (&rest cl--args) "Set object E to be
    active.\nACTIVE-P if it should be made visible." #<bytecode
    -0x1e9379681ed694e5>)(#<mlint-lm-entry
    mlint-lm-entry-158f7c4907cc> nil)
      apply(#f(compiled-function (&rest cl--args) "Set object E to be
    active.\nACTIVE-P if it should be made visible." #<bytecode
    -0x1e9379681ed694e5>) #<mlint-lm-entry
    mlint-lm-entry-158f7c4907cc> nil)
      linemark-display(#<mlint-lm-entry mlint-lm-entry-158f7c4907cc> nil)
      #f(compiled-function (e) #<bytecode
    0x11b9e8c2c87755be>)(#<mlint-lm-entry mlint-lm-entry-158f7c4907cc>)
      apply(#f(compiled-function (e) #<bytecode 0x11b9e8c2c87755be>)
    #<mlint-lm-entry mlint-lm-entry-158f7c4907cc> nil)
      linemark-delete(#<mlint-lm-entry mlint-lm-entry-158f7c4907cc>)
      #<subr
    F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_28>(#<mlint-lm-entry
    mlint-lm-entry-158f7c4907cc>)
      mapc(#<subr
    F616e6f6e796d6f75732d6c616d626461_anonymous_lambda_28>
    (#<mlint-lm-entry mlint-lm-entry-158f7c4907cc>))
      mlint-clear-warnings()
      mlint-buffer()
      funcall(mlint-buffer)
      (condition-case e (funcall hook) ((debug error) (signal
    'doom-hook-error (list hook e))))
      doom-run-hook(mlint-buffer)
      run-hook-wrapped(doom-run-hook mlint-buffer)
      (condition-case e (run-hook-wrapped hook #'doom-run-hook)
    ((debug doom-hook-error) (if debug-on-error nil (lwarn hook :error
    "Error running hook %S because: %s" (if (symbolp (car (cdr e)))
    (symbol-name (car (cdr e))) (car (cdr e))) (car (cdr (cdr e)))))
    (signal 'doom-hook-error (cons hook (cdr e)))))
      (let ((hook (car --dolist-tail--))) (condition-case e
    (run-hook-wrapped hook #'doom-run-hook) ((debug doom-hook-error)
    (if debug-on-error nil (lwarn hook :error "Error running hook %S
    because: %s" (if (symbolp (car ...)) (symbol-name (car ...)) (car
    (cdr e))) (car (cdr (cdr e))))) (signal 'doom-hook-error (cons
    hook (cdr e))))) (setq --dolist-tail-- (cdr --dolist-tail--)))
      (while --dolist-tail-- (let ((hook (car --dolist-tail--)))
    (condition-case e (run-hook-wrapped hook #'doom-run-hook) ((debug
    doom-hook-error) (if debug-on-error nil (lwarn hook :error "Error
    running hook %S because: %s" (if (symbolp ...) (symbol-name ...)
    (car ...)) (car (cdr ...)))) (signal 'doom-hook-error (cons hook
    (cdr e))))) (setq --dolist-tail-- (cdr --dolist-tail--))))
      (let ((--dolist-tail-- hooks)) (while --dolist-tail-- (let
    ((hook (car --dolist-tail--))) (condition-case e (run-hook-wrapped
    hook #'doom-run-hook) ((debug doom-hook-error) (if debug-on-error
    nil (lwarn hook :error "Error running hook %S because: %s" (if ...
    ... ...) (car ...))) (signal 'doom-hook-error (cons hook (cdr
    e))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))
      doom-run-hooks(after-save-hook)
      apply(doom-run-hooks after-save-hook)
      run-hooks(after-save-hook)
      basic-save-buffer(nil)
      save-buffer()
      mlint-buffer()
      #<subr funcall-interactively>(mlint-buffer)
      apply(#<subr funcall-interactively> mlint-buffer)
      funcall-interactively(mlint-buffer)
      #<subr call-interactively>(mlint-buffer nil nil)
      apply(#<subr call-interactively> (mlint-buffer nil nil))
      explain-pause--wrap-call-interactively(#<subr
    call-interactively> mlint-buffer nil nil)
      apply(explain-pause--wrap-call-interactively #<subr
    call-interactively> (mlint-buffer nil nil))
      call-interactively(mlint-buffer nil nil)
      command-execute(mlint-buffer)


Any ideas?

Emacs version: GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0) of 2022-06-14
Matlab version: R2022a
OS: Linux Mint 20.3 Cinnamon

 Nick


_______________________________________________
Matlab-emacs-discuss mailing list
Matlab-emacs-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss




_______________________________________________
Matlab-emacs-discuss mailing list
Matlab-emacs-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss

Reply via email to