@@ -1676,6 +1676,36 @@ number."
1676
1676
1677
1677
(message " Renamed %d occurrences. " count)))))))
1678
1678
1679
+ (defun tide-command:getEditsForFileRename (old new )
1680
+ (tide-send-command-sync " getEditsForFileRename" `(:oldFilePath , old :newFilePath , new :file , old )))
1681
+
1682
+ (defun tide-rename-file ()
1683
+ " Rename current file and all it's references in other files."
1684
+ (interactive )
1685
+ (let* ((name (buffer-name ))
1686
+ (old (tide-buffer-file-name))
1687
+ (basename (file-name-nondirectory old)))
1688
+ (when (not (and old (file-exists-p old)))
1689
+ (error " Buffer '%s ' is not visiting a file. " name))
1690
+ (let ((new (read-file-name " New name: " (file-name-directory old) basename nil basename)))
1691
+ (when (get-file-buffer new)
1692
+ (error " A buffer named '%s ' already exists. " new))
1693
+ (when (file-exists-p new)
1694
+ (error " A file named '%s ' already exists. " new))
1695
+ (let* ((response (tide-command:getEditsForFileRename (expand-file-name old) (expand-file-name new)))
1696
+ (edits (tide-on-response-success response (:min-version " 2.9" )
1697
+ (plist-get response :body ))))
1698
+ (tide-cleanup-buffer)
1699
+ (mkdir (file-name-directory new) t )
1700
+ (rename-file old new)
1701
+ (rename-buffer new)
1702
+ (set-visited-file-name new)
1703
+ (set-buffer-modified-p nil )
1704
+ (when edits
1705
+ (tide-apply-code-edits edits))
1706
+ (tide-configure-buffer)
1707
+ (message " Renamed '%s to '%s '. " name (file-name-nondirectory new))))))
1708
+
1679
1709
; ;; Format
1680
1710
1681
1711
;;;### autoload
0 commit comments