]> gitweb.factorcode.org Git - factor.git/blob - misc/fuel/fuel-base.el
Large reorg of FUEL codebase
[factor.git] / misc / fuel / fuel-base.el
1 ;;; fuel-base.el --- Basic FUEL support code
2
3 ;; Copyright (C) 2008 Jose Antonio Ortega Ruiz
4 ;; See http://factorcode.org/license.txt for BSD license.
5
6 ;; Author: Jose Antonio Ortega Ruiz <jao@gnu.org>
7 ;; Keywords: languages, fuel, factor
8
9 ;;; Commentary:
10
11 ;; Basic definitions likely to be used by all FUEL modules.
12
13 ;;; Code:
14
15 (defconst fuel-version "1.1")
16
17 ;;;###autoload
18 (defsubst fuel-version ()
19   "Echoes FUEL's version."
20   (interactive)
21   (message "FUEL %s" fuel-version))
22
23 \f
24 ;;; Customization:
25
26 ;;;###autoload
27 (defgroup fuel nil
28   "Factor's Ultimate Emacs Library."
29   :group 'languages)
30
31 \f
32 ;;; Utilities:
33
34 (defun fuel-shorten-str (str len)
35   (let ((sl (length str)))
36     (if (<= sl len) str
37       (let* ((sep " ... ")
38              (sepl (length sep))
39              (segl (/ (- len sepl) 2)))
40         (format "%s%s%s" (substring str 0 segl)
41                 sep (substring str (- sl segl)))))))
42
43 (defun fuel-shorten-region (begin end len)
44   (fuel-shorten-str
45    (mapconcat 'identity
46               (split-string (buffer-substring begin end) nil t) " ") len))
47
48 (defsubst fuel-region-to-string (begin &optional end)
49   (let ((end (or end (point))))
50     (if (< begin end)
51         (mapconcat 'identity
52                    (split-string (buffer-substring-no-properties begin end)
53                                  nil t) " ") "")))
54
55 (defun fuel-respecting-message (format &rest format-args)
56   "Display TEXT as a message, without hiding any minibuffer contents."
57   (let ((text (format " [%s]" (apply #'format format format-args))))
58     (if (minibuffer-window-active-p (minibuffer-window))
59         (minibuffer-message text)
60       (message "%s" text))))
61
62 (defun fuel-mode--read-file (arg)
63   (let* ((file (or (and arg (read-file-name "File: " nil (buffer-file-name) t))
64                    (buffer-file-name)))
65          (file (expand-file-name file))
66          (buffer (find-file-noselect file)))
67     (when (and  buffer
68                 (buffer-modified-p buffer)
69                 (y-or-n-p "Save file? "))
70       (save-buffer buffer))
71     (cons file buffer)))
72
73 \f
74 (provide 'fuel-base)
75
76 ;;; fuel-base.el ends here