Quick Search
Browse
Pages
Blog
Labels
Attachments
Mail
Advanced
What’s New
Space Directory
Feed Builder
Keyboard Shortcuts
Confluence Gadgets
Log In
Sign Up
Dashboard
Clojure Design
Copy Page
You are not logged in. Any changes you make will be marked as
anonymous
. You may want to
Log In
if you already have an account. You can also
Sign Up
for a new account.
This page is being edited by
.
Paragraph
Paragraph
Heading 1
Heading 2
Heading 3
Heading 4
Heading 5
Heading 6
Preformatted
Quote
Bold
Italic
Underline
Colour
More colours
Strikethrough
Subscript
Superscript
Monospace
Clear Formatting
Bullet list
Numbered list
Outdent
Indent
Align left
Align center
Align right
Link
Table
Insert
Insert Content
Image
Link
Attachment
Symbol
Emoticon
Wiki Markup
Horizontal rule
tinymce.confluence.insert_menu.macro_desc
Info
JIRA Issue
Status
Gallery
Tasklist
Table of Contents
Other Macros
Undo
Redo
Keyboard Shortcuts Help
<h1>Overview of current feature base</h1><h2>Documentation lookup</h2><p><strong>Task</strong>: Show the documentation for a given symbol. The symbol might resolve<br /> to either a var or a class. For a class the javadoc should be shown.</p><p><strong>Input</strong>: a symbol to resolve and a namespace in which the resolution has<br /> to happen</p><ul><li>vimclojure: Shows the docstring for Vars. Opens the javadoc in a browser<br /> for classes. Allows specification of javadoc URLs based on package prefixes.</li></ul><h2>Namespace browsing</h2><p><strong>Task</strong>: Provide information about active namespaces for front-end navigation.</p><ul><li>vimclojure: It is possible to jump to the source code of a Var based on<br /> meta data if the source is available in Vim's search path. But it is not<br /> possible to visually browse the namespaces in some kind of tree or such.</li></ul><ul><li>counterclockwise: provides visual browsing of the namespaces and contained<br /> vars, documentation hover on the namespaces and vars nodes, jump to the source code of a Var.</li></ul><h1>Refactoring</h1><p>Everything and anything we can do to automate code changes.</p><ul><li><a href="https://github.com/joodie/clojure-refactoring">clojure-refactoring</a> / Emacs / SLIME: is the core of this general-purpose?</li></ul><h2>Show source code</h2><p><strong>Task</strong>: A relaxed version of the above. Shows the source code for a Var.<br /> Instead of jumping to the location. This also works if the source code is<br /> only available in a jar file.</p><p><strong>Input</strong>: a symbol to resolve and a namespace in which the resolution has<br /> to happen</p><p>Implemented by: vimclojure</p><h2>Code evaluation</h2><p><strong>Task</strong>: Evaluate a provided form in the REPL server.</p><p><strong>Input</strong>: A form to expand and a namespace in which the expansion has to happen</p><h2>Macro expansion</h2><p><strong>Task</strong>: Expand a provided form via macroexpand/macroexpand-1.</p><p><strong>Input</strong>: A form to expand and a namespace in which the expansion has to happen</p><p>Implemented by: swank-clojure, vimclojure</p><h2>Omni completion</h2><p><strong>Task</strong>: Complete a given symbol. Various optimisations may be done to<br /> suggest only useful completions depending on context.</p><p><strong>Input</strong>: the namespace edited, a partial symbol to be completed</p><ul><li>swank-clojure: distinguishes qualified symbols, ie. symbols containing<br /> a /, and unqualified symbols. Matching means <code>.startsWith</code>.<ul><li>qualified symbols will only resolve public vars/static depending of<br /> the part in front being a namespace or a class. Namespaces aliases are<br /> resolved.</li><li>unqualified symbols complete to vars as they would resolve in the<br /> current namespace, namespaces or aliases, imported classes, methods<br /> of imported classes, discovered classes from the classpath</li></ul></li></ul><ul><li>vimclojure: basically identical, but...<ul><li>does neither complete non-static methods of imported classes nor<br /> discovered classes on classpath</li><li>sports a nifty short-cut feature: <code>c.c.r-u</code> would match eg.<br /> <code>clojure.contrib.repl-utils</code>. Strings are split at dots and dashes<br /> (in that order). From there matching via <code>.startsWith</code> is done.</li></ul></li></ul><ul><li>counterclockwise: completes only clojure Vars (at least in the Clojure<br />code)<ul><li>cross-pollinated with short-cut feature from vimclojure (e.g. <code>c.s/un</code><br /> would match eg. <code>clojure.set/union</code></li><li>it has code for completing java method calls/attributes (static or instance),<br /> java packages, but it is based on Eclipse search feature and is not really performant (pros=works even without a backend repl running, cons=too slow yet, and tied to Eclipse).</li></ul></li></ul><h2>Dynamic indenting</h2><p><strong>Task</strong>: Support indentation of def or with- style macros dynamically based<br /> on some heuristic. eg. "<code>[]</code>" in the argument vector.</p><p><strong>Input</strong>: A namespace to scan for information</p><p>Implemented by: swank-clojure</p><ul><li>counterclockwise: supports auto-indentation (when hitting Enter) and line reindentation<br /> (hitting Tab or a specific keyboard shortcut). Current algorithm: indents calls by 2 spaces (if functions) or by the column of the first arg if it is placed on the first line (if special forms or macros),<br /> and non calls by 1 space. Indentation algorithm based on the parsetree of the source code. Treats functions and macros (determined from a fixed known list of clojure.core macros & special forms + some heuristics based on the name of the symbol)</li></ul><h2>Dynamic highlighting</h2><p><strong>Task</strong>: Support highlighting of required namespaces dynamically.</p><p><strong>Input</strong>: A namespaces to scan for information</p><ul><li>Implemented by: vimclojure</li></ul><h2>Paredit</h2><p><strong>Task</strong>: Allow structure aware editing.</p><p>A lot of work already done by Laurent (~ 80% of paredit.el commands)</p>
Attachments
Labels
Location
< Edit
Preview >
Loading…
Save
Cancel
Next hint
search
attachments
weblink
advanced