bug-gnats
[Top][All Lists]
Advanced

[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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]