bakkeby / st-flexipatch

An st build with preprocessor directives to decide which patches to include during build time

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

[request] Add patch column patch

siduck opened this issue · comments

Hi @bakkeby , st cuts text inside it when st's window is resized :/ . Most terminals dont do this. I didnt find any patches for it either.

I found a build which has this issue fixed , seems like it extends the patch column from here.

@BeyondMagic 's build didnt provide any patch for it tho , I found some useful commits BeyondMagic/flarity@4339de9.

( st without patch column and with it (beyondmagic's build) )

simplescreenrecorder-2021-07-22_07.54.21.mp4

It would be very nice if there was a patch for this :]

My friend made a patch for it https://github.com/coolabhays/st_custom/blob/master/patches/st-columnredraw-20210722-e40efda.diff , it works but sometimes forward scrolling crashes st

simplescreenrecorder-2021-07-22_23.24.39.mp4

This certainly feels much more convenient, makes you wonder why it's not in st by default, it doesn't add many lines of code.

In practice this is the same feature as provided by the vim browse patch, but without all of the other features that the vim browse patch adds.

This certainly feels much more convenient, makes you wonder why it's not in st by default, it doesn't add many lines of code.

In practice this is the same feature as provided by the vim browse patch, but without all of the other features that the vim browse patch adds.

Vim browse removes the functionality of a rollback iirc , also this patch works unless you resize the window vertically which duplicates the prompt , check the issue in its repo.

Maybe there is something special going on with the last lines printed (or the prompt). This is also the case if you don't have this patch though.

@bakkeby if you dont mind , could you update the patch column patch in your free time? Ive seen a build which has this patch and scrolling vertically doesnt cut the text too.

Example : My build ( with patch column patch) and this build(with modified patch column so vertically resizing doesnt cut the text)

simplescreenrecorder-2021-08-08_12.07.21.mp4

ashish-yadav11/st#1

I saw that build, it is pretty slick. He has done a lot of changes in his build. I'm hoping he'll release a standalone patch at some point, otherwise I'll have to go through all his changes.

I'll get around to this eventually, I have quite a few things in my backlog.

Did you all get far with vertical resizing?

I can finally give a look at it, after all those months.

Did you all get far with vertical resizing?

I can finally give a look at it, after all those months.

not yet ;(

I'm trying to make it work basing on the ashish-yadav11 build, though I don't premise anything.

Yeah, I'm giving up. His build is coded in a way that is beyond my skills in C.

Well, the good news is that he hasn't updated his build in the last three months which I take to mean that his work is pretty stable :)

So the build is here:

Trying it out I see that he added reflow to the main terminal as well.

Looking at the files changed tab here we can see all the custom changes that were made to this repository:
ashish-yadav11/st@4536f46...d84cd16

To be honest it is less changes than I expected, but the tricky part is figuring out which changes are relevant and what not.

its_fucking_working.mp4

I'll post the .diff in 7~ hours, gotta work.

 st.c st.h x.c: rows and columns patch

Patch extracted from https://github.com/ashish-yadav11/st

NOTE: Patch is applied on a st build with other patches on it, a few to
name are liga/boxdraw/hist_scroll patch, however it's not that hard to
actually make this fit on a unpatched st..., it just take time.
Maybe I'll make one in the next few days for an unpatched st build.

Almost every change there is necessary for the patch to work, so you
can replace the history_scroll patch with this one without fear because
the patch includes both row and columns memory resizing.

https://github.com/BeyondMagic/st/blob/01d7a9dc04203f6fe2410413a038ac1f6c4515fb/column-rows-patch-st-with-liga-box-hist.diff

I'm surprised it actually got that far on your build.

I'm surprised it actually got that far on your build.

haha , btw could you make the patch for vanilla st? it'd be easy to patch then . Also you could submit the patch on the site too :D

Yeah, it just takes a long time to make it, but I"ll eventually do it.

@BeyondMagic
image
;c

If it doesn't work, you can either patch the conflicts manually or just wait for the unpatched st patch

Here's the patch for unpatched st.

https://github.com/BeyondMagic/st/blob/master/patches/columns-rows-reflow-st-unpatched.patch

@bakkeby I'm also interested in the row-reflow patch. I tried to include the changes in st-flexipatch but it got out of hand very quickly. If possible, could you please have a look at it?

This is just a humble request from my end as it's a really useful feature for a terminal. Still, no problems if you're not feeling like doing it.

Hi guys,

wow I think this is probably the most invasive of all the patches out there. It was more time consuming that I thought it would be.

I have added it on a branch columns_reflow for now as it will likely need some testing.

It may have conflicts with these patches:

VIM_BROWSE_PATCH
SCROLLBACK_PATCH
KEYBOARDSELECT_PATCH
COLUMNS_PATCH
SIXEL_PATCH
CSI_22_23_PATCH

For the sixel patch as an example the position of sixel images are not adjusted correctly when resizing the terminal window.

The vim browse patch I don't expect it to work.

The rest I don't expect any major issues, but I didn't test them all out.

Seasonal greetings to you all.


Regards,

-Stein

Thanks a lot, Stein. I'll test out the patch and let you know.

I checked out the patch and it works as expected. I'm no longer losing scrollback history on resizing vertically.
However, there's an issue with the wrapping of text. It doesn't recover properly sometimes.

st.mp4

Reopening for visibility.

Hi @UtkarshVerma,

yes I see. There is the same behaviour in @ashish-yadav11's build and @BeyondMagic's build.

Also if you do ls -l and you resize to a single column and then back again to the original size then you should also see that there are less files shown (i.e. it is losing lines).

It also looks like that this is affecting the mouse scrollback patches as well.

I am looking into the issue.

Apply changes in this commit. That should fix the issue.

Thanks a bunch @ashish-yadav11, looks like the neofetch glyphs warping works fine now. It still seems to lose data / rows when resizing to a single column, but that is more something that you only do if you are playing around with it / testing.

Can you describe a way to reproduce the single column bug (or show it in a video)?

@ashish-yadav11 yes so if you do ls -l a few times to get some content, then resize the st window to its smallest width, then make it bigger again then some lines will be lost, if you do it again then there are less lines, eventually there is only your prompt left. This doesn't happen if I resize the st window to nearly the minimum (as in there still being two columns shown).

I can try and make a video if it is not clear.

It doesn't happen with me. Is it the prompt which eats the lines? Also what is the behaviour in other terminals with reflow (like alacritty)?

@ashish-yadav11, yes it looks like it may be the prompt, or zsh. I tried bash and it does not happen there.

In zsh I tried setting export PS1=h (single character) and I can't reproduce it. If I set it to "hh" (two characters) then it eats one line at a time. I found that it could eat up to 4 lines at a time, but not more than that in my testing even with long prompts.

I couldn't replicate this in sh either, so yes maybe it is just something with zsh.

I was able to reproduce the loss of output. Here's a video comparing the behaviour between st and alacritty:

st.mp4

I wasn't able to scroll up in st

This is an issue with the prompt. The shell tries to handle the cursor position manually on resize, which conflicts with the terminal handling the cursor, which causes the issue. On comparison of resizing behaviour with prompts of primitive shells (like dash which do not themselve handle the cursor position), you will notice that the current patch handles cursor better than alacritty. Try typing something after the prompt and resizing to as small a size as possible on alacritty and st.

@UtkarshVerma more so wrt the prompt if you are using zsh, this trick of using the precmd function would resolve that issue you are seeing as only the > prompt would redraw when resizing:
https://bbs.archlinux.org/viewtopic.php?pid=400608#p400608

I don't think it is an issue with the prompt. As you can see in the video, the neofetch output is lost in st(it's not visible in the video but I wasn't able to scroll up) while alacritty preserves the output.

I tried the same with dash with same results.

image

Glitches like this occur in dash as well with the $ as prompt.

Don't mind the shell mentioned as zsh in the output as my $SHELL is set to that.

recording.mp4

I am not able to reproduce. Same thing happens even with a longer PS1. The shell is dash btw. The issue only occurs with me if I use multiline prompts in zsh.

Yeah, I guess multiline strings with zsh are causing rows to be cut out. But I'm curious as to why the same doesn't happen with alacritty.

simplescreenrecorder-2021-12-27_13.12.10.mp4

I see, thanks Ashish. I guess I'll have to look into workarounds for multiline prompts. The one @bakkeby mentioned above won't directly apply to me as I'm using p10k. As far as I've seen, everything else works fine.

Stein, please let me know if anything needs to be tested.

Hi, I have reported the missing part of the patch on @BeyondMagic's repository but for the visibility I want to post the issue here as well. Original issue is located here.

Basically, the patch @BeyondMagic created from @ashish-yadav11's build has a small missing part that disallows scrolling in the terminal.

diff --git a/st.c b/st.c
void
@@ -3102,7 +3241,7 @@ drawregion(int x1, int y1, int x2, int y2)
 			continue;

 		term.dirty[y] = 0;
-		xdrawline(term.line[y], x1, y, x2);
+		xdrawline(TLINE(y), x1, y, x2);
 	}
 }

