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

[RDY] Man and Help TOC #5169

Closed
wants to merge 16 commits into
base: master
from

Conversation

Projects
None yet
5 participants
@tweekmonster
Member

tweekmonster commented Aug 5, 2016

Adds a TOC using the location list for :Man and :help

let b:man_toc = []
for lnum in range(1, line('$'))
let text = getline(lnum)
if text =~# '^\%(\%(\S.*\)\=\S\|\%1l.*\|\s\{3\}\S.*\)$'

This comment has been minimized.

@nhooyr

nhooyr Aug 5, 2016

Contributor

I'm gonna update the syntax file to change the last regex there to instead of \s, just use . So it looks like (replace_with space)_{3}\S.*.

This comment has been minimized.

@tweekmonster

tweekmonster Aug 5, 2016

Member

I originally used syntax for finding the lines because I was afraid of syntax changes, but it turned out to be pretty slow on large help files.

Was there a problem with tabs being matched?

This comment has been minimized.

@nhooyr

nhooyr Aug 5, 2016

Contributor

No problems with tabs being matched but man sub headings are always prefixed with 3 spaces, not 3 whitespace characters. Just makes more sense.

Happening in #5170

@marvim marvim added the RFC label Aug 5, 2016

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Aug 5, 2016

@nhooyr I have another potential PR after this one is merged:

autocmd BufEnter man://*
  \ if exists('b:man_toc') && line('$') == 1 && getline(1) =~# '^\s*$' |
  \   unlet! b:manwidth |
  \   execute 'silent Man' matchstr(expand('<amatch>'), 'man://\zs.*') |
  \ endif

That would allow the man page to reload if you run :e or restore from a session. You see anything wrong with it?

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 5, 2016

@tweekmonster Great idea!
I'd change it to this

autocmd BufEnter man://*
      \ if exists('b:manwidth') && line('$') == 1 && getline(1) ==# '' |
      \   unlet b:manwidth |
      \   silent execute 'Man' matchstr(expand('<amatch>'), 'man://\zs.*') |
      \ endif

Instead of checking if b:man_toc exists, check if b:manwidth exists. Both variables work, but since we're already unsetting b:manwidth down there, it's more consistent. Additionally,unlet does not need to have a !.

I think it is sufficient for getline(1) to just match an empty string. I also moved silent in front of execute but thats just personal preference because it gets syntax highlighted in vim. Easier to read for me.

@jamessan

This comment has been minimized.

Member

jamessan commented Aug 5, 2016

getline(1) ==# ''

Or empty(getline(1)).

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Aug 5, 2016

I always use unlet! for sanity. Same reason for checking line('$') in the off chance a blank line is inserted at the top but the buffer has other content.

Actually, sanity is the same reason for the silent placement. From my understanding things like keepjumps, keepmarks, sandbox, affect the command immediately to the right of it. I don't think that's the case for silent, but whatevs. I'm paranoid.

If it works for you without any issues for you, you should include the autocmd in your general fixes PR. I tested b:man_toc since it's created after filetype is set and wouldn't have a chance of becoming recursive with the :Man command. (again, paranoid).

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Aug 5, 2016

My mistake, I thought #5171 was misc/general fixes.

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 5, 2016

I included the autocmd in #5168.

edit: Nevermind, I've removed it, lets do it in a later PR.

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Aug 6, 2016

I think the only debatable thing about this PR is 4dd409e. Anyone have thoughts on changing ftplugin/qf.vim to hide the file name and line number in the location lists for the TOC?

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 6, 2016

I'm changing how man.vim works a bit in #5168 to make that autocmd work with sessions (b:manwidth is unset when restoring from a session) and address #5172. I think this PR will need a few additions to work with my latest changes.

@tweekmonster tweekmonster force-pushed the tweekmonster:help-toc branch 2 times, most recently from 2a9cc65 to c1233c4 Aug 7, 2016

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 26, 2016

If #5249 is merged before this, I think this PR will need to be updated slightly again.

let b:man_toc = []
for lnum in range(1, line('$'))
let text = getline(lnum)
if text =~# '^\%(\%(\S.*\)\=\S\|\%1l.*\| \{3\}\S.*\)$'

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Nitpick but I think \%1l.* should be first in that regex.

edit: In fact, I think it's unnecessary, the first regex will get the title. The second regex is only used in the syntax file to give a unique highlight to the title.

edit2: I've changed the manSectionHeading regexp to just ^\S.*$ in #5249. So this line should just be

 if text =~# '^\%( \{3\}\)\=\S.*$'

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Actually, do we even need to add the title? Seems redundant. You can just press gg if you want to go to the top. It'll always get you to the title because all the blank lines (if any) at the top are removed.

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

It's mainly to have a complete TOC. No other reason.

This comment has been minimized.

@nhooyr

nhooyr Aug 28, 2016

Contributor

Gotcha. Still, I think we should ignore the title. We should also ignore the last line in a manpage. The date has no reason to be on the TOC.

for lnum in range(1, line('$'))
let text = getline(lnum)
if text =~# '^\%(\%(\S.*\)\=\S\|\%1l.*\| \{3\}\S.*\)$'
let text = substitute(getline(lnum), '\s\+', ' ', 'g')

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Why do we need this?

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

There were cases of right-aligned text or "table" column headers on some lines. It would make the horizontal scrolling long.

This comment has been minimized.

@nhooyr

nhooyr Aug 28, 2016

Contributor

IIRC, whitespace is trimmed in the location list automatically so that isn't necessary.

I understand now.

Oo, if you ignore the title and last line, are there any other right aligned headers?

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

That definitely wasn't the case when I was testing this.

This comment has been minimized.

@nhooyr

nhooyr Aug 28, 2016

Contributor

Yea, I edited my comment.

let lnum += 1
let add_text = matchstr(text, '.\{-}\ze\s*\*')
endif
elseif text =~# '^[A-Z][-A-Z .][-A-Z0-9 .()]*[ \t]\+\*'

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

The regexp for helpHeadline starts off with [-A-Z .]. Why is [A-Z] in front?

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

Because some lines start with non-[A-Z] characters and I felt the ones that I saw weren't good TOC entries.

let add_text = matchstr(text, '.\{-}\ze\s*\*')
elseif text =~# '^\u.*\s\+\~$'
let add_text = matchstr(text, '.\{-}\ze\s\+\~$')
elseif lnum == 1

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Same issue as the titles in manpages for this.

