Been looking into keywords and saw that Namespaced keywords are written as :foo/bar but not as foo/:bar , this seems more consistent with how symbols are also ns-prefixed. Is there any lore behind this design choice?
well it's certainly better from a parsing perspective
maybe to encourage a syntactic perspective, as opposed to object-oriented. The namespace is a property of the keyword: not the other way around
Here's one way to think of it, if it helps:
β’ A symbol is a pair of strings, where the first one is called "namespace" and the second one is called "name". The common representation of a symbol is , but in the special (and relatively common) case where the namespace part is empty, the slash is omitted: .
β’ A keyword is structurally the same as a symbol, but its written representation is :. It follows that if the keyword has a namespace part, its representation is :.
Hello, I am having issues with cider-jack-in: "...error in process sentinel: Could not start nREPL server: ' "Java" ' is not recognized as an internal or external command, operable program or batch file."
Sounds like you're on Windows? Do you have a JDK installed? In a Windows terminal, what does java -version say?
Thank you for responding. Windows 11, jdk-24, java version "24.0.1", emacs 30.1, doom v3.0.0
Okay, so it sounds like the PATH Emacs is using to start the process isn't the same as what is used in the terminal. I no longer use Emacs so I don't remember the fix for that. You can ask in #doom-emacs or #emacs -- I'm sure it's just some var you need to set in elisp...
Thanks again. Cheers.
You can check with getenv βPATHβ if it picks up the Java correctly I think
Or better set up JAVA_HOME env var correctly
you can change exec-path in Emacs, like :
(setq exec-path (append exec-path '("/jdk/bin")))
or also set env vars like :
(setenv "PATH" (concat (getenv "PATH") ":/jdk/bin"))