Una macro Javascript per TeXStudio

Visualizzazione 6 filoni di risposte
  • Autore
    Risposte
    • #102065
      Up
      0
      Down
      ::


      Curiosità: è possibile fare in modo che il timestamp venga aggiunto in automatico ogni volta che si salva il documento?

    • #102066
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        Elrond” post=101857Curiosità: è possibile fare in modo che il timestamp venga aggiunto in automatico ogni volta che si salva il documento?

        Ciao Elrond.
        Conviene fare una voce di menù apposta tramite l’oggetto app.fileSave().
        In questo modo posso salvare nel modo semplice o in modo che alla linea per esempio 4 viene preventivamente inserito il timestamp.
        Il numero di riga fisso comporta il fatto che ogni volta che salvi con lo script si allunghi una lista di timestamp dal più recente al meno recente.

        Ho provato questo codice e funziona. L’unica cosa è che il timestamp viene inserito anche se il file non dovrebbe venir salvato perché non sono intervenute modifiche:
        `
        %SCRIPT

        var dt = new Date()
        var y = dt.getFullYear()
        var m = dt.getMonth() + 1
        if (m < 10) { m = "0" + m} var d = dt.getDate() var s1 = "% " + d + "/" + m + "/" + y var hour = dt.getHours() var min = dt.getMinutes() if (min<10) {min = "0"+min} var sec = dt.getSeconds() if (sec<10) {sec = "0" + sec} var s2 = " :: " + hour + ":" + min + ":" + sec var line = cursor.lineNumber() var col = cursor.columnNumber() cursor.moveTo(4,1) cursor.insertLine() cursor.insertText(s1 + s2) cursor.moveTo(line+1, col) app.fileSave() ` Ho letto il manuale con attenzione e non mi sembra che ci sia la possibilità di leggere lo stato del documento. R.

      • #102067
        Up
        0
        Down
        ::

        robitex” post=101862

        Curiosità: è possibile fare in modo che il timestamp venga aggiunto in automatico ogni volta che si salva il documento?

        Ciao Elrond.
        Conviene fare una voce di menù apposta tramite l’oggetto app.fileSave().
        In questo modo posso salvare nel modo semplice o in modo che alla linea per esempio 4 viene preventivamente inserito il timestamp.
        Il numero di riga fisso comporta il fatto che ogni volta che salvi con lo script si allunghi una lista di timestamp dal più recente al meno recente.

        Ho provato questo codice e funziona. L’unica cosa è che il timestamp viene inserito anche se il file non dovrebbe venir salvato perché non sono intervenute modifiche:
        `
        %SCRIPT

        var dt = new Date()
        var y = dt.getFullYear()
        var m = dt.getMonth() + 1
        if (m < 10) { m = "0" + m} var d = dt.getDate() var s1 = "% " + d + "/" + m + "/" + y var hour = dt.getHours() var min = dt.getMinutes() if (min<10) {min = "0"+min} var sec = dt.getSeconds() if (sec<10) {sec = "0" + sec} var s2 = " :: " + hour + ":" + min + ":" + sec var line = cursor.lineNumber() var col = cursor.columnNumber() cursor.moveTo(4,1) cursor.insertLine() cursor.insertText(s1 + s2) cursor.moveTo(line+1, col) app.fileSave() ` Ho letto il manuale con attenzione e non mi sembra che ci sia la possibilità di leggere lo stato del documento. R.[/quote] Peccato, un certo editor di mia conoscenza lo fa ed è comodo per esempio quando bisogna inserire la data in comandi come [tt]\ProvidesPackage[/tt] e [tt]\ProvidesFile[/tt]: in questo modo non ci si deve mai preoccupare di aggiornare la data, viene fatto sempre in automatico a ogni salvataggio. Vedi per esempio https://github.com/GuITeX/guidaemacsauctex/blob/master/guidaemacsauctex.tex, basta configurare la variabile [tt]time-stamp-pattern[/tt] in fondo al file. Se in un file ci sono sia [tt]\ProvidesPackage[/tt] sia [tt]\ProvidesFile[/tt] Emacs può aggiornare automaticamente entrambi, però bisogna dirgli di aggiornare due timestamp (in maniera predefinita ne fa solo uno) cambiando anche la variabile [tt]time-stamp-count[/tt]

      • #102068
        robitex
        Amministratore del forum
          Up
          0
          Down
          ::

          Elrond” post=101867

          Curiosità: è possibile fare in modo che il timestamp venga aggiunto in automatico ogni volta che si salva il documento?

          Ciao Elrond.
          Conviene fare una voce di menù apposta tramite l’oggetto app.fileSave().
          In questo modo posso salvare nel modo semplice o in modo che alla linea per esempio 4 viene preventivamente inserito il timestamp.
          Il numero di riga fisso comporta il fatto che ogni volta che salvi con lo script si allunghi una lista di timestamp dal più recente al meno recente.

          Ho provato questo codice e funziona. L’unica cosa è che il timestamp viene inserito anche se il file non dovrebbe venir salvato perché non sono intervenute modifiche:
          `
          %SCRIPT

          var dt = new Date()
          var y = dt.getFullYear()
          var m = dt.getMonth() + 1
          if (m < 10) { m = "0" + m} var d = dt.getDate() var s1 = "% " + d + "/" + m + "/" + y var hour = dt.getHours() var min = dt.getMinutes() if (min<10) {min = "0"+min} var sec = dt.getSeconds() if (sec<10) {sec = "0" + sec} var s2 = " :: " + hour + ":" + min + ":" + sec var line = cursor.lineNumber() var col = cursor.columnNumber() cursor.moveTo(4,1) cursor.insertLine() cursor.insertText(s1 + s2) cursor.moveTo(line+1, col) app.fileSave() ` Ho letto il manuale con attenzione e non mi sembra che ci sia la possibilità di leggere lo stato del documento. R.[/quote] Peccato, un certo editor di mia conoscenza lo fa ed è comodo per esempio quando bisogna inserire la data in comandi come [tt]\ProvidesPackage[/tt] e [tt]\ProvidesFile[/tt]: in questo modo non ci si deve mai preoccupare di aggiornare la data, viene fatto sempre in automatico a ogni salvataggio. Vedi per esempio https://github.com/GuITeX/guidaemacsauctex/blob/master/guidaemacsauctex.tex, basta configurare la variabile [tt]time-stamp-pattern[/tt] in fondo al file. Se in un file ci sono sia [tt]\ProvidesPackage[/tt] sia [tt]\ProvidesFile[/tt] Emacs può aggiornare automaticamente entrambi, però bisogna dirgli di aggiornare due timestamp (in maniera predefinita ne fa solo uno) cambiando anche la variabile [tt]time-stamp-count[/tt][/quote]
          😀 e io che non avevo capito l’ironia…

        • #102069
          Up
          0
          Down
          ::

          robitex” post=101913😀 e io che non avevo capito l’ironia…

          🙂

        • #102070
          claudio
          Partecipante
            Up
            0
            Down
            ::


            bella ed inserita
            solo un piccolo problema
            se la riga 4 è occupata
            succede questo
            `
            \documentclass[10pt,a4paper]{book}
            \usepackage[utf8]{inputenc}
            \usepackage{amsmath}
            \usepackage{amsfonts}
            \
            % 16/06/2015 :: 9:41:06usepackage{amssymb}
            \usepackage{graphicx}
            \begin{document}
            prova
            \end{document}
            `
            ciao
            claudio

          • #102071
            robitex
            Amministratore del forum
              Up
              0
              Down
              ::


              Ah ah ah.
              Nei miei file la riga 4 è quasi sempre libera perché uso le righe magiche.
              Possiamo modificare lo script per inserire il timestamp alla riga successiva di quella che contiene una chiave prestabilita.
              Le funzioni per ricercare il testo abbondano.
              Per esempio:
              `
              \documentclass[10pt,a4paper]{book}
              \usepackage[utf8]{inputenc}
              \usepackage{amsmath}
              \usepackage{amsfonts}
              \usepackage{amssymb}
              \usepackage{graphicx}

              % timestamp list
              % 16/06/2015 :: 9:41:06

              \begin{document}
              prova
              \end{document}
              `
              R.

          Visualizzazione 6 filoni di risposte
          • Devi essere connesso per rispondere a questo topic.

          Go to top