radian-software / radian Goto Github PK
View Code? Open in Web Editor NEW๐ Dotfiles that marry elegance and practicality.
License: MIT License
๐ Dotfiles that marry elegance and practicality.
License: MIT License
Consider adding ag.el or helm-ag.el.
If you have something on the system clipboard already, start Emacs, and press C-y
, do you get what was on the clipboard?
You should be able to run C-c M-j
from anywhere in a Clojure project (determined by Projectile?), instead of having to M-x cider-jack-in
when you're not in a clj
file.
Occasionally, when the *cider-error*
or *cider-doc*
buffer is showing, and you try to evaluate a file with C-c C-k
, the error/doc buffer vanishes and the error
Wrong type argument: stringp, nil
is shown in the minibuffer.
The code that handles using Helm mode for C-x b
is not idempotent. Each reload F12
toggles between Helm mode and IDO mode for switching buffers.
We should try to check if there are any other places where idempotency is lost.
Consider adding Magit.
We already have sorting by usage in M-x
(courtesy of helm-smex
) and in company
popups (courtesy of company-statistics
). Why not in other Helm buffers, like C-c p f
?
Since the REPL takes so long to start up, this is disorienting and annoying. I think there is an option in the CIDER customize-group
to change this.
Currently this is used for the Helm Projectile "buffer modified outside of Emacs" color tweak. This tweak is going to vary with theme, so it makes no sense to put it in a different category than (equal radon-emacs-tweak-colors t)
.
In fact, I can't think of any use case in which subtle
and t
are going to be different, so we should just get rid of subtle
altogether.
Currently, we have
(define-clojure-indent
(-> 1)
(->> 1)
;; Ideally, we would be able to set the identation rules for *all*
;; keywords at the same time. But until we figure out how to do
;; that, we just have to deal with every keyword individually.
(:import 0)
(:overall-average 0)
(:require 0)
(:use 0))
in init.el
. This code makes it so that the arguments of a keyword used as a function are indented by two spaces. However, I can't figure out how to add an "every keyword" entry to define-clojure-indent
, so instead I've just been adding every keyword I run into that's used as a function, one at a time. The disadvantages of this approach are hopefully obvious.
This should be able to download Emacs, tmux, etc. and configure them appropriately (backing up dotfiles, creating symlinks, etc.). In particular, it should be able to set iTerm2 keybindings so that things like C-/
work properly.
When Emacs is running very slowly due to CPU load, it's possible to press TAB before the Company completions menu appears. This triggers a Helm completions buffer, which is disorienting. This latter behavior should be unbound from TAB.
This feature is implemented in my fork of rally-emacs, and is useful for telling when there was an error while the REPL was starting up. The error is completely invisible otherwise!
ElDoc doesn't seem to like showing the proper text in the echo area directly after deleting a pair of parentheses within the form ElDoc should be showing information about. See also #22, which is a similar issue but for highlighting matching delimiters.
The welcome message obscures errors that may have occurred while the REPL was starting up.
This should be pretty easy.
Normally, in the cider-repl buffer, one can press M-p after already entering some text in order to cycle through previous entries that begin with the same substring (much like the history-substring-search plugin for zsh). However, because Paredit inserts a matching parenthesis, if you type half of a form, then your entry will not match any previous entries (because of the right parenthesis). Thus, M-p loses its substring-completing ability.
Perhaps M-p could look only at the part of the entry before point.
When point is on a Clojure variable that has a multiline docstring, all the lines are shown in the echo area. This is disconcerting and often moves the text in the REPL. Only the first line of the docstring should be shown.
Sometimes, when I'm editing a protocol, I get the following in *cider-error*
:
This is an unexpected CIDER middleware error.
Please submit a bug report via `M-x cider-report-bug`.
If these stacktraces are occuring frequently, consider using the
button(s) below to suppress these types of errors for the duration of
your current CIDER session. The stacktrace buffer will still be
generated, but it will "pop under" your current buffer instead of
"popping over". The button toggles this behavior.
complete-error
1. Unhandled java.lang.NullPointerException
(No message)
ns_mappings.clj: 87 cider.inlined-deps.compliment.v0v3v0.compliment.sources.ns-mappings/candidates/iter/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 49 clojure.lang.LazySeq/seq
RT.java: 521 clojure.lang.RT/seq
core.clj: 137 clojure.core/seq
core.clj: 706 clojure.core/concat/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 49 clojure.lang.LazySeq/seq
RT.java: 521 clojure.lang.RT/seq
core.clj: 137 clojure.core/seq
core.clj: 715 clojure.core/concat/cat/fn
LazySeq.java: 40 clojure.lang.LazySeq/sval
LazySeq.java: 49 clojure.lang.LazySeq/seq
Cons.java: 39 clojure.lang.Cons/next
RT.java: 1741 clojure.lang.RT/length
RT.java: 1682 clojure.lang.RT/seqToArray
LazySeq.java: 130 clojure.lang.LazySeq/toArray
RT.java: 1655 clojure.lang.RT/toArray
core.clj: 344 clojure.core/to-array
core.clj: 3004 clojure.core/sort
core.clj: 3010 clojure.core/sort-by
core.clj: 3010 clojure.core/sort-by
core.clj: 88 cider.inlined-deps.compliment.v0v3v0.compliment.core/completions
core.clj: 54 cider.inlined-deps.compliment.v0v3v0.compliment.core/completions
complete.clj: 18 cider.nrepl.middleware.complete/complete
complete.clj: 10 cider.nrepl.middleware.complete/complete
complete.clj: 28 cider.nrepl.middleware.complete/complete-reply
complete.clj: 27 cider.nrepl.middleware.complete/complete-reply
error_handling.clj: 146 cider.nrepl.middleware.util.error-handling/eval26319/fn
MultiFn.java: 233 clojure.lang.MultiFn/invoke
complete.clj: 37 cider.nrepl.middleware.complete/wrap-complete/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
pprint.clj: 108 cider.nrepl.middleware.pprint/wrap-pprint/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
pr_values.clj: 22 clojure.tools.nrepl.middleware.pr-values/pr-values/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
test.clj: 286 cider.nrepl.middleware.test/wrap-test/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
pprint.clj: 50 cider.nrepl.middleware.pprint/wrap-pprint-fn/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
session.clj: 192 clojure.tools.nrepl.middleware.session/session/fn
middleware.clj: 22 clojure.tools.nrepl.middleware/wrap-conj-descriptor/fn
server.clj: 19 clojure.tools.nrepl.server/handle*
server.clj: 16 clojure.tools.nrepl.server/handle*
server.clj: 28 clojure.tools.nrepl.server/handle/fn
core.clj: 1938 clojure.core/binding-conveyor-fn/fn
AFn.java: 18 clojure.lang.AFn/call
FutureTask.java: 266 java.util.concurrent.FutureTask/run
ThreadPoolExecutor.java: 1142 java.util.concurrent.ThreadPoolExecutor/runWorker
ThreadPoolExecutor.java: 617 java.util.concurrent.ThreadPoolExecutor$Worker/run
Thread.java: 745 java.lang.Thread/run
This occurs when company
asks cider
for completions that should include a Java class or method name, or sometimes a protocol name. This is probably a bug in CIDER, but we need to find a minimal reproducible test case.
It would be nice if all other occurrences of the word under point were highlighted, preferably without an annoying delay and in an unobtrusive, light color.
It would be nice to import as much of the configuration as possible from minimal-webapp into profiles.clj
, so that changing every single project.clj
would not be necessary. It is likely that some project.clj
changes would still have to be made, but a lot of the configuration could probably be imported.
This prevents the REPL from starting up!
Is ivy-mode a suitable replacement for ido-mode and helm-mode?
It would be nice if when you created a Clojure file, a skeleton namespace declaration matching the filename and path were generated automatically. As a starting point, this feature is present in rally-emacs.
Moving the cider-nrepl
dependency in profiles.clj
to a :repl
profile may improve startup time for lein
when doing tasks other than repl
.
The match highlight color used by i-search is quite dark by default and makes it hard to read the matches. This should be changed.
Consider the following protocol definition:
(defprotocol Foo
"Docstring. This one is multiline. It has quite a lot of useless
information that is only meant to fill extra space."
(example-method
[this]
"Docstring. This one is multiline. It has quite a lot of useless
information that is only meant to fill extra space."))
The first docstring (the docstring for the entire protocol) is colored in dark green because it is recognized by clojure-mode
as a docstring. The second one, however, is not.
Additionally, pressing TAB
does not indent the second docstring correctly, i.e. as follows:
(defprotocol Foo
"Docstring. This one is multiline. It has quite a lot of useless
information that is only meant to fill extra space."
(example-method
[this]
"Docstring. This one is multiline. It has quite a lot of useless
information that is only meant to fill extra space."))
This is likely because clojure-mode
does not recognize it as a docstring.
The relevant code to modify is in clojure-mode.el
, and is as follows:
(defun clojure-font-lock-syntactic-face-function (state)
"Find and highlight text with a Clojure-friendly syntax table.
This function is passed to `font-lock-syntactic-face-function',
which is called with a single parameter, STATE (which is, in
turn, returned by `parse-partial-sexp' at the beginning of the
highlighted region)."
(if (nth 3 state)
;; This might be a (doc)string or a |...| symbol.
(let ((startpos (nth 8 state)))
(if (eq (char-after startpos) ?|)
;; This is not a string, but a |...| symbol.
nil
(let* ((listbeg (nth 1 state))
(firstsym (and listbeg
(save-excursion
(goto-char listbeg)
(and (looking-at "([ \t\n]*\\(\\(\\sw\\|\\s_\\)+\\)")
(match-string 1)))))
(docelt (and firstsym
(function-get (intern-soft firstsym)
lisp-doc-string-elt-property))))
(if (and docelt
;; It's a string in a form that can have a docstring.
;; Check whether it's in docstring position.
(save-excursion
(when (functionp docelt)
(goto-char (match-end 1))
(setq docelt (funcall docelt)))
(goto-char listbeg)
(forward-char 1)
(condition-case nil
(while (and (> docelt 0) (< (point) startpos)
(progn (forward-sexp 1) t))
;; ignore metadata and type hints
(unless (looking-at "[ \n\t]*\\(\\^[A-Z:].+\\|\\^?{.+\\)")
(setq docelt (1- docelt))))
(error nil))
(and (zerop docelt) (<= (point) startpos)
(progn (forward-comment (point-max)) t)
(= (point) (nth 8 state)))))
font-lock-doc-face
font-lock-string-face))))
font-lock-comment-face))
I do not envy whoever tries to fix this.
We can use (getenv "OSTYPE")
or something to roughly determine the OS, and then only execute the code for mouse and clipboard integration if we're actually running on OSX.
The "add trailing newline on save" feature doesn't appear to be working for some files, namely .gitignore
.
Currently, clojure.repl
(and, with it, doc
, source
, and pst
) are automatically loaded into the initial namespace when a REPL starts. However, they're not loaded into any other namespaces you switch to. This causes annoying errors when you forget you have to (use 'clojure.repl)
before calling any of the above functions.
Trying to paste a nested form into the REPL is a very tricky proposition with Paredit enabled. All kinds of delimiters can get inserted in all kinds of places, because of the way Emacs handles pasting.
It looks like Emacs uses two spaces after a period when using M-q
. This is unacceptable.
In customizing the mode line, we currently have this code:
(defvar mode-line-modified-radon
'(:eval (propertize (if (and (buffer-modified-p)
(buffer-file-name))
"[*]" " ")
'face '(:foreground "#FDF6E3")))
"Construct for the mode line that shows [*] if the buffer
has been modified, and whitespace otherwise.")
The color of this text shouldn't be hardcoded. It should just use the same face color as the buffer name indicator uses.
Sometimes when I start a CIDER REPL, an application with the generic Java icon called "java" or "main" appears in the Mac application switcher (s-TAB
). On occasion, I can even get more than one, if I've started multiple REPLs. This is annoying and useless.
When you do a lot of git
-ing, the files you have open in Emacs tend to get marked as "modified outside of Emacs". What you usually want is for these files to reload from disk automatically, unless the buffer is modified. This should be done in the background, rather than when the buffer is open, so that files you have in open windows will be reloaded.
There appears to be some sort of error displayed in the echo buffer in sh-mode.
It's annoying to have to manually wrap I-searches, especially given that when there is exactly one match there are three(!) different pieces of text you can see in the minibuffer when pressing C-s
repeatedly.
I-searches should wrap automatically.
This should include a description of the included packages, a list of useful keybindings, and information about nonstandard configuration and/or hacks.
Sometimes the Starting nREPL server...
message appears instantly after pressing C-c M-j
. Occasionally, though, it takes about a half-second. Can this delay be eliminated?
In rally-emacs, if you try to create a clj
file with dashes in the filename, you will be prompted to change the dashes to underscores. This is really nice, as it's easy to forget to use underscores in the filename. We should have this feature too.
Currently, init.el
loads the leuven
theme and explicitly colorizes the "file modified" indicator in the mode line. This works great if your terminal's color theme is Solarized Light, but for people who want to use other color themes we should add an (obvious) option to keep init.el
from messing with the colors.
When I type in Aver
and there is a symbol called AverageBaselineRecommender
in the current file, Company not-so-helpfully suggests Averagebaselinerecommender
! This needs to be fixed.
Sometimes a the matching paren isn't highlighted, and I have to <left> <right>
before it works properly. Perhaps this has to do with ElDoc.
Currently, we have an ugly hack in init.el
to make sure electric indentation works in Clojure docstrings. (This doesn't fix #1; that's a separate issue.)
;;; Make sure electric indentation *always* works. For some reason, if
;;; this is omitted, electric indentation works most of the time, but it
;;; fails inside Clojure docstrings. (TAB will add the requisite two
;;; spaces, but you shouldn't have to do this manually after pressing RET.)
;;; I'd like to find a more elegant solution to this problem.
(define-key clojure-mode-map (kbd "RET") 'newline-and-indent)
It would be nice to fix this problem without rebinding RET
.
To productively resolve merge conflicts in Lisps, one simply must turn off both Paredit and Aggressive Indentation. It would be nice if this were done automatically. (It would be even better if they were turned back on after you were finished.) Regardless of whether Magit is added as per #4, it would be nice to have this behavior when using git from the command line.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.