Get rid of some byte-compile messages
There are still a lot of issues, like global variables that should be buffer-local.
This commit is contained in:
parent
bb4469313a
commit
9881fde2f8
112
gobgen.el
112
gobgen.el
@ -1,4 +1,4 @@
|
|||||||
;;; gobgen.el --- Generate GObject descendants using a detailed form -*- lexical-binding: t; -*-
|
;;; gobgen.el --- Generate GObject descendants using a detailed form -*- lexical-binding: nil; -*-
|
||||||
|
|
||||||
;; Copyright (C) 2015 Gergely Polonkai
|
;; Copyright (C) 2015 Gergely Polonkai
|
||||||
|
|
||||||
@ -30,19 +30,26 @@
|
|||||||
|
|
||||||
(eval-when-compile (require 'wid-edit))
|
(eval-when-compile (require 'wid-edit))
|
||||||
|
|
||||||
(defvar gobgen-widget-name)
|
(defvar-local gobgen-widget-name nil
|
||||||
(defvar gobgen-widget-prefix)
|
"Widget for the class name.")
|
||||||
(defvar gobgen-widget-parent-name)
|
(defvar-local gobgen-widget-prefix nil
|
||||||
(defvar gobgen-widget-parent-prefix)
|
"Widget for the class prefix. It is auto-filled, but changeable.")
|
||||||
(defvar gobgen-widget-recent)
|
(defvar-local gobgen-widget-parent-name nil
|
||||||
(defvar gobgen-widget-private)
|
"Widget for the name of the parent class.")
|
||||||
|
(defvar-local gobgen-widget-parent-prefix nil
|
||||||
|
"Widget for the prefix of the parent class. It is auto-filled, but changeable.")
|
||||||
|
(defvar-local gobgen-widget-recent nil
|
||||||
|
"Checkbox field for the recent GLib option.")
|
||||||
|
(defvar-local gobgen-widget-private nil
|
||||||
|
"Checkbox field for the private structure option.")
|
||||||
|
|
||||||
(defun string-join (list separator)
|
(defun string-join (list separator)
|
||||||
"Takes a list of string and joins them using delimiter."
|
"Takes a list of strings and joins them using delimiter."
|
||||||
|
|
||||||
(mapconcat (lambda (x) x) list separator))
|
(mapconcat (lambda (x) x) list separator))
|
||||||
|
|
||||||
(defun string-has-prefix (full-str prefix-str)
|
(defun string-has-prefix (full-str prefix-str)
|
||||||
"Check if full-str has the prefix prefix-str"
|
"Check if FULL-STR has the prefix PREFIX-STR"
|
||||||
|
|
||||||
(let* ((prefix-length (length prefix-str)))
|
(let* ((prefix-length (length prefix-str)))
|
||||||
(string-equal prefix-str (substring full-str 0 prefix-length))))
|
(string-equal prefix-str (substring full-str 0 prefix-length))))
|
||||||
@ -50,7 +57,18 @@
|
|||||||
(defun get-gobject-prefix (class-name)
|
(defun get-gobject-prefix (class-name)
|
||||||
(car (split-string class-name "_")))
|
(car (split-string class-name "_")))
|
||||||
|
|
||||||
(defun gobgen-gen-header ()
|
(defun gobgen-gen-header (CLASS_FULL_NAME
|
||||||
|
CLASS_PREFIX
|
||||||
|
CLASS_NAME
|
||||||
|
ClassFullName
|
||||||
|
func-prefix
|
||||||
|
parent_prefix
|
||||||
|
ParentPrefix
|
||||||
|
ParentName
|
||||||
|
parent-header
|
||||||
|
recent-glib
|
||||||
|
need-private)
|
||||||
|
"Generate the contents of a GObject header file."
|
||||||
|
|
||||||
(concat
|
(concat
|
||||||
"#ifndef __"
|
"#ifndef __"
|
||||||
@ -141,7 +159,19 @@
|
|||||||
CLASS_FULL_NAME
|
CLASS_FULL_NAME
|
||||||
"_H__ */\n"))
|
"_H__ */\n"))
|
||||||
|
|
||||||
(defun gobgen-gen-code ()
|
(defun gobgen-gen-code (CLASS_FULL_NAME
|
||||||
|
CLASS_PREFIX
|
||||||
|
CLASS_NAME
|
||||||
|
class_name
|
||||||
|
ClassFullName
|
||||||
|
func-prefix
|
||||||
|
file-name-header
|
||||||
|
PARENT_PREFIX
|
||||||
|
PARENT_NAME
|
||||||
|
recent-glib
|
||||||
|
need-private)
|
||||||
|
"Generate the contents of a GObject source file."
|
||||||
|
|
||||||
(concat
|
(concat
|
||||||
"#include \"" file-name-header "\"\n"
|
"#include \"" file-name-header "\"\n"
|
||||||
|
|
||||||
@ -215,11 +245,14 @@
|
|||||||
|
|
||||||
"}\n"))
|
"}\n"))
|
||||||
|
|
||||||
(defun gobgen-generator ()
|
(defun gobgen-generator (class-prefix
|
||||||
"Generate the header definition for a GObject derived clas.
|
class-name
|
||||||
|
parent-prefix
|
||||||
|
parent-name
|
||||||
|
recent-glib
|
||||||
|
need-private)
|
||||||
|
"Generate the header definition for a GObject derived clas."
|
||||||
|
|
||||||
Parameters:
|
|
||||||
"
|
|
||||||
(let* ((parent-prefix (downcase parent-prefix))
|
(let* ((parent-prefix (downcase parent-prefix))
|
||||||
(parent-name (downcase parent-name))
|
(parent-name (downcase parent-name))
|
||||||
(class-prefix (downcase class-prefix))
|
(class-prefix (downcase class-prefix))
|
||||||
@ -263,16 +296,38 @@ Parameters:
|
|||||||
(split-window-vertically)
|
(split-window-vertically)
|
||||||
(other-window 1)
|
(other-window 1)
|
||||||
(find-file file-name-header)
|
(find-file file-name-header)
|
||||||
(insert (gobgen-gen-header))
|
(insert (gobgen-gen-header CLASS_FULL_NAME
|
||||||
|
CLASS_PREFIX
|
||||||
|
CLASS_NAME
|
||||||
|
ClassFullName
|
||||||
|
func-prefix
|
||||||
|
parent_prefix
|
||||||
|
ParentPrefix
|
||||||
|
ParentName
|
||||||
|
parent-header
|
||||||
|
recent-glib
|
||||||
|
need-private))
|
||||||
|
|
||||||
(split-window-vertically)
|
(split-window-vertically)
|
||||||
(other-window 1)
|
(other-window 1)
|
||||||
(find-file file-name-code)
|
(find-file file-name-code)
|
||||||
(insert (gobgen-gen-code)))))))
|
(insert (gobgen-gen-code CLASS_FULL_NAME
|
||||||
|
CLASS_PREFIX
|
||||||
|
CLASS_NAME
|
||||||
|
class_name
|
||||||
|
ClassFullName
|
||||||
|
func-prefix
|
||||||
|
file-name-header
|
||||||
|
PARENT_PREFIX
|
||||||
|
PARENT_NAME
|
||||||
|
recent-glib
|
||||||
|
need-private)))))))
|
||||||
|
|
||||||
(defun gobgen ()
|
(defun gobgen ()
|
||||||
"Create widgets window for GObject creation"
|
"Create widgets window for GObject creation"
|
||||||
|
|
||||||
(interactive)
|
(interactive)
|
||||||
|
|
||||||
(switch-to-buffer "*GObject Creator*")
|
(switch-to-buffer "*GObject Creator*")
|
||||||
|
|
||||||
(kill-all-local-variables)
|
(kill-all-local-variables)
|
||||||
@ -290,9 +345,10 @@ Parameters:
|
|||||||
(widget-create 'editable-field
|
(widget-create 'editable-field
|
||||||
:size 25
|
:size 25
|
||||||
:format "Name: %v"
|
:format "Name: %v"
|
||||||
:notify (lambda (widget &rest ignore)
|
:notify (lambda (widget _child &optional event)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(widget-value-set gobgen-widget-prefix (get-gobject-prefix (widget-value widget)))))
|
(widget-value-set gobgen-widget-prefix
|
||||||
|
(get-gobject-prefix (widget-value widget)))))
|
||||||
:doc "The name of the new class, with its prefix included"
|
:doc "The name of the new class, with its prefix included"
|
||||||
"gtk_example_object"))
|
"gtk_example_object"))
|
||||||
|
|
||||||
@ -309,9 +365,10 @@ Parameters:
|
|||||||
(widget-create 'editable-field
|
(widget-create 'editable-field
|
||||||
:size 25
|
:size 25
|
||||||
:format "Parent: %v"
|
:format "Parent: %v"
|
||||||
:notify (lambda (widget &rest ignore)
|
:notify (lambda (widget _child &optional event)
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(widget-value-set gobgen-widget-parent-prefix (get-gobject-prefix (widget-value widget)))))
|
(widget-value-set gobgen-widget-parent-prefix
|
||||||
|
(get-gobject-prefix (widget-value widget)))))
|
||||||
:doc "Name of the parent class. Use g_object if you don't want to derive from something specific."
|
:doc "Name of the parent class. Use g_object if you don't want to derive from something specific."
|
||||||
"g_object"))
|
"g_object"))
|
||||||
|
|
||||||
@ -343,14 +400,19 @@ Parameters:
|
|||||||
(widget-insert "\n\n")
|
(widget-insert "\n\n")
|
||||||
|
|
||||||
(widget-create 'push-button
|
(widget-create 'push-button
|
||||||
:notify (lambda (&rest ignore)
|
:notify (lambda (widget _child &optional event)
|
||||||
(let ((class-name (widget-value gobgen-widget-name))
|
(let ((class-name (widget-value gobgen-widget-name))
|
||||||
(class-prefix (widget-value gobgen-widget-prefix))
|
(class-prefix (widget-value gobgen-widget-prefix))
|
||||||
(parent-name (widget-value gobgen-widget-parent-name))
|
(parent-name (widget-value gobgen-widget-parent-name))
|
||||||
(parent-prefix (widget-value gobgen-widget-parent-prefix))
|
(parent-prefix (widget-value gobgen-widget-parent-prefix))
|
||||||
(recent-glib (widget-value gobgen-widget-recent))
|
(recent-glib (widget-value gobgen-widget-recent))
|
||||||
(need-private (widget-value gobgen-widget-private)))
|
(need-private (widget-value gobgen-widget-private)))
|
||||||
(gobgen-generator)))
|
(gobgen-generator class-prefix
|
||||||
|
class-name
|
||||||
|
parent-prefix
|
||||||
|
parent-name
|
||||||
|
recent-glib
|
||||||
|
need-private)))
|
||||||
"Generate")
|
"Generate")
|
||||||
|
|
||||||
(widget-insert " ")
|
(widget-insert " ")
|
||||||
@ -368,11 +430,11 @@ Parameters:
|
|||||||
(widget-insert " ")
|
(widget-insert " ")
|
||||||
|
|
||||||
(widget-create 'push-button
|
(widget-create 'push-button
|
||||||
:notify (lambda (&rest ignore)
|
:notify (lambda (widget _child &optional event)
|
||||||
(kill-buffer "*GObject Creator*"))
|
(kill-buffer "*GObject Creator*"))
|
||||||
"Close")
|
"Close")
|
||||||
|
|
||||||
(beginning-of-buffer)
|
(goto-char (point-min))
|
||||||
|
|
||||||
(use-local-map widget-keymap)
|
(use-local-map widget-keymap)
|
||||||
(widget-setup))
|
(widget-setup))
|
||||||
|
Loading…
x
Reference in New Issue
Block a user