-USING: combinators.short-circuit editors kernel make
-math.parser namespaces sequences system vocabs ;
+USING: combinators.short-circuit editors io.standard-paths
+kernel make math.parser namespaces sequences system vocabs ;
IN: editors.emacs
-SINGLETON: emacsclient
-emacsclient editor-class set-global
+SINGLETON: emacs
SYMBOL: emacsclient-path
+SYMBOL: emacsclient-args
-HOOK: default-emacsclient os ( -- path )
+HOOK: find-emacsclient os ( -- path )
-M: object default-emacsclient ( -- path ) "emacsclient" ;
+M: object find-emacsclient
+ "emacsclient" ?find-in-path ;
-M: emacsclient editor-command ( file line -- command )
+M: emacs editor-command
[
- {
- [ emacsclient-path get-global ]
- [ default-emacsclient dup emacsclient-path set-global ]
- } 0|| ,
- "--no-wait" ,
+ emacsclient-path get [ find-emacsclient ] unless* ,
+ emacsclient-args get [ { "-a=emacs" "--no-wait" } ] unless* %
number>string "+" prepend ,
,
] { } make ;
-os windows? [ "editors.emacs.windows" require ] when
-
+os windows? [ "editors.emacs.windows" require ] when
\ No newline at end of file