mfw somehow I added it to the original build but forgot in the patch.

I will fix it right away and apply it the new changes from the original repo.

FYI I cleaned a few things up. You guys might want to look at last few commits in my repository and update your builds/patches.

Added some improvements wrt sixel compatibility and scroll / reflow. It is not by any means perfect. Also if the terminal window is small and you show a sixel image that is larger than the terminal and you try to resize (increase the size of) the terminal then st crashes. Maybe it is safest to just declare the sixel patch incompatible with the reflow patch.

@bakkeby why use sixel? just for the image viewing? if yes then you can just use ueberzug , this works on any terminal

image

This is only about patch compatibility.

This is only about patch compatibility.

ohh, Ive faced alpha patch not working along sixel/w3m patch. Is there any way we could make both work?

The alpha + sixel issue was fixed via #13 unless there are other issues I am not aware of. The w3m + alpha patch I am not entirely sure how possible that is. Does w3m still work at all in st?

The alpha + sixel issue was fixed via #13 unless there are other issues I am not aware of. The w3m + alpha patch I am not entirely sure how possible that is. Does w3m still work at all in st?

cool! btw w3m still works , its just that it stops working with alpha but nvm it. sixel is pretty solid :)

Over on wayland, I tried the foot terminal. It has good reflow and sixel support. Just dropping info here in case it helps.

