[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Some patches to the Emacs interface in 4.1.0
From: |
Raymond Scholz |
Subject: |
Some patches to the Emacs interface in 4.1.0 |
Date: |
Mon, 07 Nov 2005 12:23:01 +0100 |
User-agent: |
Gnus/5.110004 (No Gnus v0.4) Emacs/22.0.50 (gnu/linux) |
Hi,
my colleague spent some time on fixing some shortcomings of the Emacs
interface in 4.1.0. Kudos go to Oli Möller.
Cheers, Ray
1. Killed buffers
------------------------------
Sometimes kill-buffer was invoked with nil argument, killing the
current buffer.
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -1329,7 +1358,8 @@
(switch-to-buffer query-pr-buffer)
(error "Couldn't retrieve server info")))
(error "Couldn't retrieve server info from query-pr"))
- (kill-buffer query-pr-buffer))))
+ (if query-pr-buffer
+ (kill-buffer query-pr-buffer)))))
;;;###autoload
(defun send-pr (&optional arg)
@@ -1356,7 +1386,8 @@
(setq success t))
(if (not success)
(progn
- (kill-buffer edit-buffer)
+ (if edit-buffer
+ (kill-buffer edit-buffer))
(kill-buffer (get gnats-server-conn 'server-buffer)))
(switch-to-buffer edit-buffer)
(goto-char (point-min))))))
@@ -1386,7 +1417,8 @@
(setq success t))))
(if (not success)
(progn
- (kill-buffer edit-buffer)
+ (if edit-buffer
+ (kill-buffer edit-buffer))
(kill-buffer (get gnats-server-conn 'server-buffer)))
(switch-to-buffer edit-buffer)
(goto-char (point-min))))))
@@ -1535,7 +1573,8 @@
(setq success t))))
(if (not success)
(progn
- (kill-buffer edit-buffer)
+ (if edit-buffer
+ (kill-buffer edit-buffer))
(kill-buffer (get gnats-server-conn 'server-buffer)))
(switch-to-buffer edit-buffer)
(goto-char (point-min))))))
@@ -1600,7 +1645,8 @@
(setq success t))
(if (not success)
(progn
- (kill-buffer query-buffer)
+ (if query-buffer
+ (kill-buffer query-buffer))
(kill-buffer (get gnats-server-conn 'server-buffer)))
(switch-to-buffer query-buffer)
(message "%d matching PRs." (count-lines (point-min) (point-max)))
2. Server reponse
-----------------
Response code 300..351 considered "ok".
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -442,7 +454,7 @@
Return either the error message from the server, or nil if the response
indicates that the operation was successful."
(if (and (>= (car (car resp)) 200)
- (< (car (car resp)) 300))
+ (<= (car (car resp)) 351))
nil
(concat (nth 1 (car resp)) "\n")))
@@ -491,7 +503,8 @@
(let ((field-list (get gnats-server-conn 'field-list))
(validate-res (mapconcat 'gnats-validate-field
(get gnats-server-conn 'field-list)
- "")))
+ ""))
+ (server-resp nil))
(if (not (string= validate-res ""))
(error validate-res))
(while field-list
3. Edit and submit
------------------------------------
Switch to view mode after edit and correctly display server response
after submit. It occurred that the user was unsure about the status
of a submission and unintentionally submitted it again and again...
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -505,7 +518,8 @@
(setq field-list (cdr field-list))))
(gnats-clear-edit-buffer)
(gnats-get-pr (get gnats-server-conn 'pr-number))
- (gnats-edit-mode t)))
+ (gnats-view-mode)
+ (message "Changes submitted - switched back to view mode.")))
(defun gnats-apply-or-submit ()
"If in edit mode apply the current set of changes, or submit the new PR."
@@ -535,17 +549,24 @@
"\n")))
(setq field-list (cdr field-list)))
res)))
+(defun gnats-server-resp-to-string (server-resp)
+ "Convert a server respons \(list of lists) to a string."
+ (apply #'concat (mapcar #'cadr server-resp)))
+
(defun gnats-submit-pr ()
"Submit the current PR; if successful, the buffer is killed."
(let* ((pr-contents (gnats-get-pr-contents))
(server-resp
- (gnats-server-response-ok
- (gnats-send-command-and-text "SUBM" pr-contents))))
- (if server-resp
- (error server-resp)
- ;(kill-buffer (get gnats-server-conn 'server-buffer))
- (message "PR successfully submitted."))))
+ (gnats-send-command-and-text "SUBM" pr-contents))
+ (server-resp-fail
+ (gnats-server-response-ok server-resp)))
+ (if server-resp-fail
+ (error (gnats-server-resp-to-string server-resp))
+ ; (kill-buffer (get gnats-server-conn 'server-buffer))
+ (progn
+ (kill-buffer nil)
+ (message (format "PR successfully submitted: %s"
(gnats-server-resp-to-string server-resp)))))))
4. Missing user name in audit trail
-----------------------------------
Audit trail entries of actions performed via the Emacs interface were
missing the user name. Something is wrong with the code in
`gnats-get-mail-alias'. This patch is only a work-around and ALWAYS
uses the username from the server. The real solution would be to find
out why (gnats-send-command "ADMV" "builtinfield:responsible") returns
an empty string.
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -1225,6 +1247,8 @@
(< (car (car resp)) 400))
(nth 1 (car resp))
user-mail-address)))
+;; (setq alias user-mail-address)
+ (setq alias (get gnats-server-conn 'server-username))
(put gnats-server-conn 'mail-alias alias)
(when alias
(gnats-send-command "EDITADDR" alias))
5. Additional keys for view-mode
--------------------------------
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -1459,7 +1486,13 @@
"Keymap for GNATS view mode.")
(when (null gnats-view-mode-map)
(setq gnats-view-mode-map (make-keymap))
- (define-key gnats-view-mode-map "e" 'gnats-view-edit-pr))
+ (define-key gnats-view-mode-map "e" 'gnats-view-edit-pr)
+ (define-key gnats-view-mode-map "D" 'gnats-change-database)
+ (define-key gnats-view-mode-map "g" 'gnats-query-reread)
+ (define-key gnats-view-mode-map "G" 'query-pr)
+ (define-key gnats-view-mode-map "q" 'bury-buffer)
+ )
+
(defvar gnats-view-mode-hook nil
"Hook run by `gnats-view-mode'.")
6. Fix for PR508
----------------
--- SOURCES/gnats-4.1.0/gnats-4.1.0.orig/gnats/gnats.el 2002-08-04
19:16:29.000000000 +0200
+++ gnats.el 2005-11-07 11:24:24.497674390 +0100
@@ -1626,7 +1667,7 @@
(string-to-number
(read-from-minibuffer "Port: " (if gnats-port
(format "%d" gnats-port)
- 1529)))
+ "1529")))
(read-from-minibuffer "User: " (or gnats-user (user-login-name)))))
(setq gnats-database database
gnats-server host
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Some patches to the Emacs interface in 4.1.0,
Raymond Scholz <=