joaotavora / sly

Sylvester the Cat's Common Lisp IDE
1.27k stars 144 forks source link

Feature suggestion: choose different faces for different inspector values #187

Open alanruttenberg opened 6 years ago

alanruttenberg commented 6 years ago

I'm considering porting over my customizations from slime, mostly having to do with abcl.lisp One of the features I added was the ability to have a value be in a different face. The use case is inspecting java methods, where I want to highlight just the method name, not the package prefix.

byte java.lang.Number.byteValue

Implementing in slime was a hack. I added :strong-value as a part and dispatched on that in slime-inspector-insert-ispec. Then I divided the full name into two parts using :value for the first, and :strong-value for the second.

That strategy doesn't port as the implementation has changed to use buttons. Rather than trying to hack it in somehow, I wonder if this could be directly supported. I'm not wedded to using :strong-value. One idea would be to extend the inspector :value syntax to take a face argument.

I could do the implementation if desired but it would be helpful to get a hint on what the right approach would be in sly.

joaotavora commented 6 years ago

The use case is inspecting java methods, where I want to highlight just the method name, not the package prefix.

Sorry for the delay in replying to this. My current distance from Java (and ABCL) is responsible for still not understanding the problem. Surely you mean "inspecting a Lisp object that represents a Java method", right? If so, what do you call "value"? Is it the thing that goes into what is commonly known in CL as a "slot"? Do you want different values of different slots of the same object to have a different face? What is the CL datatype of the values you are talking about?

byte java.lang.Number.byteValue

I suspect you and I are talking of different things. If you post a screenshot of your SLIME hack probably all the misunderstanding goes away. In github, just print-screen and paste in the dialog box.

The we can discuss the implementation strategy.

alanruttenberg commented 6 years ago

Sorry for the delay in replying to this. My current distance from Java (and ABCL) is responsible for still not understanding the problem. Surely you mean "inspecting a Lisp object that represents a Java method", right? If so, what do you call "value"? Is it the thing that goes into what is commonly known in CL as a "slot"? Do you want different values of different slots of the same object to have a different face? What is the CL datatype of the values you are talking about?

No, I mean inspect a boxed java object. I'm not interested in the box, I use java reflection to get info on the java object/class. Also, some ABCL classes are builtins and have no corresponding lisp class, and so I have those display as java objects too.

I suspect you and I are talking of different things. If you post a screenshot of your SLIME hack probably all the misunderstanding goes away. In github, just print-screen and paste in the dialog box.

Attached.

slime-java-class