summaryrefslogtreecommitdiffstats
path: root/2023/talks/overlay.md
diff options
context:
space:
mode:
Diffstat (limited to '2023/talks/overlay.md')
-rw-r--r--2023/talks/overlay.md111
1 files changed, 111 insertions, 0 deletions
diff --git a/2023/talks/overlay.md b/2023/talks/overlay.md
new file mode 100644
index 00000000..c8c6c4fe
--- /dev/null
+++ b/2023/talks/overlay.md
@@ -0,0 +1,111 @@
+[[!meta title="Improving compiler diagnostics with Overlays"]]
+[[!meta copyright="Copyright © 2023 Jeff Trull"]]
+[[!inline pages="internal(2023/info/overlay-nav)" raw="yes"]]
+
+<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
+<!-- You can manually edit this file to update the abstract, add links, etc. --->
+
+
+# Improving compiler diagnostics with Overlays
+Jeff Trull (he/him) - Pronunciation: rhymes with "hull" and "dull", IRC: jaafar, @jaafar@hachyderm.io
+
+[[!inline pages="internal(2023/info/overlay-before)" raw="yes"]]
+
+Overlays are a feature of Emacs that allow changing the
+appearance of text while preserving its contents. They play a prominent
+role in packages like org-mode, which uses them to hide or reveal custom
+properties and display inline images, and magit, which uses them to
+highlight diffs.
+
+The presenter will give a introduction to the features of overlays,
+demonstrating how to:
+
+- Create and use overlays in Emacs Lisp code
+- Query locations in an existing buffer to find out what overlays are
+present.
+
+He will then demonstrate a new compilation minor mode for improving the
+readability of error messages, using overlays to flexibly reformat portions
+of the compiler output under user control.
+
+
+# Discussion
+
+## Questions and answers
+
+- Q: How did you draw the underbraces and overbraces?
+ - A: TikZ, the greatest drawing tool ever :) See
+ <https://tex.stackexchange.com/a/128096/105203>. I went to some
+ effort to match up the colors, font, and background to Emacs. I
+ got quite close, I think.
+- Q: You've got a nice sounding keyboard. What kind is it?
+ - A: Sorry about that. It's an ErgoDox EZ
+- Q: Do you find that the "invasive" reformatting interferes with
+ navigation?
+ - A: A bit. You can't move your cursor into the not-real buffer
+ text (indentation). But the original text is still visible, so
+ that works fine.
+- Q: Can you show us the keybindings of your minor map for editing
+ overlays?
+ - A: It's C-c - and C-c + but you can change it.
+- Q:Your examples were with c++, have you experimented with any other
+ languages? Oh, thanks for the interesting talk by the way!
+ - A: Other languages don't have the same unpleasant behavior :) I
+ say this as a long time fan of C++. But it should be possible!
+- Q: Would it be possible to include overlays in the source file
+ itself. There are some language modes (Rust, for instance) that do
+ this.
+ - A: [someone else] Sounds like enriched-mode. [Jeff] I'm not
+ sure what this question means; it's the error messages that are
+ the big issue
+- Q: What are your plans for tspew in the future?
+ - A: Better future-proofing and more options for formatting
+- Q: What is your repository link <https://github.com/jefftrull> ?
+ - A: <https://github.com/jefftrull/tspew>
+- Q: What IDEs do C++ programmers use?  If not emacs?  How do they deal
+with these error messages?
+ - A: VSCode is quite popular, as well as CLion and also XCode. I think they simply display the error messages as is.
+- Q: Have you tried to use treesitter to parse the output?
+ - A: I think it wants to parse an entire buffer. If I could write a
+ grammar for a portion of the text and point it at that, that would be
+ great. I could have maybe made a tsit grammar if I could have applied it to a small bit of the output
+ - (not the speaker): ISTM that since you set up the syntax tables to recognize <> as parens/whatever that Emacs should be able to parse the effective lists as sexps, but I'm not an expert on that
+ - (not the speaker) ye it's true, often you want to select what the root source node type would be an AFAIK you cannot change it
+
+- Q: "org-mode, which uses them to hide or reveal custom properties" I thought they used buffer-invisibility-spec or something like that
+ - A: yes that's part of it
+ - do you know of they also use text properties. org code is usually pretty messy, so I don't know much about it
+ - A: org has been moving toward text properties but I think there is a flag that will use overlays instead (!). There's some controversy about performance that I will touch on in a bit
+ - Interesting, does that initiative predate the recent performance improvements by Stefan Monnier?
+ - A: I think so. They were known to be a problem for some time, but then that happened?
+- Q: Did you use, e.g. syntax-ppss to parse the depth using the syntax table?
+ - A: No I tried to though... maybe there's a better way
+
+## Notes and discussion
+
+- The org file containing the presentation is here:
+ <https://media.emacsconf.org/2023/emacsconf-2023-overlay--improving-compiler-diagnostics-with-overlays--jeff-trull.org>
+- Tony Aldon's Reddit post on visibility
+ <https://www.reddit.com/r/emacs/comments/t1r2wq/have_you_ever_wondered_how_orgmode_toggles_the/>
+- Overlay performance (maybe) fixed
+ <https://www.reddit.com/r/emacs/comments/yg4mvt/the_noverlay_branch_was_merged_to_master_this/>
+- I think I might need to change subed-waveform to use text properties instead of overlays or fix something else that I'm doing incorrectly, since the overlays get left behind when I kill text
+ - A: yeah you have to track them yourself
+- Can you put the overlay object in a text property to track it?
+ - A: I don't think you would mix properties and overlays in that manner. There are overlay search functions; people typically add a property that identifies them as theirs. or you can store references in a list or something
+- A: One of my reasons for doing this was frustration and people talking about how great VSCode was and I *knew* that Emacs was a good match for certain kinds of problems people don't even try to solve in IDEs
+- A: I actually edited this down I know it's still a lot of detail :)
+- This is really good!
+- Very impressive! And well explained. Thank you.
+- yeah try doing that in VSCode! yeah.
+- this is slick!
+- i'm not a fan of ligatures, but imho :: just begs for it
+ - Same, I want to see the actual thing that'll be given to the compiler/interpreter/whatever.
+- That was great, showing how relatively easy it is to extend Emacs with features like that.
+- From the speaker: yantar92: your help was much appreciated in the weeks I spent putting this together :)
+
+[[!inline pages="internal(2023/info/overlay-after)" raw="yes"]]
+
+[[!inline pages="internal(2023/info/overlay-nav)" raw="yes"]]
+
+