aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorBrecht Van Lommel <brecht@blender.org>2023-03-24 07:12:23 +0100
committerGitHub <noreply@github.com>2023-03-24 14:12:23 +0800
commit84daddc2fa74393cdc13371b0cc44f0444cfdae0 (patch)
treeeaf75d3173ee67d65288accef86bbb7c6c08535e /modules
parent9e04627acaaa853e5269f98f53f2615077cfb028 (diff)
downloadgitea-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.go13
-rw-r--r--modules/setting/repository.go9
-rw-r--r--modules/structs/miscellaneous.go30
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