xyzzy / wsf-modeの作成


xyzzy

Version 0.01

;;; -*- Mode: Lisp; Package: EDITOR -*-
;;;
;;; This file is part of xyzzy.
;;;

(provide "wsf-mode")
(in-package "editor")

(export '(wsf-mode wsf-insert-template
		  wsf-insert-object-tag wsf-insert-reference-tag
		  wsf-execute-script *wsf-template*
		  ))


(defvar-local wsf-mode nil)
(defvar *wsf-mode-map*
  (let ((keymap (make-sparse-keymap)))
	(define-key keymap '(#\C-/ #\C-t) 'wsf-insert-template)
	(define-key keymap '(#\C-/ #\C-o) 'wsf-insert-object-tag)
	(define-key keymap '(#\C-/ #\C-r) 'wsf-insert-reference-tag)
	(define-key keymap '(#\C-/ #\C-x) 'wsf-execute-script)
	(define-key keymap '(#\C-/ #\C-h) 'wsf-insert-runtime-tag)
	(define-key keymap '(#\C-/ #\C-d) 'wsf-insert-description-tag)
	keymap))

(defvar *wsf-template* nil)
(setq *wsf-template*
	  "<?xml version=\"1.0\" encoding=\"Shift_JIS\" standalone=\"yes\"?>
<package>
\t<job>
\t\t<?job debug=\"true\"?>
\t\t<script language=\"JScript\"><![CDATA[
\t\t\tWScript.Echo(\"Not Implementation\");
\t\t]]></script>
\t</job>
</package>
")

;;; wsf テンプレートの挿入
(defun wsf-insert-template nil
  (interactive)
  (insert *wsf-template*))

;;; object-tagの挿入
(defun wsf-insert-object-tag (id classId)
  (interactive "sID: \nsClassID: ")
  (if (and (equal id "")
		   (equal classId ""))
	  (message-box "パラメータを入力してください")
	(insert (format nil "\t\t<object id=\"~A\" classid=\"~A\" />\n" id classId))))

;;; reference-tagの挿入
(defun wsf-insert-reference-tag (id classId)
  (interactive "sID: \nsClassID: ")
  (if (and (equal id "")
		   (equal classId ""))
	  (message-box "パラメータを入力してください")
	(insert (format nil "\t\t<reference id=\"~A\" classid=\"~A\" />\n" id classId))))

;;; runtime-tagの挿入
(defun wsf-insert-runtime-tag nil
  (interactive)
  (insert (format nil "\t\t<runtime>\n\n\t\t</runtime>")))

;;; description-tagの挿入
(defun wsf-insert-description-tag (description)
  (interactive "sDescription: ")
  (insert (format nil "\t\t\t<description>~A</description>\n" description)))

;;; example-tagの挿入
(defun wsf-insert-example-tag (example)
  (interactive "sexample: ")
  (insert (format nil "\t\t\t<example>~A</example>\n" example)))

;;; scriptの実行
(defun wsf-execute-script nil
  (interactive)
  (if (setq file-name (get-buffer-file-name (selected-buffer)))
	  (call-process (format nil "wscript ~A" file-name))
	(message-box "ファイルを保存してから行ってください")))

(defun wsf-mode (&optional (arg nil sv))
  (interactive "p")
  (toggle-mode 'wsf-mode arg sv)
  (if wsf-mode
	  (set-minor-mode-map *wsf-mode-map*)
	(unset-minor-mode-map *wsf-mode-map*))
  (update-mode-line t))

(pushnew '(wsf-mode . "wsf") *minor-mode-alist* :key #'car)
(global-set-key '(#\C-/ #\C-t) 'wsf-insert-template)
(global-set-key '(#\C-/ #\C-o) 'wsf-insert-object-tag)
(global-set-key '(#\C-/ #\C-r) 'wsf-insert-reference-tag)
(global-set-key '(#\C-/ #\C-x) 'wsf-execute-script)
(global-set-key '(#\C-/ #\C-h) 'wsf-insert-runtime-tag)
(global-set-key '(#\C-/ #\C-d) 'wsf-insert-description-tag)

edit

最新の20件

2020-11-14 2011-02-12 2006-09-22 2006-05-08 2006-04-22
  • xyzzy/wsf-modeの作成
2006-04-21 2006-04-17 2006-04-05 2006-03-23 2006-03-22 2006-03-21 2006-03-15 2006-01-26 2006-01-23 2005-10-21 2005-10-17