diff --git a/src/plugins/cproject.el b/src/plugins/cproject.el index dcf3738..90789f6 100644 --- a/src/plugins/cproject.el +++ b/src/plugins/cproject.el @@ -39,143 +39,138 @@ ;; ---------------------------------------------------------------------- ;; If user dont want the plug in so it should not loaded -(if c-plugin +;; ------------------------------------------------------------------- +;; Hooks +;; ------------------------------------------------------------------- +(defvar kuso-cplug-preinit-hook '() + "This hook runs before initializing the Kuso c-plugin minor mode." + ) - (progn - ;; ------------------------------------------------------------------- - ;; Hooks - ;; ------------------------------------------------------------------- - (defvar kuso-cplug-preinit-hook '() - "This hook runs before initializing the Kuso c-plugin minor mode." - ) - - (defvar kuso-cplug-postinit-hook '() - "This hook runs after Kuso c-plugin minor mode initialized." - ) - - (defvar kuso-cplug-prerm--hook '() - "This hook runs before deactivating Kuso c-plugin minor mode." - ) - - (defvar kuso-cplug-postrm-hook '() - "This hook runs after Kuso c-plugin minor mode deactivated." - ) +(defvar kuso-cplug-postinit-hook '() + "This hook runs after Kuso c-plugin minor mode initialized." + ) - ;; --------------------------------------------------------------------- - ;; Keymaps - ;; --------------------------------------------------------------------- - (defvar kuso-cplugin-map (make-sparse-keymap) - "Default keymap for Kuso c-plugin minor mode that hold the global key +(defvar kuso-cplug-prerm--hook '() + "This hook runs before deactivating Kuso c-plugin minor mode." + ) + +(defvar kuso-cplug-postrm-hook '() + "This hook runs after Kuso c-plugin minor mode deactivated." + ) + +;; --------------------------------------------------------------------- +;; Keymaps +;; --------------------------------------------------------------------- +(defvar kuso-cplugin-map (make-sparse-keymap) + "Default keymap for Kuso c-plugin minor mode that hold the global key binding for Kuso IDE C projects section." - ) + ) - ;; --------------------------------------------------------------------- - ;; Functions - ;; --------------------------------------------------------------------- - (defun init-menus () "Draw required menu for C mode" +;; --------------------------------------------------------------------- +;; Functions +;; --------------------------------------------------------------------- +(defun init-menus () "Draw required menu for C mode" - (define-key-after global-map [menu-bar file new-proj cproj] (cons "C/C++" (make-sparse-keymap "c-cpp-proj"))) - ;; (define-key global-map (kbd "\C-x n k") 'kmodule) - ;; (define-key global-map [menu-bar file new-proj cproj kmodule] '("Kernel Module" . kmodule)) - - ;; (define-key global-map [menu-bar file new-proj cproj separator2] '("--")) - + (define-key-after global-map [menu-bar file new-proj cproj] (cons "C/C++" (make-sparse-keymap "c-cpp-proj"))) + ;; (define-key global-map (kbd "\C-x n k") 'kmodule) + ;; (define-key global-map [menu-bar file new-proj cproj kmodule] '("Kernel Module" . kmodule)) + + ;; (define-key global-map [menu-bar file new-proj cproj separator2] '("--")) + ; (define-key global-map [Ctrl-x p c n ] 'make-cpp) - ;; (define-key global-map [menu-bar file new-proj cproj cpp-make] '("Make project (C++)" . make-cpp)) - - ;; (define-key global-map [Ctrl-x p c m ] 'make-c) - ;; (define-key global-map [menu-bar file new-proj cproj c-make] '("Make project (C)" . make-c)) + ;; (define-key global-map [menu-bar file new-proj cproj cpp-make] '("Make project (C++)" . make-cpp)) + + ;; (define-key global-map [Ctrl-x p c m ] 'make-c) + ;; (define-key global-map [menu-bar file new-proj cproj c-make] '("Make project (C)" . make-c)) - ;; (define-key global-map [menu-bar file new-proj cproj separator1] '("--")) + ;; (define-key global-map [menu-bar file new-proj cproj separator1] '("--")) - (define-key global-map (kbd "\C-x n \C-c") 'generic-cpp) - (define-key global-map [menu-bar file new-proj cproj cppgeneric] '("Generic project (C++)" . generic-cpp)) + (define-key global-map (kbd "\C-x n \C-c") 'generic-cpp) + (define-key global-map [menu-bar file new-proj cproj cppgeneric] '("Generic project (C++)" . generic-cpp)) - (define-key global-map (kbd "\C-x n c") 'generic-c) - (define-key global-map [menu-bar file new-proj cproj cgeneric] '("Generic project (C)" . generic-c)) + (define-key global-map (kbd "\C-x n c") 'generic-c) + (define-key global-map [menu-bar file new-proj cproj cgeneric] '("Generic project (C)" . generic-c)) - ) + ) - ;; Thsi function exists because maybe Kuso needs more information - ;; about new project in the feature the new-prject function did not - ;; cover - (defun c-new-project () "Create a new C/C++ project" - (new-project) - ) +;; Thsi function exists because maybe Kuso needs more information +;; about new project in the feature the new-prject function did not +;; cover +(defun c-new-project () "Create a new C/C++ project" + (new-project) + ) - (defun compile () - "Run the make command and return the putput" - (interactive) - (let (output) - (setq output (shell-command-to-string "make")) - (message output) - ) - ) +(defun compile () + "Run the make command and return the putput" + (interactive) + (let (output) + (setq output (shell-command-to-string "make")) + (message output) + ) + ) - (defun generic-c () "Create a generic type C project" - (interactive) - (c-new-project) - (project/copying-license-copy) - (let (template-file-regexp license-data filelist cur template-data) - (setq template-file-regexp (concat TEMPLATESPATH "c/generic_c/*.tmpl")) - (setq filelist (file-expand-wildcards template-file-regexp)) - (while filelist - (setq cur (pop filelist)) - (setq template-data (project/render-template cur)) - (setq template-data (replace-regexp-in-string "::unixname::" unix-project-name template-data)) - (setq template-data (replace-regexp-in-string "::UNIXNAME::" unix-project-name template-data)) - (project/write-dest-file cur template-data) - ) - ) - (cd project-path) - (find-file (concat unix-project-name ".c")) - (kuso-cplugin-mode) - ) - - (defun initial-keymap () - "Set the key binding for C project." - (define-key kuso-cplugin-map (kbd "\C-c \C-c") 'compile) - ) - - - - - - - ;; Initializing c menus at the load time - (add-hook 'kuso-postinit-mode-hook 'init-menus) - - ;; ---------------------------------------------------------------------- - ;; Minor Modes - ;; ---------------------------------------------------------------------- - (define-minor-mode kuso-cplugin-mode - "Toggle Kuso C plugin mode. -This mode provide C language plugin for Kuso IDE." - :lighter " kuso-c" - :keymap kuso-cplugin-map - :global t - :group 'kuso-group - - (if kuso-cplugin-mode - ;; kuso-cplugin-mode is not loaded - (let () - ;; before initiazing mode - (run-hooks 'kuso-cplug-preinit-hook) - (initial-keymap) - ;; after mode was initialized - (run-hooks 'kuso-cplug-postinit-hook) - ) - ;; kuso-mode already loaded - (let () - ;; before deactivating mode - (run-hooks 'kuso-cplug-prerm-hook) - ;; after deactivating mode - (run-hooks 'kuso-cplug-postrm-hook) - ) - ) - ) +(defun generic-c () "Create a generic type C project" + (interactive) + (c-new-project) + (project/copying-license-copy) + (let (template-file-regexp license-data filelist cur template-data) + (setq template-file-regexp (concat TEMPLATESPATH "c/generic_c/*.tmpl")) + (setq filelist (file-expand-wildcards template-file-regexp)) + (while filelist + (setq cur (pop filelist)) + (setq template-data (project/render-template cur)) + (setq template-data (replace-regexp-in-string "::unixname::" unix-project-name template-data)) + (setq template-data (replace-regexp-in-string "::UNIXNAME::" unix-project-name template-data)) + (project/write-dest-file cur template-data) ) + ) + (cd project-path) + (find-file (concat unix-project-name ".c")) + (kuso-cplugin-mode) + ) + +(defun initial-keymap () + "Set the key binding for C project." + (define-key kuso-cplugin-map (kbd "\C-c \C-c") 'compile) + ) + + + + + + +;; Initializing c menus at the load time +(add-hook 'kuso-postinit-mode-hook 'init-menus) + +;; ---------------------------------------------------------------------- +;; Minor Modes +;; ---------------------------------------------------------------------- +(define-minor-mode kuso-cplugin-mode + "Toggle Kuso C plugin mode. +This mode provide C language plugin for Kuso IDE." + :lighter " kuso-c" + :keymap kuso-cplugin-map + :global t + :group 'kuso-group + + (if kuso-cplugin-mode + ;; kuso-cplugin-mode is not loaded + (let () + ;; before initiazing mode + (run-hooks 'kuso-cplug-preinit-hook) + (initial-keymap) + ;; after mode was initialized + (run-hooks 'kuso-cplug-postinit-hook) + ) + ;; kuso-mode already loaded + (let () + ;; before deactivating mode + (run-hooks 'kuso-cplug-prerm-hook) + ;; after deactivating mode + (run-hooks 'kuso-cplug-postrm-hook) + ) + ) ) \ No newline at end of file