Updated patch, honor the field order defined in `debian-control-*-fields' -- Kanru
--- elisp/dpkg-dev-el/debian-control-mode.el | 38 +++++++++++++++++-------------- 1 file changed, 21 insertions(+), 17 deletions(-)
--- a/elisp/dpkg-dev-el/debian-control-mode.el +++ b/elisp/dpkg-dev-el/debian-control-mode.el @@ -376,12 +376,12 @@ (error "Couldn't find Package or Source field"))) (fields (if binary-p debian-control-binary-fields - debian-control-source-fields))) + debian-control-source-fields)) + (completion-ignore-case t)) (list binary-p - (capitalize - (completing-read (format "Add %s package field: " (if binary-p "binary" "source")) - (mapcar #'(lambda (x) (cons x nil)) fields)))))) + (completing-read (format "Add %s package field: " (if binary-p "binary" "source")) + (mapcar #'(lambda (x) (cons x nil)) fields))))) (require 'cl) (let ((fields (if binary debian-control-binary-fields @@ -421,26 +421,30 @@ ;; If the field is already present, just jump to it (if (setq x (assoc field curfields)) (goto-char (cdr x)) - (let* ((pos (position field fields :test #'string-equal)) - (prevfields (subseq fields 0 pos)) - (nextfields (subseq fields (1+ pos))) - (cur nil)) - (while (or prevfields - nextfields) + (let* ((pos (or (position field fields :test #'string-equal) + -1)) + (prevfields (reverse (subseq fields 0 pos))) + (nextfields (subseq fields (1+ pos)))) + (if (not (wholenump pos)) + (goto-char (cdar curfields)) (when prevfields - (when (setq x (assoc (pop prevfields) curfields)) - (setq prevfields nil nextfields nil) - (goto-char (cdr x)))) + (while (and (car prevfields) + (not (assoc (car prevfields) curfields))) + (pop prevfields)) + (goto-char (cdr (assoc (car prevfields) curfields))) + (setq prevfields nil nextfields nil)) (when nextfields - (when (setq x (assoc (pop nextfields) curfields)) - (setq prevfields nil nextfields nil) - (goto-char (cdr x))))) + (while (and (car nextfields) + (not (assoc (car nextfields) curfields))) + (pop nextfields)) + (goto-char (cdr (assoc (car nextfields) curfields))) + (setq prevfields nil nextfields nil))) ;; Hack: we don't want to add fields after Description (beginning-of-line) (when (looking-at "^Description") (forward-line -1)) (end-of-line) - (insert "\n" field ": "))))))) + (insert "\n" (upcase-initials field) ": "))))))) (defun debian-control-visit-policy (format) "Visit the Debian Policy manual in format FORMAT.