I've been switching to Emacs packages which are lighter and use the internal Emacs system,
instead of creating their own. This time I wanted to try
Flymake, the syntax checker that comes with Emacs. At
first it wasn't very appealing because I thought it would only show the error on mouse hover! So I tried to see what options I
have for displaying the error messages when text cursor moves over them.
I was looking for a way to transliterate(translate) English numbers to Persian numbers in Go.
Such functionality is usually found in programming languages, but I wasn't expecting too much from Go.
It's very easy to do in Raku:
say 567.trans: '0'..'9' => '۰'..'۹'
=output ۵۶۷
say TR/0..9/۰..۹/ given 567
=output ۵۶۷
For Go I found xstrings module which has a
Translate
function. But the solution I came up with was using
NewReplacer
function from Go's internal strings
module:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(strings.NewReplacer(`0`, `۰`, `1`, `۱`, `2`, `۲`, `3`, `۳`, `4`, `۴`, `5`, `۵`, `6`, `۶`, `7`, `۷`, `8`, `۸`, `9`, `۹`).Replace(`567`))
}
Go playground link
After I finished watching Daniel Sockwell's FOSDEM 2022 Raku
presentation, I thought this is a good opportunity to play with
Raku's slangs, something I hadn't done before.
What is Daniel's talk(and upcoming module) and my module going to solve?
- Write less but more readable test code
- Get a useful test description and failure message
If you use cmp-ok
, you get a good error message; but without a test
description it's sometimes hard to understand. Also cmp-ok
and other test functions(most of them, use-ok
being an
exception for example) do not output anything on a successful test, unless you provide the description yourself. I
personally think that test sub routines should generate a description if one is not provided. But of course that
cannot be done with simple functions. Maybe the Test module needs to be rethought in the future?
When I created my Raku programming language website with
Hugo static site generator, I had to manually create the syntax highlighted
html files for code examples shown in the front page, because Hugo used
Chroma(written in Go and uses a
mostly similar API to Pygments) for syntax highlighting which didn't
support Raku. So I opened an issue on Chroma, the discussion showed that you cannot just convert
the Raku lexer from Pygments to Chroma; You would need to create some functions manually, and
Chroma needed a new Emitter
interface which would take the LexerState
as an argument, because
Raku has some complex syntax; the Raku lexer in Pygments had functions for finding closing
brackets matching the opening brackets, and for regex nesting in tokens
, regexes
and
rules
. In the end I realized functions for token nesting were unnecessary.
Recently I forked the flycheck-raku (by @widefox) to the Raku GitHub organization.
And did some improvements to it and published it on melpa, so others can easily install and update it.
For those who don't know, flycheck is a tool for syntax checking Gnu Emacs buffers.
You can install flycheck-raku using use-package:
(use-package flychek-raku :ensure t)
Previously if you used flycheck-raku
on a project, it would show errors on use SomeModule;
,
even though the module was in the lib
directory of the project. And this would make flycheck
kinda
useless, because it wouldn't show further errors.
Raku programming language uses some unicode characters as operators, quotation marks, etc.
In this post I'm going to explain how to type those characters in Emacs using
input methods.
First, you might want to see a list of those characters and their ASCII equivalents
here.
There is also a doc for entering unicode characters.
You may specifically want to look at XCompose for a system-wide solution.
There are at least two input methods you can use to enter the unicode characters used in Raku.
rfc1345 and TeX.