Skip to content

Commit b313bcc

Browse files
committed
Start newsletter#11
1 parent a4c5333 commit b313bcc

File tree

1 file changed

+234
-0
lines changed

1 file changed

+234
-0
lines changed

_posts/2020-09-22-newsletter.md

Lines changed: 234 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,234 @@
1+
---
2+
layout: newsletter
3+
title: "Newsletter #11 - **AWESOME TITLE HERE**
4+
category: newsletter
5+
permalink: /news/2020/09/
6+
---
7+
8+
Newsletter notes
9+
10+
## Something something Covid
11+
12+
## [0.5 Milestones](https://github.com/neovim/neovim/milestone/19)
13+
14+
## LSP & Tree-sitter - Maximizing Vim's potential/The future of text editing
15+
16+
- lightweight
17+
- tight integration
18+
19+
## What is LSP
20+
21+
[Language Server Protocol](https://microsoft.github.io/language-server-protocol/) (LSP) is an open, JSON-RPC-based protocol for use between source code editors or integrated development environments (IDEs) and servers that provide programming language-specific features.
22+
The goal of the protocol is to allow programming language support to be implemented and distributed independently of any given editor or IDE.
23+
24+
[Language specific implementations and feature support](https://langserver.org/)
25+
26+
- (auto)completion
27+
- code actions (automatic formatting, organize imports, ...)
28+
- go to definition
29+
- show method signatures
30+
- show/go to references
31+
- snippets
32+
33+
## What is Tree Sitter
34+
35+
"A really awesome parser"
36+
"Tree sitter offers a way to navigate ASTs"
37+
"tree-sitter queries are the new snippets"?
38+
Error recovery
39+
"power of vim editing == textobjects" and "tree-sitter == smarter textobjects"
40+
41+
A presentation from the author on what Tree-sitter is and how it came to be:
42+
[Tree-sitter - A new parsing system for programming tools - Max Brunsfield](https://www.youtube.com/watch?v=Jes3bD6P0To&feature=youtu.be&t=232)
43+
44+
@norcalli - "every file you edit (which has a treesitter grammar definition available) will have the semantic information of what you're working on available to use for anything you want. It's like a core intelligence was added to neovim which was fundamentally missing before."
45+
@norcalli - "Syntax highlighting is just a consequence of finally being able to understand the program you're working on. There are many, many, many other consequences which are possible, and those text objects are ones for which I'm also super excited."
46+
47+
### Semantic Highlighting
48+
49+
Performance difference between syntax highlighting from a language server and syntax highlighting from TreeSitter
50+
51+
### TreeSitter "replacing plugin functionality"
52+
53+
[context.vim](https://github.com/wellle/context.vim) ->
54+
[vim-expand-region](https://github.com/terryma/vim-expand-region) ->
55+
56+
## Lua! Lua! Lua!
57+
58+
59+
60+
Some excerpts from Justin M Keyes ["We can have nice things"](https://www.youtube.com/watch?v=Bt-vmPC_-Ho) presentation at Vim Conf 2019
61+
```
62+
Worse is better
63+
64+
Vim's missing 50%:
65+
- Imperfect design => bad perf; macros, long lines, syntax
66+
- Vimscript is slow: n AST, ad-hoc impl
67+
- :vimgrep is slow, :syntax is slow
68+
- Legacy arch: 600+ globals, high coupling, TUI assumption
69+
- Inconsistent UI behaviour: win_getid() vs getwininfo()
70+
```
71+
72+
### Lua stdlib
73+
74+
"Lua is designed for embedding"
75+
"Lua is fast, LuaJit is *ridiculously* fast"
76+
"Less is more: Lua language is super small, simple, _complete_(frozen)"
77+
78+
### Extensibility: Nvim is the "stdlib"
79+
80+
81+
```
82+
Standard modules:
83+
- inspect
84+
- treesitter
85+
- loop
86+
- ... trivial to add more(mention luarocks/nvimrocks/plenary)
87+
```
88+
89+
### Core features being implemented in Lua
90+
91+
- [neovim-lspconfig](https://github.com/neovim/nvim-lspconfig) - Collection of common configurations for the Nvim LSP client.
92+
- [completion-nvim](https://github.com/nvim-lua/completion-nvim) - An auto completion framework that aims to provide a better completion experience with neovim's built-in LSP.
93+
- [diagnostic-nvim](https://github.com/nvim-lua/diagnostic-nvim) - A wrapper for the default LSP diagnostics aimed to make for a more user friendly setup.
94+
- [lsp-status.nvim](https://github.com/nvim-lua/lsp-status.nvim) - A Neovim plugin/library for generating statusline components from the built-in LSP client.
95+
96+
### Vimscript vs Lua
97+
98+
```vim
99+
foo.vim
100+
let s:sum = 0
101+
for i in range(1, 9999999) " Parsed 10M times.
102+
let s:sum = s:sum + i " Parsed 10M times.
103+
endfor " Parsed 10M times.
104+
call append('$', s:sum)
105+
```
106+
107+
`ex_docmd.c:do_cmdline():`
108+
109+
- copies command (script line), sends to ex_docmd.c:do_one_cmd()
110+
- ex_docmd.c:do_one_cmd() recursively parses the line
111+
- ...everytime, for all lines in a Vimscript loop (for/while)
112+
113+
mention [Vim9 script](https://vimhelp.org/vim9.txt.html), the issues it addresses and any statements made by Neovim regarding compatibility.
114+
115+
### A Lua based configuration
116+
117+
[vimpeccable](https://github.com/svermeulen/vimpeccable) aims to supplement the Neovim Lua API with commands to easily map keys.
118+
119+
---
120+
121+
### Extensibility: Fennel (Lisp) and MoonScript
122+
123+
- [Fennel(Lisp)](https://fennel-lang.org)
124+
- try [fennel-nvim](https://github.com/jaawerth/fennel-nvim) to auto-execute `init.fnl`
125+
- [MoonScript](https://github.com/leafo/moonscript)
126+
- [nvim-moonmaker](https://github.com/svermeulen/nvim-moonmaker) Moonscript to compiled Lua
127+
- [Aniseed](https://github.com/Olical/aniseed) bridges the gap between Fennel and Neovim. Allowing you to easily write plugins or configuration in a Clojure-like Lisp with great runtime performance.
128+
129+
## [Vim Conf](https://www.vimconf.live)
130+
131+
Covid preamble - online conf.
132+
133+
[Vim Conf YouTube channel](https://www.youtube.com/channel/UCPK_UHtbfcWABCi0F0GPG6w)
134+
135+
### Neovim related presentations
136+
137+
| | | |
138+
|---|---|---|
139+
| [Conversational Software Development](https://www.youtube.com/watch?v=RU28xy9JXxs) | Oliver Caldwell |
140+
| [From User to Contributer](https://www.youtube.com/watch?v=EReNOGuMBmo) | Thomas Vigouoroux |
141+
| [Neovim Builtin LSP](https://www.youtube.com/watch?v=C9X5VF9ASac) | TJ DeVries |
142+
| [Neovim 0.5 work](https://www.youtube.com/watch?v=FxDBdbuvcU8) | Björn Linse |
143+
| [What can't you do in Neovim?](https://www.youtube.com/watch?v=78WrSwEKNuM) | Ashkan Kiani |
144+
| [Why is Lua a good fit for Neovim?](https://www.youtube.com/watch?v=IP3J56sKtn0) | TJ DeVries |
145+
146+
## GSoC 2019 - decoupled UI
147+
148+
[TUI (Terminal UI) remote attachment](https://github.com/neovim/neovim/pull/10071)
149+
[Multiprocessing Feature](https://github.com/neovim/neovim/pull/9943)
150+
151+
## GSoC 2020
152+
153+
[Project Proposals](https://github.com/neovim/neovim/wiki/GSoC-2020-Ideas)
154+
155+
[fswatch autoread](https://github.com/neovim/neovim/pull/12593)
156+
[inccommand: plugin support: cmnd_can_preview for user commands](https://github.com/neovim/neovim/pull/11985)
157+
[logging API](https://github.com/neovim/neovim/pull/7062)
158+
159+
## UI's
160+
161+
[FireNvim](https://github.com/glacambre/firenvim)
162+
[FVim](https://github.com/yatli/fvim)
163+
[GNvim](https://github.com/vhakulinen/gnvim)
164+
[Neovide](https://github.com/Kethku/neovide)
165+
[VV](https://github.com/vv-vim/vv)
166+
167+
## Interesting Plugins - an emphasis on the LuaWorld
168+
169+
### NVIM Dev tools - (which are the most useful?)
170+
171+
- [Plenary](https://github.com/nvim-lua/plenary.nvim) Mention luarocks integration
172+
- [Packer](https://github.com/wbthomason/packer.nvim)
173+
- [nlua](https://github.com/tjdevries/nlua.nvim)
174+
- [nvim.lua](norcalli/nvim.lua)
175+
- [nvim-luadev](https://github.com/bfredl/nvim-luadev)
176+
177+
- The nvim-lua family
178+
- Plenary/ popup.nvim, things that might become part of core
179+
- TreeSitter: Rethinking regex : Expand region comparison and ideas for future plugins
180+
- speak about what could be replaced, word-motion? fancy markdown stuff, vim-exchange
181+
- Architext
182+
- Snippets.nvim / Vsnip
183+
- Packer - an ambitious new package manager
184+
- Colorizer
185+
- Formatter
186+
187+
## Python2 deprecation?
188+
189+
## Changes related to UI
190+
- mouse focus on window
191+
- ext_popupmenu: completion menu
192+
- ext_tabline: tab line
193+
- ext_cmndline: command line
194+
- ext_hlstate: highlight state
195+
- ext_messages: messages
196+
- ext_multigrid: windows, grids
197+
- remote TUI (GSoC 2019)
198+
199+
## Notable commits/merges
200+
libuv / libvrwem ?
201+
### Highlight yanked region
202+
### LuaHL
203+
## LibGit2
204+
205+
nvim__screenshot?
206+
207+
## PR's to watch
208+
209+
buf_set_text ? what will it enable?
210+
### #12249 https://github.com/neovim/neovim/pull/12249 nvim_buf_set_text
211+
212+
### #12870 https://github.com/neovim/neovim/pull/12870 Color themes per window/line
213+
### #12823 https://github.com/neovim/neovim/pull/12823 Doc ; Lua concepts
214+
### #12593 https://github.com/neovim/neovim/pull/12593 fswatrch autoread
215+
216+
### missing functionality for Lua developers
217+
218+
### #12378 https://github.com/neovim/neovim/pull/12378 [WIP] lua: Add autocmd with Lua callback natively #12378
219+
220+
## Merrged (needs more thorough review of PR's from 0.4 -> 0.5)
221+
222+
### New Decorations API #12816 - `nvim_buf_get_extmark` / `nvim_buf_set_extmark`
223+
### https://github.com/neovim/neovim/pull/12549 Lua: highlight.on_yank #12549
224+
### https://github.com/neovim/neovim/pull/12536/files Execute lua callback on keystroke #12536
225+
226+
227+
### Community efforts - notable blogposts and twitch/youtube content
228+
229+
[##](posts/##.md) Github Sponsors - [12959](https://github.com/neovim/neovim/pull/12249)
230+
231+
- [GitHub will match all contributions (up to $5k)](https://github.blog/2019-05-23-announcing-github-sponsors-a-new-way-to-contribute-to-open-source/) within a developers first year.
232+
- [BountySource charges fees](https://www.bountysource.com/fees), [GitHub only charges for payment processing](https://github.blog/2019-05-23-announcing-github-sponsors-a-new-way-to-contribute-to-open-source/).
233+
- [BountySource began introducing worrying changes to their Terms of Service agreement.](https://diziet.dreamwidth.org/5938.html)
234+

0 commit comments

Comments
 (0)