Malfunzionamenti dell'accoppiata Matlab - Emacs

Utilizzo di applicazioni in ambito professionale.
Scrivi risposta
Avatar utente
farno
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4046
Iscrizione: venerdì 9 giugno 2006, 22:30

Malfunzionamenti dell'accoppiata Matlab - Emacs

Messaggio da farno »

Ho qualche piccolo problema nel far funzionare bene Emacs per editare i file .m di Matlab.
Ovviamente ho opportunamente configurato Emacs per andare in Matlab-mode:

Codice: Seleziona tutto

;; ==============================================================
;; MATLAB =======================================================
;; ==============================================================

;;; Matlab-mode setup:

;; Add local lisp folder to load-path
(setq load-path (append load-path (list
"/usr/share/emacs/site-lisp/emacs-goodies-el/matlab.el")))

;; Set up matlab-mode to load on .m files
(autoload 'matlab-mode "matlab" "Enter MATLAB mode." t)
(setq auto-mode-alist (cons '("\\.m\\'" . matlab-mode) auto-mode-alist))
(autoload 'matlab-shell "matlab" "Interactive MATLAB mode." t)

;; Customization:
(setq matlab-indent-function t)    ; if you want function bodies indented
(setq matlab-verify-on-save-flag nil) ; turn off auto-verify on save
(defun my-matlab-mode-hook ()
  (setq fill-column 76))        ; where auto-fill should wrap
(add-hook 'matlab-mode-hook 'my-matlab-mode-hook)
(defun my-matlab-shell-mode-hook ()
  '())
(add-hook 'matlab-shell-mode-hook 'my-matlab-shell-mode-hook)

;; Turn off Matlab desktop
(setq matlab-shell-command-switches '("-nojvm"))
1) Se c'e' un end di troppo e provo a indentarlo Emacs crasha brutalmente. E questo e' un rischio che corro spesso grazie al discreto numero di if e cicli for che inserisco nel mio codice.

2) In Emacs c'e' una funzione molto comoda che permette di sistemare un paragrafo quando ci sono delle righe troppo lunghe: si tratta del fill-paragraph (che puo' essere lanciato con esc-q o con alt-q). Il problema e' che non funziona a dovere.
Questo e' come dovrebbe essere il file (i ... servono per far capire a Matlab che deve andare accapo):

Codice: Seleziona tutto

f_loc(i)=f_loc(i)+(area/60)*tau*fattore*(3*(F(p(1,ver(1)), ...
            p(2,ver(1)))+F(p(1,ver(2)),p(2,ver(2)))+F(p(1,ver(3)), ...
            p(2,ver(3))))+8*(F(medio(1,1),medio(1,2))+F(medio(2,1), ...
            medio(2,2))+F(medio(3,1),medio(3,2)))+27*F(bari(1),bari(2)));
mentre questo e' quello che succede:

Codice: Seleziona tutto

f_loc(i)=f_loc(i)+(area/60)*tau*fattore*(3*(F(p(1,ver(1)), ...
                                                      p(2,ver(1)))+F(p(1, ...
                                                          ver(2)),p(2, ...
                                                          ver(2)))+F(p(1,ver(3)), ...
                                                          p(2,ver(3))))+ ...
                                                 8*(F(medio(1,1),medio(1, ...
                                                          2))+F(medio(2,1), ...
                                                          medio(2,2))+ ...
                                                    F(medio(3,1),medio(3, ...
                                                          2)))+27* ...
                                                 F(bari(1),bari(2)));
La stessa cosa accade se vado accapo manualmente e poi tento di indentare con tab.
Come si vede il risultato e' bruttino e anche scomodo (fa perdere un sacco di righe).

Potrei usare anche l'editor di Matlab, ma francamente la produttivita' ne risente sensibilmente.

Qualcuno ha gia' incontrato questo problemi e/o sa come fissarli?
"Ci sono tre modi di fare le cose: quello giusto, quello sbagliato e quello di Max Power."
"Ma non è sbagliato anche quello?"
"Sì, ma più svelto!" - Multimedia per pigri
Scrivi risposta

Ritorna a “Applicazioni professionali”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 3 ospiti