tumashu / org-capture-pop-frame

Pop a new frame, then run org-capture
31 stars 9 forks source link

Fails to create frame on emacs version 29.0.50, aborts org-capture #7

Open jeffkowalski opened 2 years ago

jeffkowalski commented 2 years ago

org-capture fails early, even before template selection, with:

cl-no-applicable-method: No applicable method: frame-creation-function, ((client . nowait) (vertical-scroll-bars) (window-system . x) (name . "org-capture-pop-frame") (width . 80) (height . 20) (tool-bar-lines . 0) (menu-bar-lines . 1))

emacs-version is GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0) of 2022-07-01

Without org-capture-pop-frame, org-capture works as expected (in a new window rather than a popup frame of course).

jeffkowalski commented 2 years ago

On my system (version described above), window-system is set to

window-system is a variable defined in ‘C source code’.

Its value is ‘pgtk’
It is a terminal-local variable; global value is the same.

Name of window system through which the selected frame is displayed.
The value is a symbol:
 nil for a termcap frame (a character-only terminal),
 ‘x’ for an Emacs frame that is really an X window,
 ‘w32’ for an Emacs frame that is a window on MS-Windows display,
 ‘ns’ for an Emacs frame on a GNUstep or Macintosh Cocoa display,
 ‘pc’ for a direct-write MS-DOS frame.
 ‘pgtk’ for an Emacs frame using pure GTK facilities.
 ‘haiku’ for an Emacs frame running in Haiku.

Note that the way frame-window-system is set in this module, it doesn't account for all of the above options:

(let ((frame-window-system
         (cond ((eq system-type 'darwin) 'ns)
               ((eq system-type 'gnu/linux) 'x)
               ((eq system-type 'windows-nt) 'w32)))...

It's not clear to me why make-frame

    (make-frame
     `((window-system . ,frame-window-system)
       ,@ocpf-frame-parameters))

specifies the window-system. In fact, when I remove that, as in

    (make-frame
       ,@ocpf-frame-parameters))

all works properly.