Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • Nov 17 12:35
    halirutan commented #175
  • Nov 17 11:29
    HydrogenDeuterium assigned #175
  • Nov 17 11:29
    HydrogenDeuterium opened #175
  • Oct 13 11:30
    szhorvat commented #173
  • Oct 12 02:23
    halirutan commented #173
  • Sep 30 22:56
    halirutan closed #174
  • Sep 30 22:56
    halirutan commented #174
  • Sep 30 18:24
    subhodipbiswas assigned #174
  • Sep 30 18:24
    subhodipbiswas opened #174
  • Sep 18 08:25
    szhorvat commented #173
  • Sep 13 10:55
    halirutan labeled #173
  • Sep 13 10:55
    halirutan commented #173
  • Sep 13 06:52
    szhorvat assigned #173
  • Sep 13 06:52
    szhorvat opened #173
  • Aug 11 03:41
    halirutan closed #170
  • Aug 11 03:41
    halirutan commented #170
  • Aug 07 11:10
    halirutan closed #172
  • Aug 07 03:40
    simonkeys commented #172
  • Aug 07 01:56
    halirutan commented #172
  • Aug 07 00:23
    simonkeys edited #172
Gerli
@gerli

Whether I defined this with or without full context in knownSymbols.m, it’s not recognized when written with full context in MATLink.m

This is from a discussion in October. I'm stumbling on this same issue -- symbols that I reference with their full context (usually because of pulling in symbols from a private context of some file) don't get the linking, even if I add a usage message explicitly with the full context. Should I create a bug report for it?

