Loading ...
Sorry, an error occurred while loading the content.

2630Re: [jasspa] Re: Passing value of varaiable from command line to the start-up macro

Expand Messages
  • Jon Green
    Jan 29, 2011
    • 0 Attachment
      On 29/01/2011 09:58, igcain wrote:
      >
      >
      > --- In jasspa@yahoogroups.com, Jon Green<jon@...> wrote:
      >>
      >> On 28/01/2011 17:36, igcain wrote:
      >>>
      >>> --- In jasspa@yahoogroups.com, Jon Green<jon@> wrote:
      >>>> On 27/01/2011 20:58, igcain wrote:
      >>>>> Hi there
      >>>>>
      >>>>> I want to invoke the ne editor such that when it starts it goes to a specified line of text ready for over typing. My start-up macro in ne.emf looks something like;
      >>>>>
      >>>>> define-macro start-up
      >>>>> 19 buffer-mode "over"
      >>>>> !force search-buffer "M" "MONTH= "
      >>>>> end-of-line
      >>>>> !macro
      >>>>>
      >>>>> unfortunately my start-up macro (as currently written) only ever goes to the string constant "MONTH= ". But what I really would like to do is execute the command line with;
      >>>>>
      >>>>> ne -vVarName="MONTH= " somefile
      >>>>>
      >>>>> where VarName can be substituted for any string that happens to be present in the file to be ediited. Only thing is how do I reference the variable VarName within the start-up macro?
      >>>>>
      >>>>> Any help, much appreciated
      >>>>> Ian
      >>>>>
      >>>> Hi Ian,
      >>>>
      >>>> VarName needs to be a MicroEmacs variable i.e. $foo so you will do:
      >>>>
      >>>> ne -v"$foo=MONTH= " somefile
      >>>>
      >>>> Then in your start-up macro you reference the variable $foo.
      >>>>
      >>>> search-buffer "M" $foo
      >>>>
      >>>> You will need to be careful about how you quote the argument on the command
      >>>> line if there are any special characters or spaces. This will depend on the
      >>>> operating system you are using.
      >>>>
      >>>> Before you test the start-up macro probably best to play with starting the
      >>>> editor with the variable setting on the command line and checking that the
      >>>> variable is coming through correctly with a
      >>>>
      >>>> esc-x describe-variable $foo
      >>>>
      >>>> This will show you the variable value. If it is OK then you can work on the
      >>>> start-up.
      >>>>
      >>>> Regards
      >>>> Jon
      >>>>
      >>> Jon
      >>>
      >>> thanks for the reply. One question how do I know which variable I can use?
      >>>
      >>> Ian
      >>>
      >> Hi Ian,
      >>
      >> You can use any variable that is *NOT* listed in
      >>
      >> esc-x list-variables
      >>
      >> These are ME's variables that are used by macros.
      >> Also avoid any environment variable (i.e. $DISPLAY as used on UNIX).
      >>
      >> So something like $arg1 would be a sensible choice i.e.
      >> -v$arg1=This -v$arg2=and -v$arg3=that
      >>
      >> Regards
      >> Jon.
      >>
      > Thanks for the advice Jon. Unfortunately $arg1 doesn't work all I get is "arg1: Undefined variable" when I use the command line
      > ne -v$arg1="Hello" greeting.dat
      >
      > Do you think the fact I am using nanoEmacs is an issue?
      >

      Hi Ian,

      Should not be a problem. Problem is what O/S you are running.
      So I am running on Sun Solaris at the moment and I can do:

      orac% ne -v'$arg1=Hello'

      ne runs up as normal

      Then I can do a

      esc-x describe-variable $arg1

      and it is says "Hello" which is what I expect because that is what I passed.

      On UNIX then I have to protect the $arg1 from the shell (zsh in my case) so I
      have protected it with single quotes which stops the shell from expanding it.

      If I do *NOT* quote it then the command shell complains i.e.

      orac% ne -v$arg1=Hello
      ne Error: Cannot set variable [] from the command-line

      My best guess is that this is probably what you are seeing. So I think you are
      currently fighting with your command shell and not ne. Protect the string with
      a single quote pair (on UNIX/Linux/BSD), possibly it is a double quotes pair on
      Windows (do not quote me on Windows as I am not an expert and a infrequent user).

      I have to admit that I do not use "ne" at all now as it does not carry all of
      the baggage that I need, specifically the directory listing stuff. The only
      time I have really used ne in the past is in bringing up systems where I need
      an editor quickly and can FTP/HTTP the image onto the machine or where I need
      to admin a system but do not want to install any packages. Given that disk
      space memory is not such a problem these days then I much prefer the fully
      featured "me" with UK/US spelling dictionaries installed and use the Zero
      install image (http://www.jasspa.com/zeroinst.html) with a customised macro
      file bundle which includes the spelling dictionaries and my extended file
      template macros. The end result is that the file is much bigger but I still
      have a single executable image "me" that I do not need to install and can just
      run. Even on something like the EEE-PC where disk space is tight then I still
      find the zero install image better. On such a space constrained device it uses
      a much smaller footprint than a standard me install with the macro files
      individually separately installed because the archive extension uses
      compression and you do not suffer from the disk block size losses of each
      individual small file.

      Regards
      Jon.
    • Show all 8 messages in this topic