[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[nongnu] elpa/tuareg 9f13e1fa67 1/4: Update the modeline if there's a co
From: |
ELPA Syncer |
Subject: |
[nongnu] elpa/tuareg 9f13e1fa67 1/4: Update the modeline if there's a corresponding foo.mli file |
Date: |
Wed, 13 Jul 2022 14:59:18 -0400 (EDT) |
branch: elpa/tuareg
commit 9f13e1fa673381abe81d0b4b60b03efb7036e586
Author: Wilfred Hughes <wilfred@fb.com>
Commit: Wilfred Hughes <wilfred@fb.com>
Update the modeline if there's a corresponding foo.mli file
If we're editing a foo.ml file, it's very useful to know if foo.mli
exists. Update the mode line to say "Tuareg[+mli]" to make it more
visible to the user.
Fixes #197
---
tuareg.el | 19 +++++++++++++++++++
1 file changed, 19 insertions(+)
diff --git a/tuareg.el b/tuareg.el
index 56e1dd80c8..a0caaee2e5 100644
--- a/tuareg.el
+++ b/tuareg.el
@@ -249,6 +249,19 @@ See `ff-other-file-alist'."
:group 'tuareg
:type '(repeat (list regexp (choice (repeat string) function))))
+(defun tuareg--other-file (path)
+ "Given a PATH \"foo.ml\", return \"foo.mli\" if it exists.
+Return nil otherwise."
+ (when path
+ (let* ((ext (file-name-extension path))
+ (path-no-ext (file-name-sans-extension path))
+ (matching-exts
+ (cadr (assoc (format "\\.%s\\'" ext) tuareg-other-file-alist)))
+ (matching-paths
+ (mapcar (lambda (ext) (concat path-no-ext ext))
+ matching-exts))
+ (paths (cl-remove-if-not #'file-exists-p matching-paths)))
+ (car paths))))
(defcustom tuareg-interactive-scroll-to-bottom-on-output nil
"*Controls when to scroll to the bottom of the interactive buffer
@@ -2811,6 +2824,12 @@ Short cuts for the Tuareg mode:
Short cuts for interactions with the REPL:
\\{tuareg-interactive-mode-map}"
+ (setq mode-name
+ '(:eval
+ (let ((other-file (tuareg--other-file (buffer-file-name))))
+ (if other-file
+ (format "Tuareg[+%s]" (file-name-extension other-file))
+ "Tuareg"))))
(unless (tuareg--switch-outside-build)
;; Initialize the Tuareg menu
(tuareg-build-menu)