Hi Eli, Here's a 3rd version of the patch. Please, ignore documentation, which I'll update later, and take a look at the code itself. > Like I said earlier: I think it would be better to have the tooltip > text in a separate property, not as part of the 'display' property > spec. > > Also, I don't see a need for recording the positions in the glyph_row > structure, because finding the glyph that corresponds to buffer/string > text with that special property is easy enough. Done. The code in the patch goes through glyphs of the row under a mouse pointer, finds an object that generated the glyph (glyph->object, which can be a buffer or a string) and checks if left-fringe-help/right-fringe-help text properties are defined. Strings from the properties are then displayed as tooltips. This only works for properties of visible text that has glyphs generated for it. Properties coming from invisible text and zero-length overlays are not represented as glyphs as much I can see from the code. Here are some code examples: ;;; tooltips will be shown in the examples below: (insert (propertize "foo" 'left-fringe-help "left tooltip")) (insert (propertize "foo" 'right-fringe-help "right tooltip")) (overlay-put (make-overlay (point) (1+ (point))) 'right-fringe-help "right tooltip") (overlay-put (make-overlay (point) (1+ (point))) 'after-string (propertize "lll" 'left-fringe-help "left tooltip")) (overlay-put (make-overlay (point) (1+ (point))) 'after-string (propertize "rrr" 'right-fringe-help "right tooltip")) ;;; Tooltips will NOT be shown (insert (propertize "foo" 'display '(left-fringe left-arrow warning) 'left-fringe-help "left tooltip")) (insert (propertize "foo" 'display '(right-fringe left-arrow warning) 'right-fringe-help "right tooltip")) (insert (propertize "foo" 'left-fringe-help "left tooltip")) (insert (propertize "foo" 'right-fringe-help "right tooltip")) (overlay-put (make-overlay 1 2) 'before-string (propertize "x" 'left-fringe-help "left tooltip" 'display '(left-fringe right-arrow warning))) So this is a partial solution. If you're fine with the general approach, we can do this in step-by-step fashion. I'll fix the documentation and provide a final version of this implementation, and then think about what to do about invisible text. Thanks! -- Regards, Vladimir Kazanov