home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Fresh Fish 8
/
FreshFishVol8-CD1.bin
/
new
/
util
/
edit
/
jade
/
lisp
/
asm-mode.jl
< prev
next >
Wrap
Lisp/Scheme
|
1994-10-05
|
3KB
|
96 lines
;;;; asm-mode.jl -- Primitive mode for generic assembler code
;;; Copyright (C) 1994 John Harper <jsh@ukc.ac.uk>
;;; This file is part of Jade.
;;; Jade 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.
;;; Jade 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 Jade; see the file COPYING. If not, write to
;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
(provide 'asm-mode)
(defvar asm-indent t
"When non-nil lines are indented after being split in asm-mode.")
(defvar asm-comment ";"
"Strings which denotes the start of a comment in asm-mode.")
(defvar asm-keymap (make-keylist))
(bind-keys asm-keymap
"RET" 'asm-ret
"Shift-RET" 'split-line
":" 'asm-colon
"." 'asm-dot)
;;;###autoload
(defun asm-mode ()
"Asm Mode:\n
Major mode for editing generic assembler source. Special commands are,\n
`RET' break line and indent (unless asm-indent is nil)
`:' undent line, then insert a tab
`.' if line is not empty, delete its indentation, then insert
a dot."
(interactive)
(when major-mode-kill
(funcall major-mode-kill (current-buffer)))
(setq mode-name "Assembler"
major-mode 'asm-mode
major-mode-kill 'asm-mode-kill
mode-comment-fun 'asm-insert-comment
keymap-path (cons 'asm-keymap keymap-path))
(eval-hook 'asm-mode-hook))
;;;###autoload
(defun asm-cpp-mode ()
"Asm-CPP Mode:\n
Major mode for editing assembler source which is passed through cpp before
being assembled. Currently this only differs from asm-mode in the comments
it inserts."
(interactive)
(when major-mode-kill
(funcall major-mode-kill (current-buffer)))
(setq mode-name "Assembler-CPP"
major-mode 'asm-cpp-mode
major-mode-kill 'asm-mode-kill
mode-comment-fun 'c-insert-comment
keymap-path (cons 'asm-keymap keymap-path))
(eval-hook 'asm-mode-hook)
(eval-hook 'asm-cpp-mode-hook))
(defun asm-mode-kill ()
(setq mode-name nil
major-mode nil
major-mode-kill nil
mode-comment-fun nil
keymap-path (delq 'asm-keymap keymap-path)))
(defun asm-ret ()
(interactive)
(insert (if asm-indent "\n\t" "\n")))
(defun asm-colon ()
(interactive)
(set-indent-pos (pos 0 nil))
(insert (if asm-indent ":\t" ":")))
(defun asm-dot ()
(interactive)
(when (empty-line-p)
(set-indent-pos (pos 0 nil)))
(insert "."))
(defun asm-insert-comment ()
(interactive)
(find-comment-pos)
(insert asm-comment))