;;; debian-el.el --- startup file for the debian-el package
;; This file is not part of GNU Emacs.
;; debian-el 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.
;; debian-el 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 GNU Emacs. If not, see .
;;; Commentary:
;; This package provides emacs helper libraries specific to Debian users.
;; This package contains the following libraries:
;;
;; `apt-sources' Major-mode for editing Debian sources.list files.
;; `apt-utils' Interface to APT (Debian package management).
;; `debian-bug' An Emacs command to submit a bug report.
;; `deb-view' View contents of Debian package, similarly to tar-mode.
;; `gnus-BTS' Provides buttons for bug numbers seen in Gnus messages.
;; `preseed' Major-mode for editing debian-installer preseed files.
;;; History:
;;
;; 2008-04-12 - GĂ©raud Meyer
;; - Use apt-sources-mode for files in /etc/apt/sources.list.d/ too.
;; - Use \' instead of $ for the end of filenames.
;; 2003-09-01 - Peter Galbraith
;; - Created.
;;; Code:
(defgroup debian-el nil
"Debian debian-el package customization."
:group 'convenience)
;;(require 'debian-el-custom)
;; apt-sources
(add-to-list 'auto-mode-alist '("sources\\.list\\'" . apt-sources-mode))
(add-to-list 'auto-mode-alist '("sources\\.list\\.d/.*\\.list\\'" . apt-sources-mode))
(defgroup apt-sources nil "Mode for editing apt sources.list files"
:group 'tools
:prefix "apt-sources-"
:link '(custom-manual "(debian-el)apt-sources")
:load 'apt-sources
;;:require 'apt-sources
:group 'debian-el)
;; apt-utils
(defgroup apt-utils nil
"Emacs interface to APT (Debian package management)"
:group 'tools
:link '(url-link "http://www.tc.bham.ac.uk/~matt/AptUtilsEl.html")
:link '(custom-manual "(debian-el)apt-utils")
:load 'apt-utils
;;:require 'apt-utils
:group 'debian-el)
;; debian-bug.el
(defgroup debian-bug nil "Debian Bug report helper"
:group 'tools
:prefix "debian-bug-"
:link '(custom-manual "(debian-el)debian-bug")
:load 'debian-bug
;;:require 'debian-bug
:group 'debian-el)
;; deb-view.el
(setq auto-mode-alist
(append '(("\\.u?deb\\'" . deb-view-mode)) auto-mode-alist))
(defgroup deb-view nil
"View Debian package files with tar-mode"
:group 'tools
:prefix "deb-view"
:link '(custom-manual "(debian-el)deb-view")
:load 'deb-view
:group 'debian-el)
(add-hook
'dired-load-hook
(function (lambda ()
(define-key dired-mode-map "\C-d" 'deb-view-dired-view))))
(when (member 'utf-8 (coding-system-list))
;; The following from Kevin Ryde
;; Closes: #484027
(defun deb-view-control-coding (arg-list)
"Return coding system for the \"control\" file in a deb.
This function is for use from `file-coding-system-alist'.
ARG-LIST is arguments passed to `find-operation-coding-system'.
The only operation handled here is `insert-file-contents' with a
buffer filename \".deb-INFO!./control\", for which the return is
'utf-8, and for anything else the return is nil (letting
`find-operation-coding-system' try other things).
This is done as a function because the filename passed to
find-operation-coding-system by tar-mode is merely the archive
member \"./control\". By looking at the buffer-file-name we can
tell if it's from a deb.
Note: This only works in emacs22, in emacs21 or xemacs21 tar-mode
does something a bit different and doesn't reach here (and
there's no buffer passed to coding system functions)."
(if (and (eq (car arg-list) 'insert-file-contents) ;; first arg
(consp (cadr arg-list)) ;; second arg like ("./control" . BUFFER)
(let ((buffer (cdr (cadr arg-list))))
(and (buffer-file-name buffer)
(string-match "\\.deb-INFO!\\./control\\'"
(buffer-file-name buffer))
'utf-8)))
'undecided))
(add-to-list 'file-coding-system-alist
'("\\'control\\'" . deb-view-control-coding)))
(provide 'debian-el)
;;; debian-el.el ends here