• Stars
    star
    261
  • Rank 156,630 (Top 4 %)
  • Language
  • License
    Creative Commons ...
  • Created over 2 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Contents of weekly news delivered by this-week-in-neovim.org.

This Week In Neovim | Contents

This repository holds the contents of https://this-week-in-neovim.org.

Deprecation notice

This repository is inactive as the owner (@phaazon) moved away from the Vim/Neovim community. However, you can still find all of the content available on the new platform set up by @codico.

Thank you.

Structure and architecture

News are classified by year, month, and day. The file naming scheme is quite simple /contents/<year>/<month>/<day>. For instance:

contents/
  |
  + 2021
  |  |
  |  + …
  |
  + 2022/
      |
      + Jul
      |  |
      |  + 15
      |  |
      |  + …

An important notice about formatting: both the year and the day are numerals (2022, 15) but the month is not. So you have to use Jul instead of 06. This is the case for all the months and the rule is simple: take the name of the month, keep only the first three characters and use an uppercase for the first one. December -> Dec, August -> Aug, etc.

In previous versions of TWiN (i.e. twin-0.1), the day was a file (NN.md). The current version of the twin library still supports those so that we didn’t have to rewrite all the contents, but this a legacy and deprecated architecture. The day is now a directory, which means that it contains sub-directories. The way it works is that twin will scan the subdirectory and will perform a DFS on them after having sorted a given level by file paths (lexicographic sort). So it will start by sorting the first layer, then will enter the first directory, sort all of its files, enter another directory, etc. in a DFS way. Once twin finds a file, it will assume it’s Markdown (it won’t even look at the extension) and will simply load it and concatenate it to what it has already processed. The end result is the final Markdown representing the news.

The hierarchy and the name of the files don’t matter; what matter is the order in which the files are loaded. Because of that, there is a convention for sub-directories and some files. Starting at a given day (for instance, contents/2022/Jul/15/), we have:

  • 0-core-updates/: contains Neovim Core updates.
    • 0-HEADER.md: the header that is always present, even if there are no changes.
    • Then any kind of news. Preferably one file per issue / news.
  • 1-need-help/: section for plugins requiring help. That section is removed if no plugin requires help.
    • 0-HEADER.md: the header that is always present if there is at least one plugin requiring help.
  • 2-guides/: exact same structure but for guides, tutorials, blog posts, videos, etc.
  • 3-new-plugins/: ditto, but for new plugins.
  • 4-updates/: ditto, but for changes for already existing plugins.
  • 5-did-you-know.md: a single file for adding Neovim tips.
  • 6-want-to-contribute.md: a single immutable file; should never change.

At the very beginning of a weekly cycle, a new day directory for the week is created and pushed to a branch %Y-%M-%d. PRs are accepted and must target that branch. Notice that the directory is dated (year, month, day), and then we expect a release to be done on that day. If for whatever reason we can’t make it, we will not change the branch name, but we will update the directory eventually.

Before the end of the cycle, by Sunday sunset, while listening to some dope synthwave, %Y-%M-%d is merged into master. Everyone can partake in that phase of review, but the goal here is to ensure links work, no typo are present, etc., or if anyone want to withdraw their updates from the weekly updates.

To finish the cycle, the merge commit is created and the article is automatically available on https://this-week-in-neovim.org/latest or https://this-week-in-neovim.org/<year>/<month>/<day>.

How to contribute?

If you want to become a content contributor, you can do different things, but there are some general rules to follow:

  1. Always read the current %Y-%M-%d branch (and PRs targetting it) to ensure no one has come up with the same news as you yet.
  2. Open a PR against %Y-%M-%d branch by adding new stuff you’ve seen. Depending on what you want to add:
  • Adding some Core updates? Add them in 0-core-updates/, one file per update.
  • Spotted a plugin requiring help? Add it in 1-need-help. One file per plugin.
  • Same for all the rest of the directories, you got it, you’re smart.
  1. Ensure your contribution is devoid of bad language and goes straight to the point. See the section about how to contribute actual news here, especially for formatting, correct English writing, etc.
  2. Wait for someone to review and merge your contribution.
  3. Your news will be added to master at the end of the cycle.

If the branch is not created yet, you can even contribute that branch!

  1. Create the %Y-%M-%d branch. It must start from master.
  2. Copy the template directory in contents/<year>/<month>/<day>/.
  3. Open the PR.

How do you write a news PR?

When opening a PR to add some news to the next weekly, you must always include the following elements (in order).

  • If the plugin already exists and it’s about an update of it, add a quoteblock with a single line explaining what the plungin is about. For instance, > A plugin that does a very interesting thing.

  • Then add an image, a gif, a video or even embed a video player. This is super important as visual things are super easy for people to get their head around, and it looks pretty, too.

    You are strongly advised to upload some screenshots to GitHub (open an issue, slide the image, get the link and simply close your issue tab, do not actually create the issue). Do not put images in your PRs as they will be automatically refused — we don’t host the content, we only link to it. If you don’t want to use GitHub, that’s fine, but ensure to use an image host that will remain stable in time and has permalinks.

  • A description of the change.

  • The source of the news. It can be a commit on GitHub, a changelog, a blog article, etc. anything, but you must provide a link. A chat discussion is not considered “a valid source of information” if we can’t link back to it — so GitHub discussions / issues are valid, since they have a permalink to them. The goal is to write a list of news, with a link to the actual news so that readers can read further more if they want to.

Each news is a block of both HTML and Markdown. Depending on the category, its header and content might change. At the beginning of each cycle, when we copy the template directory, all sections contains an example. Do not remove it and simply copy it — that will prevent merge conflicts. The examples will be removed before merging to master.

More Repositories

1

hop.nvim

Neovim motions on speed!
Lua
2,121
star
2

luminance-rs

Type-safe, type-level and stateless Rust graphics framework
Rust
1,073
star
3

mind.nvim

The power of trees at your fingertips.
Lua
704
star
4

warmy

Hot-reloading loadable and reloadable resources
Rust
210
star
5

this-week-in-neovim.org

this-week-in-neovim.org official webapp repository
Rust
183
star
6

glsl

GLSL parser for Rust
Rust
180
star
7

splines

Interpolation made easy.
Rust
131
star
8

spectra

Rust demoscene engine (currently on hold)
Rust
124
star
9

luminance

Type-safe, type-level and stateless Haskell graphics framework
Haskell
110
star
10

shades

Rust EDSL for shading languages
Rust
66
star
11

config

My main configuration files
Lua
65
star
12

cargo-sync-readme

Generate a Markdown section in your README based on your Rust documentation
Rust
55
star
13

toodoux

A task manager based on taskwarrior
Rust
51
star
14

mind

The power of trees at your fingertips
Rust
42
star
15

notisys.nvim

System-wide notifications for Neovim
Lua
40
star
16

do-notation

The Haskell’s do notation brought to Rust
Rust
39
star
17

cheddar

The Cheddar GLSL superset language
Rust
27
star
18

spline-editor

A simple spline editor for the splines crate
Rust
24
star
19

wavefront

Haskell Wavefront OBJ loader library
Haskell
19
star
20

bidule

Very simple and Rust FRP crate
Rust
18
star
21

poesie.nvim

Lua
16
star
22

stack-haddock-upload

A little script to upload documentation to Hackage within a stack-powered project
Shell
14
star
23

learn-luminance

11
star
24

luminance-gl-rs

DEPRECATED luminance-gl has been moved into https://github.com/phaazon/luminance-rs
Rust
11
star
25

celeri-remoulade

The Undead Sceners PC demo for Evoke 2016
Rust
10
star
26

smoothie

Smooth curves via several interpolation modes
Haskell
10
star
27

advent-of-code-2k18

https://adventofcode.com/2018
Rust
9
star
28

phaazon.net

Source code of phaazon.net.
Rust
8
star
29

kak-tree-sitter

tree-sitter meets Kakoune
Rust
8
star
30

try-guard

A guard! macro inspired by the guard Alternative function from Haskell.
Rust
6
star
31

luminance-samples

Luminance samples
Haskell
6
star
32

monad-journal

Pure logger typeclass and monad transformer
Haskell
6
star
33

outline-2017-invitro

Outline 2017 Invitation, by DESiRE and The Undead Sceners (code by @phaazon)
Rust
6
star
34

quaazar

Realtime 3D engine
Haskell
6
star
35

pixels-of-life

A GPU accelerated version of Conway’s Game of Life
Rust
5
star
36

save-z0r

Because those loops are too epic to let them go!
Rust
5
star
37

hsFModEx

FModEx Haskell API. Discontinued.
Haskell
4
star
38

hid

Haskell interface to hidapi
Haskell
4
star
39

any-cache

Cache with any key and any associated value
Rust
4
star
40

zero

Semigroups with absorbing element
Haskell
4
star
41

lightning-road-to-liquid-radiator

Official source code of Lightning Road To Liquid Radiator
C++
4
star
42

lqducul

Rust
4
star
43

cheddar-edit

A shader-toy-like project that aims to shader rapid prototyping
Rust
4
star
44

msi-kb-backlit

A command line tool to change backlit colors of your MSI keyboard
Haskell
3
star
45

reactant

FRP Haskell library
Haskell
3
star
46

non-empty

Efficient non-empty vectors in Rust
Rust
3
star
47

al

Haskell OpenAL raw binding
Haskell
3
star
48

glsl-quasiquote

The glsl! procedural macro for the glsl crate.
3
star
49

awoo

Rust
3
star
50

html-entities

Rust html entities utility functions
Rust
2
star
51

brainfarts

Pets de cerveaux.
2
star
52

kwak

The (in)famous bot you all love on IRC! (see her in action in #demofr@freenode)
Rust
2
star
53

luminance-windowing

Common windowing code for luminance (not an actual backend)
2
star
54

event

Monoidal, monadic and first-class events.
Haskell
2
star
55

par-soeur

Run away, nothing to see here!
Rust
2
star
56

advent-of-code-2021

https://adventofcode.com/
Rust
2
star
57

luminance-glutin

glutin support for luminance
Rust
2
star
58

proc-macro-faithful-display

A more faithful Display for proc-macro token types.
Rust
2
star
59

thunk

Some research project of mine about sharing thunks in Rust
Rust
2
star
60

tellbot

IRC bot with account simple tasks and tells function
Haskell
2
star
61

inject-function

Haskell package that lets you write regular functions with the extra feature to be able to inject parameters that can be shared over function composition
Haskell
2
star
62

leaf

A simple portfolio generator
Haskell
2
star
63

rust-gl-toy

As I’m learning rust, let’s play with OpenGL and GLFW here ;)
Rust
1
star
64

igl

Indexed OpenGL; a safer OpenGL implementation
Haskell
1
star
65

algo

Some famous algorithms, written with fun
Rust
1
star
66

conal_frp

An experiment at implementing FRP as described by its father, Conal Elliott. Paper here http://conal.net/papers/push-pull-frp/push-pull-frp.pdf
Haskell
1
star
67

heat-station

Official source code of Heat Station
C++
1
star
68

chronos

Simple FRP timeline. Designed to be used for demoscene purposes
Haskell
1
star
69

luminance-glfw

GLFW support for luminance
1
star
70

skp

skp D framework
D
1
star
71

advent-of-code-2020

Haskell
1
star
72

gltf

Haskell GLTF loader
Haskell
1
star
73

aur

All packages I maintain in AUR
Shell
1
star
74

codingame-unleash-the-geek

My contribution to Unleash The Geek (started on 7th of October 2019)
Rust
1
star
75

meta

Demoscene framework
Perl
1
star
76

fractalis

A Mandelbrot fractal viewer
C
1
star
77

leetify

Leetify some text!
Haskell
1
star
78

agui

Abstract GUI
Haskell
1
star
79

impersonate

An experimental Markov chain generator that learns how to speak as if it was someone else.
Rust
1
star
80

sdffont

A tool that generates signed distance fields fontmap from font file (.ttf, and so on).
Haskell
1
star
81

hush

Demoscene soft synthesizer designed to be embedded in intros.
Rust
1
star
82

iutbx1-ds

IUT Bordeaux 1 Dimitri Sabadie official repository
C++
1
star
83

atoi-data-dependency

A short and fun study of data dependency and compiler optimizations
Rust
1
star
84

rcpp

A Rust implementation of the C Preprocessor
Rust
1
star
85

colorscheme-gen

A little tool to generate color scheme for urxvt session and using the Text Export option of the colorscheme web site.
Shell
1
star
86

phraskell

Fractal set viewer.
Haskell
1
star
87

blog

phaazon.net blog articles
1
star
88

advent-of-code-2022

Advent of Code 2022 solutions
Rust
1
star