| Commit message (Collapse) | Author | Age |
| |
|
|
|
|
|
| |
The delay is a major hindrance in consequtive notifications as with
interactive debugger contexts.
|
| |
|
|
|
|
| |
And rename :no-server-kill to :keep-server process property
|
| |
|
| |
|
| |
|
|
|
|
| |
- obsolete nrepl-buffer-name-separator, nrepl-buffer-name-show-port
|
|
|
|
|
|
|
|
| |
Note that this requires nREPL 0.4.3+.
See
https://github.com/nrepl/nREPL/commit/e77945a70f68989f69e955eef9e6cbe75cedacf4
for the related nREPL change.
|
|
|
|
|
|
| |
jack-in
This was changed accidentally a while ago and continued to work on pure magic. :D
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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.
|
| |
|
|
|
|
|
|
|
| |
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
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Without a named var, `with-parsed-tramp-file-name' expands to bind `port', which
it then `ignore's, w/out var as a prefix; this raises a byte-compiler warning
See: https://travis-ci.org/clojure-emacs/cider/jobs/317868996#L835
|
|
|
|
|
|
|
|
|
|
| |
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
|
|
|
|
| |
`'nil` is fine in Emacs 25, but not in Emacs 24.
|
| |
|
|
|
| |
After quitting the REPL child Java processes on Windows weren't properly killed (likely an Emacs bug). Seems that `interrupt-process` does the trick, so now we use `interrupt-process` instead of `kill-process` if the OS is Windows.
|
|
|
|
|
| |
This way it can be customized on a per-project basis using .dir-locals.el
without warnings.
|
|
|
|
|
| |
All of those were making their buffers read-only explicitly, but that
behaviour is automatically inherited from special-mode.
|
|
|
|
|
| |
If we don't do this the text properties would mess up the nREPL
messages log.
|
| |
|
|
|
|
|
| |
In order to have the keys print in a predictable order, we can sort them before printing.
Some common keys are treated specially and are always displayed before the rest. This commit also improves the alignment of nrepl message values.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Seems like a bug crawled into 0fb25a8.
The compiled version would have fail like:
[nREPL] Establishing direct connection to somehost:42 ...
nrepl--direct-connect: Not enough arguments for format string
Interactively loading `nrepl--direct-connect` function, would
have fail with "let bindings can have only one value form" kind of error.
After this commit the thing fails in a more appropriate way:
[nREPL] Establishing direct connection to somehost:42 ...
[nREPL] Direct connection to somehost:42 failed
nrepl-connect: [nREPL] Cannot connect to somehost:42
|
| |
|
| |
|
|
|
|
|
| |
Due to a silly mistake the code never entered what was supposed to be
the fallback connection code branch.
|
| |
|
|
|
|
| |
This should make it easier for people to figure out what's going on.
|
| |
|
| |
|
|
|
| |
Pass connection and signify that we want to close the tooling session.
|
|
|
|
|
| |
Connection and session are inextricably linked. Rather than try to thread these
two in lockstep throughout the whole request life cycle, we let the last step
insert either the nrepl-session or the nrepl-tooling-session.
|
|
|
|
|
|
|
|
|
| |
direct connection
This behavior was confusing for some users and couldn't be manually configured.
Now the behavior is configurable via the new defcustom
`nrepl-use-ssh-fallback-for-remote-hosts`
and is disabled by default.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
The functions in `cider-compat.el` were actually added in Emacs 25.1,
not Emacs 24.4.
|