Skip to content

feat(lsp): add Rename Symbol support #18

Description

@amondnet

Summary

Add textDocument/rename and textDocument/prepareRename LSP support to @pleaseai/code-lsp package.

Motivation

From docs/TODO.md - Rename Symbol is the #1 high priority missing feature compared to Serena's SolidLSP implementation. This enables AI coding tools to perform safe refactoring operations across the codebase.

LSP Methods

  • textDocument/prepareRename - Validates if symbol at position can be renamed
  • textDocument/rename - Performs rename operation, returns WorkspaceEdit

Tasks

  • T001 [P] Add type schemas (TextEdit, WorkspaceEdit, PrepareRenameResult)
  • T002 [P] Add rename capability to client initialization
  • T003 Add normalization methods (normalizeWorkspaceEdit, normalizePrepareRename)
  • T004 Add prepareRename() method (depends on T001, T003)
  • T005 Add rename() method (depends on T001, T003)
  • T006 Update CLAUDE.md documentation (depends on T004, T005)
  • T007 [P] Add unit tests for normalization
  • T008 Add integration tests for TypeScript LSP (depends on T004, T005)

Dependencies & Execution Order

Parallel Group 1 (independent):

  • T001: Type schemas
  • T002: Client capability
  • T007: Unit tests (TDD)

Sequential:

  1. T003: Normalization methods
  2. T004: prepareRename method
  3. T005: rename method
  4. T006: Documentation
  5. T008: Integration tests

References

  • Spec: specs/001-rename-symbol/spec.md
  • Architecture: specs/001-rename-symbol/architecture.md
  • Serena Reference: ref/serena/src/solidlsp/ls.py:1834-1859
  • TODO.md: docs/TODO.md#1-rename-symbol

Metadata

Metadata

Assignees

No one assigned

    Labels

    lspp1Priority 1 - Hightype:featureNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions