alphapapa / org-sticky-header

Show off-screen Org heading at top of window
143 stars 9 forks source link

Jump to headings in path by clicking #18

Open technician77 opened 4 years ago

technician77 commented 4 years ago

First, thanks for this simple and yet very useful package. I have some ideas that you might think about:

Kind regards, tech77

alphapapa commented 4 years ago

First, thanks for this simple and yet very useful package.

You're welcome.

I have some ideas that you might think about:

  • The beginning of the first header is not always at the same positions which makes it jumpy and therefore unpleasant during scrolling.

The header is aligned with the position of its counterpart in the buffer, so deeper headings are indented to the right. You could make an option for that, but I think most users would leave it enabled.

  • I would like to customize the background colour.

The headings are fontified like in Org mode. You can adjust the face header-line to adjust the background color of header lines in general.

  • Ability to "mouse-1" the headers and jump to it

That could be useful in some cases. I guess you could do this by applying a keymap text property to the string shown in the header line.

technician77 commented 4 years ago

The header is aligned with the position of its counterpart in the buffer, so deeper headings are indented to the right. You could make an option for that, but I think most users would leave it enabled.

I imagine that makes sense if you leave org-sticky-header-full-path at nil, but when you use full it looks wrong during scrolling. Some web-pages also have such a tree that just "grows" to the right as deeper you go. image

The headings are fontified like in Org mode. You can adjust the face header-line to adjust the background color of header lines in general.

The idea was to have an independent option without being forced to change something else. I assume someone needs to add this to the code. Most likely not me since I lack any coding skills.

That could be useful in some cases. I guess you could do this by applying a keymap text property to the string shown in the header line.

I guess that went over my head. Let's just say I hope the "mouse-1" works magically someday.

Kind regards, tech77

alphapapa commented 4 years ago

Thanks for sharing the screenshot, that helps me understand much better. Looks like a very nice theme, by the way! Would you mind sharing the a screenshot of the whole Emacs displaying that config file? :)

I imagine that makes sense if you leave org-sticky-header-full-path at nil, but when you use full it looks wrong during scrolling.

Yeah, that's a good point. I use reversed for org-sticky-header-full-path, which means that the indented heading in the header matches up with the one in the buffer. But if you don't use the reversed format, it wouldn't look good.

Well, there is already an option for what prefix string to display before the header: org-sticky-header-prefix. You can set it to a custom string or nil.

Have you checked all the customization options? i.e. M-x customize-group RET org-sticky-header RET.

The headings are fontified like in Org mode. You can adjust the face header-line to adjust the background color of header lines in general.

The idea was to have an independent option without being forced to change something else. I assume someone needs to add this to the code. Most likely not me since I lack any coding skills.

I'm open to this idea, but we need to be more specific about how it would work. I could add an option for a face to apply to the header string, but setting that face would work the same way as setting the header-line face, so unless you really want this package's header line to be displayed differently than all other header lines, that wouldn't do much. And then there's the question of how the face should be applied relative to the Org heading faces and the existing header-line face. Which should take priority?

Exactly what change are you wanting to make to how the string is displayed? Background color, text color, font, etc?

I guess that went over my head. Let's just say I hope the "mouse-1" works magically someday.

I'll see what I can do...

alphapapa commented 4 years ago

Ok, I added that feature. Please let me know how it works for you.

technician77 commented 4 years ago

The theme is built-in. (load-theme 'tango-dark t) Dark, high contrast even for comments, colourful and no problem with any package. For some reason it seems to run under the radar. image

My mistake. I used (setq org-sticky-header-heading-star "📌:") instead of (setq org-sticky-header-prefix "📌: ") Now everything seems to be o.k. during scrolling.

During testing I saw that when using (setq org-sticky-header-full-path 'reversed) then (setq org-sticky-header-outline-path-separator " < ") seems to be ignored. It reverts to the default separator. Bug?

As someone who doesn't really know "how the magic works", I have difficulties seeing potential problems when making suggestions. As suggested by you I customized header-line and it turned out to be o.k. I feared it might cause problems but it turned out to be the opposite.

The mouse-1 implementation works. Would it be difficult to make it "see" where I click? Assume the header shows the full path and I click it on root it would take me to the root - like a web page.

whitemuu commented 4 years ago

There exists org-sticky-header-outline-path-reversed-separator

alphapapa commented 4 years ago

The mouse-1 implementation works. Would it be difficult to make it "see" where I click? Assume the header shows the full path and I click it on root it would take me to the root - like a web page.

Sorry for missing your question all this time.

I don't understand what you're asking here.

alphapapa commented 3 years ago

Looking at this again, I think I understand what you're asking for. I think that should be doable. I probably won't work on that idea soon, though.