ray-x / lsp_signature.nvim

LSP signature hint as you type
Apache License 2.0
2.01k stars 56 forks source link

[enhancement] Split parameters of function signature into seprate line #275

Open elder-frog opened 1 year ago

elder-frog commented 1 year ago

It is very hard to read and find a parameter when function signature is very long like below.

class FastAPI(Starlette):
    def __init__(
        self: AppType,
        *,
        debug: bool = False,
        routes: Optional[List[BaseRoute]] = None,
        title: str = "FastAPI",
        description: str = "",
        version: str = "0.1.0",
        openapi_url: Optional[str] = "/openapi.json",
        openapi_tags: Optional[List[Dict[str, Any]]] = None,
        servers: Optional[List[Dict[str, Union[str, Any]]]] = None,
        dependencies: Optional[Sequence[Depends]] = None,
        default_response_class: Type[Response] = Default(JSONResponse),
        docs_url: Optional[str] = "/docs",
        redoc_url: Optional[str] = "/redoc",
        swagger_ui_oauth2_redirect_url: Optional[str] = "/docs/oauth2-redirect",
        swagger_ui_init_oauth: Optional[Dict[str, Any]] = None,
        middleware: Optional[Sequence[Middleware]] = None,
        exception_handlers: Optional[
            Dict[
                Union[int, Type[Exception]],
                Callable[[Request, Any], Coroutine[Any, Any, Response]],
            ]
        ] = None,
        on_startup: Optional[Sequence[Callable[[], Any]]] = None,
        on_shutdown: Optional[Sequence[Callable[[], Any]]] = None,
        lifespan: Optional[Lifespan[AppType]] = None,
        terms_of_service: Optional[str] = None,
        contact: Optional[Dict[str, Union[str, Any]]] = None,
        license_info: Optional[Dict[str, Union[str, Any]]] = None,
        openapi_prefix: str = "",
        root_path: str = "",
        root_path_in_servers: bool = True,
        responses: Optional[Dict[Union[int, str], Dict[str, Any]]] = None,
        callbacks: Optional[List[BaseRoute]] = None,
        deprecated: Optional[bool] = None,
        include_in_schema: bool = True,
        swagger_ui_parameters: Optional[Dict[str, Any]] = None,
        generate_unique_id_function: Callable[[routing.APIRoute], str] = Default(
            generate_unique_id
        ),
        **extra: Any,
    ) -> None:
        pass

image

Could you format these long signatures split into multiple lines like

(
    *, 
    debug: bool = False, 
    routes: List[BaseRoute] | None = None, 
    title: str = "FastAPI", 
    description: str = "", 
    version: str = "0.1.0", 
    openapi_url: str | None = "/openapi.json", 
    openapi_tags: List[Dict[str, Any]] | None = None, 
    servers: List[Dict[str, str | Any]] | None = None, 
    dependencies: Sequence[Depends] | None = None, 
    default_response_class: Type[Response] = Default(JSONResponse), 
    docs_url: str | None = "/docs", 
    redoc_url: str | None = "/redoc", 
    swagger_ui_oauth2_redirect_url: str | None = "/docs/oauth2-redirect", 
    swagger_ui_init_oauth: Dict[str, Any] | None = None, 
    middleware: Sequence[Middleware] | None = None, 
    exception_handlers: Dict[int | Type[Exception], (Request, Any) -> Coroutine[Any, Any, Response]] | None = None, 
    on_startup: Sequence[() -> Any] | None = None, 
    on_shutdown: Sequence[() -> Any] | None = None, 
    lifespan: ((FastAPI) -> AsyncContextManager) | None = None, 
    terms_of_service: str | None = None, 
    contact: Dict[str, str | Any] | None = None, 
    license_info: Dict[str, str | Any] | None = None, 
    openapi_prefix: str = "", 
    root_path: str = "", 
    root_path_in_servers: bool = True, 
    responses: Dict[int | str, Dict[str, Any]] | None = None, 
    callbacks: List[BaseRoute] | None = None, 
    deprecated: bool | None = None, 
    include_in_schema: bool = True, 
    swagger_ui_parameters: Dict[str, Any] | None = None, 
    generate_unique_id_function: (APIRoute) -> str = Default(generate_unique_id), 
    **extra: Any
) -> None