Community Update

DaeraxaNovember 9, 2023
  • news
  • log
  • update
About 4 min

What month is most important for a Pulsar? A supernova-ember! ...What isn't a bad joke is this, the Pulsar community update!

Welcome to the November Community Update!

Another warm welcome to the Pulsar community update, where we cover new developments and events in the world of Pulsar. This month we have a couple of really significant changes to how Pulsar works internally by creating a couple of new APIs that can be used throughout the application, a new package to help you run code directly within Pulsar and our usual community spotlight to say thank you to those community members contributing to Pulsar's development!

New UI API

Pulsar has a number of different methods of rendering UI components, which tend to differ between the various core packages that make up the main Pulsar editor. This is particularly evident when dealing with Markdown rendering, where different packages may be using different versions of the same dependencies, which all have to be taken into account when updating them. To this end, @confused-techieopen in new window has been implementing a new UI API that will simplify all of these disparate methods into a single new API.

The focus will be on Markdown to start with, simply because this is where we are having to spend a lot of effort re-implementing features. For example, our 'settings-view' package needs to display package READMEs and relies on a library called markedopen in new window. However, this isn't the only place where READMEs will be displayed. Not only do we have our own Pulasr Package Registryopen in new window website powered by package-frontendopen in new window using the markdown-itopen in new window parser, but we also have to consider how it is displayed on GitHub, which is currently the only method of publishing packages to the PPR.

By removing all these independent implementations across various core packages, we should be able to reap the following benefits:

  • With only a single version of each dependency, the overall install size can be reduced.
  • Likewise, there is less overhead associated with keeping things up-to-date, and it will be easier to update when needed.
  • Improvements added to the community package READMEs can be used everywhere, not just on the Pulsar Package Website.
  • We could introduce global Pulsar settings for greater control over how markdown is parsed, which can apply to every package that uses this API. For example, enabling emojis, adding copy buttons to code blocks, disabling syntax highlighting and modifying links or images.
  • Automatic redirection of "dead" atom.io URLs to the pulsar-edit.dev or web archive equivalent.

Of course this new API will also be available for use by community packages for developers to take advantage of if they wish, so that Markdown parsing doesn't need to be independently implemented any more.

This new feature is availble in our newest rolling releases and will soon be in our regular release too!

Exposing a fuzzy-native API

In a similar vein to the above, we also have a fuzzy-nativeopen in new window package used to provide fuzzy string matching for Pulsar. This package is used as a dependency for a large number of Pulsar packages, including core packages such as fuzzy-finder, command-palette and autocomplete-plus. The goals here are very similar to those for the new UI API mentioned above; instead of each package needing to specify (and bundle) fuzzy-native as a dependency, they can instead simply reference this new global API, saving the need to bundle it as a dependency and having to maintain each package that uses it.

You can view the progress of this work over on its pull requestopen in new window by [@mauricio szabo].

A new code runner package

@confused-techieopen in new window has been working on a new package for running scripts and code directly within Pulsar. The inspiration comes from some existing packages that still work and can be installed, but few of the most popular ones are still actively maintained. Having an integrated code runner package is a common request from new Pulsar users wondering how they can run code directly in the editor in much the same way as is possible within other editors such as VSCode. We are currently discussing the best way to bring this kind of functionality to users; should we publish this as a package, include it as a new core package, or something in-between? Whatever the outcome, you can look forward to more news on this package soon!

If you want to check it out in its current, in-development state, then have a look at the pulsar-runneropen in new window repository.

Further installments in the modern Tree-sitter blog post series

[1]

Continuing on from last month's entryopen in new window we have posted two new blog posts by @savetheclocktoweropen in new window on the topic of Pulsar's modern Tree-sitter implementation. So if you haven't seen those posts, then you can continue onto parts threeopen in new window and fouropen in new window on the topics of syntax highlighting and indentation & code folding respectively.

Community spotlight

A big thanks this month to @danfuzzopen in new window for the identificationopen in new window and fixopen in new window for a problem with shell script syntax highlighting.

Another big thanks goes out to @kiskozaopen in new window for finding a problemopen in new window and providing a fixopen in new window for an issue with the pulsar-updater package where it wasn't correctly caching the "Dismiss this version" notification to prevent it from showing again.


And once again we wrap things up for this month. As always, a big thank you to all of our community members and a special thanks to those who donate to the project and make this possible. We hope to see you here next month for our December edition!


  1. Image from https://tree-sitter.github.io/tree-sitter/open in new window - Copyright (c) 2018-2021 Max Brunsfeld ↩︎