- Counterclockwise 0.35.1
- Counterclockwise 0.35.0
- Counterclockwise 0.34.0
- Counterclockwise 0.33.0
- Counterclockwise 0.32.0
- Counterclockwise 0.31.2
- Counterclockwise 0.31.1
- Counterclockwise 0.31.0
- Counterclockwise 0.30.0
- Counterclockwise 0.29.1
- Counterclockwise 0.29.0
- Counterclockwise 0.28.1
- Counterclockwise 0.28.0
- Counterclockwise 0.27.1
- Counterclockwise 0.27.0
- Counterclockwise 0.26.0
- Counterclockwise 0.25.2
- Counterclockwise 0.25.1
- Counterclockwise 0.25.0
- Counterclockwise 0.24.2
- Counterclockwise 0.24.1
- Counterclockwise 0.24.0
- Counterclockwise 0.23.0
- Counterclockwise 0.22.0
- Counterclockwise 0.21.0
- Counterclockwise 0.20.0
0.35.1
released on December 07, 2016
This is the first Counterclockwise version compatible with Clojure 1.9.
As a reminder, Counterclockwise now requires a JVM >= 8.
-
Fix the dependency on
ccw.server
by upgrading to version0.2.1
which fixes the incompatibility with Clojure 1.9 forms destructuring
0.35.0
released on July 09, 2016
This is the first Counterclockwise version compatible with Eclipse Neon.
This version requires a JVM >= 8
-
Sometimes Hyperlinking would throw a NumberFormatException. Fix #850
-
The REPL View is now visible in all Perspectives, not only the perspective where it was opened. Fix #686
-
The
java-resource-paths
file finding strategy was considering folders as correct results which was wrong. Fix #847
0.34.0
released on August 21, 2015
-
Thanks to User Plugin
ccw-plugin-hyperlink
which is embedded by default, a new kind of hyperlink has been added: for opening relative or absolute files from literal Strings. Will search relative to the current location, to the java classpath root folders if java project, to the project root, or to the filesystem root. UseCmd+Click
orF3
-
Removed the default binding for the
Show Active REPL View
command since it does not work well with German keyboard (prevents from typing @)
-
When starting arbitrary Leiningen command through
Alt+L L
, there was a possibility that the command hang forever. Fix #840
0.33.0
released on August 5, 2015
-
double-click when in code now does the same as if the user had triggered the
Expand Selection Right
command. The net result is that you can select entire forms by double clicking on their start character ; you can also select entire symbols even if there are hypens inside, etc. Fixes #516
-
Fix an issue on OS X to preventively fix the PATH environement variable which is generally not even set with
/usr/local/bin
included. Fixes #709 -
Launching a new REPL now works similarly from within an editor or from the contextual menu of a clojure file: the editor content or file content is loaded, and the REPL switches to the corresponding namespace. Fixes #833
-
Fix spurious exceptions thrown after having changed text color preferences
0.32.0
released on July 29, 2015
-
Note that Counterclockwise drops Eclipse 3.x support, and now only supports Eclipse 4
-
This release upgrades the embedded Leiningen from 2.5.0 to 2.5.1.
-
Fix bug preventing to go to symbol declaration (upgrade of
ccw.server
version to0.2.0
) -
Preference to revert printing of namespaces and exceptions in the REPL to the 1.6.0 behavior
cider-nrepl
( https://github.com/clojure-emacs/cider-nrepl ) is a community effort to provide editor-agnostic nREPL middlewares.
CCW is now able to use cider-nrepl
middlewares for providing the same features available in the ccw.server
lib, though not all features of cider-nrepl
are exposed by CCW yet.
-
There is a Clojure Preference Preferences › Clojure › General › Launch REPLs with cider-nrepl that is turned on by default.
-
This Preference automatically creates a
cider-nrepl
enabled REPL when you use the Clojure launchers viaRun as …
menus or contextual menus or keyboard shortcuts (e.g. Ctrl+Alt+S) -
Note that if CCW detects
cider-nrepl
in the project classpath, then the project version will be used. -
This works both for Leiningen projects or any Java project having the Clojure jar in their classpath.
Warning
|
CCW only works with cider-nrepl > 0.9.1
|
More manual work is required if your project also has ClojureScript.
First add cider-nrepl
and piggieback
support for your project:
(defproject ...
;; cider-nrepl support
:plugins [[cider/cider-nrepl "0.9.1"]]
; piggieback support for clojurescript nrepls
:profiles {:dev {:dependencies [[com.cemerick/piggieback "0.2.0"]
[org.clojure/tools.nrepl "0.2.10"]]
:repl-options {:nrepl-middleware
[cemerick.piggieback/wrap-cljs-repl]}}})
Then you can a REPL in Counterclockwise as usual, e.g. from the project’s node or some clojure file.
Then invoke piggieback to start a Clojurescript REPL. Here’s an example with a Rhino REPL:
(cemerick.piggieback/cljs-repl (cljs.repl.rhino/repl-env))
The REPL is now a Clojurescript REPL. You now get code completion and documentation from the Clojurescript environment.
-
If the REPL requires an input from the user, no blocking (modal) popup is used anymore. Instead, the Input Area is refocused to send its next content to in via the appropriate nREPL op.
-
The result of the evaluated form will be pprinted when it is possible to use pprint (currently only if
cider-nrepl
is enabled). -
A new Preference has been added to Preferences › Clojure › REPL View for disabling the use of pprint
-
Two hovers added: "Macro expansion" (using
macroexpand
, Ctrl) and "Recursive macro expansion" (usingmacroexpand-all
, Ctrl+Shift), both leveragingcider-nrepl
wrappers if found. -
New preference page for CCW hovers under Preferences › Clojure › Editor › Hovers. Keyboard modifiers can now be set for each hover.
-
Eclipse Extension point for third party plugins to contribute new kinds of hovers (see the
ccw.core.cljEditorTextHovers
extension point and theITextHover
interface)
Counterclockwise now ships with some User Plugins out of the box. In this release, the following User Plugins are included: - Hello World - https://github.com/ccw-ide/ccw-plugin-hello-world - Zoom - https://github.com/ccw-ide/ccw-plugin-zoom - User Plugins Manager - https://github.com/ccw-ide/ccw-plugin-manager - ANSI Colors in REPL - https://github.com/ccw-ide/ccw-plugin-ansi-repl For the ANSI Colors plugin to work, one needs to install the ANSI EConsole Eclipse plugin from the Market Place. The ANSI EConsole plugin is embedded with CCW/Standalone.
In case you have already checked out a User Plugin in you ~/.ccw/
folder, yours will always take precedence over the one embeded in Counterclockwise (as long as you’ve kept the same directory name).
-
Faster Eclipse Startup: with lots of user plugins installed, CCW used to freeze while the user plugins where launched. They are now launched in the background.
-
The keybinding cleaning function did concurrent modifications of an Eclipse Internal collection. Fix ccw-ide/ccw-plugin-manager#1
-
The keybinding cleaning function had a bug which made keybindings seem to erratically work. It has been fixed
-
Add a mention about keyboard binding for switching between default and strict editing modes ( Alt+D ). Fixes #346
-
Embedded Leiningen version upgraded from version 2.5.0 to 2.5.1
-
Better support for opening with the editor files ending with clojure extensions:
cljs
,cljx
,clja
,cljc
-
Better support for extension via User Plugins: creation of namespace
ccw.wizards.new-namespace
-
New Clojure Project Wizard honors the 'use previous location' checkbox. Fixes #682
-
When launching a REPL for a project it a REPL is already running for it, there is now no exception thrown when accepting to reuse the existing one
-
Code completion works even if there’s a comment at the end of the document. Fixes #777
-
When creating a leiningen project, the dependencies were updated twice. Fixes #817
-
Editor code completion suggests Clojure special forms (
do let etc.
) appropriately. Fixes #823 -
Editor hippie completion a little faster by removing unnecessary intermediate sort (probably negligible, but he, clojurers know the value of things ;-)
-
Print maven coordinates of Counterclockwise dependencies at plugin startup in
.metadata/.log
. Fixes #741 -
Launching REPLs from launch configurations now correctly opens up a
REPL View
if the process outputs an nrepl URL in the stdout Console -
Namespace Browser now opens external files correctly when double clicking on a var label (e.g. will open internal Eclipse files, user plugin files, etc.)
Counterclockwise ships with an embedded nREPL server. The following enhancements have been applied:
-
New Command Line option
-Dccw.nrepl.port=[1-65535]
: allows to select the embedded nrepl port. -
Command Line option
ccw.autostartrepl
has been renamed toccw.nrepl.autostart
. -
When Command Line option
ccw.autostartrepl
is specified, thecider-nrepl
middleware is used instead of the nRepl default middleware.
-
Clojure › Test → Generator… shows the SWTBot generator which monitors UI events as they are performed and then generates pieces of code that can be reused later in automated tests.
-
Adjusted JVM parameters to have a faster startup (-server, -Xverify:none, -Xms256m -Xmx1024m)
0.31.2
released on December 4, 2014
-
Added namespace
ccw.api.markers
for managing resource markers. Resource markers typically appear in the editor margins (error markers, warning markers, tasks, bookmarks, etc.), and in their respective problem views, task views, bookmark views, etc.
Example: creating a new type of marker ccw-plugin-clj-lint
, simply inheriting from Eclipse-provided Problem markers (implicit inheritence if not provided), with markers that will persist across Eclipse restarts. Then creating a marker for some imaginary foo.clj
file, located in project my-project
, in subfolder src/bar/
(require '[ccw.api.markers :refer (register-marker-type! create-marker!)])
(require '[ccw.eclipse :refer (workspace-resource)])
(register-marker-type! {:id "ccw-plugin-clj-lint", :persistent true})
(create-marker!
(workspace-resource "my-project/src/bar/foo.clj")
{:type "ccw-plugin-clj-lint"
:severity :warning
:line-number 2
:message "The variable baz is unused."})
0.31.1
released on December 4, 2014
-
Editors which were open when exiting the IDE would break when reloading. Fix Issue #678 - Error trying to edit a Clojure source file, after upgrading to v0.31.0
-
The Eclipse context is now wrapped. The wrapper extends ILookup. This allows the Eclipse context to be destructured easily. The original Eclipse context is available with the key "org.eclipse.e4.core.contexts.IEclipseContext" or ":eclipse-context" for advanced usages.
-
The concise form of
defcommand
now accepts that argument vectors be empty as an alternative to having the context argument
Examples:
; version with 0 arguments (not interested of using the eclipse context)
(defcommand switch-to-repl "Switch to the REPL View" "Cmd+R S"
[] (repl/show-repl))
; version with the context argument without destructuring
(require '[ccw.core.e4.model :as m])
(defcommand zoom-in "Zoom the text in" "Cmd++"
[context] (zoom (m/context-key @m/app :workbench) 2))
; version with the context argument and destructuring
(defcommand zoom-in "Zoom the text in" "Cmd++"
[{:keys [workbench]}] (zoom workbench 2))
-
Added function
ccw.api.repl/show-repl
for bringing to front / optionally giving focus to a (or the last active) REPL. Demonstration of the feature for creating a new command in the [ccw-plugin-repl](https://github.com/ccw-ide/ccw-plugin-repl/) user plugin, in script filerepl-keybindings.clj
.
0.31.0
released on December 4, 2014
-
Removed lots of workspace locks when managing leiningen dependencies (after importing a project, after editing project.clj) which were really annoying because it was then impossible to save a file because the background leiningen job had a lock on the workspace. Fix #Issue 671 - Update leiningen dependencies should not block the workspace that long
-
Eclipse source folders could not be correctly set when some Leiningen plugins were placing jar files external to the project in the source folders list. Fix Issue #675 - Could not reset project classpath NPE
-
Added namespace
ccw.api.repl
for use by user plugins. Related to REPL management (sending expressions for evaluation, getting/setting the current namespace). -
Added namespace
ccw.events
which is a thin wrapper around Eclipse 4 IEventBroker, allowing User plugin developers to subscribe to topics, post / send data to topics. -
defhandler
now accepts closures in addition to var symbols. -
in
defkeybinding
,Cmd
is now an alias forM1
, thus making it OS portable (Cmd
will be replaced toCOMMAND
for OS X, andCtrl
for Windows/Linux). If you really insist on being specific, you can youCOMMAND
orCTRL
which are not interpreted.
-
commands/handlers/keybindings were not properly removed when all user plugins were removed at once (e.g. ~/.ccw/ was renamed to ~/.ccw-disabled)
-
defhandler
does not create a new var named after the command (with a '-handler' suffix) anymore -
defkeybinding
correctly interprets the :context key -
defkeybinding
a bad :context value could break binding tables. This is fixed, an error is reported on stdout and the :window context is used as a default
Everytime a Clojure editor is saved, a map with the namespace String, the absolute file path and the active REPL if there is one is posted to the Eclipse 4 Event Broker to the "ccw/editor/saved" topic (just use :ccw.editor.saved in your user plugins to refer to the topic, the conversion is automatic).
Everytime a response is received from an nrepl connection, the response data is posted to the Eclipse 4 Event Broker to the "ccw/repl/response" topic (just use :ccw.repl.response in your user plugins to refer to the topic, the conversion from :ccw.repl.reponse to "ccw/repl/response" is done by ccw.events
functions).
0.30.0
released on November 16, 2014
This release fixes bug in the 0.29.1 release.
It has not been labelled 0.29.2 because one fix involved a new way of building the CCW/Standalone Product.
-
There were
java.lang.ExceptionInInitializerError
caused by: org.eclipse.swt.SWTException: Invalid thread access errors at Eclipse startup, caused by (import) calls in Clojure loading JDT classes static initializers too early. This has been fixed by changing the way Preferences are fetched from the JDT. -
Race conditions between the Automatic Clojure Nature adder and m2e initializing its classpath containers.
-
The CCW/Standalone Product is built differently than before. Hopefully for the better. I’ve followed the way e.g. the voclipse IDE by Vogella is built.
-
Fixed some lifecycle exceptions when Eclipse is closed. Not really problematic, but was filling the logs.
-
Added CCW / Luna Release / Luna Updates / Eclipse Color Themes repositories to Software Update Sites list
-
Changed the default proposal for the workspace: instead of locating it inside the Eclipse folder, suggest
$user.home/ccw-settings
-
New preference Preferences › Clojure › General › Leiningen jar for selecting a leiningen jar to use instead of the one embedded with Counterclockwise.
The project does not suggest the Eclipse workspace as default location anymore.
Instead, the last value for the location field is suggested.
0.29.1
released on November 13, 2014
-
The
:repositories
Leinineng key was not currectly respected since the source files addition. Fix Issue #653 - Issue 653: Wrong error reports for dependency resolution, as well as issue reported on mailing by Alexander Taggart. -
Counterclockwise was too chatty when files were dragged from the filesystem (e.g. dragging jar files was triggering the 'do you want to create a leiningen project?' popup).
-
Counterclockwise was triggering many times the 'do you want to create a leiningen project?' popup after a user declined or failed drag.
-
The
letfn
form is indenting correctly the definitions of named functions inside the definition vector. Fix Issue #439 -
Fix Issue #666 - Some :repository declarations in project.clj cause
-
Make Leiningen created projects honor the Java Preference
Java > Build Path > Output folder name
.
0.29.0
released on October 20, 2014
This release is mostly a maintenance release. It is also the first release embedding Leiningen 2.5.0 instead of Leiningen 2.3.4.
-
Removed default keybinding Alt+Command+Q E for command 'New REPL client for Eclipse embedded nrepl server (advanced usages) which was conflicting with a JDT command
-
Fixed
Convert to Clojure Project
when one wants a quick & dirty way to add clojure jar to a project classpath -
Dragging a leiningen project already placed inside the workspace folder now works (was throwing an exception previously)
-
Embedded Leiningen version upgraded from version 2.3.4 to 2.5.0
-
Leiningen Automatic detection now works only if the project does not already have Java Classpath metadata set (technically speaking: if the project does not have the Java Nature).
-
Added command
Remove Leiningen Support
to theLeiningen
contextual menu. Removes theLeiningen
Support, but will not touch the project’sJava build path
. Fix Issue #663. -
REPL View visual hint (<type clojure code here>) is displayed according to the Preferences › Clojure › REPL View › Show hints Preference. Fixes #662 - Toggle REPL hint (Settings)
0.28.1
released on September 28, 2014
-
Drag & Drop from Github / Bitbucket / Google Code URLs works in Linux
-
Added a check for missing
.classpath
file for Leiningen projects. Automatically reconstruct the java build path if it is missing. -
Better User feedback for Drag & Drop folder actions
0.28.0
released on September 25, 2014
In reaction to a project creation which contains a project.clj
file, or an existing project modification consisting in adding a project.clj
file, etc., CCW will by default react by adding the Leiningen Nature
to the project. Meaning you’ll see the Leiningen Dependencies
Classpath Container appear in the project, and be able to launch it as a Leiningen project.
This feature can be disabled globally via the Preferences › Clojure › General › Automatic detection of Clojure/Leiningen projects preference
It is possible to drag a project folder project from Windows Explorer / Finder onto Eclipse / Counterclockwise. Any Leiningen project found within the dragged folder(s) will automatically be created ; and configured appropriately if automatic configuration is enabled.
It is possible to drag a Github / Bitbucket / Google code project URL from your browser to Eclipse / Counterclockwise. The standard Eclipse Git Import wizard will be open, pre-filled with repository information.
Once the project has been cloned, just select the Create a general Project
option: a general project will be created, and if Automatic configuration is enabled, recognized as a Leiningen Project.
-
The
REPL View
shows a visible separation between the log area and the text input area -
A
<type clojure code here>
placeholder is also visible when the input area doesn’t have the focus
Fix Issue #560
-
Leiningen dependencies are updated in the background. They do not block the UI until they’re finished anymore.
0.27.1
released on August 28, 2014
-
Fix Issue with Eclipse Kepler (race conditions on plugin startup). Fix Issue #652 - should also prevent some other problems as well
-
Fix Issue with
Namespace Browser View
which was broken in version 0.27.0
0.27.0
released on August 21, 2014
If source jars for dependencies are available on the repositories, they are downloaded and set up on the Leiningen Dependencies
classpath container. (Thank you Zhang Yaokun - aka paxnil on Github - for the pull request!)
-
It is now possible to add breakpoints on
cljx
files in addition tocljs
files. -
Breakpoints open the right files (those in source folders, not in bin/ folder) when leiningen is used to debug the project - i.e. the default behaviour - (was only working when project was started directly by Eclipse)
-
Breakpoints correctly pick the right files, e.g. they do not mess with multiple
core.clj
files in the project classpath. Fixes Issue #273
-
Don’t activate Leiningen commands in wrong places in the IDE (e.g. in unrelated contextual menus). Fix Issue #642
-
In CCW/Standalone, one can succesfully Open Window › Preferences › General › Appearance whereas an error occured previously. Fixes Issue #646. Thank you Andrea Richiardi for filing the Issue and finding the relevant resources which helped me to fix it quickly!)
-
Fixed race conditions during Eclipse startup between CCW and the JDT indirectly starting the DebugUIPlugin while the workbench has not been created yet (why the stack towards getting a JDT classpath check leads to trying to start the DebugUIPlugin in Eclipse is an exercise left to the reader). Fix Issue #651
0.26.0
released on July 10, 2014
The wizard now accepts lein new
template arguments. Simply put them after the template name.
-
Adds preferences for REPL history - Contributed by Gunnar Völkel
-
Preference for REPL history size.
-
Preference for REPL history persistence schedule.
-
zombie REPLs (when connection is lost)
-
are automatically disabled (buttons and text grayed, input area non editable)
-
and won’t be used for sending code from editors
-
New Clojure namespace
wizard now works with fully qualified namespaces, pre-fills the input text with the currently selected package name and creates missing packages on the fly. Fix Issue #468 -
New Clojure namespace
wizard now accepts file starting with numbers. Fix Issue #466 -
Correct indenting of new threading macros, as→ cond→ some→. Fix Issue #554
-
F3 Navigate to Definition
was not working for single segment namespaces. Fix Issue #572 (Thanks isto.nikula for the patch!) -
Upgraded missing dependency on
ccw.server 0.1.1
which is where the fix for Code Completion not succeeding sometimes is located! -
REPL View
: Better handling of cursor movement in output area of REPL. Fix Issue #529 -
You can use arrow keys, copy keys in the REPL output area
-
You can use Tab key to switch to the REPL input area
-
REPL View
accepts the Drawbridge protocol, thus allowinghttp(s)://<server>:<port>/repl
orhttp(s)://<user>:<password>@<server>:<port>/repl
URLs. Fix Issue #501 -
REPL View
does not open and give proper error message if connection is not possible (e.g. Drawbridge HTTP 401) -
Outline View
: There were unexpected exceptions thrown depending on the content of the Editor. These were due tojava.lang.Comparator
contract violations. Fix Issue #639 -
Editor
: In strict/paredit mode, forward/backward delete do not prevent to removein front of
()
or{}
or""
. Also, fixed a bug where forward delete allowed to remove(
or{
or"
if there was a leading. Fix Issue #523
-
Also changed a behavior: the cursor is not stuck, either something is deleted, either the cursors moves forward or backward
0.25.2
released on May 17, 2014
-
Upgraded dependency on
ccw.server 0.1.1
which is where the fix for Code Completion not succeeding sometimes is located!
0.25.1
released on May 17, 2014
When Preference Clojure
> General
> Launch Leiningen projects with Leiningen
is unchecked, then Run as
for the project will use the Eclipse Project Settings, not the Leiningen project settings. And Leiningen will not be used to launch the project.
But still, users have reported that there is a need for a command for explicitly launching the project via Leiningen.
Thus the "Headless Leiningen REPL" command has been resurrected. You can find it in the Leiningen contextual menu, or invoke it via the Alt+L H Keyboard Shortcut.
-
Error on load file in REPL, due to spaces in path introduced in 0.25.0. Thank you alzadude for the Pull Request!
-
Project wizard issue if you (only) unselect the default location checkbox. Fix Issue #637
-
Code Completion would not succeed sometimes and NullPointerExceptions would be logged instead. Fix Issue #631
0.25.0
released on April 25, 2014
Counterclockwise now uses Clojure 1.6.0 internally instead of 1.6.0-alpha3 before.
The launch startup time of leiningen projects has been slightly improved by using more appropriate JVM flags (inspired by the ones used by the leiningen shell script).
There was kind of an incompatibility between CCW and Leiningen. In short, CCW uses the :injections
project key to inject nrepl server code, and this code is also injected by leiningen when AOT compiling in subprocesses. The server code was creating futures, thus preventing the AOT compilation process to shutdown in due time.
The problem of UI freeze has also been globally addressed by improving the launcher code.
With the new Leiningen Launcher, the Console View was systematically stealing focus from the REPL View, because it was (deterministically) outputting the REPL server port after the REPL View was started and focused on.
This improper behavior was a consequence of the use of an acknowledgement socket between the nrepl server and the nrepl client. Leiningen gets the nrepl port after the acknowledgement has been done by the nrepl server library. So it cannot be changed to output the nrepl port before nrepl sends it back via the acknowledgement socket.
The solution which has been retained is to stop using acknowledgement sockets for getting the repl port back.
From now on, CCW relies on Leiningen outputting the nrepl port on its stdout (using the nRepl URL format).
To remain compatible with this behavior (and simplify the code internally), the regular Clojure launcher has been enhanced to also output the nrepl URL to stdout.
The console stack trace hyperlinks where wrong if the namespace was separate in several files loaded from the main namespace file. Fix Issue 634 - Clicking links in stacktraces bring you to the file of the namespace, not the file with the code causing the crash
Counterclockwise Automatic detection of Clojure projects
and Maven m2e Update Maven projects on startup
preferences do not play well when both set to true. Counterclockwise code has been carefully audited and updated to prevent IResource locks, but the problem remains anyway. It is strongly suggested to not use m2e Update Maven projects on startup
. Fixes Issue #633
0.24.2
released on April 11, 2014
When CCW launches a REPL for a Leiningen project, it uses lein repl :headless
. This leiningen task will, by default, try to load the namespace declared via the `[:main]`path in project.clj map (if no other namespace has been explicitly defined by the user via the `[:repl-options :init-ns] path). This magical side-effect is undesirable as default behavior, and can cause the namespace code to be loaded twice if the REPL is invoked via its source code editor. This can be problematic for certain codebases.
CCW fixes this by dissocing the :main key in the project.clj map used to start the nrepl :headless server.
Since version 0.24.0
, commands indirectly loading a REPL automatically (e.g. invoking load file in Clojure REPL
when there is no active REPL) invoke the launcher in Debug
mode (allowing to put breakpoints in the code for instance).
This behavior can be changed globally via a new preference: Clojure
> General
> Launch REPLs in Debug mode
(thus checked by default)
Preference Clojure
> General
> Launch Leiningen projects with Leiningen (uncheck to launch them via default java launcher)
has been added.
By default, Leiningen projects will be launched by invoking leiningen repl :headless
. By unchecking this preference, Leiningen projects will be launched as would regular java projects detected as Clojure project (the behavior before 0.24.0).
Motivation: some users have reported real blocking issues which cannot be addressed in this release:
-
Eclipse crashes under some circumstances (will be addressed soon)
-
Leiningen launcher way longer to start than default java launcher, and for projects requiring repeated restarts, this is a no-no. This second point may be addressed by leveraging the
trampoline
behavior of Leiningen.
When both of these issues are addressed, removing this Preference from the GUI may be considered.
0.24.1
released on March 30, 2014
Bug Fix: The System environment was not correctly passed to the launched project process, causing all sorts of trouble (X Window session not found, java.io.tmpdir not set correctly, etc.)
0.24.0
released on March 20, 2014
The command "Headless Leiningen REPL" introduced in a recent release works well, so it has been set as the default behaviour for starting a new REPL for Leiningen projects.
This means that for Leiningen projects, Ctrl+Alt S (resp. Cmd+Alt S for OSX), or 'Run/Debug as Clojure Application' will truly use Leiningen under the hood to start a headless REPL for the project.
Also now by default, keyboard shortcut Ctrl+Alt S starts the project in debug mode and automatically connects Eclipse to the projects JVM debugger.
-
Ensure all JVMs created by Leiningen are killed when the main process is killed via the Console "Terminate" button.
-
"Headless Leiningen REPL" command Alt+L H has been removed now that it is the default behaviour for starting Leiningen projects
-
For Linux/Windows, the zip now contains a root folder named Counterclockwise-<version>
-
For OS X, the zip now contains a root folder named Counterclockwise-<version>.app ; it is thus recognized as an OS X Application folder
0.23.0
released on January 23, 2014
Fixes the compatibility problems with Eclipse Indigo!
-
It is now possible to use the usual Software Update Site to upgrade a Counterclockwise/Standalone install with new versions of Counterclockwise.
-
The version is now displayed in the Counterclockwise About Dialog.
-
The Products zips filenames now contain the version
-
now mentions the Counterclockwise version number (in the text, and the corresponding links)
0.22.0
released on January 10, 2014
The embedded Leiningen has been upgraded from version 2.1.2
to a patched 2.3.4
.
The patch applied to Leiningen 2.3.4
relates to the lein repl
task: in addition to displaying a human readable info about the nREPL server’s port & host, it appends a nREPL URL.
Before:
nREPL server started on port 61149 on host 127.0.0.1
After:
nREPL server started on port 61149 on host 127.0.0.1 - nrepl://127.0.0.1:61149
This nREPL URL is automatically converted to an hyperlink in the Console View.
And even more: the first time a nREPL link appears in a Console View, Counterclockwise automatically opens a REPL View for it!
Alt+L H is a shortcut for launching a headless leiningen REPL. It is similar to doing Alt+L L + typing your-project $ lein repl :headless
.
Alt+L R resets the project classpath, using Leiningen to compute the classpath.
Resolving leiningen classpath is now more permissive
Overlapping :source-paths
, :resource-paths
, :test-paths
and/or :java-source-paths
are accepted.
Counterclockwise resolves the conflict by adding the required exclusions to its source classpath entries.
For instance, if you have declared (explicitly or implicitly) both resources
and resources/public
as resource paths,
Counterclockwise will create 2 source path entries:
-
one for
resources/public
, -
and one for
resources
, with an exclusion filter for itspublic
subfolder
All paths are marked as 'optional' so that if folders for these paths are missing, no exception is reported by Eclipse.
0.21.0
released on January 9, 2014
Addition of a new command, Alt+L L for launching a popup allowing to enter an arbitry leiningen command.
It allows you to launch arbitrary leiningen tasks from within Eclipse.
See Documentation: http://doc.ccw-ide.org/documentation.html#_generic_command_launcher
The Wizard has been modified to simplify the understanding of its fields. Especially, the "Use default location" field has been replaced with a "Create project folder in:" field, and its meaning has changed from "ask the user for the project’s folder on the filesystem" to "ask the user for the project’s parent folder on the filesystem (assuming that the project folder will be the project name)". This is wayyy more intuitive.
The "Working Sets" section of the Wizard has been removed. Instead, the newly created project is automatically added to the currently active Working Sets.
Timeouts have been added for all Counterclockwise interactions with the nREPL connection of a REPL View.
Nothing should prevent the user to type in an Editor. Counterclockwise should gracefully downgrade its features instead. This is a step in this direction.
-
Code completion: 1 second timeout. If timeout occurs twice for a given REPL, it won’t be used anymore (only static code completion will take place).
-
Text Hover: 1 second timeout.
-
Hyperlink Detection: 1 second timeout.
-
Namespace Browser: 15 seconds timeout.
-
REPL: 15 seconds timeout at some initialization usage of the nrepl client
"Load File" action now works for editors opened via File › Open File… (aka arbitrary file on the filesystem, not necessarily living inside a project inside the Eclipse Workspace)
It is possible to contribute Counterclockwise User Plugins inside folder ~/.ccw
.
This will be a way both:
- for users to contribute / experiment more easily to Counterclockwise
- for the Counterclockwise team to provide beta features for rapid user feedback
INFO: a User Plugin is dynamic. To remove it, just remove it.
A whole new section of the documentation has been added concerning User plugins. See http://doc.ccw-ide.org/documentation.html#_user_plugins for the full story.
Warning
|
Works only with Eclipse 4 and CCW/Standalone. |
This plugin adds commands for managing User Plugins (sorry, it’s a little bit meta
):
-
Alt+U S - re[S]tart user plugins (will reload all user plugins code)
-
Alt+U N - create a [N]ew user plugin (will prompt you for a plugin name, create the plugin folder/file, a project in the workspace, and open a repl connection to your Eclipse instance)
-
Alt+U I - Import all user plugins present in
~/.ccw
as projects in workspace
The plugin is available as a Gist, you can examine its content here https://gist.github.com/laurentpetit/7924786 and then clone its repository https://gist.github.com/7924786.git in ~/.ccw/plugin-additions
git clone https://gist.github.com/7924786.git ~/.ccw/plugin-additions
# Restart your Eclipse
The embedded nREPL client in Counterclockwise, and which is also used to serve as nREPL client when the project does not declare a dependency on nREPL (the majority of the cases) has been upgraded from version 0.2.1
to 0.2.3
.
-
Explicitly ask the user for confirmation before launching a second process for the same project
The code is there, but not active at the moment (needs more love / hammock)
Changed the URL for downloading the stable standalone versions: http://standalone.ccw-ide.org/
Increased the MaxPermSize value from 128Mb to 256Mb, since there has been reports that 128Mb weren’t enough, e.g. when invoking the New Clojure Project
Wizard.
Fix of an issue with the pre-referenced software update sites (was still pointing to Indigo instead of Kepler)
Moar sensible default preferences:
-
Editors
-
line numbers displayed in the margin
-
80 chars column displayed
-
tabs automatically replaced by spaces when typing
-
-
Worskpace
-
automatic refresh of the Workspace resources without asking the user
-
0.20.0
released on October 10, 2013
-
0.20.0
introduces no breaking change -
New Software Update Site http://updatesite.ccw-ide.org/stable
-
Editor: new awesome
autoshift
feature, slurp/barf paredit commands support -
Lots of changes to fix stability concerns and various issues
For people wanting to build Counterclockwise from scratch, or to work with Counterclockwise.
-
It is now fully automated, from fetching Eclipse or non Eclipse dependencies, to building an update site for the codebase, to building Standalone Counterclockwise products for the codebase.
In a nutshell:
git clone https://github.com/ccw-ide/ccw cd ccw mvn verify cd ccw.product/target/products # the products for Windows / Linux / OS X cd ../../../ccw.updatesite/target/repository # the Software Update Site
For more information on installing a full-fledged dev environment, see the Wiki Page How To Build
The software update site has been updated to its new location:
-
Stable Versions: http://updatesite.ccw-ide.org/stable
-
Beta Versions: http://updatesite.ccw-ide.org/beta
For more information on the available Software Update Sites and their retention policies, and more, see the Wiki Page Update Sites
Reindent Selection has been implemented. Trigger it via Ctrl+i
on Windows/Linux, Cmd+i
on OSX.
While you type, the code on the following lines which depends upon the code on the current line is shifted to the right or to the left. More spaces/less spaces are added/removed automatically.
-
For instance, if you have the following manually indented code (note that the call to the
cond
macro is indented 4 extra spaces to the right):(defn foo [bar baz] (cond cond1 expr1 cond2 expr2 :else default-expr))
-
You can fix the whole indentation by either placing the cursor anywhere in the
(cond
line and typing Tab, or in front of(cond
and typing Backspace 2 times:(defn foo [bar baz] (cond cond1 expr1 cond2 expr2 :else default-expr))
-
Before the AutoShift feature, you would either have to indent each line manually, or select the whole
(cond..)
form and typeCtrl+i
(OS X:Cmd+i
), but you would have lost the specific indentation of the conditions/expressions:(defn foo [bar baz] (cond cond1 expr1 cond2 expr2 :else default-expr))
Hitting Ctrl+Enter when the cursor is located at the top level selects the preceding top level form to be sent to the REPL. Only when the cursor is right in front of a top level form will it be selected instead of the previous one. (Fix Issue #580)
e.g. if the caret is materialized with the symbol |
:
(defn foo [] ...)|
(defn bar [] ....)
;; => foo's declaration will be sent to the REPL
(defn baz [] ...)
|(defn qix [] ...)
;; => qix's declaration will be sent to the REPL
Slurp and Barf, 2 important paredit/structural manipulation features, have been added to the Editor. (Fixes Issue #486: Add support for barfage and slurpage)
+ See the Keybindings documentation for Slurp / Barf : https://code.google.com/p/counterclockwise/wiki/EditorKeyBindingsFeatures
-
Fixed wrong keybinding for switching Rainbow Parens: "Cmd+( R" instead of "Cmd+(R" (replace Cmd by Ctrl for Windows/Linux ; space indicates that you first type Cmd(, then type R)
-
Changed "toggle line comments" behaviour: before, if the selection had both commented and uncommented lines, it was an ambiguous case resolved by just doing nothing. Now, it is resolved by counting the number of commented and uncommented lines. If the number of uncommented lines in the selection is equal or greater than the number of commented lines, then those uncommented lines are commented. If the number of commented lines is greater than the number of uncommented lines, those commented lines are uncommented.
Calling "toggle lines comments" on the following code selection:
;(defn foo [....]) (defn bar [....]) (defn baz [....])
will result in:
;(defn foo [....]) ;(defn bar [....]) ;(defn baz [....])
But calling "toggle lines comments" on this code selection:
;(defn foo [....]) (defn bar [....]) ;(defn baz [....])
+ will result in:
(defn foo [....])
(defn bar [....])
(defn baz [....])
-
Auto indentation of a cond form changed: (Fixes #592)
;; from (cond test1 expr1 test2 expr2) ;; to (cond test1 expr1 test2 expr2)
-
Experimental Feature: enabling auto-reevaluation of last command typed in the REPL, after a successful evaluation from the Editor
-
when the "repeat last expression" REPL command is active
-
when the user sends a form tom evaluate to the REPL
-
if the form evaluated without error
-
then the last expression evaluated from the REPL input is evaluated again
A common usecase for this is while you’re defining a function in the Editor and you want to repeat the same test expression again and again until it passes. The workflow then becomes:
-
define the function in the editor, eval via Cmd+Enter
-
switch to the REPL, enter a test expression, send the test expression via Cmd+Enter
-
Click on the "Repeat last evaluation …" button in the REPL
-
switch to the editor, modify the function, eval via Cmd+Enter … when the eval succeeds, the last expression entered in the REPl is reevaluated … repeat …
-
-
-
A bug had slipped in the project classpath management preventing native libraries to load properly, for instance when trying to work with Overtone. Fix Issue #577
-
Reverting the behaviour of the "Evaluate selection" when sending to the REPL : back to using 'in-ns instead of 'ns while transitioning to the selection’s namespace Fixes Issue #533: ns is sent to REPL instead of in-ns
-
Launch repl ack timeout set to 60 sec instead of 30
-
Better IPv6 support: replaced "localhost" occurences by "127.0.0.1"
-
"Quiet command report mode" Preference has been removed. Now considered always ON by default. So always quiet.
-
There were reports of restart issues after Eclipse crashes. Hopefully this has been improved in this release (Fix Issue #568 CCW Beta 0.13.0.201304190010 prevents Eclipse from loading)
-
Internally switched to Leiningen 2.1.2
-
Better exception reporting in the Problem Markers, e.g. when a dependency cannot be found, etc.
-
CCW plugin does not start unnecessarily when invoking the project’s contextual menu