Hi Uwe,

Sorry, this is my fault : this patch does not correct the fact that
matlab-shell-save-and-go can work with scripts from anywhere. It only
corrects that we can now run functions with 1 or more parameters.

Here is an example :

1 - Open matlab-shell
2 - mkdir test-matlab-shell-save-and-go/
3 - Create a new file test.m under this new directory :
  function test(p1)
  disp(['hello ' num2str(p1) '!'])
4 - Do a matlab-shell-save-and-go from this file.
5 - Enter (5) in the minibuffer prompt and press enter
6 - Without the patch you get one error:
  >> run('/home/jc/test-matlab-shell-save-and-go/test')
  Not enough input arguments.

  Error in test (line 2)
  disp(['hello ' num2str(p1) '!'])

  Error in run (line 91)
  evalin('caller', strcat(script, ';'));

7 - Apply the patch, and do the same. It works :
  >> addpath('/home/jc/test-matlab-shell-save-and-go/')
  >> test(5)
  hello 5!

Next time, I will provide an example immediately. I wrote this patch some
time ago (it was residing into my init.el file) and I was remembering wrong.
I put again the patch in attachment with a correct name.

Let me know if you note the difference.

Regards,

Julien


Le sam. 8 mai 2021 à 11:56, Uwe Brauer <o...@mat.ucm.es> a écrit :

> >>> "JCvM" == Julien Claisse via Matlab-emacs-discuss <
> matlab-emacs-discuss@lists.sourceforge.net> writes:
>
> > Hi,
> > I'm posting this patch for improving the matlab-shell-save-and-go
> command.
> > I'm not sure to understand all the different parts/customization of this
> > function but, in my case (by default) I end up at the end of it : where
> it
> > tries to run the full path file using the matlab "run" command.
> > This works only if the matlab shell is in the current file directory.
> > Moreover, it works only with scripts (no matlab function).
> > Here is my proposition:
> > @@ -2166,2 +2166,4 @@ Similar to  `comint-send-input'."
> > -     ;; If not changing dir, maybe we need to use 'run' command instead?
> > -     (let ((cmd (concat "run('" dir fn-name "')")))
> > +     ;; If not changing dir, maybe we need to use addpath command before
> > +     (let ((cmd (concat "addpath('" dir "')")))
> > +       (matlab-shell-send-command cmd))
> > +     (let ((cmd (concat fn-name param)))
>
> > Instead of using the run matlab function, first, we addpath the file
> > directory and then, we run the file with parameters if any. This way, we
> > can run a script or a function from within any location.
> > I check that addpath at each time do not increase the path uselessly:
> > matlab does nothing if it is already into the path.
>
> I am currently testing your patch, can you tell me where I can note a
> difference to the unpatched matlab-shell.el?
>
> I run some tests and cannot spot a difference. An example would
> definitely help
>
> Uwe
>


-- 

Cordialement, Kind regards


*Julien Claisse*

Software Engineer

*Moduleus S.A.S,*
34 rue Pierre et Marie Curie
37100 Tours, France

+33 (0)2 47 49 08 16 <+33%202%2047%2049%2008%2016>

www.moduleus.com
diff --git a/matlab-shell.el b/matlab-shell.el
index b2943d8..d7b063c 100644
--- a/matlab-shell.el
+++ b/matlab-shell.el
@@ -2163,8 +2163,10 @@ Similar to  `comint-send-input'."
 		(matlab-shell-send-string (concat cmd "\n"))
 		))
       
-	  ;; If not changing dir, maybe we need to use 'run' command instead?
-	  (let ((cmd (concat "run('" dir fn-name "')")))
+	  ;; If not changing dir, maybe we need to use addpath command before
+	  (let ((cmd (concat "addpath('" dir "')")))
+	    (matlab-shell-send-command cmd))
+	  (let ((cmd (concat fn-name param)))
 	    (matlab-shell-send-command cmd)))
 	))))
 
_______________________________________________
Matlab-emacs-discuss mailing list
Matlab-emacs-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss

Reply via email to