Giter VIP home page Giter VIP logo

radian's People

Contributors

carrete avatar eginhard avatar grenmester avatar haji-ali avatar moesasji avatar raxod502 avatar razzius avatar smuething avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

radian's Issues

cider-jack-in from anywhere in a project

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.

Stop poking my completions!

Somehow, cider and company are conspiring to produce the behavior pictured below, where the REPL prompts seem to somehow be "poking" lines of the completion popup one character to the right.

20160726125745

I don't even know what to say, other than maybe I should leave it like this because it's hilarious.

Error on C-c C-k when cider-error/cider-doc is showing

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.

C-x b occasionally switches back to IDO mode

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.

Smex sorting everywhere in Helm

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?

Remove 'subtle option for 'radon-emacs-tweak-colors

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.

Change indentation rules for all keywords at once

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.

Add setup script

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.

TAB can trigger Helm when Emacs is running slowly

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.

ElDoc doesn't show after pressing DEL

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.

Remove CIDER welcome message

The welcome message obscures errors that may have occurred while the REPL was starting up.

This should be pretty easy.

M-p in CIDER REPL with Paredit

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.

Multiline Clojure docstrings in ElDoc

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.

CIDER middleware errors while editing protocols

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.

Highlight occurrences

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.

ClojureScript development environment

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.

New file templates

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.

I-search highlight color

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.

Docstrings in protocol methods

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.

OSX integration should only be done on OSX

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.

Add trailing newline

The "add trailing newline on save" feature doesn't appear to be working for some files, namely .gitignore.

clojure.repl should be available everywhere

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.

Paredit should be disabled while pasting

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.

Don't hardcode the color of the "buffer modified" indicator

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.

REPL process shown in Mac app switcher

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.

Automatically reload files modified outside of Emacs

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.

Automatically wrap I-searches

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.

Add README

This should include a description of the included packages, a list of useful keybindings, and information about nonstandard configuration and/or hacks.

Delay after cider-jack-in?

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?

Prompt to convert dashes to underscores

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.

Config for messing with color themes

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.

Company messes up CamelCase symbols

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.

Electric indentation in docstrings does not work

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.

Turn off Paredit and Aggressive Indentation on merge conflicts

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.