@bakkeby The reflow branch works as expected. Could you please let me know the issues we're having currently so that I might have a look and work up a PR. My build is based on that branch and I want it merged upstream so that my fork doesn't go stale.

@UtkarshVerma one issue that remains is that if you have a multi-line prompt and you resize the st window to the minimum (one column) and back then you can sometimes lose history. That in itself wouldn't be a blocker I think.

I think the main issue with this patch is that it is so enormous and so invasive that it is going to make patch compatibility and future maintenance very painful.

$ grep -rn COLUMNS_REFLOW_PATCH
st.h:38:#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.h:40:#endif // SCROLLBACK_PATCH | COLUMNS_REFLOW_PATCH
st.h:41:#if COLUMNS_REFLOW_PATCH
st.h:43:#endif // COLUMNS_REFLOW_PATCH
st.h:71:	#if COLUMNS_REFLOW_PATCH
st.h:73:	#endif // COLUMNS_REFLOW_PATCH
st.h:154:	#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.h:158:	#endif // SCROLLBACK_PATCH | COLUMNS_REFLOW_PATCH
st.h:159:	#if COLUMNS_REFLOW_PATCH
st.h:162:	#endif // COLUMNS_REFLOW_PATCH
st.c:65:#if COLUMNS_REFLOW_PATCH
st.c:74:#endif // COLUMNS_REFLOW_PATCH
st.c:191:#if COLUMNS_REFLOW_PATCH
st.c:195:#endif // COLUMNS_REFLOW_PATCH
st.c:201:#if COLUMNS_REFLOW_PATCH
st.c:205:#endif // COLUMNS_REFLOW_PATCH
st.c:214:#if COLUMNS_REFLOW_PATCH
st.c:223:#endif // COLUMNS_REFLOW_PATCH | SCROLLBACK_PATCH
st.c:238:#if COLUMNS_REFLOW_PATCH
st.c:242:#endif // COLUMNS_REFLOW_PATCH
st.c:467:#if COLUMNS_REFLOW_PATCH
st.c:498:#endif // COLUMNS_REFLOW_PATCH
st.c:702:	#if COLUMNS_REFLOW_PATCH
st.c:721:	#endif // COLUMNS_REFLOW_PATCH
st.c:728:	#if COLUMNS_REFLOW_PATCH
st.c:749:	#endif // COLUMNS_REFLOW_PATCH
st.c:757:	#if COLUMNS_REFLOW_PATCH
st.c:759:	#endif // COLUMNS_REFLOW_PATCH
st.c:763:	#if COLUMNS_REFLOW_PATCH
st.c:766:	#endif // COLUMNS_REFLOW_PATCH
st.c:774:		#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.c:786:				#if COLUMNS_REFLOW_PATCH
st.c:790:				#endif // COLUMNS_REFLOW_PATCH
st.c:797:				#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.c:805:			#if COLUMNS_REFLOW_PATCH
st.c:809:			#endif // COLUMNS_REFLOW_PATCH
st.c:812:			#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.c:818:			#if COLUMNS_REFLOW_PATCH
st.c:824:			#endif // COLUMNS_REFLOW_PATCH
st.c:841:			#if COLUMNS_REFLOW_PATCH
st.c:857:			#endif // COLUMNS_REFLOW_PATCH
st.c:859:			#if COLUMNS_REFLOW_PATCH
st.c:875:			#endif // COLUMNS_REFLOW_PATCH
st.c:886:	#if COLUMNS_REFLOW_PATCH
st.c:892:	#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH
st.c:893:	#if COLUMNS_REFLOW_PATCH
st.c:897:	#endif // COLUMNS_REFLOW_PATCH
st.c:899:	#if COLUMNS_REFLOW_PATCH
st.c:903:	#endif // COLUMNS_REFLOW_PATCH
st.c:906:	#if COLUMNS_REFLOW_PATCH
st.c:920:	#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH
st.c:923:	#if VIM_BROWSE_PATCH && !COLUMNS_REFLOW_PATCH
st.c:929:		#if COLUMNS_REFLOW_PATCH
st.c:943:		#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH
st.c:946:			#if COLUMNS_REFLOW_PATCH
st.c:954:			#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH | SCROLLBACK_PATCH
st.c:957:			#if COLUMNS_REFLOW_PATCH
st.c:965:			#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH | SCROLLBACK_PATCH
st.c:966:			#if VIM_BROWSE_PATCH && !COLUMNS_REFLOW_PATCH
st.c:972:		#if COLUMNS_REFLOW_PATCH
st.c:981:		#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH | SCROLLBACK_PATCH
st.c:983:		#if !COLUMNS_REFLOW_PATCH
st.c:998:		#endif // COLUMNS_REFLOW_PATCH
st.c:1018:	#if COLUMNS_REFLOW_PATCH
st.c:1022:	#endif // COLUMNS_REFLOW_PATCH
st.c:1031:	#if COLUMNS_REFLOW_PATCH
st.c:1042:	#endif // COLUMNS_REFLOW_PATCH
st.c:1430:				#if COLUMNS_REFLOW_PATCH
st.c:1434:				#endif // COLUMNS_REFLOW_PATCH
st.c:1447:	#if COLUMNS_REFLOW_PATCH
st.c:1451:	#endif // COLUMNS_REFLOW_PATCH
st.c:1476:	#if COLUMNS_REFLOW_PATCH
st.c:1478:	#endif // COLUMNS_REFLOW_PATCH
st.c:1483:	#if COLUMNS_REFLOW_PATCH
st.c:1491:	#endif // COLUMNS_REFLOW_PATCH
st.c:1497:	#if COLUMNS_REFLOW_PATCH
st.c:1500:	#endif // COLUMNS_REFLOW_PATCH
st.c:1506:	#if COLUMNS_REFLOW_PATCH
st.c:1508:	#endif // COLUMNS_REFLOW_PATCH
st.c:1510:		#if COLUMNS_REFLOW_PATCH
st.c:1521:		#endif // COLUMNS_REFLOW_PATCH
st.c:1523:	#if COLUMNS_REFLOW_PATCH
st.c:1525:	#endif // COLUMNS_REFLOW_PATCH
st.c:1535:	#if COLUMNS_REFLOW_PATCH
st.c:1554:	#endif // COLUMNS_REFLOW_PATCH
st.c:1560:	#if COLUMNS_REFLOW_PATCH
st.c:1567:	#endif // COLUMNS_REFLOW_PATCH
st.c:1572:	#if COLUMNS_REFLOW_PATCH
st.c:1580:	#endif // COLUMNS_REFLOW_PATCH
st.c:1586:	#if !COLUMNS_REFLOW_PATCH
st.c:1588:	#endif // COLUMNS_REFLOW_PATCH
st.c:1592:#if COLUMNS_REFLOW_PATCH
st.c:1598:#endif // COLUMNS_REFLOW_PATCH | SCROLLBACK_PATCH
st.c:1600:	#if COLUMNS_REFLOW_PATCH
st.c:1605:	#endif // COLUMNS_REFLOW_PATCH | VIM_BROWSE_PATCH
st.c:1609:	#if COLUMNS_REFLOW_PATCH
st.c:1629:	#endif // COLUMNS_REFLOW_PATCH
st.c:1631:	#if COLUMNS_REFLOW_PATCH
st.c:1635:	#endif // COLUMNS_REFLOW_PATCH
st.c:1646:	#if COLUMNS_REFLOW_PATCH
st.c:1658:#if COLUMNS_REFLOW_PATCH
st.c:1664:#endif // COLUMNS_REFLOW_PATCH | SCROLLBACK_PATCH
st.c:1666:	#if COLUMNS_REFLOW_PATCH
st.c:1677:	#if COLUMNS_REFLOW_PATCH
st.c:1721:	#endif // COLUMNS_REFLOW_PATCH
st.c:1723:	#if COLUMNS_REFLOW_PATCH
st.c:1727:	#endif // COLUMNS_REFLOW_PATCH
st.c:1734:	#if COLUMNS_REFLOW_PATCH
st.c:1762:#if COLUMNS_REFLOW_PATCH
st.c:1797:#endif // COLUMNS_REFLOW_PATCH
st.c:1805:		#if COLUMNS_REFLOW_PATCH
st.c:1933:	#if COLUMNS_REFLOW_PATCH
st.c:1935:	#endif // COLUMNS_REFLOW_PATCH
st.c:1943:#if COLUMNS_REFLOW_PATCH
st.c:1997:#endif // COLUMNS_REFLOW_PATCH
st.c:1999:#if COLUMNS_REFLOW_PATCH
st.c:2035:#endif // COLUMNS_REFLOW_PATCH
st.c:2037:#if COLUMNS_REFLOW_PATCH
st.c:2072:#endif // COLUMNS_REFLOW_PATCH
st.c:2078:		#if SCROLLBACK_PATCH && !COLUMNS_REFLOW_PATCH
st.c:2089:		#if COLUMNS_REFLOW_PATCH
st.c:2095:		#endif // COLUMNS_REFLOW_PATCH | SCROLLBACK_PATCH
st.c:2324:	#if !COLUMNS_REFLOW_PATCH
st.c:2326:	#endif // COLUMNS_REFLOW_PATCH
st.c:2388:				#if !COLUMNS_REFLOW_PATCH
st.c:2393:				#endif // COLUMNS_REFLOW_PATCH
st.c:2398:				#if COLUMNS_REFLOW_PATCH
st.c:2415:				#endif // COLUMNS_REFLOW_PATCH
st.c:2417:				#if COLUMNS_REFLOW_PATCH
st.c:2420:				#endif // COLUMNS_REFLOW_PATCH
st.c:2472:	#if COLUMNS_REFLOW_PATCH
st.c:2476:	#endif // COLUMNS_REFLOW_PATCH
st.c:2577:			#if COLUMNS_REFLOW_PATCH
st.c:2581:			#endif // COLUMNS_REFLOW_PATCH
st.c:2583:				#if COLUMNS_REFLOW_PATCH
st.c:2588:				#endif // COLUMNS_REFLOW_PATCH
st.c:2592:			#if COLUMNS_REFLOW_PATCH
st.c:2600:			#endif // COLUMNS_REFLOW_PATCH
st.c:2603:			#if COLUMNS_REFLOW_PATCH
st.c:2607:			#endif // COLUMNS_REFLOW_PATCH
st.c:2610:			#if COLUMNS_REFLOW_PATCH
st.c:2632:			#endif // COLUMNS_REFLOW_PATCH
st.c:2646:			#if COLUMNS_REFLOW_PATCH
st.c:2650:			#endif // COLUMNS_REFLOW_PATCH
st.c:2653:			#if COLUMNS_REFLOW_PATCH
st.c:2657:			#endif // COLUMNS_REFLOW_PATCH
st.c:2660:			#if COLUMNS_REFLOW_PATCH
st.c:2664:			#endif // COLUMNS_REFLOW_PATCH
st.c:2670:		#if COLUMNS_REFLOW_PATCH
st.c:2679:		#endif // COLUMNS_REFLOW_PATCH | SIXEL_PATCH | SCROLLBACK_PATCH
st.c:2683:		#if COLUMNS_REFLOW_PATCH
st.c:2705:		#if COLUMNS_REFLOW_PATCH
st.c:2715:		#endif // COLUMNS_REFLOW_PATCH
st.c:2737:			#if COLUMNS_REFLOW_PATCH
st.c:2745:			#endif // COLUMNS_REFLOW_PATCH
st.c:2884:	#if COLUMNS_REFLOW_PATCH
st.c:2889:	#endif // COLUMNS_REFLOW_PATCH
st.c:2893:		#if COLUMNS_REFLOW_PATCH
st.c:2896:		#endif // COLUMNS_REFLOW_PATCH
st.c:2901:				#if COLUMNS_REFLOW_PATCH && CSI_22_23_PATCH
st.c:2903:				#elif COLUMNS_REFLOW_PATCH
st.c:2909:				#endif // COLUMNS_REFLOW_PATCH | CSI_22_23_PATCH
st.c:2910:				#if COLUMNS_REFLOW_PATCH
st.c:2914:				#endif // COLUMNS_REFLOW_PATCH
st.c:2919:				#if COLUMNS_REFLOW_PATCH
st.c:2923:				#endif // COLUMNS_REFLOW_PATCH
st.c:2927:				#if COLUMNS_REFLOW_PATCH && CSI_22_23_PATCH
st.c:2929:				#elif COLUMNS_REFLOW_PATCH
st.c:2935:				#endif // COLUMNS_REFLOW_PATCH | CSI_22_23_PATCH
st.c:2939:				#if COLUMNS_REFLOW_PATCH
st.c:2943:				#endif // COLUMNS_REFLOW_PATCH
st.c:2994:			#if COLUMNS_REFLOW_PATCH
st.c:2998:			#endif // COLUMNS_REFLOW_PATCH
st.c:3008:				#if COLUMNS_REFLOW_PATCH
st.c:3012:				#endif // COLUMNS_REFLOW_PATCH
st.c:3030:		#if COLUMNS_REFLOW_PATCH && CSI_22_23_PATCH
st.c:3032:		#elif COLUMNS_REFLOW_PATCH
st.c:3068:				#if COLUMNS_REFLOW_PATCH
st.c:3072:				#endif // COLUMNS_REFLOW_PATCH
st.c:3105:	#if !COLUMNS_REFLOW_PATCH
st.c:3107:	#endif // COLUMNS_REFLOW_PATCH
st.c:3113:		#if !COLUMNS_REFLOW_PATCH
st.c:3115:		#endif // COLUMNS_REFLOW_PATCH
st.c:3118:		#if COLUMNS_REFLOW_PATCH
st.c:3120:		#endif // COLUMNS_REFLOW_PATCH
st.c:3123:		#if COLUMNS_REFLOW_PATCH
st.c:3127:		#endif // COLUMNS_REFLOW_PATCH
st.c:3213:#if COLUMNS_REFLOW_PATCH
st.c:3236:#endif // COLUMNS_REFLOW_PATCH
st.c:3468:			#if COLUMNS_REFLOW_PATCH
st.c:3474:			#endif // COLUMNS_REFLOW_PATCH | SCROLLBACK_PATCH
st.c:3487:			#if SCROLLBACK_PATCH && !COLUMNS_REFLOW_PATCH
st.c:3664:	#if COLUMNS_REFLOW_PATCH
st.c:3704:		#if COLUMNS_REFLOW_PATCH
st.c:3706:		#endif // COLUMNS_REFLOW_PATCH
st.c:3759:#if COLUMNS_REFLOW_PATCH
st.c:3997:		#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
st.c:4001:		#endif // SCROLLBACK_PATCH | COLUMNS_REFLOW_PATCH
patches.h:101:#define COLUMNS_REFLOW_PATCH 1
patches.def.h:89:#define COLUMNS_REFLOW_PATCH 0
config.def.h:393:	#if SCROLLBACK_PATCH || COLUMNS_REFLOW_PATCH
config.def.h:396:	#endif // SCROLLBACK_PATCH | COLUMNS_REFLOW_PATCH
patch/scrollback.c:6:	#if COLUMNS_REFLOW_PATCH
patch/scrollback.c:35:	#endif // COLUMNS_REFLOW_PATCH
patch/scrollback.c:47:	#if COLUMNS_REFLOW_PATCH
patch/scrollback.c:73:	#endif // COLUMNS_REFLOW_PATCH
patch/st_include.h:20:#if COLUMNS_REFLOW_PATCH
patch/st_include.h:23:#if SCROLLBACK_PATCH || SCROLLBACK_MOUSE_PATCH || SCROLLBACK_MOUSE_ALTSCREEN_PATCH || COLUMNS_REFLOW_PATCH
patch/scrollback.h:5:#if COLUMNS_REFLOW_PATCH
patch/scrollback.h:15:#endif // COLUMNS_REFLOW_PATCH
patch/st_include.c:20:#if COLUMNS_REFLOW_PATCH
patch/st_include.c:23:#if SCROLLBACK_PATCH || SCROLLBACK_MOUSE_PATCH || SCROLLBACK_MOUSE_ALTSCREEN_PATCH || COLUMNS_REFLOW_PATCH

There are bound to be compatibility issues between reflow and other patches. Would be good to hear if anyone else has any concerns before merging this into main st-flexipatch.

There are bound to be compatibility issues between reflow and other patches. Would be good to hear if anyone else has any concerns before merging this into main st-flexipatch.

I have concerns because there are bugs in the vanilla st (and st-flexipatch too) that break the reflow patch when there are wide glyph characters in the line buffer. I'll explain them in the next post, but before that, should we have our own repository for the reflow patch (st-flexipatch-reflow or something)? In there we'd have the reflow patch fully integrated (you can't disable it) and patches that are compatible with it, and over time we'll add more of them. Eventually, those two st-flexipatch repos will grow apart and cause maintenance issues too, but it would be a better solution than using branches, I think.

Since the reflow patch is very invasive, I guess I'll completely integrate it to my fork and maintain it for personal use. People are free to use it and can make PRs based on it. I'll be including changes from this repo to that fork from time to time I guess.

Would that be okay? @bakkeby