Hacker News Digest

Тег: #tree-sitter

Постов: 3

Fine, I'll build my own text editor (dbushell.com)

Автор экспериментирует с созданием собственного текстового редактора, начиная с рендера на <canvas>, где реализовал базовые функции: позиционирование курсора, перемещение стрелками, подсветку текущей строки, ввод текста и анимацию курсора. Однако столкнулся с отсутствием выделения текста, undo/redo, многострочной вставки и прокрутки — последняя решена через скрытый <div> с нативным overflow, но доступность осталась проблемой. Перешёл на contenteditable с plaintext-only, получив бесплатную выделение, историю изменений и доступность, но обнаружил непредсказуемые проблемы с производительностью в Chromium при большом объёме текста. Попробовал <textarea> — оказался более производительным, особенно с подсветкой синтаксиса через дополнительный слой <div> и MicroLighter. Упомянул новые API: OpaqueRange для кастомных выделений в <textarea> и EditContext для улучшения ввода в <canvas>. Отметил, что слишком много CSS-подсветок создаёт узкое место, и предложил использовать Tree-sitter для генерации подсветки только видимых строк или применить «обратную липкую технику» для оптимизации скроллинга. Заключил, что для его задач contenteditable достаточно, так как редактируемые файлы малы. Демонстрации неоптимизированы и не идеальны по доступности, но отправной точки лучше, чем с <canvas>. Завершил примером на UTF-16 и графемах, показывающим сложность корректной работы с текстом в JavaScript.

by Alephinitesimal • 01 сентября 2026 г. в 17:12 • 147 points

ОригиналHN

#canvas#contenteditable#editcontext#javascript#microlighter#opaque-range#text-editor#tree-sitter

Комментарии (132)

Создание собственного текстового редактора — классический обучающий проект, но опытные разработчики сходятся во мнении, что существующие решения практичнее. Нативный `<textarea>` остаётся самым производительным и согласованным средством редактирования в браузере. Современные редакторы (Emacs, Sublime, VS Code) уже решают ключевые задачи — LSP, мультикурсоры, подсветку синтаксиса — и их повторная реализация ведёт к раздуванию, а не к улучшению. Canvas-подходы в браузере крайне сложны из-за отсутствия низкоуровневых API для ввода, макросов и системного взаимодействия, что делает их непрактичными. Использование скрытого `<div>` для прокрутки — признанный костыль, а рендеринг курсора на canvas часто ломается, особенно в Safari. Даже базовые функции — выделение, undo/redo, прокрутка — требуют сложных решений, которые уже реализованы в готовых инструментах. Производительность критична: небольшие задержки делают редактор непригодным, и лишь немногие (Sublime, Vim) сохраняют плавность на больших файлах. По этой причине лучше использовать фреймворки: CodeMirror 6 для веба, KTextEditor для Qt, Emacs для полной настраиваемости, а для экспериментов — модифицировать существующий редактор (например, Emacs с Org-mode или Magit). Спорные моменты: Sublime Text одни считают устаревшим, другие — непревзойдённым по отзывчивости. Часть участников полагает, что текстовое редактирование — решённая проблема и новшества — лишь конфигурация Vim/Emacs; другие указывают, что LSP и удалённое редактирование требуют новых архитектур. Тренд на использование AI поверх KTextEditor подтверждает: даже создавая «свой» редактор, разработчики опираются на существующие библиотеки.

Notes on switching to Helix from Vim (jvns.ca) 🔥 Горячее 💬 Длинная дискуссия

Julia Evans рассказала, как за три месяца перешла с Vim на Helix. Главное, что языковые серверы работают без настройки, а поиск показывает контекст совпадений. Минусов мало: нет автоперезагрузки файлов, не хватает приёма undo и редко падает. Но она привыкла и даже не чувствует, что потеряла 20 лет мускульной памяти Vim.

by chmaynard • 10 октября 2025 г. в 14:37 • 277 points

ОригиналHN

#helix#lsp#neovim#rust#tmux#tree-sitter#vim

