Hi all,

I want emacsclientw.exe to start up an emacs daemon with a custom --init-directory in case no server is running. For that case, I think, I need to explicitly set the value for the "--alternate-editor"-flag to something like:

-a "%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory %APPDATA%\Dotfiles\emacs\.emacs.d\"

However, doing so results in the following error: "file name or argument required". This is also true when specifing a relative path (i.e. AppData\Dotfiles\emacs\.emacs.d\).

After some more trials with single and/or double qoutes (details see below), I got the impression that this behavior is unlikely intentional. And I am somewhat confident, that more then one oy my many attempts should've been successful. (Note that I raised this issue first here: https://emacs.stackexchange.com/a/82355/30098)

For completeness, the full comand ("Target") I am trying to run is:

%UserProfile%\bin\emacs-29.3\bin\emacsclientw.exe -a '%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory "AppData\Dotfiles\emacs\.emacs.d\"' -n -c --server-file %APPDATA%\Dotfiles\emacs\.emacs.d\server\server

that command starts in

%UserProfile%

ATM, I have as a work around a shortcut to emacscleintw.exe without an -a flag. Before using it, I once have to run:

%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --daemon ----init-directory %APPDATA%\Dotfiles\emacs\.emacs.d\

Obviously, I would rather have to have it all in one place.


And here are the Details, regarding the use of quotes with or without relative path for --init-directory:

For the several options using quotes, I got the following problems, depending on whether I put single or double quoutes for the whole argument or just the path:

Double quotes around the argmument and single quotes for the path, using the full path:

-a "%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory '%APPDATA%\Dotfiles\emacs\.emacs.d\'"

--> Warning: "Warning (initialization): Unable to create `user-emacs-directory' (c:/Users/gross20/'C:/Users/gross20/AppData/Roaming/Dotfiles/emacs/.emacs.d/'/)."

Single quotes around the argmument and double quotes for the path, using the full path:

-a '%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory "%APPDATA%\Dotfiles\emacs\.emacs.d\"'

--> Error: Try --help for more information

Double quotes around the argmument and single quotes for the path, using a relative path:

-a "%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory 'AppData\Roaming\Dotfiles\emacs\.emacs.d\'"


--> Strarts without errors or warning, but the user-emacs-directory is "c:/Users/XXX/'AppData/Roaming/Dotfiles/emacs/.emacs.d/'/" (Note the single quote in the folder name for AppData)

Single quotes around the argmument and single quotes for the path, using a relative path:

-a '%UserProfile%\bin\emacs-29.3\bin\runemacs.exe --init-directory "AppData\Dotfiles\emacs\.emacs.d\"'

--> Error: Try --help for more information


And one additional observation: From my many attempts, related or not, I also got the impression, that I am closer to what I want ommiting the --daemon flag within the argument for the -a flag. However, I need it when linking to runemacs.exe directly.

This is my first bug report to this mailing list, hope it contributes a tiny tiny bit. (:

Best

Jonas


In GNU Emacs 29.3 (build 2, x86_64-w64-mingw32) of 2024-03-24 built on
 AVALON
Windowing system distributor 'Microsoft Corp.', version 10.0.19045
System Description: Microsoft Windows 10 Enterprise (v10.0.2009.19045.4894)

Configured using:
 'configure --with-modules --without-dbus --with-native-compilation=aot
 --without-compress-install --with-sqlite3 --with-tree-sitter
 CFLAGS=-O2'

Configured features:
ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP
NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XPM ZLIB

(NATIVE_COMP present but libgccjit not available)

Important settings:
  value of $LANG: DEU
  locale-coding-system: cp1252

Major mode: Org-Agenda Week Ddl Grid

Minor modes in effect:
  hl-line-mode: t
  server-mode: t
  consult-notes-org-headings-mode: t
  consult-notes-denote-mode: t
  denote-menu-bar-mode: t
  eat-eshell-mode: t
  shell-dirtrack-mode: t
  vertico-mode: t
  savehist-mode: t
  winner-mode: t
  save-place-mode: t
  global-auto-revert-mode: t
  recentf-mode: t
  windmove-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  blink-cursor-mode: t
  buffer-read-only: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t

Load-path shadows:
c:/Users/XXX/Dotfiles/emacs/.emacs.d/elpa/transient-0.7.4/transient hides c:/Users/gross20/bin/emacs-29.3/share/emacs/29.3/lisp/transient

Features:
(shadow sort mail-extr emacsbug mule-util cal-move crm time-stamp tabify
org-datetree org-capture timezone misearch multi-isearch cursor-sensor
hl-line org-duration diary-lib diary-loaddefs cal-iso vc-git diff-mode
easy-mmode vc-dispatcher org-indent oc-basic ol-eww eww url-queue
thingatpt mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file svg dom gnus-group gnus-undo gnus-start
gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7 nnoo
parse-time gnus-spec gnus-int gnus-range message sendmail yank-media
puny rfc822 mml mml-sec epa derived epg rfc6068 epg-config mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev gmm-utils mailheader gnus-win gnus nnheader gnus-util
mail-utils range mm-util mail-prsvr ol-docview doc-view jka-compr
image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi
org-link-doi cl-extra help-mode face-remap org-agenda org-element
org-persist xdg avl-tree server consult-notes-denote
consult-notes-org-headings consult-notes consult-org consult denote
dired dired-loaddefs xref project org-bookmark-heading bookmark pp
mode-local ob-shell ob-R org-attach org-id org-refile org-tempo org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-src ob-comint
org-pcomplete org-list org-footnote org-faces org-entities time-date
noutline outline icons ob-emacs-lisp ob-core ob-eval org-cycle org-table
ol rx org-fold org-fold-core org-keys oc org-loaddefs find-func cal-menu
calendar cal-loaddefs org-compat tempo org-version org-macs format-spec
esh-var esh-mode esh-cmd generator esh-ext esh-opt esh-proc esh-io
esh-arg esh-module esh-groups esh-util files-x eat term ehelp shell
pcomplete color orderless vertico-directory vertico wgrep grep compile
text-property-search comint ansi-osc ansi-color savehist winner ring
saveplace autorevert filenotify recentf tree-widget wid-edit windmove
modus-operandi-theme modus-themes no-littering compat compat-30
finder-inf consult-notes-autoloads consult-recoll-autoloads
consult-autoloads denote-autoloads eat-autoloads elpa-mirror-autoloads
ess-autoloads magit-autoloads pcase git-commit-autoloads
magit-section-autoloads dash-autoloads no-littering-autoloads
orderless-autoloads org-bookmark-heading-autoloads quelpa-autoloads
s-autoloads transient-autoloads vertico-autoloads wgrep-autoloads
with-editor-autoloads info compat-autoloads package browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse
auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x
map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc
iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook
vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table
term/w32-win w32-win w32-vars term/common-win tool-bar dnd fontset image
regexp-opt fringe tabulated-list replace newcomment text-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch easymenu
timer select scroll-bar mouse jit-lock font-lock syntax font-core
term/tty-colors frame minibuffer nadvice seq simple cl-generic
indonesian philippine cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
theme-loaddefs faces cus-face macroexp files window text-properties
overlay sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads w32notify w32 lcms2 multi-tty
make-network-process native-compile emacs)

Memory information:
((conses 16 1381967 381324)
 (symbols 48 31590 3)
 (strings 32 149124 80555)
 (string-bytes 1 4074814)
 (vectors 16 79509)
 (vector-slots 8 1761299 703656)
 (floats 8 492 1171)
 (intervals 56 74316 5304)
 (buffers 984 16))