diff --git a/tools/clog-builder-files.lisp b/tools/clog-builder-files.lisp index 088292a..ca3c839 100644 --- a/tools/clog-builder-files.lisp +++ b/tools/clog-builder-files.lisp @@ -30,15 +30,17 @@ (format t "Error: ~A" condition))))) (defun on-open-file-ext (obj &key open-file popup) - (open-window (window (connection-body obj)) - (if open-file - (format nil "/source-editor?open-file=~A" - open-file) - "/source-editor") - :specs (if popup - "width=645,height-430" - "") - :name "_blank")) + (if (and *open-external-with-emacs* open-file) + (swank:ed-in-emacs open-file) + (open-window (window (connection-body obj)) + (if open-file + (format nil "/source-editor?open-file=~A" + open-file) + "/source-editor") + :specs (if (or popup *open-external-in-popup*) + "width=800,height=600" + "") + :name "_blank"))) (defun on-open-file (obj &key open-file (title "New Source Editor") @@ -60,6 +62,7 @@ (m-load (create-gui-menu-item m-file :content "load")) (m-save (create-gui-menu-item m-file :content "save (cmd/ctrl-s)")) (m-saveas (create-gui-menu-item m-file :content "save as..")) + (m-emacs (create-gui-menu-item m-file :content "open in emacs")) (m-edit (create-gui-menu-drop-down menu :content "Edit")) (m-undo (create-gui-menu-item m-edit :content "undo")) (m-redo (create-gui-menu-item m-edit :content "redo")) @@ -215,6 +218,7 @@ (setf last-date (file-write-date file-name)) (sleep .5) (remove-class btn-save "w3-animate-top")))) + (set-on-click m-emacs (lambda (obj) (swank:ed-in-emacs file-name))) (flet ((save (obj data &key save-as) (cond ((or (equal file-name "") (getf data :shift-key) diff --git a/tools/clog-builder-panels.lisp b/tools/clog-builder-panels.lisp index e58241e..e0d0b24 100644 --- a/tools/clog-builder-panels.lisp +++ b/tools/clog-builder-panels.lisp @@ -485,8 +485,8 @@ not a temporarily attached one when using select-control." (format nil "/panel-editor?open-panel=~A" open-file) "/source-editor") - :specs (if popup - "width=645,height-430" + :specs (if (or popup *open-external-panels-in-popup*) + "width=1280,height=700" "") :name "_blank")) diff --git a/tools/clog-builder-settings.lisp b/tools/clog-builder-settings.lisp index 8aebe02..d05be76 100644 --- a/tools/clog-builder-settings.lisp +++ b/tools/clog-builder-settings.lisp @@ -12,6 +12,12 @@ ;; Open panels and files in new browser tabs by default (defparameter *open-external* nil) +;; Open files in browser popus instead of tabs if browser allows +(defparameter *open-external-in-popup* nil) +;; Open panels in browser popus instead of tabs if browser allows +(defparameter *open-external-panels-in-popup* nil) +;; Use emacs instead of the source-editor when openning external +(defparameter *open-external-with-emacs* nil) ;; Best Light Theme for Lisp (defparameter *editor-theme* "ace/theme/iplastic") ;; Best Dark Theme for Lisp diff --git a/tools/clog-builder.lisp b/tools/clog-builder.lisp index 052ee53..1d0ff16 100644 --- a/tools/clog-builder.lisp +++ b/tools/clog-builder.lisp @@ -352,21 +352,21 @@ clog-builder window.") (win (create-gui-menu-drop-down menu :content "Window")) (help (create-gui-menu-drop-down menu :content "Help"))) (declare (ignore icon)) - (create-gui-menu-item file :content "New CLOG-GUI Panel" :on-click 'on-new-builder-panel) - (create-gui-menu-item file :content "New CLOG-WEB Page" :on-click 'on-new-builder-page) - (create-gui-menu-item file :content "New Basic HTML Page" :on-click 'on-new-builder-basic-page) - (create-gui-menu-item file :content "New CLOG-WEB Delay Launch" :on-click 'on-new-builder-launch-page) - (create-gui-menu-item file :content "New Custom Boot Page" :on-click 'on-new-builder-custom) - (create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template) - (create-gui-menu-item src :content "Project Window" :on-click 'on-show-project) - (create-gui-menu-item src :content "Directory Window" :on-click 'on-dir-win) - (create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file) - (create-gui-menu-item src :content "New Source Editor (New Tab)" :on-click + (create-gui-menu-item file :content "New CLOG-GUI Panel" :on-click 'on-new-builder-panel) + (create-gui-menu-item file :content "New CLOG-WEB Page in New Tab" :on-click 'on-new-builder-page) + (create-gui-menu-item file :content "New Basic HTML Page in New Tab" :on-click 'on-new-builder-basic-page) + (create-gui-menu-item file :content "New CLOG-WEB Page Delayed in New Tab" :on-click 'on-new-builder-launch-page) + (create-gui-menu-item file :content "New Custom Boot Page in New Tab" :on-click 'on-new-builder-custom) + (create-gui-menu-item file :content "New Application Template" :on-click 'on-new-app-template) + (create-gui-menu-item src :content "Project Window" :on-click 'on-show-project) + (create-gui-menu-item src :content "Directory Window" :on-click 'on-dir-win) + (create-gui-menu-item src :content "New Source Editor" :on-click 'on-open-file) + (create-gui-menu-item src :content "New Source Editor in New Tab" :on-click (lambda (obj) (declare (ignore obj)) (open-window (window body) "/source-editor?open-file=%20"))) - (create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser) - (create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser) + (create-gui-menu-item src :content "New System Browser" :on-click 'on-new-sys-browser) + (create-gui-menu-item src :content "New ASDF System Browser" :on-click 'on-new-asdf-browser) (create-gui-menu-item tools :content "Control CLOG Events" :on-click 'on-show-control-events-win) (create-gui-menu-item tools :content "Control JavaScript Events" :on-click 'on-show-control-js-events-win) (create-gui-menu-item tools :content "Control ParenScript Events" :on-click 'on-show-control-ps-events-win) @@ -446,10 +446,14 @@ clog-builder window.") (declare (ignore obj)) ;; return empty string to prevent nav off page ""))) + (when *app-mode* + (incf *app-mode*)) (run body) (when *app-mode* - (clog:shutdown) - (uiop:quit))) + (decf *app-mode*) + (when (<= *app-mode* 0) + (clog:shutdown) + (uiop:quit)))) (defun clog-builder (&key (port 8080) (start-browser t) app project dir static-root system clogframe) @@ -472,7 +476,8 @@ instead of the project window will be displayed." (setf static-root (merge-pathnames "./www/" (asdf:system-source-directory system)))) (when app - (setf *app-mode* app)) + (unless *app-mode* + (setf *app-mode* 0))) (if static-root (initialize nil :port port :static-root static-root) (initialize nil :port port)) @@ -489,5 +494,5 @@ instead of the project window will be displayed." (format nil "~A/builder" port) (format nil "~A" 1280) (format nil "~A" 840)))) (when start-browser - (format t "If browser does not start go to http://127.0.0.1:~A/builder" port) + (format t "~%If browser does not start go to http://127.0.0.1:~A/builder~%~%" port) (open-browser :url (format nil "http://127.0.0.1:~A/builder" port)))) diff --git a/tools/preferences.lisp.sample b/tools/preferences.lisp.sample index 6b4101e..25f7716 100644 --- a/tools/preferences.lisp.sample +++ b/tools/preferences.lisp.sample @@ -1,6 +1,9 @@ (in-package :clog-tools) (setf *open-external* t) +(setf *open-external-with-emacs* nil) +(setf *open-external-in-popup* nil) +(setf *open-external-panels-in-popup* t) (setf *editor-theme* "ace/theme/terminal") (setf *editor-keybinding* "ace/keyboard/emacs") (setf *editor-renderer-options*