Комментарии (173)

  • Пользователи обсуждают преимущества и недостатки Helix и Neovim: кто-то ценит «из коробки»-конфигурацию Helix, кто-то — гибкость Neovim; спор о том, какой редактор «лучше» ведётся в основном вокруг личных привычек и потребностей.
  • Участники обмениваются советами по настройке LSP, автосохранению и другим функциям, но в целом признают, что оба редактора требуют документации и что «из коробки»-конфигурация Helix может быть проще в использовании.
  • Некоторые участники подчеркивают, что Helix всё ещё молод и не реализует все функции, в то время как Neovim имеет 20-летнюю историю и большое сообщество плагинов и интеграций.
  • Участники также обсуждают, что Helix требует меньше конфигурации, но Neovim требует больше настройки, чтобы достичь схожего уровня функциональности.
  • Некоторые участники высказывают, что Helix не имеет столь же развитой экосистемы плагинов и интеграций, как Neovim, и что это может быть препятствием для пользователей, которые ищут расширяемость.
  • Несколько участников упоминают, что Helix написан на Rust и может быть более производительным, в то время как Neovovim может быть более «гибким» в плане настройки и конфигурации.
  • Участники также обсуждают, что Helix имеет встроенную поддержку LSP и tree-sitter, в то время как Neovim требует установки и настройки LSP и tree-sitter вручную.
  • Некоторые участники упоминают, что Helix не имеет встроенной поддержки терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки макросов, в то время как Neovim может использовать макросы для автоматизации задач.
  • Некоторые участники упоминают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для макросов, в то время как Neovim может использовать макросы для автоматизации задач.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексоры для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексора для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексора для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексора для разделения окон.
  • Участники также обсуждают, что Helix не имеет встроенной поддержки для встроенного терминала, в то время как Neovim может использовать tmux или другие терминальные мультиплексора для разделения

Claude Code IDE integration for Emacs (github.com) 🔥 Горячее 💬 Длинная дискуссия

Claude Code IDE для Emacs

Обзор

  • Интеграция с Claude Code CLI через MCP создает двусторонний мост между Claude и Emacs.
  • Claude получает доступ к возможностям Emacs: LSP, проекты, Elisp-функции, что делает его «понимающим Emacs» помощником в вашем рабочем процессе.

Возможности

  • Автоопределение проекта и управление сессиями
  • Терминал с цветом (vterm/eat)
  • Реализация MCP для IDE-интеграции
  • Инструменты для файлов, состояния редактора и рабочего пространства
  • Расширяемый сервер MCP для Emacs-команд (xref, tree-sitter, project и др.)
  • Диагностики Flycheck/Flymake
  • Расширенный дифф с ediff
  • Поддержка tab-bar и отслеживание выделений/буферов

Интеграция инструментов Emacs

  • LSP через xref (eglot, lsp-mode) для навигации по коду
  • Tree-sitter для анализа AST
  • Imenu для структуры символов
  • Project для операций на уровне проекта
  • Любую команду/функцию Emacs можно выставить как MCP-инструмент: поиск и рефакторинг по проекту, доступ к режимам, выполнение кастомного Elisp.

Скриншоты

  • Осведомленность об активном файле — знает, какой файл открыт
  • Контекст выделения — работает с выделенным текстом
  • Продвинутый дифф с диагностикой — ediff и доступ к ошибкам/предупреждениям
  • Автоматические упоминания текста — вставка ссылок на выделение в диалог
  • Восстановление сессии — продолжение разговоров с флагом –resume

Установка Предварительные требования

  • Emacs 28.1 или новее

by kgwgk • 06 августа 2025 г. в 13:17 • 772 points

ОригиналHN

#ast#elisp#emacs#github#ide#llm#lsp#tree-sitter#vim

Комментарии (261)

  • AI-инструменты вроде Claude Code делают Emacs/Vim конкурентоспособными: вместо самостоятельной реализации сложных IDE-функций редакторы просто интегрируются с готовыми агентами.
  • Пользователи хвалят Emacs за полный доступ к состоянию редактора и возможность «на лету» менять поведение через Elisp, что идеально подходит для AI-агентов.
  • Уже существует несколько реализаций интеграции (claude-code.el, eca, claude-code-emacs и др.); споры идут, какая из них лучше, но все признают, что встраивание в Emacs ускоряет рабочий процесс.
  • Проблемы: сложность конфигурации, риск утечки чувствительных данных, привязка к конкретному провайдеру и необходимость локального запуска для приватности.