| Commit message (Collapse) | Author | Age |
|
|
|
|
| |
No need to load the entire CIDER to test only functions from a
specific file.
|
|
|
|
| |
No need to load the entire CIDER to test just a single function.
|
|
|
|
|
|
|
|
|
|
| |
All of the non-eval functionality was removed, which
marks the end of the process of breaking up the old file.
Down the road we may opt to break down cider-eval into some core
functionality and extra functionality, as many of the eval
commands there are kind of "exotic", but that's not that important
at this point.
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Since this is a sensitive codepath (cider-defun-at-point), it is risky
to change its behavior due to introducing bugs or introducing
unexpected behavior. This _should_ only affect evaluation inside a
comment form but we want to be careful. Therefore there is a defcustom
`cider-eval-toplevel-inside-comment-form` while others test this. If
there is a bug, it is easy for users to turn this feature off completely.
|
|
|
|
|
|
|
| |
This reverts commit b28fbac964907172fdedc3bea56eab905d5fbdbf.
This can't be fully removed due to the difference in the signature
of `if-let*` and `when-let*` in Emacs 25 and 26.
|
|
|
|
| |
It's no longer needed now that we target Emacs 25.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Second attempt on #2069. A brief description of the new functionality follows.
1) __Jack-in/connect__
- User level commands:
Create new sessions:
C-c M-j: cider-jack-in-clj
C-c M-J: cider-jack-in-cljs
C-c M-c: cider-connect-clj
C-c M-C: cider-connect-cljs
Add new REPLs to the current session:
C-c M-s: cider-connect-sibling-clj
C-c M-S: cider-connect-sibling-cljs
- `cider-jack-in-clojurescript` no longer creates two repls, only the cljs repl
- clj repl has no longer a special status of the "main" repl. All repls within a session share same server and are siblings of each other. You can create as many clj and cljs siblings as you want from any repl.
- Creation of the client is no longer tightly bounded with the nrepl-server startup. The dynamic communication mechanism between jack-in and nrepl-server filter has been replace by a simple `on-port-callback`.
2) __New Connection and Session Management API__
- Connections (aka REPLs) are grouped in [sesman](https://github.com/vspinu/sesman) sessions. Sibling repls are added to the current session.
- Cider connection commands (`cider-quit`, `cider-restart`, `cider-display-connection-info`) have been refactored to operate exclusively on the connection level.
- Sesman commands operate on the whole session:
![sesman-map](https://user-images.githubusercontent.com/1363467/41355277-6864ffb8-6f21-11e8-9387-3de586477d68.png)
- Associations (links) between current context (buffer, directory, project) are governed by sesman and could be formed only on the session level.
In a nutshell, session can be linked to projects, directories and buffers. Buffer link have precedence over directory links, and directory have precedence over project links.
When a sesman session is registered it's automatically linked with the lowest priority context (project, or directory if no project found). By default (configured with `sesman-1-to-1-links`) multiple sessions can be linked with a project or a directory, but only one session can be linked with a buffer.
Cider functionality (eval, completion, repl-switching etc) operate on linked sessions. When there are multiple linked sessions ambiguity is automatically resolved by the recency of the REPL buffers (configured with `sesman-disambiguate-by-relevance`).
- Show info on current links with `C-c C-s l`. Show info on current, linked or all sessions with `C-c C-s i`.
- Micro-management of the server is not allowed (it's not useful and would complicate UI). All repls within a session share a server. Server can be either remote (`cider-connect`) or local (bootstraped within the emacs during `cider-jack-in-xyz`).
In case of the local server, when the last connection is killed the server is automatically killed. `cider-restart` restarts the connection but not the server. `sesman-restart` restarts the server and all the connections.
At least two issues I still plan to tackle here:
- Restart of SSH tunneled connection has not been tested and probably doesn't work
- REPL buffer naming system is no longer adequate. It should be possible to include session name as part of the buffer name and add more flexibility into the customization of buffer name templates.
-----
A tot of no longer necessary or questionable functionality has been removed. The goal is to start from scratch and add only what is really necessary. I am listing all the removed functions for the ease of lookup through the github interface.
Removed:
cider--connection-host,
cider--connection-port,
cider--connection-project-dir,
cider--connection-properties,
cider--connection-type,
cider--guess-cljs-connection,
cider--has-warned-about-bad-repl-type,
cider--in-connection-buffer-p,
cider--quit-connection,
cider--restart-connection,
cider-assoc-buffer-with-connection,
cider-assoc-project-with-connection,
cider-change-buffers-designation,
cider-clear-buffer-local-connection,
cider-close-nrepl-session,
cider-connections (variable),
cider-current-connection (variable),
cider-current-messages-buffer,
cider-current-repl-buffer,
cider-default-connection,
cider-extract-designation-from-current-repl-buffer,
cider-find-connection-buffer-for-project-directory,
cider-find-reusable-repl-buffer,
cider-make-connection-default,
cider-map-connections,
cider-other-connection,
cider-project-connections,
cider-project-connections-types,
cider-prompt-for-project-on-connect,
cider-read-connection,
cider-repl-buffers,
cider-replicate-connection,
cider-request-dispatch,
cider-rotate-default-connection,
cider-toggle-buffer-connection,
cider-toggle-request-dispatch,
nrepl-connection-buffer-name-template,
nrepl-create-client-buffer-function,
nrepl-post-client-callback
nrepl-prompt-to-kill-server-buffer-on-quit,
nrepl-use-this-as-repl-buffer,
Connection Browser Functionality:
cider--connection-browser-buffer-name,
cider--connection-ewoc,
cider--connection-pp,
cider--connections-close-connection,
cider--connections-goto-connection,
cider--connections-make-default,
cider--connections-refresh,
cider--connections-refresh-buffer,
cider--ewoc-apply-at-point,
cider--setup-connection-browser,
cider--update-connections-display,
cider-client-name-repl-type,
cider-connection-browser,
cider-connections-buffer-mode,
cider-connections-buffer-mode-map
cider-connections-close-connection,
cider-connections-goto-connection,
cider-connections-make-default,
cider-display-connected-message,
cider-project-name,
Renamed:
cider-current-session -> cider-nrepl-eval-session
cider-current-tooling-session -> cider-nrepl-tooling-session
cider-display-connection-info -> cider-describe-current-connection
cider-create-sibling-cljs-repl -> cider-connect-sibling-cljs
nrepl-connection-buffer-name -> nrepl-repl-buffer-name
cider--close-connection-buffer -> cider--close-connection
## repl <> connection overlap cleanup
cider-connections -> cider-repls
cider-current-connection -> cider-current-repl
cider-map-connections -> cider-map-repls
cider-connection-type-for-buffer -> cider-repl-type-for-buffer
cider-repl-set-type -> cider-set-repl-type
|
| |
|
| |
|
| |
|
|
|
|
| |
See https://github.com/clojure-emacs/clj-refactor.el/pull/392#issuecomment-352399191
|
| |
|
| |
|
|
|
|
|
|
| |
Previously in such cases we'd get a `do` expression without a body, which isn't
be nice. Now we generate the config expression only after checking it needs to
generated to begin with.
|
|
|
|
|
|
|
| |
It evaluates the current top-level form up to the point. You can think of this
as a poor man's contextual evaluation.
The command is bound by default to `C-c C-v (C-)z` in `cider-mode`.
|
|
|
|
|
|
|
|
|
|
|
|
| |
(#2156)
The `cider-tramp-prefix` does not return only tramp prefix.
It used the `tramp-make-tramp-file` in the `with-parsed-tramp-file-name` which force it to make a full tramp file path, not only prefix. I placed the `cider-make-tramp-prefix` for making prefix only. It is modified a little bit from `tramp-make-tramp-file`.
The `cider--client-tramp-filename` does not remove `file: scheme` for tramp filename.
It should return the string with tramp prefix and remote source path. But previous version leaves `file: scheme` in a remote source path. I just added a line to remove this scheme in this function.
The `cider-find-file` leaves a useless list buffer per opening remote archived source like zip, jar.
When continuously tracking, it'll will generate a lot of trash and make us tired to remove it. Now it'll be removed automatically.
|
|
|
|
| |
See https://blog.readthedocs.com/securing-subdomains/ for details.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Cljc buffers send their evals to both clj and cljs repls if available due to
`cider-map-connections`. Toggling a current buffer's connection involves hiding
the other connection.
Previously, when toggling _again_, the original list was not consulted and only
the truncated list, preventing the other connection from being found. This
allows for the full list to be searched for the other buffer.
In addition, a prefix dictates that the local connection list is discarded in
favor of the full list, restoring the evaluation in both clj and cljs
buffers (if both are present).
|
| |
|
| |
|
|
|
|
|
|
|
|
| |
Fixes #2133
In Emacs 26, the print representations of structs changed from `[cl-struct ...]`
to `#s(...)`. This broke tests that compare structs against print
representations. Building structs dynamically resolves this.
|
|
|
|
| |
See: https://emacs.stackexchange.com/a/10058/10269
|
|
|
|
|
|
|
|
|
|
| |
Fix #2130.
Emacs 26 obsoletes `if-let` and `when-let`, replacing them with `if-let*` and
`when-let*`. This raises byte-compilation warnings (treated as errors) when
testing against Emacs 26.
See: http://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-26#n1278
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
- new function `cider-project-connections-types`
- `cider-connection-type-for-buffer` returns "multi" in cljc an cljx
|
|
|
| |
Basically we simply apply the ANSI color and discard it, so it would interfere with the `clojure-mode` font-locking we're doing.
|
|
|
|
|
|
|
| |
when filtering stackframes, there was only a "remove" type of filter. If we wish
to filter to just our project, we need a way to ensure that project frames
persist even if another tag says to remove it. This adds the "positive" filter
mechanics.
|
|
|
|
|
|
|
|
|
|
| |
In order to add "positive" filters, we must only show or hide when we're
actually on a stackframe line. This method takes a very naive way of starting at
the top of the buffer and considering whether to hide all lines. The other lines
just don't have any 'flags properties so they never come up as needing to be
hidden in the `(seq-intersection filters flags)` part, so hide is always false
on them. But if we want to show _only_ those lines with a particular flag this
hides the cause line and any other lines that don't have flags at all.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
These tests pass in their current form, but they do not pass on a build of emacs
from source tracking master. The tests use cl-every and cl-some and the tests
assert that the results are either `:equal-to t` or `:not :equal-to t`. Right
now, cl-some returns t but on my build of emacs from master it returns the truth
value that it finds, causing buttercup to fail in its comparison with:
FAILED: Expected cider-reader-conditional-face to be `eq' to t
So rather than checking against some value for truth, we use the buttercup
assertion :to-be-truthy.
Further, we remove the reliance on the cl library and switch over to seq.el.
Also some line length formatting and rename test predicate helpers.
|
| |
|
|
|
| |
This also fixes some issues checkdoc was currently reporting.
|
| |
|
| |
|
|
|
|
|
| |
This will allow users to customize options that are not related to tasks and passed directly to
their build tool of choice. For instance: `-o` in `lein -o ....` for offline mode.
|
| |
|
| |
|