I have the following autocmds to automatically open the quickfix window or the location list window after executing a quickfix command.

    augroup quickfix_window
        autocmd!
        autocmd QuickFixCmdPost [^l]* nested cwindow | setlocal nowrap | redraw!
        autocmd QuickFixCmdPost l* nested lwindow | setlocal nowrap | redraw!
    augroup END

It seems to work except with the `:lhelpgrep` command.

If I type `:lvim /autocmd/ %` to look for all the words matching `autocmd` inside the current buffer, the location list is populated with all the matches and the location list window is automatically opened (provided there are matches).
 
But If I type `:lh autocmd` to look for the word `autocmd` inside the help files, even though the command is run and the location list is populated with results, the location list window is not opened, I have to do it manually with `:lwindow`.

According to `:h QuickFixCmdPre`, `The pattern is matched against the command being run.`.

Here the command name is `:lh` which begins with the `l` character, so it should match the pattern `l*` in the 2nd autocmd.

If I replace `:lwindow` with `:lopen`, the previous command `:lh autocmd` raises the following error:

    Error detected while processing QuickFixCmdPost Auto commands for "l*":
    E776: No location list

It seems `:lh` populates the location list after the `QuickFixCmdPost` event, instead of before like I expected.  Is it normal?
Is there another way to make the location list window automatically opened after `:lh` has been run?

----------

Thanks to [Sato Katsura][1], I've realised that I was wrong, `:lh` does not populate the location list after the `QuickFixCmdPost` event, but before like it should.  
The problem is that `:lh` (contrary to `:lvim`) creates a help window to which the location list window is associated.  
And maybe when `:lwindow` is executed, I'm still in the original window (the one in which I type the command). But this window has no location list, which is why the autocmd doesn't work as expected.  
In other words, `:lwindow` is executed too soon, I need to find a way to delay its execution until the help window is entered.

----------

I think I found a workaround with:

        autocmd QuickFixCmdPost l* nested call timer_start(100, 'Lh_lwindow')

and:

    fu! Lh_lwindow(id) abort
        lwindow
        setlocal nowrap
        redraw!
    endfu

It delays the execution of the command `:lwindow` for 100ms. It seems to work.


  [1]: https://vi.stackexchange.com/questions/8327/how-to-automatically-open-the-location-list-window-after-using-the-lhelpgrep-co#comment13986_8327