if !empty(add_text) && last_added != lnum
let last_added = lnum
call add(b:help_toc, {'bufnr': bufnr('%'), 'lnum': lnum,
\ 'filename': 'butt.txt',

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Why is that needed?

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

Hahahaha, I usually don't let these slip. I use butt, fart, etc. as placeholder dummy testing text/vars because they're always unique in my sources. I'll have to recheck.

This comment has been minimized.

@nhooyr

nhooyr Aug 28, 2016

Contributor

Haha. I usually use lol, foo, rekt and some more as mine. 👍

let last_added = lnum
call add(b:help_toc, {'bufnr': bufnr('%'), 'lnum': lnum,
\ 'filename': 'butt.txt',
\ 'text': substitute(add_text, '\s\+', ' ', 'g')})

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Why do we need this?

autocmd Syntax <buffer>
\ if exists('w:quickfix_title') && w:quickfix_title =~# '^:\%(Man\|Help\) TOC$' |
\ syntax match qfHideTOC "^.*| " conceal containedin=ALL |
\ setlocal concealcursor=nvi |

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Why not set this to nvic? Doesn't make sense for the file name to pop up if I search the list.

\ if exists('w:quickfix_title') && w:quickfix_title =~# '^:\%(Man\|Help\) TOC$' |
\ syntax match qfHideTOC "^.*| " conceal containedin=ALL |
\ setlocal concealcursor=nvi |
\ setlocal conceallevel=2 |

This comment has been minimized.

@nhooyr

nhooyr Aug 26, 2016

Contributor

Is there any reason why we use level 2 instead of 3 here?

This comment has been minimized.

@tweekmonster

tweekmonster Aug 28, 2016

Member

concealcursor=nvi and conceallevel=2 are my goto settings. No other reason.

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 26, 2016

I was testing this and I noticed some weird wrapping in the location list.

screen shot 2016-08-26 at 12 11 03 am

Not sure what's causing this.

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Aug 28, 2016

@nhooyr replied to your comments. I'll revisit this when I find some time.

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Aug 28, 2016

One more issue I found, you need a call to create the TOC when neovim is started as $MANPAGER. Just add it in the part of the ftplugin that checks if neovim is starting.

@nhooyr

This comment has been minimized.

Contributor

nhooyr commented Dec 30, 2016

@tweekmonster may I continue this PR? I've got a lot of free time right now :P

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Dec 30, 2016

Oh for sure! I feel bad that I forgot about it. You should be able to pull from my fork to continue it, but it might be easier to start over since this is way outdated now. Is there something I should do besides closing this PR?

Just a suggestion: Something I've been toying with recently is altering the quickfix buffer to condense the location list. The filename is irrelevant and simply using syntax to conceal it is annoying because it still affects cursor movement. The TOC might be a good place to do something like this.

justinmk added a commit that referenced this pull request Mar 1, 2017

doc/api.txt: Merge with api-funcs.txt
It's important that users have a single, easy-to-remember place for
reading about the API. So this commit changes gen_api_vimdoc.py so that
the generated section is appended to api.txt instead of creating
a separate document.

Also remove the section numbering and ToC: it's a maintenance cost, and
it will be unnecessary when #5169 is integrated.

@tweekmonster tweekmonster self-assigned this Mar 2, 2017

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Mar 2, 2017

I'm going to pick this back up in the near future if @nhooyr has no objections.

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Mar 22, 2017

We could add this is a global concept.

Dammit! I actually started on a autoload/toc.vim as a thin wrapper to setloclist() that formatted the qf buffer. I heard you in the back of my mind saying "ur over thinking this bro", so I scrapped it because I couldn't think of other uses in the debate I had with you in my mind.

@justinmk

This comment has been minimized.

Member

justinmk commented Mar 22, 2017

Dammit! I actually started on a autoload/toc.vim as a thin wrapper to setloclist() that formatted the qf buffer.

Re "global concept", I mean having the concept be something that's provided differently in different filetypes. TOC is the particular application of "outline mode" for man and help buffers, but probably not for code files (I would guess tags/LSP/etc. would be used there instead).

So the "concept" is exposed as a mapping, I guess <M-]>. Similar to how gf works differently in different filetypes, but the concept is a core vim concept.

                        *META-]*
<M-]>              Show outline.
@@ -47,5 +48,7 @@ if get(g:, 'ft_man_folding_enable', 0)
setlocal foldnestmax=1
endif
autocmd BufWinEnter <buffer> call man#create_toc()

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

Why is this still happening on BufWinEnter?

This comment has been minimized.

@nhooyr

nhooyr Mar 23, 2017

Contributor

That should definitely be removed, as man#create_doc was removed.

@@ -18,6 +18,11 @@ highlight default link manOptionDesc Constant
highlight default link manReference PreProc
highlight default link manSubHeading Function
if &filetype != 'man'
" Loaded by the location list TOC
finish

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

Is this because calling man#show_toc() triggers some other code that loads ft=man? Or why?

This comment has been minimized.

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

This is for highlighting the qf window? That seems to really complicate the implementation. Is it really needed?

This comment has been minimized.

@tweekmonster

tweekmonster Mar 23, 2017

Member

Is it that complicated, though? It's not really doing anything specific for the qf window. It's stopping it before executing script that's specific to the man plugin. It actually makes the syntax loadable by other syntaxes.

Re: highlight in TOC, I'm a pretty strong proponent of notion that "color is information". In Vim's help, the only defined sections are lines preceded by a === line. Meaningful subsections either have all caps, or end with ~. There's some checks for the lines ending in ~ because it's sometimes used for table headings or code examples. So, there's going to be false positives. I felt that the highlighting made it more clear as to why a line is in the TOC in this case.

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

It actually makes the syntax loadable by other syntaxes.

Let's just change the comment then. Currently it specifically says "Loaded by the location list TOC" which is confusing.

" Some other filetype is using syntax/man.vim
@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Mar 23, 2017

