I think bendAfter has a lot of issues with spacing and collisions. You can easily customise a glissando though to take advantage of its more robust functionality.
Here's a basic attempt. Currently it has a fixed path shape but someone better in Scheme can help to make this more flexible.
#(define (path-gliss grob)
(if (ly:stencil? (ly:line-spanner::print grob))
(let* ((stencil (ly:line-spanner::print grob))
(X-ext (ly:stencil-extent stencil X))
(Y-ext (ly:stencil-extent stencil Y))
(width (interval-length X-ext))
(len (interval-length Y-ext)))
(ly:stencil-translate
(grob-interpret-markup grob
(markup
(#:path 0.2
(list (list 'moveto 0 0)
(list 'curveto 0 0 7 0 width len)))))
(cons (interval-start X-ext) (interval-start Y-ext))))
#f))
\relative c' {
\override Score.SpacingSpanner.shortest-duration-space = #8
\once\override Glissando #'bound-details = #'((right (0 . 0) (end-on-accidental . #f) (padding . 2)) (left (0 . 0) (padding . 1.5)))
\once\override Glissando #'stencil = #path-gliss
c2\glissando e f\glissando g'
}