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:
Gergely Polonkai 2016-09-28 08:19:30 +02:00
parent bb4469313a
commit 9881fde2f8

112
gobgen.el
View File

@ -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))