Auto Highlight Updates

Auto Highlight—discussed in a prior post—was released over five years ago, on April 24, 2015. The browser extension is intended for automatically highlighting the important content on article web pages.

As shown by the GitHub contributions chart below, development was mostly inactive for a few years following the initial release.

I’ve recently added additional features. Thanks to the users who suggested some of these!

☰ Context Menu

The extension permits three levels of highlighting. As of v2.1.0, it’s possible to use the context menu to directly apply the desired level of highlighting, rather than cycling through the levels. Additionally, controls for Global Highlighting and Autonomous Highlights—both discussed below—are available on the context menu.

The menu can be accessed by right-clicking either 1) the Auto Highlight icon in the browser toolbar, or 2) the currently open web page. In either case, the icons are shown only on Firefox, as Chrome and Edge do not currently support context menu icons below the top level.


🚪 revdoor

revdoor is a single-file C++ library for visiting revolving door combinations.

The combinations without replacement generator implements Algorithm R from TAOCP [1]. The combinations with replacement generator implements the same algorithm, modified to support replacement.

The algorithms visit combinations by indicating at most two pairs of items to swap in and out on each iteration.

The source code is available on GitHub:


⏲️ vim-startuptime and 🖼️ vim‑win

I recently implemented two Vim plugins (they also work on Neovim).


vim-startuptime is a plugin for viewing Vim startup event timing—reported in milliseconds. This can be helpful when trying to modify your configuration to improve Vim’s startup time.

  • Launch vim-startuptime with :StartupTime.
  • Press <space> on events to get additional information.
  • Press <enter> on sourcing events to load the corresponding file in a new split.
  • Access documentation with :help vim-startuptime.

The source code—along with installation instructions—is available on GitHub:


vim-win is a plugin for managing windows, including 1) selecting windows, 2) swapping window buffers, and 3) resizing windows. Full functionality requires vim>=8.2 or nvim>=0.4.0.

  • Enter vim-win with <leader>w or :Win.
  • Arrows or hjkl keys are used for movement.
  • Change windows with movement keys or numbers.
  • Hold <shift> and use movement keys to resize the active window.
  • Press s or S followed by a movement key or window number, to swap buffers.
  • Press ? to show a help message.
  • Press <esc> to leave vim-win.
  • Access documentation with :help vim-win.

The source code—along with installation instructions—is available on GitHub:


🎨 gifcast Color Profiles

gifcast—discussed in a prior post—now supports color profile selection.

The following animated GIFs—generated with gifcast—show a sample of available profiles.

Here is the asciinema cast file used to generate the animated GIFs: profile_demo.cast


▶️ gifcast

I implemented gifcast, a web page for converting asciinema casts to animated GIFs. Here’s the link:

The JavaScript source code is available on GitHub:

The example below was generated with gifcast.

Here is the asciinema cast file used to generate the animated GIF: gifcast.cast