mirror of
https://github.com/siyuan-note/siyuan.git
synced 2026-01-23 00:36:10 +01:00
⚡ Support for saving .sy files in the single-line format https://github.com/siyuan-note/siyuan/issues/8712
This commit is contained in:
parent
eb65bb4ec0
commit
9eeee3965a
13 changed files with 55 additions and 22 deletions
|
|
@ -313,6 +313,8 @@ func setFiletree(c *gin.Context) {
|
|||
model.Conf.FileTree = fileTree
|
||||
model.Conf.Save()
|
||||
|
||||
util.UseSingleLineSave = model.Conf.FileTree.UseSingleLineSave
|
||||
|
||||
ret.Data = model.Conf.FileTree
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ type FileTree struct {
|
|||
AllowCreateDeeper bool `json:"allowCreateDeeper"` // 允许创建超过 7 层深度的子文档
|
||||
RemoveDocWithoutConfirm bool `json:"removeDocWithoutConfirm"` // 删除文档时是否不需要确认
|
||||
CloseTabsOnStart bool `json:"closeTabsOnStart"` // 启动时关闭所有页签
|
||||
UseSingleLineSave bool `json:"useSingleLineSave"` // 使用单行保存 .sy 文件
|
||||
|
||||
Sort int `json:"sort"` // 排序方式
|
||||
}
|
||||
|
|
@ -43,5 +44,6 @@ func NewFileTree() *FileTree {
|
|||
MaxOpenTabCount: 8,
|
||||
AllowCreateDeeper: false,
|
||||
CloseTabsOnStart: false,
|
||||
UseSingleLineSave: util.UseSingleLineSave,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,13 +165,14 @@ func prepareWriteTree(tree *parse.Tree) (data []byte, filePath string, err error
|
|||
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions)
|
||||
data = renderer.Render()
|
||||
|
||||
// .sy 文档数据使用格式化好的 JSON 而非单行 JSON
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(4096)
|
||||
if err = json.Indent(&buf, data, "", "\t"); nil != err {
|
||||
return
|
||||
if !util.UseSingleLineSave {
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(1024 * 1024 * 2)
|
||||
if err = json.Indent(&buf, data, "", "\t"); nil != err {
|
||||
return
|
||||
}
|
||||
data = buf.Bytes()
|
||||
}
|
||||
data = buf.Bytes()
|
||||
|
||||
if err = os.MkdirAll(filepath.Dir(filePath), 0755); nil != err {
|
||||
return
|
||||
|
|
@ -205,19 +206,21 @@ func parseJSON2Tree(boxID, p string, jsonData []byte, luteEngine *lute.Lute) (re
|
|||
}
|
||||
if needFix {
|
||||
renderer := render.NewJSONRenderer(ret, luteEngine.RenderOptions)
|
||||
output := renderer.Render()
|
||||
data := renderer.Render()
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(4096)
|
||||
if err = json.Indent(&buf, output, "", "\t"); nil != err {
|
||||
return
|
||||
if !util.UseSingleLineSave {
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(1024 * 1024 * 2)
|
||||
if err = json.Indent(&buf, data, "", "\t"); nil != err {
|
||||
return
|
||||
}
|
||||
data = buf.Bytes()
|
||||
}
|
||||
output = buf.Bytes()
|
||||
|
||||
if err = os.MkdirAll(filepath.Dir(filePath), 0755); nil != err {
|
||||
return
|
||||
}
|
||||
if err = filelock.WriteFile(filePath, output); nil != err {
|
||||
if err = filelock.WriteFile(filePath, data); nil != err {
|
||||
msg := fmt.Sprintf("write data [%s] failed: %s", filePath, err)
|
||||
logging.LogErrorf(msg)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -185,6 +185,7 @@ func InitConf() {
|
|||
Conf.FileTree.DocCreateSavePath = strings.TrimSuffix(Conf.FileTree.DocCreateSavePath, "/")
|
||||
Conf.FileTree.DocCreateSavePath = strings.TrimSpace(Conf.FileTree.DocCreateSavePath)
|
||||
}
|
||||
util.UseSingleLineSave = Conf.FileTree.UseSingleLineSave
|
||||
|
||||
util.CurrentCloudRegion = Conf.CloudRegion
|
||||
|
||||
|
|
|
|||
|
|
@ -190,12 +190,14 @@ func ImportSY(zipPath, boxID, toPath string) (err error) {
|
|||
renderer := render.NewJSONRenderer(tree, luteEngine.RenderOptions)
|
||||
data := renderer.Render()
|
||||
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(4096)
|
||||
if err = json.Indent(&buf, data, "", "\t"); nil != err {
|
||||
return
|
||||
if !util.UseSingleLineSave {
|
||||
buf := bytes.Buffer{}
|
||||
buf.Grow(1024 * 1024 * 2)
|
||||
if err = json.Indent(&buf, data, "", "\t"); nil != err {
|
||||
return
|
||||
}
|
||||
data = buf.Bytes()
|
||||
}
|
||||
data = buf.Bytes()
|
||||
|
||||
if err = os.WriteFile(syPath, data, 0644); nil != err {
|
||||
logging.LogErrorf("write .sy [%s] failed: %s", syPath, err)
|
||||
|
|
|
|||
|
|
@ -38,6 +38,9 @@ import (
|
|||
"github.com/siyuan-note/logging"
|
||||
)
|
||||
|
||||
// UseSingleLineSave 是否使用单行保存 .sy 文件。
|
||||
var UseSingleLineSave = true
|
||||
|
||||
// IsUILoaded 是否已经加载了 UI。
|
||||
var IsUILoaded = false
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue