package org.jetbrains.plugins.clojure.formatter; import com.intellij.application.options.IndentOptionsEditor; import com.intellij.application.options.SmartIndentOptionsEditor; import com.intellij.openapi.fileTypes.FileType; import com.intellij.psi.PsiFile; import com.intellij.psi.codeStyle.CodeStyleSettings; import com.intellij.psi.codeStyle.FileTypeIndentOptionsProvider; import org.jetbrains.plugins.clojure.file.ClojureFileType; /** * @author ilyas */ public class ClojureIndentOptionsProvider implements FileTypeIndentOptionsProvider { public CodeStyleSettings.IndentOptions createIndentOptions() { final CodeStyleSettings.IndentOptions indentOptions = new CodeStyleSettings.IndentOptions(); indentOptions.INDENT_SIZE = 2; indentOptions.TAB_SIZE = 2; return indentOptions; } public FileType getFileType() { return ClojureFileType.CLOJURE_FILE_TYPE; } public IndentOptionsEditor createOptionsEditor() { return new SmartIndentOptionsEditor(); } public String getPreviewText() { return "(defn relay [x i]\n" + " (when (:next x)\n" + " (send (:next x) relay i))\n" + " (when (and (zero? i) (:report-queue x))\n" + " (.put (:report-queue x) i))\n" + " x)\n" + "\n" + "(defn run [m n]\n" + " (let [q (new java.util.concurrent.SynchronousQueue)\n" + " hd (reduce (fn [next _] (agent {:next next}))\n" + " (agent {:report-queue q}) (range (dec m)))]\n" + " (doseq [i (reverse (range n))]\n" + " (send hd relay i))\n" + " (.take q)))\n" + "\n" + "; 1 million message sends:\n" + "(time (run 1000 1000))"; } public void prepareForReformat(final PsiFile psiFile) { } }