Function: octave-sync-function-file-names
octave-sync-function-file-names is an interactive and byte-compiled
function defined in octave.el.gz.
Signature
(octave-sync-function-file-names)
Documentation
Ensure function name agree with function file name.
See Info node (octave)Function Files.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/octave.el.gz
(defun octave-sync-function-file-names ()
"Ensure function name agree with function file name.
See Info node `(octave)Function Files'."
(interactive)
(when buffer-file-name
(pcase-let ((`(,start ,_end ,name-start ,name-end)
(octave-function-file-p)))
(when (and start name-start)
(let* ((func (buffer-substring name-start name-end))
(file (file-name-sans-extension
(file-name-nondirectory buffer-file-name)))
(help-form (format-message "\
a: Use function name `%s'
b: Use file name `%s'
q: Don't fix\n" func file))
(c (unless (equal file func)
(save-window-excursion
(help-form-show)
(read-char-choice
"Which name to use? (a/b/q) " '(?a ?b ?q))))))
(pcase c
(?a (let ((newname (expand-file-name
(concat func (file-name-extension
buffer-file-name t)))))
(when (or (not (file-exists-p newname))
(yes-or-no-p
(format "Target file %s exists; proceed? " newname)))
(when (file-exists-p buffer-file-name)
(rename-file buffer-file-name newname t))
(set-visited-file-name newname))))
(?b (save-excursion
(goto-char name-start)
(delete-region name-start name-end)
(insert file)))))))))