]> code.delx.au - gnu-emacs-elpa/commitdiff
align: Add a room before '*' for arguments
authorDaiki Ueno <ueno@gnu.org>
Mon, 18 Jan 2016 03:44:04 +0000 (12:44 +0900)
committerDaiki Ueno <ueno@gnu.org>
Mon, 18 Jan 2016 03:44:04 +0000 (12:44 +0900)
gnome-align.el
gnome-tests.el

index 7ac94aa6b805b9a3042df697b2990b2610e8b0a3..6e68dc88a5111d1bd15002c91b35852eafcd11a8 100644 (file)
 (cl-defstruct (gnome-align--argument
               (:constructor nil)
               (:constructor gnome-align--make-argument (type-start
-                                                          type-end
-                                                          identifier-start
-                                                          identifier-end))
+                                                        type-end
+                                                        identifier-start
+                                                        identifier-end
+                                                        stars))
               (:copier nil)
               (:predicate nil))
   (type-start nil :read-only t)
   (type-end nil :read-only t)
   (identifier-start nil :read-only t)
-  (identifier-end nil :read-only t))
+  (identifier-end nil :read-only t)
+  (stars 0 :read-only t))
 
 (defun gnome-align--marker-column (marker)
   (save-excursion
@@ -78,7 +80,9 @@
 
 (defun gnome-align--arglist-identifier-start-column (arglist start-column)
   (let ((column start-column)
-       argument-column)
+       argument-column
+       (stars 0)
+       argument-stars)
     (dolist (argument arglist)
       (setq argument-column (+ start-column
                               (gnome-align--argument-type-width argument)))
          (when (eq (preceding-char) ? )
            (setq argument-column (1+ argument-column)))))
       (when (> argument-column column)
-       (setq column argument-column)))
-    column))
+       (setq column argument-column))
+      (setq argument-stars (gnome-align--argument-stars argument))
+      (when (> argument-stars stars)
+       (setq stars argument-stars)))
+    (+ column stars)))
 
 (defun gnome-align--argument-identifier-width (argument)
   (if (gnome-align--argument-identifier-start argument)
            type-end
            identifier-start
            identifier-end
+           (stars 0)
            arglist
            last-token-start)
        (goto-char (point-max))
                          (unless (eq (char-after) ?,)
                            (setq last-token-start (point-marker)))))
              (c-backward-syntactic-ws))
-           (setq type-start last-token-start))
+           (setq type-start last-token-start)
+           (save-excursion
+             (goto-char type-end)
+             (while (and (< type-start (point))
+                         (eq (preceding-char) ?*))
+               (setq stars (1+ stars))
+               (c-backward-token-2))))
          (push (gnome-align--make-argument type-start type-end
-                                             identifier-start identifier-end)
+                                           identifier-start identifier-end
+                                           stars)
                arglist))
        arglist))))
 
index d4e3113695b97aa7cf71dce5156c19f9d13dcba4..47fccc4b9bc71818116b34668f5a8a3c5ebf6b9a 100644 (file)
@@ -20,7 +20,7 @@ void g_gpg_ctx_clear_signers (GGpgCtx *ctx);
 ")
 
 (defconst gnome-test-program-1-aligned "\
-GGpgCtx *g_gpg_ctx_new                   (GError             **error);
+GGpgCtx *g_gpg_ctx_new                   (GError              **error);
 
 typedef void (*GGpgProgressCallback) (gpointer user_data,
                                       const gchar *what,
@@ -28,16 +28,16 @@ typedef void (*GGpgProgressCallback) (gpointer user_data,
                                       gint current,
                                       gint total);
 
-void     g_gpg_ctx_set_progress_callback (GGpgCtx             *ctx,
-                                          GGpgProgressCallback callback,
-                                          gpointer             user_data,
-                                          GDestroyNotify       destroy_data);
-void     g_gpg_ctx_add_signer            (GGpgCtx             *ctx,
-                                          GGpgKey             *key);
-guint    g_gpg_ctx_get_n_signers         (GGpgCtx             *ctx);
-GGpgKey *g_gpg_ctx_get_signer            (GGpgCtx             *ctx,
-                                          guint                index);
-void     g_gpg_ctx_clear_signers         (GGpgCtx             *ctx);
+void     g_gpg_ctx_set_progress_callback (GGpgCtx              *ctx,
+                                          GGpgProgressCallback  callback,
+                                          gpointer              user_data,
+                                          GDestroyNotify        destroy_data);
+void     g_gpg_ctx_add_signer            (GGpgCtx              *ctx,
+                                          GGpgKey              *key);
+guint    g_gpg_ctx_get_n_signers         (GGpgCtx              *ctx);
+GGpgKey *g_gpg_ctx_get_signer            (GGpgCtx              *ctx,
+                                          guint                 index);
+void     g_gpg_ctx_clear_signers         (GGpgCtx              *ctx);
 ")
 
 (defconst gnome-test-program-2 "\
@@ -65,7 +65,7 @@ const gchar **          gtk_widget_list_action_prefixes (GtkWidget             *
     (let ((columns (gnome-align--compute-optimal-columns (point-min) (point-max))))
       (should (= (cdr (assq 'identifier-start-column columns)) 9))
       (should (= (cdr (assq 'arglist-start-column columns)) 41))
-      (should (= (cdr (assq 'arglist-identifier-start-column columns)) 63)))))
+      (should (= (cdr (assq 'arglist-identifier-start-column columns)) 64)))))
 
 (ert-deftest gnome-test-align-region ()
   "Tests the `gnome-align-region'."