Patrick Scheibe
@halirutan
@gerli No need for a bug-report, because I'm aware of this and unfortunately, it's exactly where reality hits the hardest. To be specific: If you enter Foo`bar`fun[3] then of course the plugin knows that you mean fun in the context Foo`bar` . However, at the position where you defined fun[x_]:=.. inside your package, I would need to evaluate the whole code to find that when the symbol fun is put into the symbol-table, it is put into the context Foo`bar` .
Also, the new style package format makes this entirely hidden from the user and the rules what is done to $Context and $ContextPath during loading of a file changed with the Mathematica version.
Patrick Scheibe
@halirutan
To give an unrealistic example, why it is required to really have a Mathematica Kernel that runs the code in order to know where a symbol lives look at this:
myContext = "C" <> ToString[1 + 1] <> "`";
Begin[myContext];
var = 3;
End[]
While this example is extreme and no one would do this in practice, we have similar things all over the place that might look innocent at first. Consider for instance the commonly used idiom
If[isMessageDefined, func::usage = "blub"]
which is often used at the top of packages. Evaluating the If and knowing that the usage message of func is defined makes all the difference between exporting a symbol from a package.
Patrick Scheibe
@halirutan
In conclusion, only by inspecting the code and not evaluating it, we will not be able to know exactly in which context a symbol lives and the plugin simply assumes that definitions are available with their name without looking at the contexts.
Gerli
@gerli
@halirutan sorry for the late reply but I mean that would you expect the current linking to work if you have the full context in the usage message definition, ie
Foo`bar`fun::usage = "fun does this"
Szabolcs Horvát
@szhorvat
Just updated to IDEA 2019.3, nice to see that the plugin had an immediately available update too!
Szabolcs Horvát
@szhorvat
@halirutan Not sure where all this Global` stuff comes from:
image.png
I’ll take a closer look later, but need to finish implementing this function first
Patrick Scheibe
@halirutan
@szhorvat That's odd. I'm currently banging my head with halirutan/Wolfram-Language-IntelliJ-Plugin-Archive#146 and I think I resolved. But now I need to check if it broke something since it's really deep inside the parser.
Szabolcs Horvát
@szhorvat
@halirutan Wasn’t the following bug fixed already? I really thought it was fixed. Did it regress?
image.png
Patrick Scheibe
@halirutan
and please ping me with any problems.
Szabolcs Horvát
@szhorvat
@halirutan I can’t find how to install the beta. I already had the beta repository added, but it’s not offering the 2020 version. Therefore I removed the plugin, I removed the respository, and I re-added it. But it’s still not offering anything but 2019.3

The instructions say:

you can install the beta-version for “Wolfram Language” in the Browse Repositories window

Where is the Browse Repositories window? Could you show me a screenshot? I couldn’t find this. I was searching in the Marketplace, which offers 2019.3. Maybe this is why I couldn’t find 2020, maybe it’s in a different place?
image.png
Szabolcs Horvát
@szhorvat
@halirutan Do I need to have IDEA 2020 EAP to be able to install the beta plugin?
I can install the EAP, if that's needed to test the plugin, no problem.
Patrick Scheibe
@halirutan
@szhorvat Yes. I tried to fix as many deprication/removal API usages as possible and unfortunately, some of the new API changes don't work in 2019.3.
Usually, I don't try to be such an early adopter of changes, but right now Jetbrains does a lot of high quality cleanup. All these things make sense and make the API more stable, and, eventually, we need to implement them anyway.
Szabolcs Horvát
@szhorvat
The font changes to something rather unusual looking. It’s not unpleasant, but I wanted to make sure it changed for you too, as I’ve been messing with the fonts in previous versions.
Never mind, I should have read the blog post
Patrick Scheibe
@halirutan
@szhorvat I also use this font now. It's quite nice and since I only have the condition that the font needs to be overall consistent, I tried it for some weeks. I guess I got used to it now.
Szabolcs Horvát
@szhorvat
@halirutan Just a reminder that you can enable code ligatures too
eduardoofthehour
@eduardoofthehour
@halirutan Hi, long time user, very happy, my plugin is working fine but regarding the new licenses, have you considered switching to a model more like mathematica where you pay for a version and then if you want the newer version you have to pay again? I dislike having recurring subscriptions I might forget exist.
Patrick Scheibe
@halirutan
@eduardoofthehour There are several sides of this story and let me quickly go through them:
The plugin is on the Jetbrains marketplace and I can only use the licensing schemes they provide. Atm, they only support subscription-based.
However, even if they would let me sell licenses on a version basis, I'm not sure I would do that. The subscription has several advantages for you as a user and also an advantage for me as a developer.
Patrick Scheibe
@halirutan
My personal advantage is that I get subscription fees regularly. It's a very tiny portion compared to my main income, but let's say I would do this for a living. With the subscription model, I can constantly push bug-fixes or new features as soon as I have them. I don't need to work towards a major version where I need to think about bundling all the things I worked on to make it worth a major version.
The advantages for users are obvious:
  • you can always use the latest version of the plugin
  • you can test features from early on and we can find bugs fairly fast. Compare this to Mathematica, where we had horrible bugs in the past with a new version that staid there for half a year or more.
  • you pay a small fee each month and can cancel the subscription at any time
Patrick Scheibe
@halirutan
@eduardoofthehour OK, I guess these are the main points but I'm happy to answer any additional questions.
Szabolcs Horvát
@szhorvat
@halirutan I have a feeling that I brought this up before, but I cannot recall the discussion. If you agree it's a bug, I'll open an issue. Here it goes:
DirectedEdges is completed as a function, not as a symbol. I'm not sure why.
image.png
Compare Normalized which is completed without showing [] at the end:
image.png
Strangely, Normalized does not show a context, even though it should be System context.
This is true for anything that's not treated as a function $RecursionLimit also does not show a context.
It's pretty bright here today so I can't see well with Darcula. I'll switch back after sunset. I really wish for an automatic theme switcher :)
Patrick Scheibe
@halirutan
@szhorvat The reason is that I use a "heuristic" to decide if it's a function or not and strangely enough:
In[303]:= Options[DirectedEdges]

Out[303]= {"ArrowheadsSize" -> Automatic}