diff options
author | psg <> | 2009-02-23 18:55:30 +0000 |
---|---|---|
committer | psg <> | 2009-02-23 18:55:30 +0000 |
commit | bda5d9e984bbb3dfdb68ae48bf133a80d3d2e532 (patch) | |
tree | aed6aeaa65b162c7e018eba03ab686e1c213749a | |
parent | b3af3b67d47237b01dc3d5aa33521daa79429687 (diff) |
debian-el.el: Add code from Kevin Ryde to set deb-view control file coding
system (Closes: #484027)
-rw-r--r-- | debian-el.el | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/debian-el.el b/debian-el.el index 81ad523..f791a1d 100644 --- a/debian-el.el +++ b/debian-el.el @@ -1,4 +1,4 @@ -;;; debian-el.el --- startup file for the debian-el package +`;;; debian-el.el --- startup file for the debian-el package ;;; Commentary: ;; @@ -66,6 +66,38 @@ (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 <user42@zip.com.au> + ;; 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)." + + (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 (string-match "\\.deb-INFO!\\./control\\'" + (buffer-file-name buffer)) + 'utf-8)))) + + (add-to-list 'file-coding-system-alist + '("control" . deb-view-control-coding))) + (provide 'debian-el) ;;; debian-el.el ends here |