aboutsummaryrefslogtreecommitdiffstats
path: root/m4-local
Commit message (Expand)AuthorAgeFilesLines
* Re-add the m4-local directory, in case we need to add more macros in the futu...Graham Wilson2004-11-123-0/+164
* Kill m4-local directory, move the two files to top-level directory.Matthias Andree2004-06-263-164/+0
* Reset LIBS/LDFLAGS/CPPFLAGS/CFLAGS before trying next path prefix.Matthias Andree2004-06-201-0/+5
* Fix HESIOD compile failure on FreeBSD 5-CURRENT,Matthias Andree2004-06-203-0/+159
href='#n55'>55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
;; fetchmail-mode.el        -*- Emacs-Lisp -*-
;;
;; Mode for editing .fetchmailrc files
;;
;; Created:    <Mon Oct 30 20:13:15 EST 2000>
;; Time-stamp: <17.02.2001 17:59:43>
;; Version:    0.1
;; Keywords:   fetchmail,config
;; Author:     Alex Shinn <foof@debian.org>
;;
;; This program 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 of
;; the License, or (at your option) any later version.
;;
;; This program 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 this program; if not, write to the Free
;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston,
;; MA 02111-1307 USA

;; Commentary:
;;
;; This file provides a major mode for editing .fetchmailrc files.
;; It offers syntax highlighting and indentation.
;;
;; To use it, put the following in your .emacs:
;;
;; (autoload 'fetchmail-mode "fetchmail-mode.el" "Mode for editing .fetchmailrc files" t)
;;
;; You may also want something like:
;;
;; (setq auto-mode-alist
;;       (append '(("\..fetchmailrc$" . fetchmail-mode))
;;               auto-mode-alist))

;; Create mode-specific tables.
(defvar fetchmail-mode-syntax-table nil
  "Syntax table used while in fetchmail-mode" )
(if fetchmail-mode-syntax-table
    ()              ; Do not change the table if it is already set up.
  (setq fetchmail-mode-syntax-table (make-syntax-table))
  (modify-syntax-entry ?\\ "\\   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\,  "." fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\:  "." fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\;  "." fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\"  "\"" fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\'  "\"" fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\n  "> " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\#  "< " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\( "()   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\) ")(   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\[ "(]   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\] ")[   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\{ "(}   " fetchmail-mode-syntax-table)
  (modify-syntax-entry ?\} "){   " fetchmail-mode-syntax-table)
  )

(defvar fetchmail-mode-map nil
  "Keymap used in fetchmail-mode" )

(if fetchmail-mode-map nil
  (setq fetchmail-mode-map (make-sparse-keymap))
  (define-key fetchmail-mode-map "\t" 'fetchmail-complete)
  (define-key fetchmail-mode-map "\C-c\C-c" 'comment-region) )
(defvar fetchmail-mode-hook nil
  "Hooks to run in fetchmail-mode" )

(defvar fetchmail-keywords nil
  "Keywords used for fetchmail-mode" )

(unless fetchmail-keywords
   (setq fetchmail-keywords
          '("poll" "skip" "via" "in" "proto" "protocol" "uidl" "no" "port" "auth" "authenticate" "timeout" "envelope" "qvirtual" "envelope" "aka" "localdomains" "interface" "monitor" "dns" "user" "username" "is" "folder" "pass" "password" "smtp" "smtphost" "smtpaddress" "antispam" "mda" "pre" "preconnect" "post" "postconnect" "keep" "flush" "fetchall" "rewrite" "forcecr" "stripcr" "pass8bits" "dropstatus" "limit" "fetchlimit" "batchlimit" "expunge" "pop2" "POP2" "pop3" "POP3" "imap" "IMAP" "imap-k4" "IMAP-K4" "apop" "APOP" "rpop" "RPOP" "kpop" "KPOP" "etrn" "ETRN" "login" "kerberos" "kerberos_v5" "logfile" "daemon" "syslog" "invisible" "and" "with" "has" "wants" "options" "here" "there" "aka" "set")))

(defvar fetchmail-keyword-table nil
  "Completion table for fetchmail-mode" )
(unless fetchmail-keyword-table
  (setq fetchmail-keyword-table (make-vector 8 0))
  (mapcar (lambda (x) (intern x fetchmail-keyword-table))
          fetchmail-keywords))

(defvar fetchmail-font-lock-keywords nil
  "Default expressions to highlight in fetchmail-mode" )

(unless fetchmail-font-lock-keywords
  (setq fetchmail-font-lock-keywords
        (list (list (concat "\\b" (regexp-opt
                                   fetchmail-keywords t) "\\b")
                    0 'font-lock-keyword-face ))))

(defun fetchmail-complete ()
  "Tab completion for fetchmail-mode"
  (interactive)
  (let* ((end (point))
	 (beg (save-excursion
		(skip-syntax-backward "w")
		(point)))
	 (pattern (buffer-substring beg end))
	 (table fetchmail-keyword-table)
	 (completion (try-completion pattern table)))
    (cond ((eq completion t))
	  ((null completion)
	   (error "Can't find completion for \"%s\"" pattern))
	  ((not (string-equal pattern completion))
	   (delete-region beg end)
	   (insert completion))
	  (t
	   (message "Making completion list...")
	   (let ((list (all-completions pattern table)))
	     (if (fboundp 'prettify)
		 (setq list (funcall 'prettify list)))
	     (with-output-to-temp-buffer "*Help*"
	       (display-completion-list list)))
	   (message "Making completion list...%s" "done")))))


(defun fetchmail-mode ()
  "Mode for editing .fetchmailrc files"
  (interactive)
  (kill-all-local-variables)
  (use-local-map fetchmail-mode-map)    ; This provides the local keymap.
  (setq mode-name "Fetchmail")          ; This name goes into the modeline.
  (setq major-mode 'fetchmail-mode)     ; Used by `describe-mode'
  (run-hooks 'fetchmail-mode-hook)      ; Run each time mode is called
  (set-syntax-table fetchmail-mode-syntax-table)

  ;; -cc-
  ;; Font lock support
  (make-local-variable 'font-lock-defaults)
  (setq font-lock-defaults '(fetchmail-font-lock-keywords nil t))

  (setq comment-start "#")
  )



(provide 'fetchmail-mode)