Contribuciones Open Source
Construyendo mejores herramientas y experiencias para desarrolladores a través de contribuciones significativas a proyectos open source
Contribution Statistics
Proyectos
clj-kondo
Developer ToolsA static analyzer and linter for Clojure code that sparks joy
43 Contribuciones
New Linter: if-x-x-y
Introduced a new linter `:if-x-x-y` that suggests replacing `(if x x y)` with `(or x y)` when the condition is a simple symbol. Disabled by default; ships with documentation, configuration entry, and tests covering the pattern as well as false-positive guards. Resolves #2062.
New Linter: unimplemented-protocol-method-arity
Introduced a new linter :unimplemented-protocol-method-arity that warns when a protocol or interface method is implemented with an arity that does not match any declared in the protocol. Extended detection to definterface method implementations as well.
New Linter: not-nil?
Added a new linter :not-nil? that suggests using `(some? x)` instead of `(not (nil? x))` for clearer, more idiomatic Clojure. Includes ClojureScript support, configurable level, ignore handling, tests, and documentation.
New Linter: redundant-declare
Introduced a new linter :redundant-declare that warns when declare is used after a var is already defined in the same namespace. Updated documentation and configuration to include this new linter with comprehensive tests to ensure correct functionality and behavior.
New Linter: aliased-referred-var
Implemented a new linter :aliased-referred-var that warns when a var is both referred and accessed via an alias in the same namespace.
cljfmt
Developer ToolsA tool for formatting Clojure code according to consistent style guidelines
12 Contribuciones
Add :max-column-alignment-gap Option
Introduced a new option :max-column-alignment-gap to limit the maximum number of spaces inserted between a key and its aligned value. This prevents excessive horizontal padding in maps that contain outlier keys while still allowing normal alignment for shorter keys.
Add :blank-lines-separate-alignment? option
Adds a new configuration option :blank-lines-separate-alignment? that allows column alignment to treat blank lines as group separators. When enabled, alignment groups are separated by blank lines, allowing independent alignment within each group rather than across the entire form. This refactors the column alignment logic to support both the original behavior (aligning across all lines) and the new grouped behavior.
Ignore .clj config files by default
Ignore .clj configuration files by default for security. Introduce the :read-clj-config-files? option to opt in to reading .clj config files. When a .clj config file is detected but the option is not enabled, emit a warning and fall back to .edn config files if available.
Add :normalize-newlines-at-file-end? option
:normalize-newlines-at-file-end? ensures files end with exactly one newline character. When enabled, cljfmt removes multiple trailing blank lines and guarantees a single newline at EOF for consistent file endings.
Add Support for :refer Indentation Rules
Added support for indentation rules applied to vars introduced via :refer in namespace declarations. cljfmt now looks up the original module for referred vars and applies any configured indentation rules for the fully-qualified name.
Calva
Developer ToolsClojure & ClojureScript Interactive Programming for VS Code
54 Contribuciones
Configurable Toggle Comment Behavior
Added a new configuration option calva.paredit.toggleCommentBehavior with multiple strategies for toggling comments. When text is selected or cursor is in a line comment, toggles line comments as before. When there is no selection, users can choose between: Toggle Ignore (#_) Current Form, Toggle Ignore (#_) Parent Form, or Toggle Comment (;;) Current Line (default). Implemented toggleIgnoreForm function that triggers when appropriate based on user configuration and cursor context. Updated documentation describing all available options.
Toggle Line Comments with Indent Preservation
Added a structural toggle comment command that inserts line comments while preserving paredit structure (parentheses and form integrity). Includes command/keybinding integration and integration tests for the new workflow.
Migrate cljfmt 0.16.0
Major migration of Calva's code formatting infrastructure to cljfmt 0.16.0. Updated cljfmt dependency from 0.13.1 to 0.16.0 and migrated formatter to use cljfmt's native alignment capabilities. Removed 4,600+ lines of legacy pez-cljfmt and pez-rewrite-clj code. Added comprehensive tests for align-associative conversion logic to ensure compatibility with new formatting behavior.
Fix Text Garbling When Hitting Key Before Indentation
Fixed a race condition where pressing keys before indentation was applied would cause text to be garbled and cursor position to jump. Introduced calculateIndentEdit() function that returns TextEdit objects instead of performing edits directly, reducing timing conflicts. Increased debounce delay from 250ms to 400ms to give users more time between typing and formatting. Refactored FormatOnTypeEditProvider to use the new indent calculation method while maintaining backward compatibility with the old indent engine.
User Customizable Pair Forms and Threading Macros
Introduced comprehensive configuration system for custom pair forms and threading macros, now configurable via VS Code Settings menu. Users can define custom pair forms and threading macros through the VS Code UI settings panel, JSON settings, or config.edn file. Implemented createPareditConfig function that merges custom and default configurations, enabling complete paredit customization.
clojure-lsp
Developer ToolsA Language Server Protocol implementation for Clojure powering editor features like go-to-definition, refactoring, and code actions across Calva, Emacs, Vim, and more
4 Contribuciones
Navigate to Existing deftest Instead of Duplicating
Added a `deftest-loc-with-name` helper that locates the first top-level `(deftest <name> ...)` form in the target test file. The "Create test" code action now navigates to an existing deftest with the matching name instead of inserting a duplicate.
Preserve Existing Formatting in add-missing-libspec
Detect when the first child of `:require`/`:import` sits on the same line as the keyword and preserve that style during `add-missing-libspec` so auto-clean no longer re-flows the entire ns block. Adjusted the settings update logic for `ns-inner-blocks-indentation` and `keep-require-at-start` to honor user formatting choices.
Fix Require Suggestions Crossing Language Boundaries
Added a language filter to require suggestions so a `.clj` file no longer offers refers defined only in `.cljs` files (and vice versa). `.cljc` files continue to see refers from both. Includes test coverage for each language combination.
Bump clj-kondo to 2026.04.15
Updated the bundled clj-kondo dependency to 2026.04.15 to pull in upstream linter improvements and bug fixes.
Kit
Web FrameworkA lightweight, modular framework for building scalable Clojure web applications. Contributions span the main framework, the modules registry, and the documentation site.
2 Contribuciones
Reagent Module with React 19 Support
Added a new `:kit/reagent` module to the Kit modules registry that scaffolds Reagent UIs against React 19 via `reagent.dom.client`. Spans three repos: the modules registry (kit-clj/modules#45) adds the module configuration and README entry; the Kit framework (kit-clj/kit#177) bumps React to 19 and Reagent to 2.0.1; and the documentation site (kit-clj/kit-clj.github.io#76) updates the modules page and ClojureScript guide to use the new client-rendering API and notes the legacy `reagent.dom/render` API.
Update reitit and ring-core Dependencies
Bumped `reitit` and `ring-core` to current versions in the Kit framework deps.
Logseq
ProductivityA privacy-first, open-source knowledge base that works on top of local plain-text Markdown and Org-mode files
3 Contribuciones
Fix Task List Checkbox Toggle Behavior
Resolved edge cases in task list checkbox toggling to preserve expected casing and behavior. Implemented safer replace semantics for consistent checkbox state transitions.
Autopair Parenthesis Behavior Improvements
Enhanced autopairing logic for parentheses to only trigger in appropriate contexts (e.g., when preceded by whitespace), preventing unwanted insertions in URLs and other patterns.
Fix Image Navigation Order in Maximize Mode
Corrected image navigation logic in maximize (lightbox) mode to maintain proper order when switching between images. Fixed inconsistent index calculations causing confusing navigation.