22

I noticed that the developer of kitty terminal uses this style of comments I have rarely if ever seen elsewhere:

outside
#: section {{{
inside
#: }}}

Kate text editor recognize sections for purposes of highlighting, folding etc. It's really nice for me because I sometimes I have a difficult time navigating large text files. And it lets you nest them.

  • what is this called?
  • are there other ways to do it?
  • is it standard among text editors? I believe Kovid the dev for kitty is a vim guy so presumably there is support there also.
  • why don't more people use it? are there problems?

Screenshot that shows the code folding.

  • Cursor is at the end of line 7 so the whole section line 7-22 is highlighted
  • lines 12-16 are folded in a 3rd level comment
  • I also included tab indents just to make it easier to see what's going on (Kate treats it the same way regardless of indents)
  • Highlighting/Mode > Scripts > Bash

I also like his style of distinguishing between narrative comments (starting with #:) and commented-out code (starting with #). Although in my example, Kate doesn't treat them differently. Is there a term for this? Any conventions, support etc?

plain text used for screenshot


#: Comment level 1 {{{
	#: Comment level 2 {{{
		#: configure something
		key value
	#: }}}
	#: Another Comment level 2 {{{
		#: Comment level 3 {{{
			#: Helpful explanatory comment
			file location
		#: }}}
		#: Comment level 3 with hidden text {{{
			you_cant see_this
			hidden_emoji "๐Ÿ‘๏ธ"
			hidden_emoji2 " ๐Ÿ‘๏ธ"
			hidden_emoji3 "   ๐Ÿ‘๏ธ"
		#: }}}
		#: let's set some things up
		# setting yes
		# other_setting no
		different_setting maybe
	#: }}}
	# regular comment
#: }}}

# regular comment outside anything


For a real world example, see sample kitty.conf file provided on project website.

you are viewing a single comment's thread
view the rest of the comments
[-] HelloRoot@lemy.lol 15 points 2 days ago* (last edited 2 days ago)

what is this called?

Marker-based folding

[-] some@programming.dev 3 points 1 day ago

Thanks! Searching for this led me to this extremely charming website where in addition to robust folding, the author argues in favor of proportional width fonts and tabstops (not spaces) in coding. Unconventional. It's nice to know someone who processes text in a similar way to me can be a successful programmer. Even if they had to write their own tools. https://tibleiz.net/code-browser/elastic-tabstops.html

[-] thingsiplay@beehaw.org 2 points 1 day ago

BTW, my personal note about the tabstops for indentation is, I wish everyone would use it over spaces. Because it would make it much easier to display the file differently without changing it. Also parsing it would make it easier too probably. But since spaces are the standard, I exclusively use space for indentation.

[-] zerofk@lemmy.zip 3 points 1 day ago

I actually think the argument for mixing tabs and spaces makes a lot of sense. Use tabs for indentation, coupled with spaces for alignment (e.g. of function arguments). It eliminates the downsides of using tabs resp. spaces exclusively. But since nobody uses it, I never have either. Following the style of the project at hand is the way.

[-] thingsiplay@beehaw.org 1 points 1 day ago

You mean alignment of arguments or multiline strings in example? If they are not on their own line, then it does not matter to me. If they start on their own line, then mixing spaces and tabs isn't a good idea to me. In example for function calls with a bit more complex calls and multiple arguments, I put them in their own line each. They are indented and therefore indentation level plays. If they are on the same line, I never align them and if I would, it would be spaces. In general:

function() {
....var = 1
....another_var = 2
....indented(arg, arg2, arg3)
....indented(arg, 
.............arg2, 
.............arg3)
}
[-] some@programming.dev 1 points 19 minutes ago

I am very rarely working in other people's stuff because I am too rudimentary but of course I try to follow their rules when I do.

For my own purposes, I would do it in one of the below ways. I made the case more complicated by changing the lengths. I mostly choose consistent levels of indentation using tabs over per-character alignment but not always.

[--] = tab, ~ = single space (and double space = double space in front of comments for legibility here)

function() {
[--]var = 1
[--]another_var = 2
[--]indented(arg, arg2, arg3)
[--]indentedTwo(arg, 
[--]~~~~~~~~~~~~arg2,
[--]~~~~~~~~~~~~arg3)  #: aligned by spaces to match specific charecter length
[--]indentedThree(
[--]~~~~~~~~~~~~arg,
[--]~~~~~~~~~~~~arg2)  #: aligned by space to arbitrary charecter length, same as the previous
[--]indented4(
[--][--]arg,
[--][--]arg2)  #: aligned by tabstop by level
[--][--]~~~~~  #: this would be my preference overall if I had to chose
[--][--]~~~~~  #: (which so far I haven't)
}

Kate has a great feature called "insert smart newline" which I shortcut to shift+enter. If you are typing for example on the penultimate line above and "insert smart newline" it'll automatically fill the line with [--][--]~~~~~ #: and put the cursor at the end. This feature really enables a lot of these habits for better or worse.

When I write output to terminal I really like being able to use tabs to modify the length of tabs according to what is the content. Sometimes I wish I could set tabs in my editor (like a word processor), it would make things simpler. But then there's portability issues for non standard features like that so.

load more comments (3 replies)
this post was submitted on 03 Jul 2025
22 points (100.0% liked)

Programming

21400 readers
171 users here now

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



founded 2 years ago
MODERATORS