(defvar me-italics-toggle nil "*me-mode italics toggle") (defvar me-quotes-toggle nil "*me-mode quotes toggle") (defvar me-bold-toggle nil "*me-mode bold toggle") (defvar me-courier-toggle nil "*me-mode courier toggle") (defvar me-ref-toggle nil "*me-mode ref toggle") (defvar me-subscript-toggle nil "*me-mode subscript toggle") (defvar me-alltt-toggle nil "*me-mode alltt toggle") (defvar enum-item-spacing "\n" "*") (defvar enuming nil "*Are we enuming or listing?") (defvar in-me-list-toggle nil "*") (defvar in-me-enum-toggle nil "*") (defun begin/end-me-italics () (interactive) (if (toggle-var 'me-italics-toggle) (insert-string (concat "\\fI")) (insert-string (concat "\\fP")) ) ) (defun begin/end-me-quotes () (interactive) (if (toggle-var 'me-quotes-toggle) (insert-string "``") (insert-string "''") ) ) (defun begin/end-me-bold () (interactive) (if (toggle-var 'me-bold-toggle) (insert-string "\\fB") (insert-string "\\fP") ) ) (defun begin/end-me-courier () (interactive) (if (toggle-var 'me-courier-toggle) (insert-string "\\fC") (insert-string "\\fP") ) ) (defun begin/end-me-ref () (interactive) (if (toggle-var 'me-ref-toggle) (insert-string ".[ [\n") (insert-string ".]]\n") ) ) (defun begin/end-me-subscript () (interactive) (if (toggle-var 'me-subscript-toggle) (insert-string "\\*<") (insert-string "\\*>") ) ) (defun insert-bullet-item () (interactive) (insert-string (concat (int-to-string enum-item-spacing) "\\.ee\n" ) ) (previous-line 1) ) ;(defun ; check-match-of-me-font-changes ; (while 1 ; (if (error-occured ; (re-search-forward "\\fB\\|\\fI")) ; (progn ; (beginning-of-buffer) ; (error "Font changes match OK") ; ) ; ) ; (search-forward "\\f") ; (if (/= (following-char) 'P') ; (error "Font change mismatch") ; ) ; ) ;) (defvar list-item-spacing 3 "*") (defvar enum-item-spacing 3 "*") (defvar list-item ".sp .3v\n.le\n" "*") (defvar enum-item ".sp .3v\n.ee\n" "*") (defun set-list-item-spacing (a1) (interactive "slist item spacing: ") (setq list-item-spacing a1) (setq enum-item-spacing list-item-spacing) (setq list-item (concat ".sp ." (int-to-string list-item-spacing) "v\n.le\n")) (setq enum-item (concat ".sp ." (int-to-string enum-item-spacing) "v\n.ee\n")) ) (defun insert-list-item (sp) (interactive "P") (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (if enuming enum-item list-item ) ) ) (defun Es (sp) (interactive "P") (setq enuming t) (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (concat ".(l F\n.(E\n" enum-item ) ) ) (defun Ee () (interactive) (insert-string (concat \ "EndEnum\n")) (local-unset-ket "") ) (defun Ls (sp) (interactive "P") (setq enuming nil) ;i.e., we're listing now (if (not (null sp)) (set-list-item-spacing sp) ) (insert-string (concat ".(l F\n.(L 1\n" list-item ) ) ) (defun Le () (interactive) (insert-string ".)L 1\n.)l F\n") ) (defun begin/end-me-list () (interactive) (if (toggle-var 'in-me-list-toggle) (Ls) (Le) ) ) (defun begin/end-me-enum () (interactive) (if (toggle-var "in-me-enum-toggle") (Es) (Ee) ) ) (defun insert-me-list-template (sp) (interactive "P") (setq enuming nil) ;i.e., we`re listing now (if (null sp) (insert-me-list-template-1 "1") (progn (set-list-item-spacing sp) (call-interactively 'insert-me-list-template-1) ) ) ) (defun insert-me-list-template-1 (af) (interactive "sType of list (I, A, 1, a, i): ") (if (string= af "") (setq af 1)) (insert-string ".(L " af "\n" list-item "\n" ".)L " af "\n" ) (previous-line 2) ) ;The following doesnt work currently due to some misunderstanding of and/or ;bug in gosmacs lisp parm passing. ;(defun ; (insert-indented-me-list-template-bogus af ; (insert-string ".(l F\n") ; (if prefix-argument-provided ; (provide-prefix-argument prefix-argument ; (insert-me-list-template af)) ; (insert-me-list-template af) ; ) ; (next-line) (next-line) ; (insert-string ".)l F\n") ; (previous-line) (previous-line) (previous-line) ; ) ;) (defun insert-indented-me-list-template () (interactive) (insert-string ".(l F\n") (call-interactively 'insert-me-list-template) (next-line 2) (insert-string ".)l F\n") (previous-line 3) ) (defun insert-me-enum-template () (interactive) (setq enuming t) (insert-string ".(E\n" enum-item "\n" ".)E\n" ) (previous-line 2) ) (defun insert-indented-me-enum-template () (interactive) (insert-string ".(l F\n") (insert-me-enum-template) (next-line 2) (insert-string ".)l F\n") (previous-line 3) ) (defun insert-me-alltt-template () (interactive) (insert-string ".(l F\n" "\n" ".)l F\n" ) (previous-line 2) ) (defun insert-me-section (s) (interactive "NSection depth: ") (if (= s 1) (insert-string ".sh 1 \"\"") (if (= s 2) (insert-string ".sh 2 \"\"") (if (= s 3) (insert-string ".sh 3 \"\"") (if (= s 4) (insert-string ".sh 4 \"\"") (error "Section depth must be between 1 and 5") ) ) ) ) ; (insert-string "\\indent") (backward-char 1) ) (defun insert-me-center-template () (interactive) (insert-string ".ce 100\n" "\n" ".ce 0\n" ) (previous-line 2) ) (defun insert-me-verbatim-template () (interactive) (insert-string ".nf\n.na\n" "\n" ".fi\n.ad\n" ) (previous-line 3) ) (defun my-nroff-mode () (interactive) (read-abbrev-file "~gfisher/emacs/lib/text-mode-abbrev-table") (setq nroff-mode-abbrev-table text-mode-abbrev-table) (nroff-mode) (abbrev-mode 1) ;Remove some of gnu's funky nroff-mode bindings: (local-unset-key "p") (local-unset-key "n") (local-unset-key "s") ;My bindings: (local-set-key "'" 'begin/end-me-italics) (local-set-key "\"" 'begin/end-me-quotes) (local-set-key "_" 'begin/end-me-bold) (local-set-key ";" 'begin/end-me-courier) (local-set-key "[" 'begin/end-me-ref) (local-set-key ";" 'begin/end-me-subscript) (local-set-key "i" 'insert-list-item) (local-set-key " " 'set-list-item-spacing) ;(local-set-key "begin/end-me-list" "\^xL") ;(local-set-key "begin/end-me-enum" "\^xE") (local-set-key "L" 'insert-me-list-template) (local-set-key "E" 'insert-me-enum-template) (local-set-key "I" 'insert-indented-me-enum-template) (local-set-key "K" 'insert-indented-me-list-template) (local-set-key "A" 'insert-me-alltt-template) (local-set-key "S" 'insert-me-section) (local-set-key "C" 'insert-me-center-template) (local-set-key "V" 'insert-me-verbatim-template) ; (Remove-local-binding "\e/") (setq fill-prefix nil) (setq fill-column 79) (auto-fill-mode 1) (setq case-fold-search nil) (setq truncate-lines nil) (setq mode-name "my-nroff-me") )