Consider a more imperative formatter API
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 25/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- vim
- Área
- tooling
Línea de trabajo
Comienza revisando las implementaciones existentes de FormatRange y cómo codefmt las invoca; no se nombran archivos ni pruebas específicos. Evalúa las operaciones propuestas de formattable, incluidas GetLines, SetLines, SetCursor y AddError, en relación con el procesamiento de rangos y el comportamiento de quickfix. Hecho significa contar con un diseño de API acordado y una ruta de migración identificada para los formateadores.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Formatters right now take a range and modify the buffer as a side-effect, e.g.
function someformatter.FormatRange(startline, endline) abort
let l:lines = getline(1, line('$'))
let l:result = maktaba#syscall#Create(…).WithStdin(join(l:lines, "\n")).Call()
call maktaba#buffer#Overwrite(1, line('$'), split(l:result.stdout, "\n"))
endfunction
codefmt itself has very little insight into what the formatter is doing, and the amount of boilerplate is also a little annoying. Things can get weird if e.g. FormatRange is called multiple times to process multiple ranges, especially with formatters that try to populate errors into the quickfix list.
A different approach would be to pass a codefmt handle and implement formatter operations in terms of that handle, like
formattable.GetLines([start], [end])formattable.SetLines({lines})formattable.SetLines({start}, {end}, {lines})formattable.SetCursor({row}, {col})formattable.AddError({error}, [row], [col])
A simple formatter would look like
function someformatter.FormatRange(startline, endline, formattable) abort
let l:input = join(a:formattable.GetLines(), "\n")
let l:result = maktaba#syscall#Create(…).WithStdin(l:input).Call()
call a:formattable.SetLines(l:result.stdout)
endfunction
Some advantages are that it can make some formatting operations more convenient and anti-patterns like overwriting files on disk less natural. If we run into wonkiness as we enable fancy features like format-changed-lines-on-save (multiple ranges), it could help solve issues like that, too.
- Lenguaje dominante
- Vim Script
- Estrellas
- 1.1k
- Forks
- 102
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de google/vim-codefmt
-
Write a codefmt FAQAbiertoenhancement
Dificultad 1/5 1-3 horas Aptitud para principiantes 68/100
google/vim-codefmt#53 ·
-
Add meson formatAbiertonew formatter
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
google/vim-codefmt#243 ·
-
LCF for lua formattingAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 52/100
google/vim-codefmt#240 · 1 comentario ·
-
Add `:CodefmtInfo` command to report diagnostics to help users check config / diagnose problemsAbiertoenhancement
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
google/vim-codefmt#234 · 2 comentarios ·
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 45/100
google/vim-codefmt#222 · 3 comentarios ·
Todos los issues de google/vim-codefmt
Issues similares
-
[aw] Upgrade availableAbiertoagentic-workflows
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
githubnext/gh-aw-workshop#4220 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
-
priority:low ready-for-dev
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
OpenHands/extensions#738 ·
Los mantenedores suelen responder en 1 día
-
tickets.py mark writes status unquoted, unlike the plan template and its own other text fieldsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
bmad-code-org/BMAD-METHOD#3039 ·
Los mantenedores suelen responder en 1 día
-
Link Checker ReportPosiblemente ocupada @keraron la tomó hoy. Abiertoautomated issue report
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
a2aproject/A2A#2297 ·
Los mantenedores suelen responder en 1 día