Mercurial > hg > xemacs-beta
diff lisp/hyperbole/hinit.el @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | 4103f0995bd7 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/lisp/hyperbole/hinit.el Mon Aug 13 08:45:50 2007 +0200 @@ -0,0 +1,122 @@ +;;!emacs +;; +;; FILE: hinit.el +;; SUMMARY: Standard initializations for Hyperbole hypertext system. +;; USAGE: GNU Emacs Lisp Library +;; KEYWORDS: hypermedia +;; +;; AUTHOR: Bob Weiner +;; ORG: Brown U. +;; +;; ORIG-DATE: 1-Oct-91 at 02:32:51 +;; LAST-MOD: 22-Oct-95 at 00:27:13 by Bob Weiner +;; +;; This file is part of Hyperbole. +;; Available for use and distribution under the same terms as GNU Emacs. +;; +;; Copyright (C) 1991-1995, Free Software Foundation, Inc. +;; Developed with support from Motorola Inc. +;; +;; DESCRIPTION: +;; DESCRIP-END. + +;;; ************************************************************************ +;;; Public variables +;;; ************************************************************************ + +(defvar hyperb:host-domain nil + "<@domain-name> for current host. Set automatically by 'hyperb:init'.") + +;;; ************************************************************************ +;;; Other required Elisp libraries +;;; ************************************************************************ + +(require 'hvar) + +(mapcar 'require '(hui-mouse hypb hui hui-mini hbmap hibtypes)) + +;;; ************************************************************************ +;;; Public functions +;;; ************************************************************************ + +(if (not (fboundp 'br-in-browser)) + ;; Then the OO-Browser is not loaded, so we can never be within the + ;; browser. Define this as a dummy function that always returns nil + ;; until the OO-Browser is ever loaded. + (defun br-in-browser () + "Always returns nil since the OO-Browser is not loaded." + nil)) + +(defun hyperb:init () + "Standard configuration routine for Hyperbole." + (interactive) + (run-hooks 'hyperb:init-hook) + (hyperb:check-dir-user) + (or hyperb:host-domain (setq hyperb:host-domain (hypb:domain-name))) + (hyperb:act-set) + ;; + ;; Save button attribute file whenever same dir file is saved and + ;; 'ebut:hattr-save' is non-nil. + ;; + (var:append 'write-file-hooks '(hattr:save)) + ;; + (hyperb:init-menubar)) + +(defun hyperb:init-menubar () + "Add a pulldown menu for Hyperbole, if appropriate." + (and hyperb:window-system + (or hyperb:lemacs-p + (if hyperb:emacs19-p + (require 'lmenu))) + (require 'hui-menu) + ;; XEmacs or Emacs19 under a window system; add Hyperbole menu to + ;; menubar. + (hyperbole-menubar-menu))) + +(defun hyperb:act-set () + "COORDINATION IS NOT YET OPERATIONAL. hui-coord.el IS NOT INCLUDED. +Sets Hyperbole action command to uncoordinated or coordinated operation. +Coordinated is used when 'hcoord:hosts' is a non-nil list. +See \"hui-coord.el\"." + (interactive) + (fset 'hyperb:act (if (and (boundp 'hcoord:hosts) hcoord:hosts) + 'hcoord:act 'hbut:act))) + + +;;; ************************************************************************ +;;; Private functions +;;; ************************************************************************ + +(defun hyperb:check-dir-user () + "Ensures 'hbmap:dir-user' exists and is writable or signals an error." + (if (or (null hbmap:dir-user) (not (stringp hbmap:dir-user)) + (and (setq hbmap:dir-user (file-name-as-directory + (expand-file-name hbmap:dir-user))) + (file-directory-p hbmap:dir-user) + (not (file-writable-p (directory-file-name hbmap:dir-user))))) + (error + "(hyperb:init): 'hbmap:dir-user' must be a writable directory name.")) + (let ((hbmap:dir-user (directory-file-name hbmap:dir-user))) + (or (file-directory-p hbmap:dir-user) ;; Exists and is writable. + (let* ((parent-dir (file-name-directory + (directory-file-name hbmap:dir-user)))) + (cond + ((not (file-directory-p parent-dir)) + (error + "(hyperb:init): 'hbmap:dir-user' parent dir does not exist.")) + ((not (file-writable-p parent-dir)) + (error + "(hyperb:init): 'hbmap:dir-user' parent directory not writable.")) + ((or (if (fboundp 'make-directory) + (progn (make-directory hbmap:dir-user) t)) + (hypb:call-process-p "mkdir" nil nil hbmap:dir-user)) + (or (file-writable-p hbmap:dir-user) + (or (progn (hypb:chmod '+ 700 hbmap:dir-user) + (file-writable-p hbmap:dir-user)) + (error "(hyperb:init): Can't write to 'hbmap:dir-user'.") + ))) + (t (error "(hyperb:init): 'hbmap:dir-user' create failed.")))))) + t) + +(provide 'hinit) +