Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

undefined vars in .dir-locals.el break linting #83

Open
sellout opened this issue Jan 9, 2023 · 4 comments
Open

undefined vars in .dir-locals.el break linting #83

sellout opened this issue Jan 9, 2023 · 4 comments

Comments

@sellout
Copy link

sellout commented Jan 9, 2023

I have a .dir-locals.el in my project with

((nil
  (fill-column . 100)
  (indent-tabs-mode . nil)
  (projectile-project-type . nix-flake)
  (sentence-end-double-space . nil)))

and eldev lint doc elisp dumps warnings

`eldev lint` output
agenix.el:35: There should be two spaces after a period
agenix.el:30: There should be two spaces after a period
Found 2 warnings in file ‘agenix.el’
agenix.el:13:0 (fill-column)     line length 70 exceeded
agenix.el:14:0 (fill-column)     line length 70 exceeded
agenix.el:24:0 (fill-column)     line length 70 exceeded
agenix.el:30:0 (checkdoc)        There should be two spaces after a period
agenix.el:30:0 (fill-column)     line length 70 exceeded
agenix.el:35:0 (checkdoc)        There should be two spaces after a period
agenix.el:35:0 (fill-column)     line length 70 exceeded
agenix.el:61:0 (fill-column)     line length 70 exceeded
agenix.el:64:0 (indent-character) spaces instead of tabs
agenix.el:70:0 (indent-character) spaces instead of tabs
agenix.el:71:0 (indent-character) spaces instead of tabs
agenix.el:72:0 (indent-character) spaces instead of tabs
agenix.el:73:0 (indent-character) spaces instead of tabs
agenix.el:73:0 (fill-column)     line length 70 exceeded
agenix.el:74:0 (indent-character) spaces instead of tabs
agenix.el:74:0 (fill-column)     line length 70 exceeded
agenix.el:75:0 (indent-character) spaces instead of tabs
agenix.el:75:0 (fill-column)     line length 70 exceeded
agenix.el:76:0 (indent-character) spaces instead of tabs
agenix.el:77:0 (indent-character) spaces instead of tabs
agenix.el:78:0 (indent-character) spaces instead of tabs
agenix.el:78:0 (fill-column)     line length 70 exceeded
agenix.el:79:0 (indent-character) spaces instead of tabs
agenix.el:80:0 (indent-character) spaces instead of tabs
agenix.el:81:0 (indent-character) spaces instead of tabs
agenix.el:84:0 (fill-column)     line length 70 exceeded
agenix.el:87:0 (fill-column)     line length 70 exceeded
agenix.el:91:0 (fill-column)     line length 70 exceeded
agenix.el:93:0 (indent-character) spaces instead of tabs
agenix.el:94:0 (indent-character) spaces instead of tabs
agenix.el:95:0 (indent-character) spaces instead of tabs
agenix.el:96:0 (indent-character) spaces instead of tabs
agenix.el:97:0 (indent-character) spaces instead of tabs
agenix.el:98:0 (indent-character) spaces instead of tabs
agenix.el:99:0 (indent-character) spaces instead of tabs
agenix.el:100:0 (indent-character) spaces instead of tabs
agenix.el:101:0 (indent-character) spaces instead of tabs
agenix.el:102:0 (indent-character) spaces instead of tabs
agenix.el:103:0 (indent-character) spaces instead of tabs
agenix.el:110:0 (indent-character) spaces instead of tabs
agenix.el:111:0 (indent-character) spaces instead of tabs
agenix.el:112:0 (indent-character) spaces instead of tabs
agenix.el:114:0 (indent-character) spaces instead of tabs
agenix.el:115:0 (indent-character) spaces instead of tabs
agenix.el:116:0 (indent-character) spaces instead of tabs
agenix.el:116:0 (fill-column)    line length 70 exceeded
agenix.el:117:0 (indent-character) spaces instead of tabs
agenix.el:118:0 (indent-character) spaces instead of tabs
agenix.el:119:0 (indent-character) spaces instead of tabs
agenix.el:120:0 (indent-character) spaces instead of tabs
agenix.el:121:0 (indent-character) spaces instead of tabs
agenix.el:122:0 (indent-character) spaces instead of tabs
agenix.el:123:0 (indent-character) spaces instead of tabs
agenix.el:124:0 (indent-character) spaces instead of tabs
agenix.el:125:0 (indent-character) spaces instead of tabs
agenix.el:126:0 (indent-character) spaces instead of tabs
agenix.el:127:0 (indent-character) spaces instead of tabs
agenix.el:128:0 (indent-character) spaces instead of tabs
agenix.el:129:0 (indent-character) spaces instead of tabs
agenix.el:130:0 (indent-character) spaces instead of tabs
agenix.el:131:0 (indent-character) spaces instead of tabs
agenix.el:132:0 (indent-character) spaces instead of tabs
agenix.el:133:0 (indent-character) spaces instead of tabs
agenix.el:134:0 (indent-character) spaces instead of tabs
Found 64 warnings in file ‘agenix.el’
Linting produced warnings

If I then remove the (projectile-project-type . nix-flake) line and re-run eldev lint, it succeeds. Since I don’t have projectile loaded in the Emacs that eldev is using, I’m guessing that the undefined var is causing an error somewhere.

I would assume the bug was in the linter, except that it seems to be happening with two different linters. Also, eldev doesn’t tell me which linter is reporting the warnings, so if this isn’t a bug in eldev, then consider this issue to be about reporting which sub-process eldev is running 😄

@doublep
Copy link
Collaborator

doublep commented Jan 9, 2023

Linter elisp requires quite extensive configuration to be useful, that's why it is no longer enabled by default: you have to name it explicitly. Anyway, would be nice to have a link to the project to see for myself.

@sellout
Copy link
Author

sellout commented Jan 9, 2023

Here’s the branch where I added .dir-locals.el: https://github.com/sellout/agenix.el/tree/nix-flake

So yeah … elisp seems to be the bulk of them. If I run package only, I get no warnings; doc only, I get two warnings; and elisp only, I get 64 warnings. So both doc and elisp are complaining. However, package doesn’t have any warnings that would be silenced by the .dir-locals.el settings, so I think I can’t actually determine if it’s behaving.

At the moment, it looks like a general issue affecting all linters, so I’m inclined to think it is eldev somehow. But I’ll try to dig in deeper when I can.

@doublep
Copy link
Collaborator

doublep commented Jan 16, 2023

The problem appears to be that Elisp linter generates the autoloads file (even though the project doesn't have any autoloads) and then complains about it.

Note that the linter tool hasn't seen any commits in quite a while, not sure how useful it is to report bugs in it.

@doublep
Copy link
Collaborator

doublep commented Jan 16, 2023

By the way, here is a bit of configuration from CIDER:

(setf eldev-lint-default '(elisp))
(with-eval-after-load 'elisp-lint
  ;; We will byte-compile with Eldev.
  (setf elisp-lint-ignored-validators '("package-lint" "fill-column" "byte-compile")
        enable-local-variables        :safe))

I guess autoloads are not generated by Elisp linter if byte-compile validator is skipped.

doublep added a commit that referenced this issue Jan 16, 2023
…vating "Running linter..." message to the normal level and making it a section. (issue #83)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants