> On 2019-12-23, at 7:41 PM, Chris Muller <[hidden email]> wrote:
I think it boils down to whether you want to edit "expressions" or edit "text". The preferences are optimized to let you choose one or the other and, if you stick to it, serve you well. As someone who prefers the expression-editing style, I never run into "fooble + 2)" because I never type a closing paren-bracket, ever, I just don't, because it means you're instantly out of balance which, I simply can't do in my editing. Unbalanced paren-brackets forces me into tedious "text editing" mode where all analysis stops so I can hunt down the missing whatever just to get back to syntactical validity. If I need to enclose an expression, I always only select it and use the hot key. In that way of working, autoEnclose is always fine. - Chris
|
In reply to this post by Chris Muller-3
On 24/12/19 9:11 AM, Chris Muller wrote:
> > What "problems" are those? Just as you see in the subject-line of this > email, for every open-parenthesis, there's a closing, as well as for > every open bracket, a closing. That's the structure of these characters > in every normal context. "Problems" arise when they get out of balance, > which is why other editors have this feature too. IIRC, eclipse was > doing it in 2005. One of the problems I face frequently is because autoEnclose inserts a ) when I type ( but does not remove it when I backspace over (. For instance, I type (teh, realize my typo and backspace over it including the ( but I am left with a dangling ). I prefer typing cmd-( when I need matching (). Regards .. Subbu |
autoEnclose is one of the first preference in turn of in a new image. Please leave it off in new release. Best, Karl On Tue, 24 Dec 2019 at 15:02, K K Subbu <[hidden email]> wrote: On 24/12/19 9:11 AM, Chris Muller wrote: |
Hi All,
some people really like auto enclose and dine people hate it. Similarly some people like update menu selection on mouse click and others hate it. We are unlikely to find a compromise, or be able to vote and find a substantial majority one way or the other. It is also true that not having the preference the way one wants us extremely irritating for each side. The experience is of a system that is fighting you at every turn and is hugely frustrating. So this group of preferences is the kind of thing that should be offered to the user as a configuration choice at setup. Marcel abd the Potsdam folks did a brilliant job writing the initial preference configuration and it’s a pleasure to use. I suggest, and ask for effort in implementing, that in this release one of the configuration options is a group preference for editing & selection which offers either the “old crusty“ choices of no automatic anything in editing and mouse selection (please Santa, I want an “I am an old crusty tee shirt for Xmas), and the young skywalker use-the-force alternatives. We still need to make an exhaustive list beyond auto enclose and update menu selection, but please can we offer this as a choice to users and emphatically not choose a default one way or the other? We should have sufficient respect for each other’s muscle memory to realise this is one example where a default simply isn’t god enough. _,,,^..^,,,_ (phone) On Dec 24, 2019, at 6:31 AM, karl ramberg <[hidden email]> wrote:
|
Chris, I happily accept that for each ( there should be a ) *but* I think you skipped over what happens when you want to change where the ( is. Maybe you're just in the habit of streaming out code so efficiently that you never need to change that sort of thing but I make mistakes (occasionally, let's not get excited here) and want to delete a ( and type it somewhere else in the code. Habits are like Hobbits; they live deep in the ground and have hairy feet and are hard to get rid of.
> On 2019-12-24, at 7:12 AM, Eliot Miranda <[hidden email]> wrote: > > Hi All, > > some people really like auto enclose and dine people hate it. Similarly some people like update menu selection on mouse click and others hate it. We are unlikely to find a compromise, or be able to vote and find a substantial majority one way or the other. It is also true that not having the preference the way one wants us extremely irritating for each side. The experience is of a system that is fighting you at every turn and is hugely frustrating. Yup. > > So this group of preferences is the kind of thing that should be offered to the user as a configuration choice at setup. Marcel abd the Potsdam folks did a brilliant job writing the initial preference configuration and it’s a pleasure to use. I suggest, and ask for effort in implementing, that in this release one of the configuration options is a group preference for editing & selection which offers either the “old crusty“ choices of no automatic anything in editing and mouse selection For the sake of brevity in the setup Whizzard I'd suggest having just one or maybe two choices along with an explanation that more detailed preferences can be found in the Preferences tool. And that your preferences can be saved and reloaded. And a reminder that when you set them in an image and save the image they are remembered. We could also do with an improved UI for saving and loading those preferences since at the moment they only go to/ come from a file in the image directory which is a real pain for people working in multiple images across directories and machines. tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim He who hesitates is probably right. |
In reply to this post by timrowledge
There's an extra complication I notice after trying out my submission for saving/loading preferences - if you click on the 'default' button in the PreferencesBrowser you get a strange set of options derived from Preferences class>>#chooseInitialSettings (including a very different set of halo icons)
This uses the default values set in each preference see Preferences class>>#alternateHandlesLook for one example. In at least a few cases these don't agree with the values set in ReleaseBuilder class>>#setPreferences. So we have a default setup created when building the release, a default set made from the code versions and some set via pragmas. And some via themes - which can get set via the dock Extras->Themes & Colors menu, or differently via the world->appearance->choose set of preferences and probably other ways. I think maybe we should try to simplify this for the next release... tim -- tim Rowledge; [hidden email]; http://www.rowledge.org/tim "How many Motie Mediators does it take to chage a lightbulb?” "Are you insane? Only Crazy Eddie would want to change *anything*!" |
In reply to this post by K K Subbu
On Tue, Dec 24, 2019 at 8:02 AM K K Subbu <[hidden email]> wrote: On 24/12/19 9:11 AM, Chris Muller wrote: I must've forgotten that eclipse did that, too, because now that you mention that, I think it did... It was not too hard to fix. Please try Morphic-cmm.1613 in the inbox. Best, Chris
|
In reply to this post by timrowledge
On Tue, Dec 24, 2019 at 1:16 PM tim Rowledge <[hidden email]> wrote: Chris, I happily accept that for each ( there should be a ) *but* I think you skipped over what happens when you want to change where the ( is. Maybe you're just in the habit of streaming out code so efficiently that you never need to change that sort of thing but I make mistakes (occasionally, let's not get excited here) and want to delete a ( and type it somewhere else in the code. Okay, nothing wrong with that, but I don't do that in my style because it instantly unbalances my parentheses and forces me into text editing mode. Since I only ever want to do expression editing, I: 1) select the expression (alt+[space], swipe, or double-click), 2) remove the existing ( by pressing Control+9, 3) expand / reselect the new enclosure 4) Control+9, to re-surround the selection with (). Best, Chris |
In reply to this post by timrowledge
It could nice if we could use Monticello for saving and loading personal preferences also :-) Best, Karl On Wed, 25 Dec 2019 at 00:29, tim Rowledge <[hidden email]> wrote: There's an extra complication I notice after trying out my submission for saving/loading preferences - if you click on the 'default' button in the PreferencesBrowser you get a strange set of options derived from Preferences class>>#chooseInitialSettings (including a very different set of halo icons) |
Well, you can, of course, just codify it. Here's my MyInstaller>>#configure, which I call from its class-side #initialize. Feel free to copy and tweak as you please. By using a hierarchy of Installers, each automatically configures the code AND Preferences appropriately for that context. Installer MaInstaller "generic framework stuff, very few preference settings" MaCommercialInst "Proprietary, some options set" CmmInstaller "Personal. Many preferences, my fully custom IDE" It's a nice setup, indeed. :) - Chris On Wed, Dec 25, 2019 at 4:56 AM karl ramberg <[hidden email]> wrote:
MyInstaller-configure.st (4K) Download Attachment |
In reply to this post by Eliot Miranda-2
Hi Eliot,
I guess we are talking about different things :-)
I was talking about the compiler preferences - how to handle an underscore assignment, for example - and proposed to replace these preferences with special Deprecation warnings. You are talking about the bytecode set, what is the relation? :) If I load old code via Monticello, for example, I will load the source only which will be compiled on my VM, won't it? So it is always compiled with the latest bytecode. This might be different when loading a project file that includes CompiledMethods, though.
However, thanks for your crash course about bytecode sets! They're an interesting concept, and I will be happy to take a closer look at them at some time.
Best, Christoph Von: Squeak-dev <[hidden email]> im Auftrag von Eliot Miranda <[hidden email]>
Gesendet: Dienstag, 24. Dezember 2019 02:50:54 An: The general-purpose Squeak developers list Betreff: Re: [squeak-dev] Preference settings for 5.3 release Hi Christophe,
On Mon, Dec 23, 2019 at 11:25 AM Thiede, Christoph <[hidden email]> wrote:
I think that they;'re wrong :-) Let me explain why.
The Cog VM supports up to two bytecode sets, selected by the sign bit of the method header. If the sign bit is not set the "primary" bytecode set is selected, and if set the "secondary" bytecode set is selected. Both the primary and secondary bytecode
sets are "installed" by setting a couple of class variables in CompiledCode, one for the PrimaryBytecodeSetEncoderClass and one for the SecondaryBytecodeSetEncoderClass. Which bytyecode set is the preferred one is selected by yet another class variable, PreferredBytecodeSetEncoderClass.
By default these variables have these values (they have these values ion trunk currently)
PreferredBytecodeSetEncoderClass nil
PrimaryBytecodeSetEncoderClass EncoderForV3PlusClosures
SecondaryBytecodeSetEncoderClass EncoderForV3PlusClosures
What setting the preferred bytecode selector set to SistaV1 does is to set these variables to these values:
PreferredBytecodeSetEncoderClass EncoderForSistaV1
PrimaryBytecodeSetEncoderClass EncoderForV3PlusClosures
SecondaryBytecodeSetEncoderClass EncoderForSistaV1
So what it *does not do* is change the meaning of the bit in the method header. A non-negative method header still means the method uses the old bytecode set. So old code continues to load. It is entirely unaffected. What it does mean is that any methods
that are compiled (that are not quick methods (*)) are compiled using the new bytecode set and will have negative method headers. So if you export them, e.g. via an ImageSegment, they will use the SistaV1 bytecode set in the receiving image whether it has
the preference set or not. Further, the VM will happily run the new bytecode set because for a whole now the VM has had the two bytecode sets compiled in in this way. What will happen ion the image that doesn't have the SecondaryBytecodeSetEncoderClass set
to EncoderForSistaV1 is that the debugger, etc, will get confused because they will interpret the new byetcodes using the old encodings.
(*) quick methods don't have bytecodes, just a primitive number. So these methods keep being expressed in the old bytecode set because I've been too lazy to rewrite quick method generation to respect the PreferredBytecodeSetEncoderClass, because for the
moment it makes no difference.
Does this make sense or am I being too detailed and confusing?
Executive summary, the design was careful to *not* invalidate the old bytecode set, to make using the new bytecode set an option that does not break backwards compatibility.
In future if we want to jettison the old bytecode set and design a third set, that's when we introduce backwards com potability issues, and we introduce the need to express quick methods using the SistaV1 bytecode set. But for the moment we're safe.
_,,,^..^,,,_
best, Eliot
Carpe Squeak!
|
Free forum by Nabble | Edit this page |