[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master a654ab4 25/40: Rename to gnome-c-style
From: |
Daiki Ueno |
Subject: |
[elpa] master a654ab4 25/40: Rename to gnome-c-style |
Date: |
Fri, 22 Jan 2016 22:48:44 +0000 |
branch: master
commit a654ab4a50b5e598b55a2802b82a1884985b384a
Author: Daiki Ueno <address@hidden>
Commit: Daiki Ueno <address@hidden>
Rename to gnome-c-style
Suggested by Bill Wohler and Artur Malabarba.
---
Makefile | 4 +-
README.md | 8 +-
gnome-align.el => gnome-c-align.el | 299 ++++++++++-----------
gnome-c-snippet.el | 520 ++++++++++++++++++++++++++++++++++++
gnome-c-style.el | 55 ++++
gnome-tests.el => gnome-c-tests.el | 84 +++---
gnome-minor-mode.el | 65 -----
gnome-snippet.el | 520 ------------------------------------
8 files changed, 770 insertions(+), 785 deletions(-)
diff --git a/Makefile b/Makefile
index 3e031e6..571841e 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
EMACS ?= emacs
RM ?= rm
-ELC = gnome-align.elc gnome-snippet.elc gnome-minor-mode.elc
+ELC = gnome-c-align.elc gnome-c-snippet.elc gnome-c-style.elc
all: $(ELC)
@@ -10,7 +10,7 @@ all: $(ELC)
check:
$(EMACS) -Q -batch --eval "(setq load-path (cons nil load-path))" \
- -l ert -l gnome-tests.el -f ert-run-tests-batch-and-exit
+ -l ert -l gnome-c-tests.el -f ert-run-tests-batch-and-exit
clean:
$(RM) -rf $(ELC)
diff --git a/README.md b/README.md
index a8f06a5..336a462 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-gnome-minor-mode
+gnome-c-style
======
In the C coding style commonly used in GNOME, identifiers are written
@@ -6,7 +6,7 @@ in camel case and function arguments are aligned to the right
end.
That makes it a bit cumbersome to keep your code consistent with the
style, even with align.el or plugins like yasnippet.
-gnome-minor-mode is an Emacs minor mode intended to help editing C
+gnome-c-style is an Emacs minor mode intended to help editing C
source code in that style. It mainly provides two features: text
alignment and snippet insersion.
@@ -18,8 +18,8 @@ Install
* Add the following lines to ~/.emacs/init.el:
```
-(autoload 'gnome-minor-mode "gnome-minor-mode" "GNOME minor mode" t)
-(add-hook 'c-mode-hook 'gnome-minor-mode)
+(autoload 'gnome-c-style-mode "gnome-c-style" "GNOME-style C minor mode" t)
+(add-hook 'c-mode-hook 'gnome-c-style-mode)
```
Usage
diff --git a/gnome-align.el b/gnome-c-align.el
similarity index 55%
rename from gnome-align.el
rename to gnome-c-align.el
index 644c0eb..d8c6d11 100644
--- a/gnome-align.el
+++ b/gnome-c-align.el
@@ -1,4 +1,4 @@
-;; gnome-align.el --- GNOME-style code alignment -*- lexical-binding: t; -*-
+;; gnome-c-align.el --- GNOME-style code alignment -*- lexical-binding: t; -*-
;; Copyright (C) 2016 Daiki Ueno <address@hidden>
;; Author: Daiki Ueno <address@hidden>
@@ -25,29 +25,24 @@
(require 'cc-mode)
(require 'cl-lib)
-(defgroup gnome-minor-mode nil
- "GNOME-style C source code editing"
- :prefix "gnome-"
- :group 'c)
-
-(defcustom gnome-align-max-column 80
+(defcustom gnome-c-align-max-column 80
"Maximum number of columns per line."
:type '(choice (integer :tag "Columns")
(const :tag "No wrap"))
- :group 'gnome-minor-mode)
+ :group 'gnome-c-style)
-(defvar gnome-align-identifier-start-column nil)
-(make-variable-buffer-local 'gnome-align-identifier-start-column)
+(defvar gnome-c-align-identifier-start-column nil)
+(make-variable-buffer-local 'gnome-c-align-identifier-start-column)
-(defvar gnome-align-arglist-start-column nil)
-(make-variable-buffer-local 'gnome-align-arglist-start-column)
+(defvar gnome-c-align-arglist-start-column nil)
+(make-variable-buffer-local 'gnome-c-align-arglist-start-column)
-(defvar gnome-align-arglist-identifier-start-column nil)
-(make-variable-buffer-local 'gnome-align-arglist-identifier-start-column)
+(defvar gnome-c-align-arglist-identifier-start-column nil)
+(make-variable-buffer-local 'gnome-c-align-arglist-identifier-start-column)
-(cl-defstruct (gnome-align--argument
+(cl-defstruct (gnome-c-align--argument
(:constructor nil)
- (:constructor gnome-align--make-argument (type-start
+ (:constructor gnome-c-align--make-argument (type-start
type-identifier-end
type-end
identifier-start
@@ -60,12 +55,12 @@
(identifier-start nil :read-only t)
(identifier-end nil :read-only t))
-(defun gnome-align--marker-column (marker)
+(defun gnome-c-align--marker-column (marker)
(save-excursion
(goto-char marker)
(current-column)))
-(defun gnome-align--indent-to-column (column)
+(defun gnome-c-align--indent-to-column (column)
;; Prefer 'char **foo' than 'char ** foo'
(when (looking-back "\*+" nil t)
(setq column (- column (- (match-end 0) (match-beginning 0))))
@@ -74,41 +69,41 @@
(let (indent-tabs-mode)
(indent-to-column column)))
-(defun gnome-align--argument-type-width (arg)
- (- (gnome-align--marker-column (gnome-align--argument-type-end arg))
- (gnome-align--marker-column (gnome-align--argument-type-start arg))))
+(defun gnome-c-align--argument-type-width (arg)
+ (- (gnome-c-align--marker-column (gnome-c-align--argument-type-end arg))
+ (gnome-c-align--marker-column (gnome-c-align--argument-type-start arg))))
-(defun gnome-align--argument-type-identifier-width (arg)
- (- (gnome-align--marker-column
- (gnome-align--argument-type-identifier-end arg))
- (gnome-align--marker-column
- (gnome-align--argument-type-start arg))))
+(defun gnome-c-align--argument-type-identifier-width (arg)
+ (- (gnome-c-align--marker-column
+ (gnome-c-align--argument-type-identifier-end arg))
+ (gnome-c-align--marker-column
+ (gnome-c-align--argument-type-start arg))))
-(defun gnome-align--arglist-identifier-start-column (arglist start-column)
+(defun gnome-c-align--arglist-identifier-start-column (arglist start-column)
(let ((max-type-identifier-width
(apply #'max
- (mapcar #'gnome-align--argument-type-identifier-width arglist)))
+ (mapcar #'gnome-c-align--argument-type-identifier-width
arglist)))
(max-extra-width
(apply #'max
(mapcar
(lambda (argument)
- (- (gnome-align--argument-type-end argument)
- (gnome-align--argument-type-identifier-end argument)))
+ (- (gnome-c-align--argument-type-end argument)
+ (gnome-c-align--argument-type-identifier-end argument)))
arglist))))
(+ start-column max-type-identifier-width max-extra-width)))
-(defun gnome-align--argument-identifier-width (argument)
- (if (gnome-align--argument-identifier-start argument)
- (- (gnome-align--marker-column
- (gnome-align--argument-identifier-end argument))
- (gnome-align--marker-column
- (gnome-align--argument-identifier-start argument)))
+(defun gnome-c-align--argument-identifier-width (argument)
+ (if (gnome-c-align--argument-identifier-start argument)
+ (- (gnome-c-align--marker-column
+ (gnome-c-align--argument-identifier-end argument))
+ (gnome-c-align--marker-column
+ (gnome-c-align--argument-identifier-start argument)))
0))
-(defun gnome-align--arglist-identifier-width (arglist)
- (apply #'max (mapcar #'gnome-align--argument-identifier-width arglist)))
+(defun gnome-c-align--arglist-identifier-width (arglist)
+ (apply #'max (mapcar #'gnome-c-align--argument-identifier-width arglist)))
-(defun gnome-align--normalize-arglist-region (beg end)
+(defun gnome-c-align--normalize-arglist-region (beg end)
(save-excursion
(save-restriction
(narrow-to-region beg end)
@@ -128,7 +123,7 @@
(goto-char (point-min))
(delete-matching-lines "^$"))))
-(defun gnome-align--parse-arglist (beg end)
+(defun gnome-c-align--parse-arglist (beg end)
(save-excursion
(save-restriction
(narrow-to-region beg end)
@@ -172,7 +167,7 @@
(skip-chars-backward "*" type-start)
(c-backward-syntactic-ws)
(setq type-identifier-end (point-marker))))
- (push (gnome-align--make-argument type-start
+ (push (gnome-c-align--make-argument type-start
type-identifier-end
type-end
identifier-start
@@ -181,35 +176,35 @@
arglist))))
;;;###autoload
-(defun gnome-align-at-point (&optional identifier-start-column)
+(defun gnome-c-align-at-point (&optional identifier-start-column)
"Reformat argument list at point, aligning argument to the right end."
(interactive)
(save-excursion
(let* (start-column arglist)
(cl-destructuring-bind (beg end)
- (gnome-align--arglist-region-at-point (point))
+ (gnome-c-align--arglist-region-at-point (point))
(goto-char beg)
(setq start-column (current-column))
(save-restriction
(narrow-to-region beg end)
- (setq arglist (gnome-align--parse-arglist (point-min) (point-max)))
- (gnome-align--normalize-arglist-region (point-min) (point-max))
+ (setq arglist (gnome-c-align--parse-arglist (point-min) (point-max)))
+ (gnome-c-align--normalize-arglist-region (point-min) (point-max))
(unless identifier-start-column
(setq identifier-start-column
- (gnome-align--arglist-identifier-start-column arglist 0)))
+ (gnome-c-align--arglist-identifier-start-column arglist 0)))
(dolist (argument arglist)
- (goto-char (gnome-align--argument-type-start argument))
+ (goto-char (gnome-c-align--argument-type-start argument))
(let ((column (if (bobp) 0 start-column)))
(when (not (bobp))
- (gnome-align--indent-to-column start-column))
- (when (gnome-align--argument-identifier-start argument)
+ (gnome-c-align--indent-to-column start-column))
+ (when (gnome-c-align--argument-identifier-start argument)
(setq column (+ column identifier-start-column))
- (goto-char (gnome-align--argument-identifier-start argument))
- (gnome-align--indent-to-column column)))))))))
+ (goto-char (gnome-c-align--argument-identifier-start argument))
+ (gnome-c-align--indent-to-column column)))))))))
-(cl-defstruct (gnome-align--decl
+(cl-defstruct (gnome-c-align--decl
(:constructor nil)
- (:constructor gnome-align--make-decl (start
+ (:constructor gnome-c-align--make-decl (start
end
identifier-start
identifier-end
@@ -226,31 +221,31 @@
(arglist-end nil :read-only t)
(arglist nil :read-only t))
-(defun gnome-align--decls-identifier-start-column (decls start-column)
+(defun gnome-c-align--decls-identifier-start-column (decls start-column)
(apply #'max
(delq nil
(mapcar
(lambda (decl)
(let ((decl-column
(+ start-column
- (gnome-align--marker-column
- (gnome-align--decl-identifier-start decl)))))
- (if (and gnome-align-max-column
- (> decl-column gnome-align-max-column))
+ (gnome-c-align--marker-column
+ (gnome-c-align--decl-identifier-start decl)))))
+ (if (and gnome-c-align-max-column
+ (> decl-column gnome-c-align-max-column))
nil
decl-column)))
decls))))
-(defun gnome-align--decl-identifier-width (decl)
- (- (gnome-align--marker-column
- (gnome-align--decl-identifier-end decl))
- (gnome-align--marker-column
- (gnome-align--decl-identifier-start decl))))
+(defun gnome-c-align--decl-identifier-width (decl)
+ (- (gnome-c-align--marker-column
+ (gnome-c-align--decl-identifier-end decl))
+ (gnome-c-align--marker-column
+ (gnome-c-align--decl-identifier-start decl))))
-(defun gnome-align--decls-arglist-start-column (decls start-column)
+(defun gnome-c-align--decls-arglist-start-column (decls start-column)
(let ((arglist-width
- (+ (gnome-align--decls-arglist-identifier-start-column decls 0)
- (gnome-align--decls-arglist-identifier-width decls)
+ (+ (gnome-c-align--decls-arglist-identifier-start-column decls 0)
+ (gnome-c-align--decls-arglist-identifier-width decls)
(length ");"))))
(apply #'max
(delq nil
@@ -258,30 +253,30 @@
(lambda (decl)
(let ((decl-column
(+ start-column
- (gnome-align--decl-identifier-width decl)
+ (gnome-c-align--decl-identifier-width decl)
1)))
- (if (and gnome-align-max-column
+ (if (and gnome-c-align-max-column
(> (+ decl-column arglist-width)
- gnome-align-max-column))
+ gnome-c-align-max-column))
nil
decl-column)))
decls)))))
-(defun gnome-align--decls-arglist-identifier-width (decls)
+(defun gnome-c-align--decls-arglist-identifier-width (decls)
(apply #'max (mapcar (lambda (decl)
- (gnome-align--arglist-identifier-width
- (gnome-align--decl-arglist decl)))
+ (gnome-c-align--arglist-identifier-width
+ (gnome-c-align--decl-arglist decl)))
decls)))
-(defun gnome-align--decls-arglist-identifier-start-column (decls start-column)
+(defun gnome-c-align--decls-arglist-identifier-start-column (decls
start-column)
(apply #'max (mapcar (lambda (decl)
;; FIXME: should wrap lines inside argument list?
- (gnome-align--arglist-identifier-start-column
- (gnome-align--decl-arglist decl)
+ (gnome-c-align--arglist-identifier-start-column
+ (gnome-c-align--decl-arglist decl)
start-column))
decls)))
-(defun gnome-align--parse-decl (beg end)
+(defun gnome-c-align--parse-decl (beg end)
;; Parse at most one func declaration found in BEG END.
(save-excursion
(save-restriction
@@ -315,29 +310,29 @@
(goto-char arglist-start)
(c-forward-sexp)
(setq arglist-end (point-marker))
- (gnome-align--make-decl beg end
+ (gnome-c-align--make-decl beg end
identifier-start identifier-end
arglist-start arglist-end
- (gnome-align--parse-arglist
+ (gnome-c-align--parse-arglist
(1+ arglist-start)
(1- arglist-end)))))))))
-(defun gnome-align--normalize-decl (decl)
+(defun gnome-c-align--normalize-decl (decl)
(save-excursion
(save-restriction
- (narrow-to-region (gnome-align--decl-identifier-start decl)
- (gnome-align--decl-arglist-end decl))
+ (narrow-to-region (gnome-c-align--decl-identifier-start decl)
+ (gnome-c-align--decl-arglist-end decl))
(goto-char (point-min))
(while (re-search-forward "\n" nil t)
(replace-match " ")))
(save-restriction
- (narrow-to-region (gnome-align--decl-start decl)
- (gnome-align--decl-end decl))
+ (narrow-to-region (gnome-c-align--decl-start decl)
+ (gnome-c-align--decl-end decl))
(goto-char (point-min))
(while (re-search-forward "\\s-+" nil t)
(replace-match " ")))))
-(defun gnome-align--arglist-region-at-point (point)
+(defun gnome-c-align--arglist-region-at-point (point)
(save-excursion
(let (start)
(goto-char point)
@@ -355,7 +350,7 @@
(list start (point)))))
;;;###autoload
-(defun gnome-align-set-column (symbol)
+(defun gnome-c-align-set-column (symbol)
"Set alignment column of SYMBOL."
(interactive
(let ((symbol-name (completing-read "Symbol to change: "
@@ -363,10 +358,10 @@
"arglist-start"
"arglist-identifier-start")
nil t)))
- (list (intern (format "gnome-align-%s-column" symbol-name)))))
+ (list (intern (format "gnome-c-align-%s-column" symbol-name)))))
(set symbol (current-column)))
-(defun gnome-align--scan-decls (beg end)
+(defun gnome-c-align--scan-decls (beg end)
(save-excursion
(save-restriction
(narrow-to-region beg end)
@@ -378,27 +373,27 @@
(setq decl-start (point-marker))
(c-end-of-statement)
(setq decl-end (point-marker))
- (setq decl (gnome-align--parse-decl decl-start decl-end))
+ (setq decl (gnome-c-align--parse-decl decl-start decl-end))
(when decl
(push decl decls))))
decls))))
-(defun gnome-align--compute-optimal-columns (beg end)
+(defun gnome-c-align--compute-optimal-columns (beg end)
(let ((buffer (current-buffer))
decls)
(with-temp-buffer
(insert-buffer-substring-no-properties buffer beg end)
(c-mode)
- (setq decls (gnome-align--scan-decls (point-min) (point-max)))
- (mapc #'gnome-align--normalize-decl decls)
+ (setq decls (gnome-c-align--scan-decls (point-min) (point-max)))
+ (mapc #'gnome-c-align--normalize-decl decls)
(let* ((identifier-start-column
- (gnome-align--decls-identifier-start-column
+ (gnome-c-align--decls-identifier-start-column
decls 0))
(arglist-start-column
- (gnome-align--decls-arglist-start-column
+ (gnome-c-align--decls-arglist-start-column
decls identifier-start-column))
(arglist-identifier-start-column
- (gnome-align--decls-arglist-identifier-start-column
+ (gnome-c-align--decls-arglist-identifier-start-column
decls (+ (length "(") arglist-start-column))))
(list (cons 'identifier-start-column
identifier-start-column)
@@ -408,99 +403,99 @@
arglist-identifier-start-column))))))
;;;###autoload
-(defun gnome-align-compute-optimal-columns (beg end)
+(defun gnome-c-align-compute-optimal-columns (beg end)
"Compute the optimal alignment rule from the declarations in BEG and END.
-This sets `gnome-align-identifier-start-column',
-`gnome-align-arglist-start-column', and
-`gnome-align-arglist-identifier-start-column'."
+This sets `gnome-c-align-identifier-start-column',
+`gnome-c-align-arglist-start-column', and
+`gnome-c-align-arglist-identifier-start-column'."
(interactive "r")
- (let ((columns (gnome-align--compute-optimal-columns beg end)))
- (setq gnome-align-identifier-start-column
+ (let ((columns (gnome-c-align--compute-optimal-columns beg end)))
+ (setq gnome-c-align-identifier-start-column
(cdr (assq 'identifier-start-column columns))
- gnome-align-arglist-start-column
+ gnome-c-align-arglist-start-column
(cdr (assq 'arglist-start-column columns))
- gnome-align-arglist-identifier-start-column
+ gnome-c-align-arglist-identifier-start-column
(cdr (assq 'arglist-identifier-start-column columns)))
(message
"identifier-start: %d, arglist-start: %d, arglist-identifier-start: %d"
- gnome-align-identifier-start-column
- gnome-align-arglist-start-column
- gnome-align-arglist-identifier-start-column)))
+ gnome-c-align-identifier-start-column
+ gnome-c-align-arglist-start-column
+ gnome-c-align-arglist-identifier-start-column)))
;;;###autoload
-(defun gnome-align-guess-columns (beg end)
+(defun gnome-c-align-guess-columns (beg end)
"Guess the existing alignment rule from the declarations in BEG and END.
-This sets `gnome-align-identifier-start-column',
-`gnome-align-arglist-start-column', and
-`gnome-align-arglist-identifier-start-column'."
+This sets `gnome-c-align-identifier-start-column',
+`gnome-c-align-arglist-start-column', and
+`gnome-c-align-arglist-identifier-start-column'."
(interactive "r")
- (let ((decls (gnome-align--scan-decls beg end))
+ (let ((decls (gnome-c-align--scan-decls beg end))
arglist)
(unless decls
(error "No function declaration in the region"))
- (setq arglist (gnome-align--parse-arglist
- (1+ (gnome-align--decl-arglist-start (car decls)))
- (1- (gnome-align--decl-arglist-end (car decls)))))
+ (setq arglist (gnome-c-align--parse-arglist
+ (1+ (gnome-c-align--decl-arglist-start (car decls)))
+ (1- (gnome-c-align--decl-arglist-end (car decls)))))
(unless arglist
(error "Empty argument list"))
- (unless (gnome-align--argument-identifier-start (car arglist))
+ (unless (gnome-c-align--argument-identifier-start (car arglist))
(error "No identifier in the argument list"))
- (setq gnome-align-identifier-start-column
- (gnome-align--marker-column
- (gnome-align--decl-identifier-start (car decls)))
- gnome-align-arglist-start-column
- (gnome-align--marker-column
- (gnome-align--decl-arglist-start (car decls)))
- gnome-align-arglist-identifier-start-column
- (gnome-align--marker-column
- (gnome-align--argument-identifier-start (car arglist))))
+ (setq gnome-c-align-identifier-start-column
+ (gnome-c-align--marker-column
+ (gnome-c-align--decl-identifier-start (car decls)))
+ gnome-c-align-arglist-start-column
+ (gnome-c-align--marker-column
+ (gnome-c-align--decl-arglist-start (car decls)))
+ gnome-c-align-arglist-identifier-start-column
+ (gnome-c-align--marker-column
+ (gnome-c-align--argument-identifier-start (car arglist))))
(message
"identifier-start: %d, arglist-start: %d, arglist-identifier-start: %d"
- gnome-align-identifier-start-column
- gnome-align-arglist-start-column
- gnome-align-arglist-identifier-start-column)))
+ gnome-c-align-identifier-start-column
+ gnome-c-align-arglist-start-column
+ gnome-c-align-arglist-identifier-start-column)))
;;;###autoload
-(defun gnome-align-region (beg end)
+(defun gnome-c-align-region (beg end)
"Reformat function declarations in the region between BEG and END."
(interactive "r")
(save-excursion
(let (decls)
(save-restriction
(narrow-to-region beg end)
- (unless (and gnome-align-identifier-start-column
- gnome-align-arglist-start-column
- gnome-align-arglist-identifier-start-column)
- (let ((columns (gnome-align--compute-optimal-columns beg end)))
- (unless gnome-align-identifier-start-column
- (setq gnome-align-identifier-start-column
+ (unless (and gnome-c-align-identifier-start-column
+ gnome-c-align-arglist-start-column
+ gnome-c-align-arglist-identifier-start-column)
+ (let ((columns (gnome-c-align--compute-optimal-columns beg end)))
+ (unless gnome-c-align-identifier-start-column
+ (setq gnome-c-align-identifier-start-column
(cdr (assq 'identifier-start-column columns))))
- (unless gnome-align-arglist-start-column
- (setq gnome-align-arglist-start-column
+ (unless gnome-c-align-arglist-start-column
+ (setq gnome-c-align-arglist-start-column
(cdr (assq 'arglist-start-column columns))))
- (unless gnome-align-arglist-identifier-start-column
- (setq gnome-align-arglist-identifier-start-column
+ (unless gnome-c-align-arglist-identifier-start-column
+ (setq gnome-c-align-arglist-identifier-start-column
(cdr (assq 'arglist-identifier-start-column columns))))))
- (setq decls (gnome-align--scan-decls beg end))
- (mapc #'gnome-align--normalize-decl decls)
+ (setq decls (gnome-c-align--scan-decls beg end))
+ (mapc #'gnome-c-align--normalize-decl decls)
(dolist (decl decls)
- (goto-char (gnome-align--decl-identifier-start decl))
- (gnome-align--indent-to-column
- gnome-align-identifier-start-column)
- (goto-char (gnome-align--decl-identifier-end decl))
- (when (>= (current-column) gnome-align-arglist-start-column)
+ (goto-char (gnome-c-align--decl-identifier-start decl))
+ (gnome-c-align--indent-to-column
+ gnome-c-align-identifier-start-column)
+ (goto-char (gnome-c-align--decl-identifier-end decl))
+ (when (>= (current-column) gnome-c-align-arglist-start-column)
(insert "\n"))
- (goto-char (gnome-align--decl-arglist-start decl))
- (gnome-align--indent-to-column
- gnome-align-arglist-start-column)
+ (goto-char (gnome-c-align--decl-arglist-start decl))
+ (gnome-c-align--indent-to-column
+ gnome-c-align-arglist-start-column)
(forward-char)
- (gnome-align-at-point
- (- (- gnome-align-arglist-identifier-start-column
+ (gnome-c-align-at-point
+ (- (- gnome-c-align-arglist-identifier-start-column
(length "("))
- gnome-align-arglist-start-column)))))))
+ gnome-c-align-arglist-start-column)))))))
-(provide 'gnome-align)
+(provide 'gnome-c-align)
-;;; gnome-align.el ends here
+;;; gnome-c-align.el ends here
diff --git a/gnome-c-snippet.el b/gnome-c-snippet.el
new file mode 100644
index 0000000..0f18834
--- /dev/null
+++ b/gnome-c-snippet.el
@@ -0,0 +1,520 @@
+;;; gnome-c-snippet.el --- GNOME-style code generation -*- lexical-binding: t;
-*-
+;; Copyright (C) 2016 Daiki Ueno <address@hidden>
+
+;; Author: Daiki Ueno <address@hidden>
+;; Keywords: GNOME, C, coding style
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation, either version 3 of the
+;; License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'gnome-c-align)
+
+(eval-when-compile
+ (require 'subword))
+
+(declare-function subword-forward "subword.el" (&optional arg))
+
+(defvar gnome-c-snippet-package nil)
+(make-variable-buffer-local 'gnome-c-snippet-package)
+
+(defvar gnome-c-snippet-class nil)
+(make-variable-buffer-local 'gnome-c-snippet-class)
+
+(defvar gnome-c-snippet-parent-package nil)
+(make-variable-buffer-local 'gnome-c-snippet-parent-package)
+
+(defvar gnome-c-snippet-parent-class nil)
+(make-variable-buffer-local 'gnome-c-snippet-parent-class)
+
+(defcustom gnome-c-snippet-align-arglist t
+ "Whether to align argument list of the inserted snippet"
+ :type 'boolean
+ :group 'gnome-c-style)
+
+(make-variable-buffer-local 'gnome-c-snippet-align-arglist)
+
+(defun gnome-c-snippet--parse-name (name)
+ (require 'subword)
+ (with-temp-buffer
+ (let (words)
+ (insert name)
+ (goto-char (point-min))
+ (while (not (eobp))
+ ;; Skip characters not recognized by subword-mode.
+ (if (looking-at "[^[:lower:][:upper:][:digit:]]+")
+ (goto-char (match-end 0)))
+ (push (buffer-substring (point) (progn (subword-forward 1)
+ (point)))
+ words))
+ (nreverse words))))
+
+(defun gnome-c-snippet--read-package-and-class (package-prompt
+ class-prompt
+ package-symbol
+ class-symbol)
+ (when (or current-prefix-arg
+ (not (and (symbol-value package-symbol)
+ (symbol-value class-symbol))))
+ (set package-symbol
+ (gnome-c-snippet--parse-name
+ (read-string (or package-prompt
+ "Package (CamelCase): ")
+ (if (symbol-value package-symbol)
+ (gnome-c-snippet--format-Package
+ (symbol-value package-symbol))))))
+ (set class-symbol
+ (gnome-c-snippet--parse-name
+ (read-string (or class-prompt
+ "Class (CamelCase): ")
+ (if (symbol-value class-symbol)
+ (gnome-c-snippet--format-Class
+ (symbol-value class-symbol)))))))
+ (list (symbol-value package-symbol) (symbol-value class-symbol)))
+
+(defun gnome-c-snippet--format-PACKAGE (package)
+ (mapconcat #'upcase package "_"))
+(defalias 'gnome-c-snippet--format-CLASS 'gnome-c-snippet--format-PACKAGE)
+
+(defun gnome-c-snippet--format-PACKAGE_CLASS (package class)
+ (concat (gnome-c-snippet--format-PACKAGE package)
+ "_"
+ (gnome-c-snippet--format-CLASS class)))
+
+(defun gnome-c-snippet--format-package (package)
+ (mapconcat #'downcase package "_"))
+(defalias 'gnome-c-snippet--format-class 'gnome-c-snippet--format-package)
+
+(defun gnome-c-snippet--format-package_class (package class)
+ (concat (gnome-c-snippet--format-package package)
+ "_"
+ (gnome-c-snippet--format-class class)))
+
+(defun gnome-c-snippet--format-Package (package)
+ (mapconcat #'identity package ""))
+(defalias 'gnome-c-snippet--format-Class 'gnome-c-snippet--format-Package)
+
+(defun gnome-c-snippet--format-PackageClass (package class)
+ (concat (gnome-c-snippet--format-Package package)
+ (gnome-c-snippet--format-Class class)))
+
+;;;###autoload
+(defun gnome-c-snippet-insert-package_class (package class)
+ "Insert the class name before the current point."
+ (interactive (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (insert (gnome-c-snippet--format-package_class package class)))
+
+;;;###autoload
+(defun gnome-c-snippet-insert-PACKAGE_CLASS (package class)
+ "Insert the class name before the current point."
+ (interactive (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (insert (gnome-c-snippet--format-PACKAGE_CLASS package class)))
+
+;;;###autoload
+(defun gnome-c-snippet-insert-PackageClass (package class)
+ "Insert the class name (in CamelCase) before the current point."
+ (interactive (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (insert (gnome-c-snippet--format-PackageClass package class)))
+
+(defun gnome-c-snippet-insert-interface-declaration (package iface
+ parent-package
parent-class)
+ "Insert interface declaration for PACKAGE and IFACE"
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil
+ "Interface (CamelCase): "
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (insert "\
+#define " (gnome-c-snippet--format-PACKAGE package) "_TYPE_"
(gnome-c-snippet--format-CLASS iface) " (" (gnome-c-snippet--format-package
package) "_" (gnome-c-snippet--format-class iface) "_get_type ())
+G_DECLARE_INTERFACE (" (gnome-c-snippet--format-PackageClass package iface) ",
"
+(gnome-c-snippet--format-package_class package iface) ", "
(gnome-c-snippet--format-PACKAGE package) ", " (gnome-c-snippet--format-CLASS
iface) ", " (gnome-c-snippet--format-PackageClass parent-package parent-class)
")
+"))
+
+(defun gnome-c-snippet--insert-class-declaration (package
+ class
+ parent-package
+ parent-class
+ derivable)
+ (insert "\
+#define " (gnome-c-snippet--format-PACKAGE package) "_TYPE_"
(gnome-c-snippet--format-CLASS class) " ("
(gnome-c-snippet--format-package_class package class) "_get_type ())
+G_DECLARE_" (if derivable "DERIVABLE" "FINAL") "_TYPE ("
(gnome-c-snippet--format-PackageClass package class) ", "
+(gnome-c-snippet--format-package_class package class) ", "
(gnome-c-snippet--format-PACKAGE package) ", " (gnome-c-snippet--format-CLASS
class) ", " (gnome-c-snippet--format-PackageClass parent-package parent-class)
")
+"))
+
+(defun gnome-c-snippet-insert-final-class-declaration (package
+ class
+ parent-package
+ parent-class)
+ "Insert final class declaration for PACKAGE and CLASS."
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (gnome-c-snippet--insert-class-declaration package
+ class
+ parent-package
+ parent-class
+ nil))
+
+(defun gnome-c-snippet-insert-derivable-class-declaration (package
+ class
+ parent-package
+ parent-class)
+ "Insert derivable class declaration for PACKAGE and CLASS."
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (gnome-c-snippet--insert-class-declaration package
+ class
+ parent-package
+ parent-class
+ t))
+
+(defun gnome-c-snippet-insert-interface-definition (package
+ iface
+ parent-package
+ parent-class)
+ "Insert class definition for PACKAGE and CLASS."
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil
+ "Interface (CamelCase): "
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package iface) "_default_init ("
(gnome-c-snippet--format-PackageClass package iface) "Interface *iface) {
+}
+
+G_DEFINE_INTERFACE (" (gnome-c-snippet--format-PackageClass package iface) ", "
+(gnome-c-snippet--format-package_class package iface) ", "
(gnome-c-snippet--format-PACKAGE parent-package) "_TYPE_"
(gnome-c-snippet--format-CLASS parent-class) ")
+"))
+
+(defun gnome-c-snippet--insert-class-definition (package
+ class
+ parent-package
+ parent-class
+ abstract)
+ (insert "\
+G_DEFINE_" (if abstract "ABSTRACT_" "") "TYPE ("
(gnome-c-snippet--format-PackageClass package class) ", "
+(gnome-c-snippet--format-package_class package class) ", "
(gnome-c-snippet--format-PACKAGE parent-package) "_TYPE_"
(gnome-c-snippet--format-CLASS parent-class) ")
+
+static void
+" (gnome-c-snippet--format-package_class package class) "_class_init ("
(gnome-c-snippet--format-PackageClass package class) "Class *klass)
+{
+}
+
+static void
+" (gnome-c-snippet--format-package_class package class) "_init ("
(gnome-c-snippet--format-PackageClass package class) " *self)
+{
+}
+"))
+
+(defun gnome-c-snippet-insert-class-definition (package
+ class
+ parent-package
+ parent-class)
+ "Insert class definition for PACKAGE and CLASS."
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (gnome-c-snippet--insert-class-definition package
+ class
+ parent-package
+ parent-class
+ nil))
+
+(defun gnome-c-snippet-insert-abstract-class-definition (package
+ class
+ parent-package
+ parent-class)
+ "Insert abstract class definition for PACKAGE and CLASS."
+ (interactive
+ (append (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class)
+ (gnome-c-snippet--read-package-and-class
+ "Parent package (CamelCase): "
+ "Parent class (CamelCase): "
+ 'gnome-c-snippet-parent-package
+ 'gnome-c-snippet-parent-class)))
+ (gnome-c-snippet--insert-class-definition package
+ class
+ parent-package
+ parent-class
+ t))
+
+(defun gnome-c-snippet-insert-constructor (package class)
+ "Insert 'constructor' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (arglist-start body-start)
+ (insert "\
+static GObject *
+" (gnome-c-snippet--format-package_class package class) "_constructor (")
+ (setq arglist-start (point-marker))
+ (insert "GType *object,
+guint n_construct_properties,
+GObjectConstructParam *construct_properties)\n")
+ (setq body-start (point-marker))
+ (if gnome-c-snippet-align-arglist
+ (progn
+ (goto-char arglist-start)
+ (gnome-c-align-at-point))
+ (indent-region arglist-start (point)))
+ (goto-char body-start)
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ G_OBJECT_CLASS (" (gnome-c-snippet--format-package_class package class)
"_parent_class)->constructed (object);
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-set_property (package class)
+ "Insert 'set_property' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (arglist-start body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_set_property (")
+ (setq arglist-start (point-marker))
+ (insert "GObject *object,
+guint prop_id,
+const GValue *value,
+GParamSpec *pspec)\n")
+ (setq body-start (point-marker))
+ (if gnome-c-snippet-align-arglist
+ (progn
+ (goto-char arglist-start)
+ (gnome-c-align-at-point))
+ (indent-region arglist-start (point)))
+ (goto-char body-start)
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ switch (prop_id)
+ {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-get_property (package class)
+ "Insert 'get_property' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (arglist-start body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_get_property (")
+ (setq arglist-start (point-marker))
+ (insert "GObject *object,
+guint prop_id,
+GValue *value,
+GParamSpec *pspec)\n")
+ (setq body-start (point-marker))
+ (if gnome-c-snippet-align-arglist
+ (progn
+ (goto-char arglist-start)
+ (gnome-c-align-at-point))
+ (indent-region arglist-start (point)))
+ (goto-char body-start)
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+(gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ switch (prop_id)
+ {
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-dispose (package class)
+ "Insert 'dispose' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_dispose (GObject
*object)\n")
+ (setq body-start (point-marker))
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ G_OBJECT_CLASS (" (gnome-c-snippet--format-package_class package class)
"_parent_class)->dispose (object);
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-finalize (package class)
+ "Insert 'finalize' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_finalize (GObject
*object)\n")
+ (setq body-start (point-marker))
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ G_OBJECT_CLASS (" (gnome-c-snippet--format-package_class package class)
"_parent_class)->finalize (object);
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-notify (package class)
+ "Insert 'notify' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_notify (GObject
*object)\n")
+ (setq body-start (point-marker))
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ G_OBJECT_CLASS (" (gnome-c-snippet--format-package_class package class)
"_parent_class)->finalize (object);
+}
+")
+ (indent-region body-start (point))))
+
+(defun gnome-c-snippet-insert-constructed (package class)
+ "Insert 'constructed' vfunc of GObjectClass for PACKAGE and CLASS."
+ (interactive
+ (gnome-c-snippet--read-package-and-class
+ nil nil
+ 'gnome-c-snippet-package
+ 'gnome-c-snippet-class))
+ (let (body-start)
+ (insert "\
+static void
+" (gnome-c-snippet--format-package_class package class) "_constructed (GObject
*object)\n")
+ (setq body-start (point-marker))
+ (insert "{
+ " (gnome-c-snippet--format-PackageClass package class) " *self = "
+ (gnome-c-snippet--format-PACKAGE_CLASS package class) " (object);
+
+ G_OBJECT_CLASS (" (gnome-c-snippet--format-package_class package class)
"_parent_class)->constructed (object);
+}
+")
+ (indent-region body-start (point))))
+
+(defvar gnome-c-snippet-snippet-commands
+ '(("G_DECLARE_INTERFACE" . gnome-c-snippet-insert-interface-declaration)
+ ("G_DECLARE_FINAL_TYPE" . gnome-c-snippet-insert-final-class-declaration)
+ ("G_DECLARE_DERIVABLE_TYPE" .
+ gnome-c-snippet-insert-derivable-class-declaration)
+ ("G_DEFINE_INTERFACE" . gnome-c-snippet-insert-interface-definition)
+ ("G_DEFINE_TYPE" . gnome-c-snippet-insert-class-definition)
+ ("G_DEFINE_ABSTRACT_TYPE" .
+ gnome-c-snippet-insert-abstract-class-definition)
+ ("GObjectClass.constructor" . gnome-c-snippet-insert-constructor)
+ ("GObjectClass.set_property" . gnome-c-snippet-insert-set_property)
+ ("GObjectClass.get_property" . gnome-c-snippet-insert-get_property)
+ ("GObjectClass.dispose" . gnome-c-snippet-insert-dispose)
+ ("GObjectClass.finalize" . gnome-c-snippet-insert-finalize)
+ ;; GObjectClass.dispatch_properties_changed
+ ("GObjectClass.notify" . gnome-c-snippet-insert-notify)
+ ("GObjectClass.contructed" . gnome-c-snippet-insert-constructed)))
+
+;;;###autoload
+(defun gnome-c-snippet-insert (snippet)
+ (interactive
+ (list (completing-read "Snippet: " gnome-c-snippet-snippet-commands nil t)))
+ (let ((entry (assoc snippet gnome-c-snippet-snippet-commands)))
+ (unless entry
+ (error "Unknown snippet: %s" snippet))
+ (call-interactively (cdr entry))))
+
+(provide 'gnome-c-snippet)
+
+;;; gnome-c-snippet.el ends here
diff --git a/gnome-c-style.el b/gnome-c-style.el
new file mode 100644
index 0000000..197db13
--- /dev/null
+++ b/gnome-c-style.el
@@ -0,0 +1,55 @@
+;;; gnome-c-style.el --- minor mode for editing GNOME-style C source code -*-
lexical-binding: t; -*-
+;; Copyright (C) 2016 Daiki Ueno <address@hidden>
+
+;; Author: Daiki Ueno <address@hidden>
+;; Keywords: GNOME, C, coding style
+;; Version: 0.1
+;; Maintainer: Daiki Ueno <address@hidden>
+
+;; This file is not part of GNU Emacs.
+
+;; This program is free software: you can redistribute it and/or
+;; modify it under the terms of the GNU General Public License as
+;; published by the Free Software Foundation, either version 3 of the
+;; License, or (at your option) any later version.
+
+;; This program is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with this program. If not, see
+;; <http://www.gnu.org/licenses/>.
+
+;;; Code:
+
+(require 'gnome-c-align)
+(require 'gnome-c-snippet)
+
+(defgroup gnome-c-style nil
+ "GNOME-style C source code editing"
+ :prefix "gnome-c-"
+ :group 'c)
+
+(defvar gnome-c-style-mode-map
+ (let ((keymap (make-sparse-keymap)))
+ (define-key keymap "\C-c\C-ga" 'gnome-c-align-at-point)
+ (define-key keymap "\C-c\C-gr" 'gnome-c-align-region)
+ (define-key keymap "\C-c\C-gf" 'gnome-c-align-set-column)
+ (define-key keymap "\C-c\C-gg" 'gnome-c-align-guess-columns)
+ (define-key keymap "\C-c\C-g\C-g" 'gnome-c-align-compute-optimal-columns)
+ (define-key keymap "\C-c\C-gc" 'gnome-c-snippet-insert-package_class)
+ (define-key keymap "\C-c\C-gC" 'gnome-c-snippet-insert-PACKAGE_CLASS)
+ (define-key keymap "\C-c\C-g\C-c" 'gnome-c-snippet-insert-PackageClass)
+ (define-key keymap "\C-c\C-gs" 'gnome-c-snippet-insert)
+ keymap))
+
+;;;###autoload
+(define-minor-mode gnome-c-style-mode
+ "A minor-mode for editing GNOME-style C source code."
+ nil " GNOME" gnome-c-style-map)
+
+(provide 'gnome-c-style)
+
+;;; gnome-c-style.el ends here
diff --git a/gnome-tests.el b/gnome-c-tests.el
similarity index 60%
rename from gnome-tests.el
rename to gnome-c-tests.el
index 8245407..ad4c9b2 100644
--- a/gnome-tests.el
+++ b/gnome-c-tests.el
@@ -1,6 +1,6 @@
-(require 'gnome-align)
+(require 'gnome-c-align)
-(defconst gnome-test-program-1 "\
+(defconst gnome-c-test-program-1 "\
GGpgCtx *g_gpg_ctx_new (GError **error);
typedef void (*GGpgProgressCallback) (gpointer user_data,
@@ -19,7 +19,7 @@ GGpgKey *g_gpg_ctx_get_signer (GGpgCtx *ctx, guint index);
void g_gpg_ctx_clear_signers (GGpgCtx *ctx);
")
-(defconst gnome-test-program-1-aligned "\
+(defconst gnome-c-test-program-1-aligned "\
GGpgCtx *g_gpg_ctx_new (GError **error);
typedef void (*GGpgProgressCallback) (gpointer user_data,
@@ -40,12 +40,12 @@ GGpgKey *g_gpg_ctx_get_signer (GGpgCtx
*ctx,
void g_gpg_ctx_clear_signers (GGpgCtx *ctx);
")
-(defconst gnome-test-program-2 "\
+(defconst gnome-c-test-program-2 "\
GDK_AVAILABLE_IN_3_16
const gchar ** gtk_widget_list_action_prefixes (GtkWidget
*widget);
")
-(defconst gnome-test-program-3 "\
+(defconst gnome-c-test-program-3 "\
/* overridable methods */
void (*set_property) (GObject *object,
guint property_id,
@@ -57,68 +57,68 @@ const gchar ** gtk_widget_list_action_prefixes
(GtkWidget *
GParamSpec *pspec);
")
-(defconst gnome-test-program-4 "\
+(defconst gnome-c-test-program-4 "\
FOO_AVAILABLE_IN_ALL
int foo (struct foo ***a, int b, ...) G_GNUC_CONST;
")
-(defconst gnome-test-program-4-aligned "\
+(defconst gnome-c-test-program-4-aligned "\
FOO_AVAILABLE_IN_ALL
int foo (struct foo ***a,
int b,
...) G_GNUC_CONST;
")
-(ert-deftest gnome-test-align--compute-optimal-columns ()
- "Tests the `gnome-align--compute-optimal-columns'."
+(ert-deftest gnome-c-test-align--compute-optimal-columns ()
+ "Tests the `gnome-c-align--compute-optimal-columns'."
(with-temp-buffer
- (insert gnome-test-program-1)
+ (insert gnome-c-test-program-1)
(c-mode)
- (let* (gnome-align-max-column
+ (let* (gnome-c-align-max-column
(columns
- (gnome-align--compute-optimal-columns (point-min) (point-max))))
+ (gnome-c-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)) 64)))))
-(ert-deftest gnome-test-align-region ()
- "Tests the `gnome-align-region'."
+(ert-deftest gnome-c-test-align-region ()
+ "Tests the `gnome-c-align-region'."
(with-temp-buffer
- (insert gnome-test-program-1)
+ (insert gnome-c-test-program-1)
(c-mode)
- (let (gnome-align-max-column)
- (gnome-align-compute-optimal-columns (point-min) (point-max))
- (gnome-align-region (point-min) (point-max)))
- (should (equal (buffer-string) gnome-test-program-1-aligned))))
+ (let (gnome-c-align-max-column)
+ (gnome-c-align-compute-optimal-columns (point-min) (point-max))
+ (gnome-c-align-region (point-min) (point-max)))
+ (should (equal (buffer-string) gnome-c-test-program-1-aligned))))
-(ert-deftest gnome-test-align-region-2 ()
- "Tests the `gnome-align-region'."
+(ert-deftest gnome-c-test-align-region-2 ()
+ "Tests the `gnome-c-align-region'."
(with-temp-buffer
- (insert gnome-test-program-4)
+ (insert gnome-c-test-program-4)
(c-mode)
- (let (gnome-align-max-column)
- (gnome-align-compute-optimal-columns (point-min) (point-max))
- (gnome-align-region (point-min) (point-max)))
- (should (equal (buffer-string) gnome-test-program-4-aligned))))
+ (let (gnome-c-align-max-column)
+ (gnome-c-align-compute-optimal-columns (point-min) (point-max))
+ (gnome-c-align-region (point-min) (point-max)))
+ (should (equal (buffer-string) gnome-c-test-program-4-aligned))))
-(ert-deftest gnome-test-align-guess-columns-1 ()
- "Tests the `gnome-align-guess-columns'."
+(ert-deftest gnome-c-test-align-guess-columns-1 ()
+ "Tests the `gnome-c-align-guess-columns'."
(with-temp-buffer
- (insert gnome-test-program-2)
+ (insert gnome-c-test-program-2)
(c-mode)
- (let (gnome-align-max-column)
- (gnome-align-guess-columns (point-min) (point-max)))
- (should (= gnome-align-identifier-start-column 24))
- (should (= gnome-align-arglist-start-column 56))
- (should (= gnome-align-arglist-identifier-start-column 80))))
+ (let (gnome-c-align-max-column)
+ (gnome-c-align-guess-columns (point-min) (point-max)))
+ (should (= gnome-c-align-identifier-start-column 24))
+ (should (= gnome-c-align-arglist-start-column 56))
+ (should (= gnome-c-align-arglist-identifier-start-column 80))))
-(ert-deftest gnome-test-align-guess-columns-2 ()
- "Tests the `gnome-align-guess-columns'."
+(ert-deftest gnome-c-test-align-guess-columns-2 ()
+ "Tests the `gnome-c-align-guess-columns'."
(with-temp-buffer
- (insert gnome-test-program-3)
+ (insert gnome-c-test-program-3)
(c-mode)
- (let (gnome-align-max-column)
- (gnome-align-guess-columns (point-min) (point-max)))
- (should (= gnome-align-identifier-start-column 13))
- (should (= gnome-align-arglist-start-column 40))
- (should (= gnome-align-arglist-identifier-start-column 57))))
+ (let (gnome-c-align-max-column)
+ (gnome-c-align-guess-columns (point-min) (point-max)))
+ (should (= gnome-c-align-identifier-start-column 13))
+ (should (= gnome-c-align-arglist-start-column 40))
+ (should (= gnome-c-align-arglist-identifier-start-column 57))))
diff --git a/gnome-minor-mode.el b/gnome-minor-mode.el
deleted file mode 100644
index b2930be..0000000
--- a/gnome-minor-mode.el
+++ /dev/null
@@ -1,65 +0,0 @@
-;;; gnome-minor-mode.el --- minor mode for editing GNOME-style C source code
-*- lexical-binding: t; -*-
-;; Copyright (C) 2016 Daiki Ueno <address@hidden>
-
-;; Author: Daiki Ueno <address@hidden>
-;; Keywords: GNOME, C, coding style
-;; Version: 0.1
-;; Maintainer: Daiki Ueno <address@hidden>
-
-;; This file is not part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation, either version 3 of the
-;; License, or (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see
-;; <http://www.gnu.org/licenses/>.
-
-;;; Code:
-
-(autoload 'gnome-align-at-point "gnome-align")
-(autoload 'gnome-align-region "gnome-align")
-(autoload 'gnome-align-set-column "gnome-align")
-(autoload 'gnome-align-guess-columns "gnome-align")
-(autoload 'gnome-align-compute-optimal-columns "gnome-align")
-(autoload 'gnome-snippet-insert-package_class "gnome-snippet")
-(autoload 'gnome-snippet-insert-PACKAGE_CLASS "gnome-snippet")
-(autoload 'gnome-snippet-insert-PackageClass "gnome-snippet")
-(autoload 'gnome-snippet-insert-interface-declation "gnome-snippet")
-(autoload 'gnome-snippet-insert-class-declation "gnome-snippet")
-(autoload 'gnome-snippet-insert-set_property "gnome-snippet")
-(autoload 'gnome-snippet-insert-get_property "gnome-snippet")
-(autoload 'gnome-snippet-insert-dispose "gnome-snippet")
-(autoload 'gnome-snippet-insert-finalize "gnome-snippet")
-(autoload 'gnome-snippet-insert-notify "gnome-snippet")
-(autoload 'gnome-snippet-insert-constructed "gnome-snippet")
-(autoload 'gnome-snippet-insert "gnome-snippet")
-
-(defvar gnome-minor-mode-map
- (let ((keymap (make-sparse-keymap)))
- (define-key keymap "\C-c\C-ga" 'gnome-align-at-point)
- (define-key keymap "\C-c\C-gr" 'gnome-align-region)
- (define-key keymap "\C-c\C-gf" 'gnome-align-set-column)
- (define-key keymap "\C-c\C-gg" 'gnome-align-guess-columns)
- (define-key keymap "\C-c\C-g\C-g" 'gnome-align-compute-optimal-columns)
- (define-key keymap "\C-c\C-gc" 'gnome-snippet-insert-package_class)
- (define-key keymap "\C-c\C-gC" 'gnome-snippet-insert-PACKAGE_CLASS)
- (define-key keymap "\C-c\C-g\C-c" 'gnome-snippet-insert-PackageClass)
- (define-key keymap "\C-c\C-gs" 'gnome-snippet-insert)
- keymap))
-
-;;;###autoload
-(define-minor-mode gnome-minor-mode
- "A minor-mode for editing GNOME-style C source code."
- nil " GNOME" gnome-minor-mode-map)
-
-(provide 'gnome-c-mode)
-
-;;; gnome-c-mode.el ends here
diff --git a/gnome-snippet.el b/gnome-snippet.el
deleted file mode 100644
index a2862ab..0000000
--- a/gnome-snippet.el
+++ /dev/null
@@ -1,520 +0,0 @@
-;;; gnome-snippet.el --- GNOME-style code generation -*- lexical-binding: t;
-*-
-;; Copyright (C) 2016 Daiki Ueno <address@hidden>
-
-;; Author: Daiki Ueno <address@hidden>
-;; Keywords: GNOME, C, coding style
-
-;; This file is not part of GNU Emacs.
-
-;; This program is free software: you can redistribute it and/or
-;; modify it under the terms of the GNU General Public License as
-;; published by the Free Software Foundation, either version 3 of the
-;; License, or (at your option) any later version.
-
-;; This program is distributed in the hope that it will be useful, but
-;; WITHOUT ANY WARRANTY; without even the implied warranty of
-;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-;; General Public License for more details.
-
-;; You should have received a copy of the GNU General Public License
-;; along with this program. If not, see
-;; <http://www.gnu.org/licenses/>.
-
-;;; Code:
-
-(require 'gnome-align)
-
-(eval-when-compile
- (require 'subword))
-
-(declare-function subword-forward "subword.el" (&optional arg))
-
-(defvar gnome-snippet-package nil)
-(make-variable-buffer-local 'gnome-snippet-package)
-
-(defvar gnome-snippet-class nil)
-(make-variable-buffer-local 'gnome-snippet-class)
-
-(defvar gnome-snippet-parent-package nil)
-(make-variable-buffer-local 'gnome-snippet-parent-package)
-
-(defvar gnome-snippet-parent-class nil)
-(make-variable-buffer-local 'gnome-snippet-parent-class)
-
-(defcustom gnome-snippet-align-arglist t
- "Whether to align argument list of the inserted snippet"
- :type 'boolean
- :group 'gnome-minor-mode)
-
-(make-variable-buffer-local 'gnome-snippet-align-arglist)
-
-(defun gnome-snippet--parse-name (name)
- (require 'subword)
- (with-temp-buffer
- (let (words)
- (insert name)
- (goto-char (point-min))
- (while (not (eobp))
- ;; Skip characters not recognized by subword-mode.
- (if (looking-at "[^[:lower:][:upper:][:digit:]]+")
- (goto-char (match-end 0)))
- (push (buffer-substring (point) (progn (subword-forward 1)
- (point)))
- words))
- (nreverse words))))
-
-(defun gnome-snippet--read-package-and-class (package-prompt
- class-prompt
- package-symbol
- class-symbol)
- (when (or current-prefix-arg
- (not (and (symbol-value package-symbol)
- (symbol-value class-symbol))))
- (set package-symbol
- (gnome-snippet--parse-name
- (read-string (or package-prompt
- "Package (CamelCase): ")
- (if (symbol-value package-symbol)
- (gnome-snippet--format-Package
- (symbol-value package-symbol))))))
- (set class-symbol
- (gnome-snippet--parse-name
- (read-string (or class-prompt
- "Class (CamelCase): ")
- (if (symbol-value class-symbol)
- (gnome-snippet--format-Class
- (symbol-value class-symbol)))))))
- (list (symbol-value package-symbol) (symbol-value class-symbol)))
-
-(defun gnome-snippet--format-PACKAGE (package)
- (mapconcat #'upcase package "_"))
-(defalias 'gnome-snippet--format-CLASS 'gnome-snippet--format-PACKAGE)
-
-(defun gnome-snippet--format-PACKAGE_CLASS (package class)
- (concat (gnome-snippet--format-PACKAGE package)
- "_"
- (gnome-snippet--format-CLASS class)))
-
-(defun gnome-snippet--format-package (package)
- (mapconcat #'downcase package "_"))
-(defalias 'gnome-snippet--format-class 'gnome-snippet--format-package)
-
-(defun gnome-snippet--format-package_class (package class)
- (concat (gnome-snippet--format-package package)
- "_"
- (gnome-snippet--format-class class)))
-
-(defun gnome-snippet--format-Package (package)
- (mapconcat #'identity package ""))
-(defalias 'gnome-snippet--format-Class 'gnome-snippet--format-Package)
-
-(defun gnome-snippet--format-PackageClass (package class)
- (concat (gnome-snippet--format-Package package)
- (gnome-snippet--format-Class class)))
-
-;;;###autoload
-(defun gnome-snippet-insert-package_class (package class)
- "Insert the class name before the current point."
- (interactive (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (insert (gnome-snippet--format-package_class package class)))
-
-;;;###autoload
-(defun gnome-snippet-insert-PACKAGE_CLASS (package class)
- "Insert the class name before the current point."
- (interactive (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (insert (gnome-snippet--format-PACKAGE_CLASS package class)))
-
-;;;###autoload
-(defun gnome-snippet-insert-PackageClass (package class)
- "Insert the class name (in CamelCase) before the current point."
- (interactive (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (insert (gnome-snippet--format-PackageClass package class)))
-
-(defun gnome-snippet-insert-interface-declaration (package iface
- parent-package
parent-class)
- "Insert interface declaration for PACKAGE and IFACE"
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil
- "Interface (CamelCase): "
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (insert "\
-#define " (gnome-snippet--format-PACKAGE package) "_TYPE_"
(gnome-snippet--format-CLASS iface) " (" (gnome-snippet--format-package
package) "_" (gnome-snippet--format-class iface) "_get_type ())
-G_DECLARE_INTERFACE (" (gnome-snippet--format-PackageClass package iface) ", "
-(gnome-snippet--format-package_class package iface) ", "
(gnome-snippet--format-PACKAGE package) ", " (gnome-snippet--format-CLASS
iface) ", " (gnome-snippet--format-PackageClass parent-package parent-class) ")
-"))
-
-(defun gnome-snippet--insert-class-declaration (package
- class
- parent-package
- parent-class
- derivable)
- (insert "\
-#define " (gnome-snippet--format-PACKAGE package) "_TYPE_"
(gnome-snippet--format-CLASS class) " (" (gnome-snippet--format-package_class
package class) "_get_type ())
-G_DECLARE_" (if derivable "DERIVABLE" "FINAL") "_TYPE ("
(gnome-snippet--format-PackageClass package class) ", "
-(gnome-snippet--format-package_class package class) ", "
(gnome-snippet--format-PACKAGE package) ", " (gnome-snippet--format-CLASS
class) ", " (gnome-snippet--format-PackageClass parent-package parent-class) ")
-"))
-
-(defun gnome-snippet-insert-final-class-declaration (package
- class
- parent-package
- parent-class)
- "Insert final class declaration for PACKAGE and CLASS."
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (gnome-snippet--insert-class-declaration package
- class
- parent-package
- parent-class
- nil))
-
-(defun gnome-snippet-insert-derivable-class-declaration (package
- class
- parent-package
- parent-class)
- "Insert derivable class declaration for PACKAGE and CLASS."
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (gnome-snippet--insert-class-declaration package
- class
- parent-package
- parent-class
- t))
-
-(defun gnome-snippet-insert-interface-definition (package
- iface
- parent-package
- parent-class)
- "Insert class definition for PACKAGE and CLASS."
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil
- "Interface (CamelCase): "
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (insert "\
-static void
-" (gnome-snippet--format-package_class package iface) "_default_init ("
(gnome-snippet--format-PackageClass package iface) "Interface *iface) {
-}
-
-G_DEFINE_INTERFACE (" (gnome-snippet--format-PackageClass package iface) ", "
-(gnome-snippet--format-package_class package iface) ", "
(gnome-snippet--format-PACKAGE parent-package) "_TYPE_"
(gnome-snippet--format-CLASS parent-class) ")
-"))
-
-(defun gnome-snippet--insert-class-definition (package
- class
- parent-package
- parent-class
- abstract)
- (insert "\
-G_DEFINE_" (if abstract "ABSTRACT_" "") "TYPE ("
(gnome-snippet--format-PackageClass package class) ", "
-(gnome-snippet--format-package_class package class) ", "
(gnome-snippet--format-PACKAGE parent-package) "_TYPE_"
(gnome-snippet--format-CLASS parent-class) ")
-
-static void
-" (gnome-snippet--format-package_class package class) "_class_init ("
(gnome-snippet--format-PackageClass package class) "Class *klass)
-{
-}
-
-static void
-" (gnome-snippet--format-package_class package class) "_init ("
(gnome-snippet--format-PackageClass package class) " *self)
-{
-}
-"))
-
-(defun gnome-snippet-insert-class-definition (package
- class
- parent-package
- parent-class)
- "Insert class definition for PACKAGE and CLASS."
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (gnome-snippet--insert-class-definition package
- class
- parent-package
- parent-class
- nil))
-
-(defun gnome-snippet-insert-abstract-class-definition (package
- class
- parent-package
- parent-class)
- "Insert abstract class definition for PACKAGE and CLASS."
- (interactive
- (append (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class)
- (gnome-snippet--read-package-and-class
- "Parent package (CamelCase): "
- "Parent class (CamelCase): "
- 'gnome-snippet-parent-package
- 'gnome-snippet-parent-class)))
- (gnome-snippet--insert-class-definition package
- class
- parent-package
- parent-class
- t))
-
-(defun gnome-snippet-insert-constructor (package class)
- "Insert 'constructor' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (arglist-start body-start)
- (insert "\
-static GObject *
-" (gnome-snippet--format-package_class package class) "_constructor (")
- (setq arglist-start (point-marker))
- (insert "GType *object,
-guint n_construct_properties,
-GObjectConstructParam *construct_properties)\n")
- (setq body-start (point-marker))
- (if gnome-snippet-align-arglist
- (progn
- (goto-char arglist-start)
- (gnome-align-at-point))
- (indent-region arglist-start (point)))
- (goto-char body-start)
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- G_OBJECT_CLASS (" (gnome-snippet--format-package_class package class)
"_parent_class)->constructed (object);
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-set_property (package class)
- "Insert 'set_property' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (arglist-start body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_set_property (")
- (setq arglist-start (point-marker))
- (insert "GObject *object,
-guint prop_id,
-const GValue *value,
-GParamSpec *pspec)\n")
- (setq body-start (point-marker))
- (if gnome-snippet-align-arglist
- (progn
- (goto-char arglist-start)
- (gnome-align-at-point))
- (indent-region arglist-start (point)))
- (goto-char body-start)
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- switch (prop_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-get_property (package class)
- "Insert 'get_property' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (arglist-start body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_get_property (")
- (setq arglist-start (point-marker))
- (insert "GObject *object,
-guint prop_id,
-GValue *value,
-GParamSpec *pspec)\n")
- (setq body-start (point-marker))
- (if gnome-snippet-align-arglist
- (progn
- (goto-char arglist-start)
- (gnome-align-at-point))
- (indent-region arglist-start (point)))
- (goto-char body-start)
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
-(gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- switch (prop_id)
- {
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-dispose (package class)
- "Insert 'dispose' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_dispose (GObject
*object)\n")
- (setq body-start (point-marker))
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- G_OBJECT_CLASS (" (gnome-snippet--format-package_class package class)
"_parent_class)->dispose (object);
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-finalize (package class)
- "Insert 'finalize' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_finalize (GObject
*object)\n")
- (setq body-start (point-marker))
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- G_OBJECT_CLASS (" (gnome-snippet--format-package_class package class)
"_parent_class)->finalize (object);
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-notify (package class)
- "Insert 'notify' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_notify (GObject
*object)\n")
- (setq body-start (point-marker))
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- G_OBJECT_CLASS (" (gnome-snippet--format-package_class package class)
"_parent_class)->finalize (object);
-}
-")
- (indent-region body-start (point))))
-
-(defun gnome-snippet-insert-constructed (package class)
- "Insert 'constructed' vfunc of GObjectClass for PACKAGE and CLASS."
- (interactive
- (gnome-snippet--read-package-and-class
- nil nil
- 'gnome-snippet-package
- 'gnome-snippet-class))
- (let (body-start)
- (insert "\
-static void
-" (gnome-snippet--format-package_class package class) "_constructed (GObject
*object)\n")
- (setq body-start (point-marker))
- (insert "{
- " (gnome-snippet--format-PackageClass package class) " *self = "
- (gnome-snippet--format-PACKAGE_CLASS package class) " (object);
-
- G_OBJECT_CLASS (" (gnome-snippet--format-package_class package class)
"_parent_class)->constructed (object);
-}
-")
- (indent-region body-start (point))))
-
-(defvar gnome-snippet-snippet-commands
- '(("G_DECLARE_INTERFACE" . gnome-snippet-insert-interface-declaration)
- ("G_DECLARE_FINAL_TYPE" . gnome-snippet-insert-final-class-declaration)
- ("G_DECLARE_DERIVABLE_TYPE" .
- gnome-snippet-insert-derivable-class-declaration)
- ("G_DEFINE_INTERFACE" . gnome-snippet-insert-interface-definition)
- ("G_DEFINE_TYPE" . gnome-snippet-insert-class-definition)
- ("G_DEFINE_ABSTRACT_TYPE" .
- gnome-snippet-insert-abstract-class-definition)
- ("GObjectClass.constructor" . gnome-snippet-insert-constructor)
- ("GObjectClass.set_property" . gnome-snippet-insert-set_property)
- ("GObjectClass.get_property" . gnome-snippet-insert-get_property)
- ("GObjectClass.dispose" . gnome-snippet-insert-dispose)
- ("GObjectClass.finalize" . gnome-snippet-insert-finalize)
- ;; GObjectClass.dispatch_properties_changed
- ("GObjectClass.notify" . gnome-snippet-insert-notify)
- ("GObjectClass.contructed" . gnome-snippet-insert-constructed)))
-
-;;;###autoload
-(defun gnome-snippet-insert (snippet)
- (interactive
- (list (completing-read "Snippet: " gnome-snippet-snippet-commands nil t)))
- (let ((entry (assoc snippet gnome-snippet-snippet-commands)))
- (unless entry
- (error "Unknown snippet: %s" snippet))
- (call-interactively (cdr entry))))
-
-(provide 'gnome-snippet)
-
-;;; gnome-snippet.el ends here
- [elpa] master e84487c 35/40: snippet: Add FIXME comment, (continued)
- [elpa] master e84487c 35/40: snippet: Add FIXME comment, Daiki Ueno, 2016/01/22
- [elpa] master b04d18e 33/40: Change copyright holder to FSF, Daiki Ueno, 2016/01/22
- [elpa] master 06c8a6a 38/40: * packages/gnome-c-style/gnome-c-tests.el: Really add copyright blurb, Daiki Ueno, 2016/01/22
- [elpa] master 8d0f8c1 37/40: Fix command names in comment, Daiki Ueno, 2016/01/22
- [elpa] master b26ba73 34/40: snippet: Add missing GObjectClass vfunc, Daiki Ueno, 2016/01/22
- [elpa] master 1054ea1 39/40: Add links to GNOME programming guideline, Daiki Ueno, 2016/01/22
- [elpa] master 957d395 36/40: maint: Fix license notice, Daiki Ueno, 2016/01/22
- [elpa] master eaa2c7a 40/40: Merge commit '1054ea1bc5b07a1438a18c1b33f4266b28ff9d77', Daiki Ueno, 2016/01/22
- [elpa] master 7f7d7cb 16/40: Rename to gnome-minor-mode, Daiki Ueno, 2016/01/22
- [elpa] master b6e010d 17/40: align: Add option to control max columns, Daiki Ueno, 2016/01/22
- [elpa] master a654ab4 25/40: Rename to gnome-c-style,
Daiki Ueno <=