CKEditor TextSelection para Drupal: mantenha o cursor e a seleção ao alternar para o modo Source
Se você edita conteúdo no Drupal há tempo suficiente, com certeza já esbarrou nesta pequena, mas irritante, quebra de fluxo de trabalho: você seleciona uma palavra ou posiciona o cursor, alterna para o Source para ajustar a marcação e… perde o lugar. Fiz um pequeno módulo que corrige exatamente isso.
O que o módulo faz
CKEditor TextSelection é um módulo Drupal que integra o plugin “Text Selection” do CKEditor 5 ao editor CKEditor 5 no Drupal. Seu objetivo principal é simples: preservar a posição do cursor e a seleção de texto ao alternar entre WYSIWYG e Source — e manter a seleção visível, rolando-a até a área visível.
- Preserva a posição do cursor ao alternar WYSIWYG ↔ Source.
- Preserva a seleção real de texto (e não apenas o cursor).
- Rola a área visível para que a seleção fique visível em ambos os modos.
- Funciona muito bem em conjunto com o CKEditor CodeMirror Source Editing para uma edição mais confortável no modo Source.
- Inspirado no comportamento do clássico complemento do CKEditor 4: CKEditor 4 TextSelection .
Por que isso importa (um detalhe de UX que realmente economiza tempo)
Os editores alternam para o Source por bons motivos: limpar marcação colada, ajustar o atributo de um link, corrigir a estrutura de uma lista, verificar títulos ou garantir que o HTML seja exatamente como pretendido. Perder a seleção/cursor a cada alternância gera atrito — especialmente em textos longos. O objetivo deste módulo é simples: ajudar você a não sair do fluxo.
Como funciona (em linhas gerais)
Ao passar do WYSIWYG para o Source, o plugin mapeia a posição atual do cursor ou a seleção do modelo do editor para a posição correspondente no código-fonte HTML. Ao voltar, ele lê o cursor/seleção no Source e o restaura no editor visual. Se algo não puder ser mapeado perfeitamente (às vezes ocorrem casos extremos), o módulo se comporta corretamente sem quebrar o editor.
Experimente (demo)
Quer ver o plugin básico do CKEditor 5 em ação? Abra a demo, selecione uma frase, alterne para o Source — e veja que a seleção permanece no lugar: CKEditor 5 Text Selection Plugin Demo .
Links do projeto Drupal
- Página do projeto: https://www.drupal.org/project/ckeditor_textselection
- Versões: https://www.drupal.org/project/ckeditor_textselection/releases (aqui você pode ver a versão mais recente e as notas de compatibilidade)
- Instruções Git (workflow clone/patch): https://www.drupal.org/project/ckeditor_textselection/git-instructions
- Tarefas/erros: https://www.drupal.org/project/issues/ckeditor_textselection
Instalação
1) Instalação via Composer
Instale o módulo usando o Composer (recomendado). Se precisar de uma versão específica, escolha-a na página de versões .
composer require drupal/ckeditor_textselection2) Ative o módulo
Ative o CKEditor TextSelection como qualquer módulo contrib (pela interface ou com o Drush).
3) Ative-o no seu formato de texto
- Vá em Administration → Configuration → Content authoring → Text formats and editors.
- Abra o formato que usa o CKEditor 5.
- Nas configurações do CKEditor 5, ative o plugin Text Selection.
- Certifique-se de que o botão Source editing esteja disponível na barra de ferramentas (o modo Source é necessário para a alternância).
- Salve as configurações do formato de texto.
4) Pronto
Não são necessárias configurações adicionais. Depois de ativado, a preservação da seleção funciona automaticamente sempre que você alterna os modos.
Uso em conjunto com o CodeMirror Source Editing
Se sua equipe editorial prefere realce de sintaxe no modo Source, use este módulo junto com o CKEditor CodeMirror Source Editing . Isso melhora a legibilidade e, ao mesmo tempo, mantém funcionando a preservação da seleção.
Nos bastidores: projetos upstream
O módulo Drupal é construído em torno do plugin upstream do CKEditor 5. Se quiser ver o código ou contribuir:
- Repositório no GitHub: https://github.com/levmyshkin/ckeditor5-textselection
- Pacote no Packagist: https://packagist.org/packages/levmyshkin/ckeditor5-textselection
Comentários e contribuições são bem-vindos
Ficarei feliz em receber comentários de editores, site builders e desenvolvedores Drupal — especialmente sobre casos extremos complexos, em que o mapeamento da seleção entre WYSIWYG e HTML pode ser ambíguo. Compartilhe seus resultados, abra tarefas ou participe do desenvolvimento: CKEditor TextSelection no Drupal.org .