Re "global concept"

Ah okay. So you're saying like an unofficial standard? As in <M-]> should open up tagbar?

tweekmonster added some commits Mar 23, 2017

@@ -544,6 +544,8 @@ CTRL-T Jump back to the location that the manpage was
opened from.
q :quit if invoked as $MANPAGER, otherwise :close.
To see the table of contents, type <M-]>.

This comment has been minimized.

@tweekmonster

tweekmonster Mar 23, 2017

Member

Any suggestions on how to display this. The other keys are displayed as CTRL-] opposed to <C-]>. But,META-] and ALT-] doesn't look right and doesn't highlight.

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

We should make META-foo and ALT-foo highlight. In runtime/syntax/help.vim:

syn match helpSpecial           "CTRL-."
syn match helpSpecial           "META-."
syn match helpSpecial           "ALT-."

This comment has been minimized.

@tweekmonster

tweekmonster Mar 23, 2017

Member

Which is more accurate/helpful to use in the docs? META- or ALT-? I feel like ALT- should be used because it's actually on the keyboard. But, I don't know enough to know if META- is always the same as ALT-. My vague recollection is that they aren't always the same.

This comment has been minimized.

@tweekmonster

tweekmonster Mar 23, 2017

Member

Also, should I go ahead and add highlights for META-Break, etc?

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

For the man.vim case, this should be listed like the other mappings above.

META-]              Show the manpage outline in the |location-list|. 

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

Also, should I go ahead and add highlights for META-Break, etc?

Up to you, I'd say wait until we actually need it.

@justinmk

This comment has been minimized.

Member

justinmk commented Mar 23, 2017

Ah okay. So you're saying like an unofficial standard? As in <M-]> should open up tagbar?

Yes. Not in this PR, but eventually. It'll be just as official as <C-]>, :help include-search, and all other built-in concepts :)

let &syntax = getbufvar(bufnr, '&syntax')
endfunction

This comment has been minimized.

@justinmk

justinmk Mar 23, 2017

Member

double newlines is inconsistent with the rest of the project

This comment has been minimized.

@tweekmonster

tweekmonster Mar 23, 2017

Member

It's a habit I have from adhering to PEP8. I'll fix it.

@justinmk justinmk added this to the 0.2.1 milestone Apr 29, 2017

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented Apr 30, 2017

@justinmk It'd be cool if this made it into the release. Is there something outstanding that I'm forgetting?

@justinmk

This comment has been minimized.

Member

justinmk commented Apr 30, 2017

I was hemming and hawing about the mapping. I suppose we can change it later..

@justinmk

This comment has been minimized.

Member

justinmk commented May 1, 2017

@tweekmonster I pulled this down locally, the location list is coming up empty in help pages and man pages:

nvim -u NORC
:h h
<M-]>

Are you seeing differently?

justinmk added a commit to justinmk/neovim that referenced this pull request May 1, 2017

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented May 1, 2017

@justinmk Yeah it's apparently coming up blank now. Investigating.

@tweekmonster

This comment has been minimized.

Member

tweekmonster commented May 1, 2017

@justinmk It's fixed now. Apparently setting {what} now follows the rules of {action} for some great reason.

justinmk added a commit to justinmk/neovim that referenced this pull request May 1, 2017

@justinmk

This comment has been minimized.

Member

justinmk commented May 1, 2017

Merged in #6632. Thanks @tweekmonster !

@justinmk justinmk closed this May 1, 2017

justinmk added a commit to justinmk/neovim that referenced this pull request May 1, 2017

NVIM v0.2.0
FEATURES:
    bc4a2e1 help, man.vim: "outline" (TOC) feature neovim#5169
    58422f1 'guicursor' works in the TUI (and sends info to UIs) neovim#6423
    129f107 api: nvim_get_mode() neovim#6247
    0b59f98 api/ui: externalize tabline neovim#6583
    bc6d868 'listchars': `Whitespace` highlight group neovim#6367
    6afa7d6 writefile() obeys 'fsync' option neovim#6427
    c60e409 eval.c refactor (also improves some error messages) neovim#5119
    9d200cd getcompletion("cmdline") neovim#6376
    2ea7bfc terminal: Support extra arguments in 'shell'. neovim#4504
    bf51102 DirChanged autocmd neovim#5928 neovim#6262
    1743df8 'cpoptions': "_" flag to toggle `cw` behaviour neovim#6235
    22337b1 CTRL-R omits trailing ^M when pasting to cmdline neovim#6137
    0e44916 :edit allows unescaped spaces in filename neovim#6119
    abdbfd2 eval: Add id() function and make printf("%p") useful neovim#6095
    bdfa147 findfile(), :find, gf work in :terminal. neovim#6009
    2f38ed1 providers: Disable if `g:loaded_*` exists.
    b5560a6 setpos() can set lowercase marks in other buffers neovim#5753
    7c513d6 Throttle :! output, pulse "..." message. neovim#5396
    d2e8c76 v:exiting neovim#5651

    :terminal improvements neovim#6185 neovim#6142
      - cursor keeps position after leaving insert-mode.
      - 4ceec30 Follows output only if cursor is at end of buffer.
      - e7bbd35 new option: 'scrollback'
      - fedb844 quasi-support for undo and 'modifiable'
      - b45ddf7 disables 'list' by default
      - disables 'relativenumber' by default

    :help now contains full API documentation at `:help api`.

    man.vim saw numerous improvements.

    Windows support:
      - Windows is no longer "experimental", it is fully supported.
      - Windows package includes a GUI, curl.exe and other utilities.

    "Vim 8" features: partials, lambdas, packages.

