SublimeLinter-contrib-dmd: dmd feedback as you type

Bastiaan Veelo Bastiaan at Veelo.net
Thu Nov 2 09:26:48 UTC 2017


On Thursday, 2 November 2017 at 08:35:08 UTC, Temtaime wrote:
> On Thursday, 2 November 2017 at 06:43:36 UTC, Bastiaan Veelo 
> wrote:
>> On Wednesday, 1 November 2017 at 20:09:02 UTC, Temtaime wrote:
>>> Works too strange.
>>> Seems it checks only syntax and doesn't display non-syntax 
>>> related errors.
>>
>> Also, what is your compiler version, OS, and do you have other 
>> plugins active?
>
> No way to post a reduced example.
> I tried it with one-file test example and it displays all the 
> errors correctly, but in my projects with 30 KLOCS it displays 
> only syntax erorrs.
>
> DMD from git master branch, windows, no other plugins.

Maybe the error is actually detected but shown in a different 
location? Use Tools->SublimeLinter->Show All Errors to see if it 
is there.

You can turn on debugging from the menu 
Tools->SublimeLinter->Debug Mode, and open the console (Ctrl+` or 
icon in lower left corner) to see the dmd output. Do you see the 
error messages you expect?
The linter calls dmd on just the file that is in your view (in a 
temp directory). That is probably not how you compile your 
30KLOCS project, maybe errors depend on that? Does dmd give the 
error message you expect when you call dmd on that particular 
file by hand? The linter uses these command line switches: -o- -w 
-wi -vcolumns.

If there is a difference in what dmd produces and what is picked 
up by the linter, we should adjust the python regex [1]. Note 
that it should discard tracebacks like "called from here". I used 
[5] to help with that. If you want to hack on it yourself, you 
can remove the package SublimeLinter-contrib-dmd and clone [2] 
into C:\Users\<user>\AppData\Roaming\Sublime Text 3\Packages. 
Maybe dmd sends some of its output to stdout. Change [3] from 
util.STREAM_STDERR to util.STREAM_BOTH to make it read from both 
streams.

Does it help setting the linter working directory [4]? Note that 
currently the regex relies on the substring "SublimeLinter3" 
being present in the path to the temp file, I am unsure whether 
that would still work then.

[1] 
https://github.com/veelo/SublimeLinter-contrib-dmd/blob/e2b4270c2318381eb113620631e93de2b18d436e/linter.py#L24-L33
[2] https://github.com/veelo/SublimeLinter-contrib-dmd
[3] 
https://github.com/veelo/SublimeLinter-contrib-dmd/blob/e2b4270c2318381eb113620631e93de2b18d436e/linter.py#L37
[4] 
http://www.sublimelinter.com/en/latest/linter_settings.html?highlight=working#chdir
[5] https://regex101.com/, select python flavor.


More information about the Digitalmars-d-announce mailing list