diff options
author | Brecht Van Lommel <brecht@blender.org> | 2023-03-24 07:12:23 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-24 14:12:23 +0800 |
commit | 84daddc2fa74393cdc13371b0cc44f0444cfdae0 (patch) | |
tree | eaf75d3173ee67d65288accef86bbb7c6c08535e /modules | |
parent | 9e04627acaaa853e5269f98f53f2615077cfb028 (diff) | |
download | gitea-84daddc2fa74393cdc13371b0cc44f0444cfdae0.tar.gz gitea-84daddc2fa74393cdc13371b0cc44f0444cfdae0.zip |
Editor preview support for external renderers (#23333)
Remove `[repository.editor] PREVIEWABLE_FILE_MODES` setting that seemed
like it was intended to support this but did not work. Instead, whenever
viewing a file shows a preview, also have a Preview tab in the file
editor.
Add new `/markup` web and API endpoints with `comment`, `gfm`,
`markdown` and new `file` mode that uses a file path to determine the
renderer.
Remove `/markdown` web endpoint but keep the API for backwards and
GitHub compatibility.
## ⚠️ BREAKING ⚠️
The `[repository.editor] PREVIEWABLE_FILE_MODES` setting was removed.
This setting served no practical purpose and was not working correctly.
Instead a preview tab is always shown in the file editor when supported.
---------
Co-authored-by: zeripath <art27@cantab.net>
Co-authored-by: Lunny Xiao <xiaolunwen@gmail.com>
Diffstat (limited to 'modules')
-rw-r--r-- | modules/markup/renderer.go | 13 | ||||
-rw-r--r-- | modules/setting/repository.go | 9 | ||||
-rw-r--r-- | modules/structs/miscellaneous.go | 30 |
3 files changed, 45 insertions, 7 deletions
diff --git a/modules/markup/renderer.go b/modules/markup/renderer.go index df2c9ebfc6..e934aed925 100644 --- a/modules/markup/renderer.go +++ b/modules/markup/renderer.go @@ -283,6 +283,11 @@ type ErrUnsupportedRenderExtension struct { Extension string } +func IsErrUnsupportedRenderExtension(err error) bool { + _, ok := err.(ErrUnsupportedRenderExtension) + return ok +} + func (err ErrUnsupportedRenderExtension) Error() string { return fmt.Sprintf("Unsupported render extension: %s", err.Extension) } @@ -317,3 +322,11 @@ func IsMarkupFile(name, markup string) bool { } return false } + +func PreviewableExtensions() []string { + extensions := make([]string, 0, len(extRenderers)) + for extension := range extRenderers { + extensions = append(extensions, extension) + } + return extensions +} diff --git a/modules/setting/repository.go b/modules/setting/repository.go index 4964704dba..bae3c658a4 100644 --- a/modules/setting/repository.go +++ b/modules/setting/repository.go @@ -53,8 +53,7 @@ var ( // Repository editor settings Editor struct { - LineWrapExtensions []string - PreviewableFileModes []string + LineWrapExtensions []string } `ini:"-"` // Repository upload settings @@ -167,11 +166,9 @@ var ( // Repository editor settings Editor: struct { - LineWrapExtensions []string - PreviewableFileModes []string + LineWrapExtensions []string }{ - LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,", ","), - PreviewableFileModes: []string{"markdown"}, + LineWrapExtensions: strings.Split(".txt,.md,.markdown,.mdown,.mkd,", ","), }, // Repository upload settings diff --git a/modules/structs/miscellaneous.go b/modules/structs/miscellaneous.go index 596a551e0d..8acea84d6c 100644 --- a/modules/structs/miscellaneous.go +++ b/modules/structs/miscellaneous.go @@ -15,13 +15,41 @@ type SearchError struct { Error string `json:"error"` } +// MarkupOption markup options +type MarkupOption struct { + // Text markup to render + // + // in: body + Text string + // Mode to render (comment, gfm, markdown, file) + // + // in: body + Mode string + // Context to render + // + // in: body + Context string + // Is it a wiki page ? + // + // in: body + Wiki bool + // File path for detecting extension in file mode + // + // in: body + FilePath string +} + +// MarkupRender is a rendered markup document +// swagger:response MarkupRender +type MarkupRender string + // MarkdownOption markdown options type MarkdownOption struct { // Text markdown to render // // in: body Text string - // Mode to render + // Mode to render (comment, gfm, markdown) // // in: body Mode string |