(rel, nextTitle string)
| 1479 | } |
| 1480 | |
| 1481 | func (v *Vault) renameNoteFile(rel, nextTitle string) (NoteMeta, error) { |
| 1482 | v.mu.Lock() |
| 1483 | defer v.mu.Unlock() |
| 1484 | abs, err := SafeJoin(v.root, rel) |
| 1485 | if err != nil { |
| 1486 | return NoteMeta{}, err |
| 1487 | } |
| 1488 | nextTitle = sanitizeFileStem(nextTitle) |
| 1489 | if nextTitle == "" { |
| 1490 | return NoteMeta{}, errors.New("empty title") |
| 1491 | } |
| 1492 | dir := filepath.Dir(abs) |
| 1493 | newAbs := uniquePath(dir, nextTitle, noteExt(abs)) |
| 1494 | if err := os.Rename(abs, newAbs); err != nil { |
| 1495 | return NoteMeta{}, err |
| 1496 | } |
| 1497 | v.invalidateTextSearchCache() |
| 1498 | folder, _ := v.folderOf(newAbs) |
| 1499 | meta, err := v.readMeta(folder, newAbs) |
| 1500 | if err != nil { |
| 1501 | return NoteMeta{}, err |
| 1502 | } |
| 1503 | if err := v.moveNoteCommentsLocked(rel, meta.Path); err != nil { |
| 1504 | return NoteMeta{}, err |
| 1505 | } |
| 1506 | return meta, nil |
| 1507 | } |
| 1508 | |
| 1509 | // rewriteInboundWikilinks rewrites every note that linked to the renamed note's |
| 1510 | // old name so it points to the new title. Only notes that actually link to it |
no test coverage detected