5 points

Ah yes I understand now!

permalink
report
reply
50 points

Tabs let you define how big you want each indent to be

…except when they don’t. Many common environments have a hardcoded tab size of 8, which is insanely big for using it for indentation.

permalink
report
reply
43 points

Because other people might have restricted environment which might not suit their preference is not a good reason to level it down IMO.

Also, I think 9 is the best size for indent (matter of preference), do you think I should switch to space so everyone can enjoy this wonderful view I have ?

permalink
report
parent
reply
17 points

Ah, the best kind of indent. A tab and a space.

permalink
report
parent
reply
9 points

Or just set tabsize to 9, that’s the point :)

permalink
report
parent
reply
4 points

Why would you ever need 9 other than trolling people on the internet?

permalink
report
parent
reply
4 points

Straight on point!

permalink
report
parent
reply
6 points

It’s not just “might”. Termux is pretty much the only good choice for programming on Android.

I think 9 is the best size for indent (matter of preference), do you think I should switch to space

I think you should switch to an exorcist.

permalink
report
parent
reply
3 points

What’s your point ? You can use vim on termux and set the tabsize to whatever you want for example.

permalink
report
parent
reply
13 points

As an embedded software developer that does linux kernel drivers I’ve come to love the tab size 8 indentation level.

I’m paraphrasing: “if your indentation level gets too deep, it’s time to rethink/refactor your function.”

And with tab 8 you’ll notice it rather quick if your function does too much/unrelated stuff.

A function should be short and do one thing only, if possible. It also makes unit testing easier if that’s a requirement.

permalink
report
parent
reply
-1 points

When you’re operating on such a low level of abstraction, it’s no wonder you don’t need deep nesting.

permalink
report
parent
reply
1 point

Oh, I’ve done my fair share of C++ and Python as well. But you got to agree with me that when you are on your fourth indented “if case” it’s time to step back and think about what you are trying to achieve. I mean it’s probably going to work, but probably also very hard to maintain that type of code.

permalink
report
parent
reply
19 points

What environment are you using that has a hardcoded tab size? I haven’t seen this since typewriters.

Some projects just use tabs as a compressed form of 8 spaces. But that is a sin. Use tab to mean “one indent level” and align with spaces if you need to. (the occasional ASCII art diagram)

permalink
report
parent
reply
3 points

What environment are you using that has a hardcoded tab size?

Microsoft Windows’ Notepad. I have sometimes used that when on a public computer.

permalink
report
parent
reply
7 points

What environment are you using that has a hardcoded tab size?

  • Termux
  • SourceHut
  • “View page source” in the browser
permalink
report
parent
reply
15 points
*

Termux

I think running tabs -N (where N is you preferred tab size) in the terminal should work. This is what I use in my zshrc on desktop.

SourceHut

Yup, they seem to be pretty opinionated here. If you look at the source there is just an inlined style with a single rule pre { tab-size: 8 }. I guess that is what you get when you use opinionated tools. The user’s browser isn’t right, my preference is right!

“View page source” in the browser

On Firefox this uses my default tab size of 4. But I guess changing this default isn’t user-friendly.

permalink
report
parent
reply
4 points

Github uses 8 as a default. It’s configurable though.

permalink
report
parent
reply
10 points

This is the biggest problem with tabs. Too many tools don’t let you adjust the size (or make it very difficult). This is the only reason I usually prefer spaces (only very slightly).

My dream solution is elastic tabstops and I’ve posted about it here before a few months ago. The problem with wanting elastic tabstops is that it seriously compounds the issue of “editors don’t properly support it”

https://nickgravgaard.com/elastic-tabstops/

permalink
report
parent
reply
10 points

This is a holy war that I will gladly fight again and again! I can’t believe that soft tabs are more popular, especially in python!

permalink
report
reply
1 point
Deleted by creator
permalink
report
parent
reply
5 points

Tabs work fine, you aren’t allowed to mix, indentation must be consistent.

permalink
report
parent
reply
0 points

Actually I think you can technically mix. They have a “conversion factor”. But don’t, because then the code will look like crap on any other tab size (defeating the point of using tabs in the first place)

I think it would be better that each line needs to start with the exact same bytes to be considered within the same indent level. But I don’t think that is the decision Guido made.

permalink
report
parent
reply
3 points

That is because they are superior.

spatium vult.

permalink
report
parent
reply
-3 points

That’s all well and good if everyone uses editors you can configure to a certain standard all the time. Then tabs all the way.

Unfortunately that’s not reality for everyone.

permalink
report
reply
5 points

Everyone should use a better editor.

permalink
report
parent
reply
13 points

Honestly, what fucking editor are you using that doesn’t allow you to configure tab length? Wordpad?

permalink
report
parent
reply
6 points

I’m hopping between shells using whatever is installed.

permalink
report
parent
reply
2 points

Vim has it, even Nano has it. It’s one setting away, set it once and forget it. If you use throwaway containers it would be hassle but I don’t understand why you would need to view code inside the container in that case.

permalink
report
parent
reply
19 points

I’ve always wondered why some people tout “forcing a consistent appearance across environments” as a pro for spaces. That’s a bad thing.

To be honest I’m surprised code format converters aren’t ubiquitous. Let the repo have it’s master format, enforced on commit. Then converters translate into each developer’s preferred standard dialect on checkout and back again on commit.

permalink
report
reply
7 points

The consistent appearance thing is probably more about how mixing tabs (for indentation) and spaces (for alignment, eg in multi-line function definitions of calls) looks like complete crap if you change the tab width.

permalink
report
parent
reply
7 points

I think you have it backwards. If you use tabs for indentation and spaces for alignment it works great for any tab size.

It is when you use a tab just as a compressed representation of 8 spaces and use them for alignment as well that it goes to shit. (because you have made the sin of tab == 8 spaces instead of the correct tab = 1 indent level)

permalink
report
parent
reply
0 points

How does that work, and with which editor settings? If you simply set the tab width (tabstop) in vim, things go south.

Say you have a function definition one indent level in, then 22 characters of text. You more want to align the next line to that. How does that work in practice with tabs?

The obvious way with tabs and ts=4 would be 6 tabs and two spaces(one tab for the initial indent, the rest to match 22 characters). But then someone with ts=2 comes along and barely gets half way there, or someone with ts=8 who overshoots by a lot.

permalink
report
parent
reply
7 points
*

Using only tabs for indentation and only spaces for alignment will never result in crap alignment when adjusting tabstops because the alignment does not use tabs.

This is using both tabs and spaces for alignment.

--->func foo(int i,
--->--->     int j);

Observe what adjusting the tabs does,

->func foo(int i,
->->     int j);

This uses only spaces for alignment,

--->func foo(int i,
--->         int j);

When converted the alignment is maintained because the tabstops aren’t used for alignment, only for indentation.

->func foo(int i,
->         int j);
permalink
report
parent
reply

Programming

!programming@programming.dev

Create post

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person’s post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you’re posting long videos try to add in some form of tldr for those who don’t want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



Community stats

  • 3K

    Monthly active users

  • 1.7K

    Posts

  • 28K

    Comments