(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
(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))))
")
(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,
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 "\
(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'."