1986 - ZX Spectrum 48 Kbyte RAM+ROM, Z80 Assembly, 4th Forth, ~9yo
1993 - 386DX40 4MB RAM
1994 - Microchip PIC16C84 MCU
8-bit data, 12/14-bit code, 8-level stack Assembly, Mary Forth & Flash Forth
bashq.exe)vim & screenTextMate on PPC iBookSublime Text 2 under both Linux & MacDip toes into JetBrains’ RubyMine, but went back to SublimeText
Tried every editor under the sun for editing with proportional fonts
and editing Clojure, without a REPL, using boot & its reloading
capabilities.
Sublime Text 3 + SublimeREPLEmacs + CIDER / inf-clojureNetBeansEclipseAtom (now Pulsar) + ChlorinejEditLightTableVS Code + Calvavim + Fireplace / vim-icedand all the niche ones, like:
Liquid https://github.com/mogenslund/liquid (https://salza.dk/)Nightcode https://github.com/oakes/NightcodeNightlight https://sekao.net/nightlight/Paravim https://sekao.net/paravim/While looking for a rowanj GitX alternative, I remembered from
RubyMine, how good its VCS support was, so I spent a week learning
IntelliJ CE (Community Edition) and another week Cursive and
structural editing, then taught my 5 people team in another ~2 weeks,
by pair-programming with them in rotation.
Emacs again, but
more seriously. I had about 2-3 previous failed attempts to learn it
in the previous decades. No one, who was a proponent of it could use
it as well, as I could use other editors…Mostly because of the limitations, I think it’s a lot easier to teach Clojure, but it’s also faster to make new-comers effective.
For that reason, I think bbatsov’s inf-clojure has a great potential
to be a beginner tool, if we could bridge the differences between the
Emacs philosophy and the CUA / IDE land, by either
come up with an Emacs syllabus, which is quick and easy to learn.
port back some of the features into Emacs, if they are philosophically compatible
I don’t have extensive experience with the following tools, but I saw them break 1st hand, when I was trying them 1-3 years ago.
If the use of clojure-lsp would be as reliable as Cursive’s, then
inf-clojure would make even more sense.
Nowadays clojure-lsp has actually already surpassed Cursive in its
refactoring capabilities, but Emacs’ built-in eglot LSP client seems to be
a bit flaky still and lsp-mode is a bit heavy, custom rolled, opinionated
and doesn’t extensively leverage Emacs’ built-in facilities.
Treesitter integration is not really there yet stability-wise, though it would be a great way for static-analysis based
Extend / Shrink selection actions with Opt-Up/Down + Left/Right
In vanilla Emacs
backward-up-list (C-M-<up>/u)mark-sexp (C-M-SPC)exchange-point-and-mark (C-x C-x)
or expand-region.el C-= repeatedlyRecent Files (Cmd-E) action
slurp/barf only forwards is largely enough Cmd-Shift-J/K
refactoring (Ctrl-T, like refacTor)
Cmd-Shift-C copies full-path, but we need the fully-qualified namespace
symbolclojure-lsp rename --from some.name.space --to other.name.space
https://clojure-lsp.io/
brew remove clojure-lsp
brew install clojure-lsp/brew/clojure-lsp-native
let blockletfn and verify it worksletfn to top-levelletfn and just delete line it, to clean upThe following constraints are very useful for beginners IMHO and take away a lot of mental burden.
Built-in Send Top Form to REPL binding Cmd-Shift-P is a bit quirky,
though it blends in well with other default bindings.
In vanilla Emacs it’s eval-defun (C-M-x like eXecute)
In CIDER it’s cider-eval-defun-at-point (C-M-x too)
or cider-pprint-eval-defun-at-point (C-c C-f, like deFun?)
or a handful of other options and bindings.
It’s too many options for a beginner and still a lot of mental overhead even for a seasoned user, though I’m beginning to feel the need for these after about a decade of development :)
Send Form Before Caret sparsely
Re-execute last command
REPL commandCmd-Ctrl-Enter & ^C Cdefprotocols, because that would invalidate existing usages :(