ionide / ionide/FsAutoComplete

Extract `TipFormatters` into its own package

Open
#1,316 4 comments 0 reactions 0 assignees View on GitHub
enhancement
Dominant language
F#
Stars
486
Forks
169
Avg merge
2d 8h
Merged PRs (30d)
5

Description

### Details

Hello,

I am working on improving [F# formatting API](https://github.com/fsprojects/FSharp.Formatting/pull/932) documentation and one of the main element is to improve the Tooltip formatting.

This leads to having to duplicate `TipFormatter` code between FSAC and F# Formatting. Would you be ok if we make it a standalone package?

The portion of the `TipFormatter` that I would like to export is only the portion responsible for converting a `XMLDoc` into a formatted text.

It should correspond more or less to this portion of the file:

https://github.com/ionide/FsAutoComplete/blob/fc79e99f59c3da89cca0c1e4367307263228409d/src/FsAutoComplete.Core/TipFormatter.fs#L17-L858

Having a separate library means:

- Both project can benefit from improvements made to the XMLDoc formatter
- Add tests to capture future regressions.

I think there are currently no tests regarding XMLDoc formatting in FSAC (at least I never wrote ones when I worked a lot with that portion of the code)

Extracting that portion of the code should not be too much of big deal because it doesn't depends on FSC or things complex like that. It just want an XMLElement and return a string / class instance.

It could be named something like `Ionide.XMLDocFormatter`? I worked on that code several times and volunteer to scaffold that project.

### Checklist

- [X] I have looked through existing issues to make sure that this feature has not been requested before
- [X] I have provided a descriptive title for this issue
- [X] I am aware that even valid feature requests may be rejected if they do not align with the project's goals
- [X] I or my company would be willing to contribute this feature

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.