python - tamaño - lista desplegable tkinter
Usando ancho de texto más corto en comentarios y cadenas de documentación (2)
La respuesta aceptada es genial! Sin embargo, no es compatible con el hábito que tengo para formatear / editar comentarios: hago mis ediciones y luego uso el comando gqj, que es esencialmente, "reformatear la línea actual combinada con la siguiente". Entonces golpeé ''.'' para repetir eso para cada línea (el comando avanza el cursor a la siguiente línea). No conozco muy bien el lenguaje vim scripting, por lo que es posible que alguien pueda agregar soporte para esto a la respuesta aceptada. Mientras tanto, lo que he hecho es asignar una tecla de función (F6) para cambiar el ancho del texto a 72, formatear la línea y luego cambiar el ancho del texto de nuevo a 79.
nmap <F6> :set textwidth=72<CR>gqj:set textwidth=79<CR>
Ahora, cuando estoy en una cadena de documentos, simplemente hago la edición, (ESC) y luego presiono F6 repetidamente hasta que todas las líneas tengan el formato correcto.
Agregué mi comando de mapa y el script de respuesta aceptado a mi .vim / after / ftplugin / python.vim.
De la poderosa PEP 8 :
El límite de arrendamiento [P] todas las líneas a un máximo de 79 caracteres. Para flujos largos de bloques de texto (cadenas de texto o comentarios), se recomienda limitar la longitud a 72 caracteres.
Al editar el código de Python en Vim, configuré mi textwidth
de textwidth
en 79, y Vim ajusta automáticamente las líneas largas del código de Python cuando llegué al límite de caracteres. Pero en los comentarios y las cadenas de documentación, necesito envolver el texto a 72 caracteres.
¿Hay alguna forma de hacer que Vim establezca automáticamente el textwidth
de textwidth
en 72 cuando estoy en un comentario o una cadena de documentos, y lo establezca de nuevo cuando termine?
Por lo tanto, nunca he hecho ningún script Vim antes, pero basándome en esta pregunta sobre hacer algo similar en C y en esta sugerencia para verificar si está actualmente en un comentario , he encontrado una solución.
De forma predeterminada, utiliza los anchos sugeridos por PEP8 de 79 caracteres para las líneas normales y 72 caracteres para los comentarios, pero puede anularlos let
ting g:python_normal_text_width
o g:python_comment_text_width
variables, respectivamente. (Personalmente, ajuste las líneas normales en 78 caracteres).
Deja caer a este bebé en tu .vimrc y deberías estar listo. Puedo empaquetar esto como un complemento más tarde.
function! GetPythonTextWidth()
if !exists(''g:python_normal_text_width'')
let normal_text_width = 79
else
let normal_text_width = g:python_normal_text_width
endif
if !exists(''g:python_comment_text_width'')
let comment_text_width = 72
else
let comment_text_width = g:python_comment_text_width
endif
let cur_syntax = synIDattr(synIDtrans(synID(line("."), col("."), 0)), "name")
if cur_syntax == "Comment"
return comment_text_width
elseif cur_syntax == "String"
" Check to see if we''re in a docstring
let lnum = line(".")
while lnum >= 1 && (synIDattr(synIDtrans(synID(lnum, col([lnum, "$"]) - 1, 0)), "name") == "String" || match(getline(lnum), ''/v^/s*$'') > -1)
if match(getline(lnum), "//(''''''//|/"/"/"//)") > -1
" Assume that any longstring is a docstring
return comment_text_width
endif
let lnum -= 1
endwhile
endif
return normal_text_width
endfunction
augroup pep8
au!
autocmd CursorMoved,CursorMovedI * :if &ft == ''python'' | :exe ''setlocal textwidth=''.GetPythonTextWidth() | :endif
augroup END