Skip to content

Conversation

jessymilare
Copy link

@jessymilare jessymilare commented Jun 12, 2019

Some systems don't load correctly when *PRINT-CASE* isn't :UPCASE.

Some systems don't load correctly when *PRINT-CASE* isn't :UPCASE.
@quicklisp
Copy link
Owner

quicklisp commented Jun 12, 2019 via email

@jessymilare
Copy link
Author

jessymilare commented Jun 15, 2019

I found it out because I don't like a REPL that looks like it is screaming lol. So I set *print-case* to :downcase, which makes SLIME command <M-.> stop working after updating slime because it looks for symbols with downcased names. I had to reset the variable `print-case' and delete ".slime/" directory for it to work again.

@quicklisp
Copy link
Owner

Thanks for the context. I'm hesitant to add this because there are likely a bunch of other variables that would affect things in a similar way. The first one that comes to mind is *read-default-float-format*. The most consistent way to handle all of them is let-binding the special around quickload (or any other operation). Should they all be rolled into quickload's lambda list?

@quicklisp
Copy link
Owner

Also, style-wise, I'd prefer something like this: &key ... ((:print-case *print-case*) *print-case*) ...

@jessymilare
Copy link
Author

jessymilare commented Jun 16, 2019

I don't see any problem including some (maybe many) specials into quickload's lambda list. Some standard functions (e.g. write ) and some libraries (e.g. bordeaux-threads) do that. If you wrap the special around quickload, the user loses control.

I'll change the style.

@quicklisp
Copy link
Owner

If you wrap the special around quickload, the user loses control.

I don't understand - how is (let ((*print-case* :upcase)) (ql:quickload ...)) reducing user control?

@jessymilare
Copy link
Author

If you wrap the special around quickload, the user loses control.

I don't understand - how is (let ((*print-case* :upcase)) (ql:quickload ...)) reducing user control?

If the user has to type that, that is a lot to type and doesn't integrate well with SLIME, LEM editor, etc. IMHO, the default way of calling the function should work as-is.

@quicklisp
Copy link
Owner

Ahh, thanks, I see the argument. Despite the clearly written title and clear code, I misinterpreted this as providing an argument to bind the special variable without changing it on the way in.

Now that I understand, I'm not comfortable changing *print-case* by default via quickload. Things that break with a non-default *print-case* should be fixed or let-binding should be used instead.

@quicklisp quicklisp closed this Jun 16, 2019
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

Successfully merging this pull request may close these issues.

2 participants