🎨 文档树支持 Ctrl+ClickShift+↑/↓ 进行多选 https://github.com/siyuan-note/siyuan/issues/1359

This commit is contained in:
Liang Ding 2022-11-03 18:48:11 +08:00
parent f3bcdb1d39
commit 0378cf52d5
No known key found for this signature in database
GPG key ID: 136F30F901A2231D
2 changed files with 32 additions and 30 deletions

View file

@ -1031,7 +1031,8 @@ func MoveDoc(fromBoxID, fromPath, toBoxID, toPath string) (newPath string, err e
func MoveDocs(fromPaths []string, toPath string) (err error) {
util.PushEndlessProgress(Conf.Language(116))
fromPaths = filterFromPaths(fromPaths, toPath)
WaitForWritingFiles()
fromPaths = util.FilterFromPaths(fromPaths, toPath)
pathsBoxes := getBoxesByPaths(fromPaths)
toID := strings.TrimSuffix(path.Base(toPath), ".sy")
@ -1062,34 +1063,6 @@ func MoveDocs(fromPaths []string, toPath string) (err error) {
return
}
func filterFromPaths(fromPaths []string, toPath string) (retFromPaths []string) {
fromPaths = append(fromPaths, toPath)
retFromPaths = filterSelfChildDocs(fromPaths)
return
}
func filterSelfChildDocs(paths []string) (ret []string) {
sort.Slice(paths, func(i, j int) bool { return len(paths[i]) < len(paths[j]) })
dirs := map[string]string{}
for _, fromPath := range paths {
dir := strings.TrimSuffix(fromPath, ".sy")
existParent := false
for d, _ := range dirs {
if strings.HasPrefix(fromPath, d) {
existParent = true
break
}
}
if existParent {
continue
}
dirs[dir] = fromPath
ret = append(ret, fromPath)
}
return
}
func moveDoc(fromBox *Box, fromPath string, toBox *Box, toPath string) (newPath string, err error) {
isSameBox := fromBox.ID == toBox.ID
@ -1217,7 +1190,7 @@ func RemoveDoc(boxID, p string) (err error) {
func RemoveDocs(paths []string) (err error) {
util.PushEndlessProgress(Conf.Language(116))
paths = filterSelfChildDocs(paths)
paths = util.FilterSelfChildDocs(paths)
pathsBoxes := getBoxesByPaths(paths)
WaitForWritingFiles()
for p, box := range pathsBoxes {

View file

@ -22,6 +22,7 @@ import (
"os"
"path"
"path/filepath"
"sort"
"strings"
"time"
@ -173,3 +174,31 @@ func NormalizeEndpoint(endpoint string) string {
}
return endpoint
}
func FilterFromPaths(fromPaths []string, toPath string) (retFromPaths []string) {
fromPaths = append(fromPaths, toPath)
retFromPaths = FilterSelfChildDocs(fromPaths)
return
}
func FilterSelfChildDocs(paths []string) (ret []string) {
sort.Slice(paths, func(i, j int) bool { return len(paths[i]) < len(paths[j]) })
dirs := map[string]string{}
for _, fromPath := range paths {
dir := strings.TrimSuffix(fromPath, ".sy")
existParent := false
for d, _ := range dirs {
if strings.HasPrefix(fromPath, d) {
existParent = true
break
}
}
if existParent {
continue
}
dirs[dir] = fromPath
ret = append(ret, fromPath)
}
return
}