FIXES:
    12fc1de ops: fix i<c-r> with multi-byte text neovim#6524
    dd391bf Windows: system() and friends neovim#6497
    13352c0 Windows: os_get_hostname() neovim#6413
    16babc6 tui: Less-noisy mouse seqs neovim#6411
    3a9dd13 (vim bug) folding edge-cases  neovim#6207
    f6946c6 job-control: set CLOEXEC on pty processes. neovim#5986
    d1afd43 rplugin: Call s:LoadRemotePlugins() on startup.
    1215084 backtick-expansion works with `shell=fish` neovim#6224
    e32ec03 tui: Improved behavior after resize. neovim#6202
    86c2adc edit.c: CTRL-SPC: Insert previously-inserted text. neovim#6090
    c318d8e b:changedtick now follows VimL rules neovim#6112
    34e24cb terminal: Initialize colors in reverse order neovim#6160
    e889917 undo: Don't set b_u_curhead in ex_undojoin() neovim#5869
    d25649f undo: :earlier, g-: Set b_u_seq_cur correctly. (neovim#6016)
    043d8ba 'Visual-mode put from @. register' neovim#5782
    42c922b open_buffer(): Do `BufEnter` for directories.
    50d0d89 inccommand: Preview :sub commands only after delimiter neovim#5932
    1420e10 CheckHealth improvements neovim#5519
    c8d5e92 jobstart(): Return -1 if cmd is not executable. neovim#5671

CHANGES:
    NVIM_TUI_ENABLE_CURSOR_SHAPE was removed. Use 'guicursor' instead.
        See https://github.com/neovim/neovim/wiki/Following-HEAD#20170402

    81525dc 'mouse=a' is no longer the default. (This will probably
                 change again after it is improved.) neovim#6022

    0c1f783 defaults: 'showcmd', 'belloff', 'ruler' neovim#6087
    eb0e94f api: {get,set}_option update local options as appropriate neovim#6405
    bdcb2a3 "Reading from stdin..." message was removed. neovim#6298

@justinmk justinmk referenced this pull request May 1, 2017

Merged

NVIM v0.2.0 #6634

justinmk added a commit to justinmk/neovim that referenced this pull request May 1, 2017

NVIM v0.2.0
FEATURES:
    bc4a2e1 help, man.vim: "outline" (TOC) feature neovim#5169
    58422f1 'guicursor' works in the TUI (and sends info to UIs) neovim#6423
    129f107 api: nvim_get_mode() neovim#6247
    0b59f98 api/ui: externalize tabline neovim#6583
    bc6d868 'listchars': `Whitespace` highlight group neovim#6367
    6afa7d6 writefile() obeys 'fsync' option neovim#6427
    c60e409 eval.c refactor (also improves some error messages) neovim#5119
    9d200cd getcompletion("cmdline") neovim#6376
    2ea7bfc terminal: Support extra arguments in 'shell'. neovim#4504
    bf51102 DirChanged autocmd neovim#5928 neovim#6262
    1743df8 'cpoptions': "_" flag to toggle `cw` behaviour neovim#6235
    22337b1 CTRL-R omits trailing ^M when pasting to cmdline neovim#6137
    0e44916 :edit allows unescaped spaces in filename neovim#6119
    abdbfd2 eval: Add id() function and make printf("%p") useful neovim#6095
    bdfa147 findfile(), :find, gf work in :terminal. neovim#6009
    2f38ed1 providers: Disable if `g:loaded_*` exists.
    b5560a6 setpos() can set lowercase marks in other buffers neovim#5753
    7c513d6 Throttle :! output, pulse "..." message. neovim#5396
    d2e8c76 v:exiting neovim#5651

    :terminal improvements neovim#6185 neovim#6142
      - cursor keeps position after leaving insert-mode.
      - 4ceec30 Follows output only if cursor is at end of buffer.
      - e7bbd35 new option: 'scrollback'
      - fedb844 quasi-support for undo and 'modifiable'
      - b45ddf7 disables 'list' by default
      - disables 'relativenumber' by default

    :help now contains full API documentation at `:help api`.

    man.vim saw numerous improvements.

    Windows support:
      - Windows is no longer "experimental", it is fully supported.
      - Windows package includes a GUI, curl.exe and other utilities.

    "Vim 8" features: partials, lambdas.

SECURITY FIXES:
    CVE-2017-5953 CVE-2017-6349 CVE-2017-6350 neovim#6485

CHANGES:
    NVIM_TUI_ENABLE_CURSOR_SHAPE was removed. Use 'guicursor' instead.
        See https://github.com/neovim/neovim/wiki/Following-HEAD#20170402

    81525dc 'mouse=a' is no longer the default. (This will probably
                 change again after it is improved.) neovim#6022

    0c1f783 defaults: 'showcmd', 'belloff', 'ruler' neovim#6087
    eb0e94f api: {get,set}_option update local options as appropriate neovim#6405
    bdcb2a3 "Reading from stdin..." message was removed. neovim#6298

FIXES:
    12fc1de ops: fix i<c-r> with multi-byte text neovim#6524
    dd391bf Windows: system() and friends neovim#6497
    13352c0 Windows: os_get_hostname() neovim#6413
    16babc6 tui: Less-noisy mouse seqs neovim#6411
    3a9dd13 (vim bug) folding edge-cases  neovim#6207
    f6946c6 job-control: set CLOEXEC on pty processes. neovim#5986
    d1afd43 rplugin: Call s:LoadRemotePlugins() on startup.
    1215084 backtick-expansion works with `shell=fish` neovim#6224
    e32ec03 tui: Improved behavior after resize. neovim#6202
    86c2adc edit.c: CTRL-SPC: Insert previously-inserted text. neovim#6090
    c318d8e b:changedtick now follows VimL rules neovim#6112
    34e24cb terminal: Initialize colors in reverse order neovim#6160
    e889917 undo: Don't set b_u_curhead in ex_undojoin() neovim#5869
    d25649f undo: :earlier, g-: Set b_u_seq_cur correctly. (neovim#6016)
    043d8ba 'Visual-mode put from @. register' neovim#5782
    42c922b open_buffer(): Do `BufEnter` for directories.
    50d0d89 inccommand: Preview :sub commands only after delimiter neovim#5932
    1420e10 CheckHealth improvements neovim#5519
    c8d5e92 jobstart(): Return -1 if cmd is not executable. neovim#5671

justinmk added a commit to justinmk/neovim that referenced this pull request May 1, 2017

NVIM v0.2.0
FEATURES:
    bc4a2e1 help, man.vim: "outline" (TOC) feature neovim#5169
    58422f1 'guicursor' works in the TUI (and sends info to UIs) neovim#6423
    129f107 api: nvim_get_mode() neovim#6247
    0b59f98 api/ui: externalize tabline neovim#6583
    bc6d868 'listchars': `Whitespace` highlight group neovim#6367
    6afa7d6 writefile() obeys 'fsync' option neovim#6427
    c60e409 eval.c refactor (also improves some error messages) neovim#5119
    9d200cd getcompletion("cmdline") neovim#6376
    2ea7bfc terminal: Support extra arguments in 'shell'. neovim#4504
    bf51102 DirChanged autocmd neovim#5928 neovim#6262
    1743df8 'cpoptions': "_" flag to toggle `cw` behaviour neovim#6235
    22337b1 CTRL-R omits trailing ^M when pasting to cmdline neovim#6137
    0e44916 :edit allows unescaped spaces in filename neovim#6119
    abdbfd2 eval: Add id() function and make printf("%p") useful neovim#6095
    bdfa147 findfile(), :find, gf work in :terminal. neovim#6009
    2f38ed1 providers: Disable if `g:loaded_*` exists.
    b5560a6 setpos() can set lowercase marks in other buffers neovim#5753
    7c513d6 Throttle :! output, pulse "..." message. neovim#5396
    d2e8c76 v:exiting neovim#5651

    :terminal improvements neovim#6185 neovim#6142
      - cursor keeps position after leaving insert-mode.
      - 4ceec30 Follows output only if cursor is at end of buffer.
      - e7bbd35 new option: 'scrollback'
      - fedb844 quasi-support for undo and 'modifiable'
      - b45ddf7 disables 'list' by default
      - disables 'relativenumber' by default

    :help now contains full API documentation at `:help api`.

    man.vim saw numerous improvements.

    Windows support:
      - Windows is no longer "experimental", it is fully supported.
      - Windows package includes a GUI, curl.exe and other utilities.

    "Vim 8" features: partials, lambdas.

SECURITY FIXES:
    CVE-2017-5953 CVE-2017-6349 CVE-2017-6350 neovim#6485

CHANGES:
    NVIM_TUI_ENABLE_CURSOR_SHAPE was removed. Use 'guicursor' instead.
        See https://github.com/neovim/neovim/wiki/Following-HEAD#20170402

    81525dc 'mouse=a' is no longer the default. (This will probably
                 change again after it is improved.) neovim#6022

    0c1f783 defaults: 'showcmd', 'belloff', 'ruler' neovim#6087
    eb0e94f api: {get,set}_option update local options as appropriate neovim#6405
    bdcb2a3 "Reading from stdin..." message was removed. neovim#6298

FIXES:
    12fc1de ops: fix i<c-r> with multi-byte text neovim#6524
    dd391bf Windows: system() and friends neovim#6497
    13352c0 Windows: os_get_hostname() neovim#6413
    16babc6 tui: Less-noisy mouse seqs neovim#6411
    3a9dd13 (vim bug) folding edge-cases  neovim#6207
    f6946c6 job-control: set CLOEXEC on pty processes. neovim#5986
    d1afd43 rplugin: Call s:LoadRemotePlugins() on startup.
    1215084 backtick-expansion works with `shell=fish` neovim#6224
    e32ec03 tui: Improved behavior after resize. neovim#6202
    86c2adc edit.c: CTRL-SPC: Insert previously-inserted text. neovim#6090
    c318d8e b:changedtick now follows VimL rules neovim#6112
    34e24cb terminal: Initialize colors in reverse order neovim#6160
    e889917 undo: Don't set b_u_curhead in ex_undojoin() neovim#5869
    d25649f undo: :earlier, g-: Set b_u_seq_cur correctly. (neovim#6016)
    043d8ba 'Visual-mode put from @. register' neovim#5782
    42c922b open_buffer(): Do `BufEnter` for directories.
    50d0d89 inccommand: Preview :sub commands only after delimiter neovim#5932
    1420e10 CheckHealth improvements neovim#5519
    c8d5e92 jobstart(): Return -1 if cmd is not executable. neovim#5671

@wsdjeg wsdjeg referenced this pull request Dec 16, 2017

Merged

[RFC] News #153

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment