sheharyarn

sheharyarn

I would really like to see Syntax Highlighting support for Elixir on Stackoverflow. Someone already created a topic on Meta StackExchange but since SE relies on an external syntax highlighting tool (Google’s code-prettify), there hasn’t been any work to support Elixir (even though an issue was also opened there over a year ago).

I’m interested in making this happen (as someone who spends 5+ hours daily on SO - especially in the Elixir tag). So my questions are:

  • How do I get started in adding Elixir support to code-prettify?
  • How do I represent Elixir constructs that need to be highlighted?
  • And should I even send in a pull request? There seems to be minimal activity in the project, and many pull requests haven’t been merged or closed for a while.

Showing Posts 1 to 10

nietaki

nietaki

I was thinking about the same thing and slowly started looking into that. It seems like the syntax highlighting definitions for erlang or Scala aren’t really that complicated, and I would argue Scala has a more ambiguous syntax than Elixir.

It also seems like the code-prettify project is still pretty alive and they do accept PRs, so that’s all looking good.

Is there a good place to get Elixir’s grammar or something similar? It would probably help make the highlighter more comprehensive.

tyro

tyro

In the Elixir issue for code-prettify (here), they link to the atom editor elixir grammar (here) which looks quite useful.

nietaki

nietaki

I looked into how the google-prettify works and prepared a plugin for elixir that seems to be working. Now I could use you guys’ help making sure it’s nice and robust.

Here’s how you can try it out: I put an editable example in the live-preview branch of my fork of the repo. Clone it and open it in a browser or go to rawgit and you can play around with the source code and see how the prettifier behaves.

Let me know what you think! Please point out what needs improving.

Notes:

  • The main things that can be broken is probably false positives on some classes. For example 1_000 is a correct integer, but 1__000 isn’t and shouldn’t be highlighted like one.
  • Things to be treated as “keywords” in Elixir are a bit of a judgement call, since most of the functionality is implemented with macros. I used my gut on this one - let me know if you think any constructs should (not) be treated as keywords but are(n’t).
  • Before I submit a PR to the main fork I’ll want to add some unit tests for the elixir prettifier - I just wanted to get some feedback first.
  • If you want to submit some changes to the prettifier in my fork, submit it to the lang-elixir branch - the live preview is just a utility and won’t be included in the PR for the main project.
  • I’m not sure what class the sigils should be highlighted as - they’re currently being coloured the same as atoms, because it’s consistent with the highlighting I have in my main editor.
  • I don’t think it’s worth it to support highlighting inside string interpolation - It would probably be more trouble than it’s worth using their createSimpleLexer
OvermindDL1

OvermindDL1

As long as their lexer is not something stupid like regex it should not be hard.

I really really hate the idiotic highlighting libraries that think everything can be lexed with regex, morons…

nietaki

nietaki

Don’t look in the source then :slight_smile: It is what it is though, as long as it makes the StackOverflow questions/answers more readable, I’m a happy person.

nietaki

nietaki

I have tried the highlighting with some more code and ironed out some issues. An updated interactive demo still available on rawgit.

I’m aiming to write some tests and submit a PR this weekend, so if you have any feedback, speak up :wink:

nietaki

nietaki

It feels like I’m mostly talking to myself here, but here’s the PR for the Elixir support: Add Elixir language support by nietaki · Pull Request #478 · googlearchive/code-prettify · GitHub

OvermindDL1

OvermindDL1

Cool, better syntax highlighting on popular syntax highlighters, even if the syntax highlighter itself is stupidly made in regex but nothing you can do about that, is still a great help due to the visibility! :slight_smile:

notriddle

notriddle

Breaks when I type this in:

"I love me some #{ "string" <> "y" } interpolation"

It might not support hilighting inside string interpolation, but it should at least ignore quotes inside of an interpolated part, so it doesn’t just look wrong.

notriddle

notriddle

Your example here:

%{foo: :bar, "yes, this compiles": :"also an atom"}

Both of them are atoms; :“also an atom” and :“yes, this compiles” are both atoms. Your syntax hilighter thinks that “yes, this compiles” is a string.

iex(1)> %{ "yes, this compiles": :"also an atom" } |> Enum.map(fn {key, val} -> is_atom key end)
[true]

Where Next? Top

Trending in Discussions Top

AstonJ
As the title says, please share what you’ve been up to with Elixir. Whether that’s been learning it, looking into it, making stuff with i...
2977 94592 917
New
cblavier
Hey there, It’s been more than a year since we started using LiveView as our main UI library and building a whole library of UI componen...
New
mudasobwa
I am happy to introduce the very α version of the new programming language compiled to BEAM. Welcome Cure. It has literally three kille...
New
heathen
Quite interesting article Google brought me. Didn’t find any mentions about it here. What do you think in general? Would you use togethe...
New
maennchen
:warning: Security advisory: Decimal DoS vulnerability A vulnerability has been published for decimal where very large exponents can cau...
New
marciol
It would be helpful to have a list of companies worldwide that hire engineers without prior experience in Elixir. Often, it can be quite ...
New
Null-logic-0
What IDE or editor are you using for Elixir development? Personally, I use Zed, and I really like it, but sometimes I wish there were a ...
New

Other Trending Topics Top

marciok
Hi there! We created Gust: A task orchestrator inspired by Airflow. For those who have never heard about Aiflow, it’s a Python-based wor...
New
jimsynz
Beam Bots (or just BB for short) is a framework for building fault-tolerant robotics applications in Elixir using familiar OTP patterns. ...
New
Dmk
Xamal is a deployment tool for Elixir apps that deploys native releases to bare metal servers over SSH. It’s a port of GitHub - basecamp/...
New
netoum
Corex is an accessible, unstyled UI component library for Phoenix that integrates Zag.js state machines using Vanilla JavaScript and Live...
New
webofbits
With AI doing more of the implementation work, I’ve been wondering how much coding I should deliberately keep doing myself. My main conc...
#ai
New
webofbits
Aludel - LLM Evaluation Workbench Aludel is an embeddable Phoenix LiveView dashboard for evaluating and comparing LLM prompts across mult...
New

We're in Beta

About us Mission Statement

Options

Thread Display Mode




Thread Preview

Skip Thread Previews