Editor ASCII integrato basato su GUI per OS X

1

Sto provando a richiamare a livello di programmazione un editor OS X da uno script che:

  • non aggiunge virgolette intelligenti o caratteri non ascii durante la modifica
  • funzionerà "out of the box" su qualsiasi sistema mac standard
  • consente all'utente di fare clic con il mouse per posizionare il cursore

Purtroppo Nano e gli amici non consentono il posizionamento del cursore, e Apple ha perso la testa con gli aggiornamenti di TextEdit e ha davvero distrutto quell'editor!

La mia migliore speranza è che ci sia un modo programmatico per configurare TextEdit affinché si comporti come un editor ASCII. In alternativa, esiste un editor di terze parti la cui licenza consente di includere il mio script per soddisfare questa esigenza?

===== CONTESTO DI UTILIZZO  Ho uno script python che esegue 'out-of-the-box' su qualsiasi mac. Ora voglio che lo script invochi un editor su un file ASCII che mi serve come file ASCII.
Non voglio richiedere all'utente di eseguire la configurazione manuale, voglio che lo script si inizializzi da solo. Idealmente non cambierebbe alcuna impostazione dell'ambiente globale, ma posso dare quel secondo requisito, se non ho scelta.

    
posta Dan Oblinger 22.05.2015 - 06:17
fonte

4 risposte

5

Qualsiasi texteditor e amp; textutil

Ancora incuriosito dal tuo problema ho trovato la seguente soluzione. Esiste un'app Terminal chiamata textutil e consente di convertire testo in testo in piano.

  • Modifica e salva il testo "Rich" in qualsiasi modo desideri (come in TextEdit).
  • Usa il comando textutil per convertire il tuo testo ricco in testo normale

    textutil richtext.rtf -convert txt
    
  • Puoi anche reindirizzare l'output textutil a sed per sostituire le smartquotes e fare quello che vuoi con esso

    textutil richtext.rtf -convert txt -stdout | sed s/[”“]/'"'/g
    

diventa:

Hello,thisisrichTextwith"smart" quotes

    
risposta data 22.05.2015 - 16:02
fonte
3

TextEdit

Hai detto che Apple ha perso la testa con TextEdit. In che modo in particolare? Ad ogni modo, suggerire TextEdit:

  • Può aprire qualsiasi file .txt come testo semplice
  • Funziona fuori dagli schemi
  • Consente agli utenti di utilizzare il mouse

Puoi elencare le tue attuali preferenze in modo programmatico come:

defaults read com.apple.TextEdit

È sempre possibile impostare le preferenze in modo programmatico come segue:

defaults write com.apple.TextEdit RichText 0

TenerepresentecheleimpostazionidisistemaperlevirgoletteavoltepossonointerferireconleimpostazionidellevirgoletteinTextEdit.Perdisabilitarelevirgoletteintelligentialivellodisistema:

  • VaiaPreferenzedisistema->Tastiera
  • Vaiallascheda"Testo"
  • Deseleziona la casella "Utilizza virgolette e trattini intelligenti"

    
risposta data 22.05.2015 - 07:54
fonte
1

HTML / Javascript

Un modo per fare alcune semplici modifiche al testo indipendentemente dal sistema sta usando una combinazione di HTML e Javascript. Questo è Ascii il più semplice possibile.

Il seguente codice è spudoratamente rubato da thiscouldbebetter.wordpress.com e ti fornirà indicazioni su come implementarlo.

<html>
<body>

<table>
  <tr><td>Text to Save:</td></tr>
  <tr>
    <td colspan="3">
      <textarea id="inputTextToSave" style="width:512px;height:256px"></textarea>
    </td>
  </tr>
  <tr>
    <td>Filename to Save As:</td>
    <td><input id="inputFileNameToSaveAs"></input></td>
    <td><button onclick="saveTextAsFile()">Save Text to File</button></td>
  </tr>
  <tr>
    <td>Select a File to Load:</td>
    <td><input type="file" id="fileToLoad"></td>
    <td><button onclick="loadFileAsText()">Load Selected File</button><td>
  </tr>
</table>

<script type='text/javascript'>

function saveTextAsFile()
{
  var textToWrite = document.getElementById("inputTextToSave").value;
  var textFileAsBlob = new Blob([textToWrite], {type:'text/plain'});
  var fileNameToSaveAs = document.getElementById("inputFileNameToSaveAs").value;

  var downloadLink = document.createElement("a");
  downloadLink.download = fileNameToSaveAs;
  downloadLink.innerHTML = "Download File";
  if (window.webkitURL != null)
  {
    // Chrome allows the link to be clicked
    // without actually adding it to the DOM.
    downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob);
  }
  else
  {
    // Firefox requires the link to be added to the DOM
    // before it can be clicked.
    downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
    downloadLink.onclick = destroyClickedElement;
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
  }

  downloadLink.click();
}

function destroyClickedElement(event)
{
  document.body.removeChild(event.target);
}

function loadFileAsText()
{
  var fileToLoad = document.getElementById("fileToLoad").files[0];

  var fileReader = new FileReader();
  fileReader.onload = function(fileLoadedEvent) 
  {
    var textFromFileLoaded = fileLoadedEvent.target.result;
    document.getElementById("inputTextToSave").value = textFromFileLoaded;
  };
  fileReader.readAsText(fileToLoad, "UTF-8");
}

</script>

</body>
</html>
    
risposta data 22.05.2015 - 08:03
fonte
1

Nano consente il posizionamento dei cursori. Ovviamente, questo è dovuto al fatto che il Terminale stesso fornisce questa opzione . Semplicemente Opzione + Clicca dove ti serve per andare. Questa era precedentemente un'opzione che dovevi abilitare nelle Preferenze Terminale, ma per le ultime versioni di OS X, è abilitata di default (o codificata). Funzionerà nella maggior parte dei programmi della riga di comando, inclusi altri editor come vim o emacs.

Un'altra opzione abilitata per impostazione predefinita è Scroll Alternative Screen . Consente di scorrere le schermate interattive come man o nano invece di scorrere lo schermo del terminale. Funziona con lo scorrimento da un touchpad o una rotella di scorrimento o anche con una rotellina del mouse magico.

    
risposta data 07.10.2015 - 03:20
fonte

Leggi altre domande sui tag