gnu-emacs-sources
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ricette-mode.el 1.5


From: Thien-Thi Nguyen
Subject: ricette-mode.el 1.5
Date: Sun, 16 Jan 2005 13:21:11 +0100

greetings,

please find below ricette-mode.el 1.5.  ChangeLog and future versions of
ricette-mode.el (which will most likely not be announced) can be found
henceforth in directory:

  http://www.glug.org/people/ttn/software/personal-elisp/standalone/

i am aware of version 1.4 on the emacswiki, and will update that when i
get chance (unless someone beats me to it).

versione 1.5 esce grazie una pizza diavola ieri sera (con due "tipi"
di pepperone ;-), che mi ha ricordato questo codice vecchio...

buon appetito,
thi

____________________________________________
;;; ricette-mode.el --- vedere ricette

;;; Rel:standalone-ricette-mode-el-1-5
;;;
;;; Copyright (C) 2002,2005 Thien-Thi Nguyen
;;; This file is part of ttn's personal elisp library, released under GNU
;;; GPL with ABSOLUTELY NO WARRANTY.  See the file COPYING for details.

;;; Description: Major mode for editing recipes.

;;; Versione: 1.5

;;; Commentary:

;; Uso: Mettere la formula:
;;
;;   (add-to-list 'auto-mode-alist
;;                '("^/home/ale/etc/ricette/" . ricette-mode))
;;
;; in ~/.emacs e garantire che questo file (ricette-mode.el) sia in
;; una cartella che è presente in `load-path'.  (Variare come vuoi.)
;;
;; Il comando `ricetta-nuova' ti chiede il nome della ricetta e
;; prepara un buffer vuoto con lo stile desiderato (titoli ecc.);
;; si può invocare automaticamente aggiungendo la formula:
;;
;;   (add-hook 'ricette-mode-hook 'ricetta-nuova)
;;
;; Questo programma è dedicato alla mia maestra -- Alessandra Bertoni
;; (e il suo cervello bello 8-).

;;; Code:

(defmacro ricette-viso-nuovo (nome col spieg)
  (let ((proprio (intern (concat "ricette-" (symbol-name nome) "-viso"))))
    `(progn
       (defvar  ,proprio ',proprio)
       (defface ,proprio '((t (:foreground ,(symbol-name col)))) ,spieg))))

(ricette-viso-nuovo  testo  cyan2 "Viso per il testo delle ricette.")
(ricette-viso-nuovo titoli violet "Viso per i titoli delle ricette.")
(ricette-viso-nuovo quanto yellow "Viso per \"g NNN\" e le altre quantità.")
(defvar ricette-font-lock-keywords
  '(("^[ \t]*\\([A-ZÀÈÌÒÙ\t ,]+\\)[ \t]*$"            1 ricette-titoli-viso)
    ("^\\(Preparazione\\|Ingredienti\\)"              0 ricette-titoli-viso)
    ("^[*] \\([-,./0-9]+\\(\\s-*[mkK]*[gl]\\>\\)*\\)" 1 ricette-quanto-viso)
    ("\\<[kK]*g [-,./0-9]+$"                          0 ricette-quanto-viso)
    ("^\\s-*\\([^\n:]+\\):"                           1 ricette-titoli-viso)
    ("."                                              0 ricette-testo-viso)))

(defvar ricette-font-lock-defaults
  '(ricette-font-lock-keywords t))      ; t => solo "keywords"

(defun ricette-aggiungere-ingrediente ()
  (interactive)
  (goto-char (point-max))
  (re-search-backward "^Preparazione")
  (re-search-backward "^[*]")
  (end-of-line)
  (insert "\n* "))

(defun ricette-aggiungere-ingrediente-successivo ()
  (interactive)
  (insert "\n* "))

(defun ricetta-nuova ()
  "Chiedere il nome e preparare i titoli."
  (interactive)
  (when (= 0 (buffer-size))
    (let ((nome (read-string "Ricetta nuova! Nome? ")))
      (insert (upcase nome)))
    (center-line)
    (insert "\n\n\n\n\n")
    (insert "Ingredienti (per N persone)\n\n* \n\n")
    (insert "Preparazione\n\n...\n")))

(defun ricette-appoggiare-a-destra ()
  (interactive)
  (let ((beg (progn (beginning-of-line) (delete-horizontal-space) (point)))
        (end (progn (end-of-line) (delete-horizontal-space) (point))))
    (beginning-of-line)
    (insert (make-string (- fill-column (- end beg)) 32))))

(define-derived-mode ricette-mode text-mode "Ricette"
  "Major mode per le ricette.
\\{ricette-mode-map}"
  ;; tasti
  (mapcar (lambda (paio)
            (define-key ricette-mode-map (car paio) (cdr paio)))
          '(("\C-c\C-i" . ricette-aggiungere-ingrediente)
            ("\C-j"     . ricette-aggiungere-ingrediente-successivo)
            ("\M-r"     . ricette-appoggiare-a-destra)))
  ;; font lock
  (make-local-variable 'font-lock-defaults)
  (setq font-lock-defaults ricette-font-lock-defaults)
  ;; ecc
  (setq fill-column 70))

;;; ricette-mode.el finisce qui




reply via email to

[Prev in Thread] Current Thread [Next in Thread]