Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Do BufEnter for directories. #1375

Closed
wants to merge 1 commit into from
Closed

Conversation

justinmk
Copy link
Contributor

Abuse NOTDONE to give some nuance to the return value of readfile(), so
that open_buffer() can distinguish between "general failure" and "failed
because the path is a directory".

Before this change, Vim already creates a new buffer when a directory
is edited. So there's no reason it should not raise BufEnter, that was
an implementation detail of readfile().

Most of the changes in this commit merely preserve the old semantics.
The "implicit" change that we actually are interested in, is this line
in open_buffer(), where &retval being non-FAIL allows EVENT_BUFENTER
to be applied:

apply_autocmds_retval(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf, &retval);

Closes #1353

Abuse NOTDONE to give some nuance to the return value of readfile(), so
that open_buffer() can distinguish between "general failure" and "failed
because the path is a directory".

Before this change, Vim *already* creates a new buffer when a directory
is edited. So there's no reason it should not raise BufEnter, that was
an implementation detail of readfile().

Most of the changes in this commit merely preserve the old semantics.
The "implicit" change that we actually are interested in, is this line
in `open_buffer()`, where `&retval` being non-FAIL allows EVENT_BUFENTER
to be applied:

    apply_autocmds_retval(EVENT_BUFENTER, NULL, NULL, FALSE, curbuf, &retval);

Closes vim#1353
@brammool brammool closed this in e13b9af Jan 13, 2017
@justinmk justinmk deleted the dir-bufenter branch January 14, 2017 11:17
junegunn pushed a commit to junegunn/fzf that referenced this pull request Jan 14, 2017
Later versions of Vim/Nvim handle `:edit <dir>` inside try-catch.

vim/vim@e13b9af
vim/vim#1375
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 21, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 21, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 21, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 21, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 22, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 22, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 22, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
justinmk added a commit to justinmk/neovim that referenced this pull request Mar 23, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim/vim#1375,
            closes vim/vim#1353)

vim/vim@e13b9af
desvp pushed a commit to desvp/vim that referenced this pull request May 30, 2017
Problem:    When opening a buffer on a directory and inside a try/catch then
            the BufEnter event is not triggered.
Solution:   Return NOTDONE from readfile() for a directory and deal with the
            three possible return values. (Justin M. Keyes, closes vim#1375,
            closes vim#1353)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant