diff lisp/mule/mule-help.el @ 392:1f50e6fe4f3f r21-2-11

Import from CVS: tag r21-2-11
author cvs
date Mon, 13 Aug 2007 11:10:50 +0200
parents 4f79e16b1112
children 74fd4e045ea6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/mule/mule-help.el	Mon Aug 13 11:10:50 2007 +0200
@@ -0,0 +1,86 @@
+;;; mule-help.el --- Mule-ized Help functions 
+
+;; Copyright (C) 1997 by Free Software Foundation, Inc.
+
+;; Author: SL Baur <steve@altair.xemacs.org>
+;; Keywords: help, internal
+
+;; This file is part of XEmacs.
+
+;; XEmacs is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2, or (at your option)
+;; any later version.
+
+;; XEmacs is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with XEmacs; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
+;; 02111-1307, USA.
+
+;;; Synched up with: Emacs 20.1
+
+;;; Commentary:
+
+;; 
+
+;;; Code:
+
+;; TUTORIAL arg is XEmacs addition
+(defun help-with-tutorial (&optional arg tutorial)
+  "Select the XEmacs learn-by-doing tutorial.
+If there is a tutorial version written in the language
+of the selected language environment, that version is used.
+If there's no tutorial in that language, `TUTORIAL' is selected.
+With arg, you are asked to select which language."
+  (interactive "P")
+  (let (lang filename file)
+    (if arg
+	(or (setq lang (read-language-name 'tutorial "Language: "))
+	    (error "No tutorial file of the specified language"))
+      (setq lang current-language-environment))
+    ;; The menubar buttons call this function like this:
+    ;; (help-with-tutorial nil "tutorial.lang")
+    (setq filename (if (and (not arg) tutorial)
+		       tutorial
+		     (or (get-language-info lang 'tutorial)
+			 (or tutorial "TUTORIAL"))))
+    (setq file (expand-file-name (concat "~/" filename)))
+    (delete-other-windows)
+    (if (get-file-buffer file)
+	(switch-to-buffer (get-file-buffer file))
+      (switch-to-buffer (create-file-buffer file))
+      (setq buffer-file-name file)
+      (setq default-directory (expand-file-name "~/"))
+      (setq buffer-auto-save-file-name nil)
+      (insert-file-contents (locate-data-file filename))
+      (goto-char (point-min))
+      ;; The 'didactic' blank lines: Possibly insert blank lines
+      ;; around <<nya nya nya>>, and change << >> to [ ].
+      (if (re-search-forward "^<<.+>>" nil t)
+	  (let ((n (- (window-height (selected-window))
+		      (count-lines (point-min) (point-at-bol))
+		      6)))
+	    (if (< n 12)
+		(progn (beginning-of-line) (kill-line))
+	      ;; Some people get confused by the large gap
+	      (delete-backward-char 2)
+	      (insert "]")
+	      (beginning-of-line)
+	      (save-excursion
+		(delete-char 2)
+		(insert "["))
+	      (newline (/ n 2))
+	      (next-line 1)
+	      (newline (- n (/ n 2))))))
+      (goto-char (point-min))
+      (set-buffer-modified-p nil))))
+
+
+(provide 'mule-help)
+
+;;; mule-help.el ends here
\ No newline at end of file