If I correctly understand what you are saying, you are describing “relative” tabbing, where /t moves a constant distance from the current position. I prefer “stopped” tabs where /t moves to the next tab stop. If my /t doesn’t create the spacing/alignment I’m after, I just tab to the next position.
Thus, I would set mine with the first tab position (for indenting) at 1.5 cm and subsequent tab stops at 3, 4, 5, … cm. That way I’d get perfect alignment with both fixed and proportional fonts.
I’d also set line-wrap or line-continuation to use a hanging indent based on the start position of the line being wrapped or continued.
I’d also set a boundary between code and comments so that lines always wrapped before the boundary and using the comment character at the end of a line would jump to the other side of the boundary with optional leaders (the characters, usually periods that connect the end/beginning of a gap). In an ideal world, I would be able to “hide code”, pulling all the inline comments into a “hanging indent” structure with their “parent” comments.
Yes, before the advent of IDE editors and all the fancy intellisense stuff, I used word-processing software for coding. 😀
You did not, but he also picked an example that could be conflated with the 4-spaces issue.
They’re talking about situations where you might want to align text by a number of spaces that isn’t divisible by your tab size. I’ll expand on their example:
In this case, the “>” are showing the tab stops and the “-” the resulting white space. Note how all the calls are lined up. (My preferred alignment style, not necessarily anyone else’s.)
Yet another edit: I see that I missed addressing alignment on other than tab boundaries. To me, that’s just sinful! 😀
Correct. The way I’m used to it ( and how I thought the world worked ) is that the IDE gives tab a fixed length or characters. If you set it to 4 it would be the equivalent of 4 spaces or 4 letters or whatever.
If my tab is set to 4 it would take up the width of 4 characters. If I need two indentations I would press tab twice.
If bob then checks out my code and calls me a maniac and sociopath for using indentation and swears by “2”, the code would just look more condensed. The alignment would still work out because that’s done through spaces.
var user_name = "Bob"var user_age[tab]= "Bob"
This would align the = for Bob, because it needs two characters to align and that’s what his tab width is. It wouldn’t align for me because my tab width is 4. So I would.pur two spaces instead of the . That way it is aligned for everybody regardless of their tab width settings.
The way you explain it sounds like how tabs works in MS Word ( or other word processors ).
I don’t think I could work like that. I’ve only ever used IDEs to code ( regardless of how primitive they were back when I started). Interesting take though :D
The way you explain it sounds like how tabs works in MS Word ( or other word processors ).
That is exactly how they work, and after 40 years, I still struggle with the whole “tab as a shortcut for spaces” thing. It’s not that I started with word processors, either, just that as soon I started working with them, everything got so much easier for me.
There are some code-specific things that keep me from just going back to a word processor, but I think our code editors are missing some useful features that are found in word processors.
If I correctly understand what you are saying, you are describing “relative” tabbing, where /t moves a constant distance from the current position. I prefer “stopped” tabs where /t moves to the next tab stop. If my /t doesn’t create the spacing/alignment I’m after, I just tab to the next position.
Thus, I would set mine with the first tab position (for indenting) at 1.5 cm and subsequent tab stops at 3, 4, 5, … cm. That way I’d get perfect alignment with both fixed and proportional fonts.
I’d also set line-wrap or line-continuation to use a hanging indent based on the start position of the line being wrapped or continued.
I’d also set a boundary between code and comments so that lines always wrapped before the boundary and using the comment character at the end of a line would jump to the other side of the boundary with optional leaders (the characters, usually periods that connect the end/beginning of a gap). In an ideal world, I would be able to “hide code”, pulling all the inline comments into a “hanging indent” structure with their “parent” comments.
Yes, before the advent of IDE editors and all the fancy intellisense stuff, I used word-processing software for coding. 😀
You did not, but he also picked an example that could be conflated with the 4-spaces issue.
They’re talking about situations where you might want to align text by a number of spaces that isn’t divisible by your tab size. I’ll expand on their example:
function test(&obj, &obj2, &a) { $obj->doSomething() ....->doSomethingElse() $obj2->doSomething() .....->doSomethingElse() $a->doSomething() ..->doSomethingElse() }
Again, dots are “visible spaces” in this example, and being used to align chained methods with the length of the object name.
Edit: Bear with me while I sort out the difference between my display and the resulting code block. Ok, close enough.
Ok, thanks. I would instead (and prefer to ) do something like this:
function test(&obj, &obj2, &a) { $obj---->doSomething() ---->--->doSomethingElse() $obj2--->doSomething() ---->--->doSomethingElse() $a-->--->doSomething() ---->--->doSomethingElse() }
In this case, the “>” are showing the tab stops and the “-” the resulting white space. Note how all the calls are lined up. (My preferred alignment style, not necessarily anyone else’s.)
Yet another edit: I see that I missed addressing alignment on other than tab boundaries. To me, that’s just sinful! 😀
Correct. The way I’m used to it ( and how I thought the world worked ) is that the IDE gives tab a fixed length or characters. If you set it to 4 it would be the equivalent of 4 spaces or 4 letters or whatever.
If my tab is set to 4 it would take up the width of 4 characters. If I need two indentations I would press tab twice.
If bob then checks out my code and calls me a maniac and sociopath for using indentation and swears by “2”, the code would just look more condensed. The alignment would still work out because that’s done through spaces.
var user_name = "Bob" var user_age[tab]= "Bob"
This would align the
=
for Bob, because it needs two characters to align and that’s what his tab width is. It wouldn’t align for me because my tab width is 4. So I would.pur two spaces instead of the . That way it is aligned for everybody regardless of their tab width settings.The way you explain it sounds like how tabs works in MS Word ( or other word processors ).
I don’t think I could work like that. I’ve only ever used IDEs to code ( regardless of how primitive they were back when I started). Interesting take though :D
That is exactly how they work, and after 40 years, I still struggle with the whole “tab as a shortcut for spaces” thing. It’s not that I started with word processors, either, just that as soon I started working with them, everything got so much easier for me.
There are some code-specific things that keep me from just going back to a word processor, but I think our code editors are missing some useful features that are found in word processors.
Generally I’m not very preoccupied with it as the IDE just formats it the way I like it on save :D.