help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: emacsclient commandline


From: Oleksandr Gavenko
Subject: Re: emacsclient commandline
Date: Thu, 11 Sep 2008 20:45:28 +0300
User-agent: Thunderbird 2.0.0.9 (Windows/20071031)

Rustom Mody wrote:
I am trying to construct a command line such that:

if emacs is running the client asks the server to raise-frame else it
calls runemacs.

The command line Ive given is:
$ emacsclient -a runemacs -e "(raise-frame)"

But this opens a file (or buffer) called '(raise-frame)'  !!

Of course just
$ emacsclient -e "(raise-frame)"

raises the emacs frame alright but fails for the case of no server.

Another minor point:
When emacsclient is used with the -a option and there is no server
running it pops up a window saying ERROR No error !!
I guess this is an error (in emacsclient) :-)

Starting from the vbs file on the emacswiki Ive constructed my own
launch-emacs as below but I dont like the loop and the sql and all the
heavy stuff, hence this attempt.

My launch-emacs-client.vbs
------------------------
Set objShell = WScript.CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

strComputer = "."

Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery("Select * From Win32_Process")
Dim isRunning
isRunning = False

For Each objItem in colItems
  If InStr(objItem.CommandLine, "emacs.exe") Then
    isRunning = True
  End If
Next

parent = fso.GetParentFolderName(WScript.ScriptFullName)
If WScript.Arguments.Count = 1 Then
  If isRunning Then
    callString = parent & "/emacsclientw.exe -n """ &
WScript.Arguments(0) & """"
  Else
    callString = parent & "/runemacs.exe """ & WScript.Arguments(0) & """"
  End If
Else
  If isRunning Then
    callString = parent & "/emacsclientw.exe -n -e ""(raise-frame)"""
  else
    callString = parent & "/runemacs.exe"
  End If
End if
objShell.Run(callString)


On Windows I wrote e.bat. Usually at Total Commander or Far file manager I find file by cursor, type e<space><CTRL+Enter> and emacs popup with opened file (if it already not opened I get error and quickly type <Enter>). As for me `--no-wait' very useful not needed type C-x # and I can come back to the opened file later typing C-x b.

@echo off
REM Copyright (C) 2008 by Oleksandr Gavenko <gavenko_a@gmail.com>

REM View file in emacs buffer using emacsclientw.
REM If emacs not already running, run it.
REM Put this file (e.bat) in your PATH.
REM Name `e' because `edit'.

if "%1" == "-h"     goto usage
if "%1" == "-help"  goto usage
if "%1" == "--help" goto usage

%HOME%\..\bin\emacs\bin\emacsclientw.exe -a emacs -n "%*"
goto EOF

:usage
@echo Win emacs run script.
@echo Usage
@echo e [-h^|--help] ^<edit-files^>

:EOF


reply via email to

[Prev in Thread] Current Thread [Next in Thread]