Newsgroup: it.comp.software.editor
Titolo: [VIM] HTML editing

Salve,
al di là di tutte le ricerche su google e su 
vim.org
 (purtroppo
ultimamente più down che altro) che ho fatto, avreste la bontà di
illustrarmi quali impostazioni, script o altro che *voi* usate per
l'editing di file html/xhtml. Non voglio trasformare Vim in un editor
WYSIWYG, ma magari automatizzarlo un pochino su alcune cose...
Grazie,
-- 
.           .  |"in girum imus nocte et consumimur igni"
| , ,-. ,-. |  |                             -- Virgilio
|<  |   ,-| |  |
' ` '   `-^ `' |<uggc://jjj.gurqvenpfrn.bet>


Alla fine pero` non ho usato con continuita` queste tecniche.
Secondo me bisogna distinguere due aspetti degli editor HTML,
prima di tentare di riprodurne certe funzionalita` con Vim o 
con un altro editor di testo:
  1. Anteprima WYSIWYG nell'editor HTML
  2. Automatizzazione nell'inserimento dei tag
Il primo aspetto e` secondo me concettualmente sbagliato, o 
se non altro fuorviante. Quello che si vede dentro nella preview
dell'editor HTML solo nella migliore delle ipotesi assomiglia a
quello che si vedra` nel browser (anzi: NEI browser).
Sul secondo punto invece c'e` grande margine di miglioramento,
secondo me.
La cosa su cui fantasticavo era la possibilita` di creare un
insieme di tool per il "massaging" di snippet HTML, ma non mi 
era chiaro quale architettura implementare per avere un set
di comandi armoniosamente strutturati.
Tipo. Metti di avere questo testo nel buffer:
  pippo
  pluto
  paperino
e di voler generare a partire da esso una cosa del genere:
  <ul>
    <li>pippo</li>
    <li>pluto</li>
    <li>paperino</li>
  </ul>
E` banale. Ma non e` altrettanto semplice realizzare un sistema
che includa questa funzionalita` e tale che: sia facile da estendere,
i comandi siano "intuitivi" (intuitivi alla Vim, intendo), sia
abbastanza intellingente da adattarsi a codice HTML gia` scritto
(e per questo pensavo a filtri basati su HTML::TokeParser::Simple).
Idee?
ciao,
S.
-- 
Stefano Rodighiero      |  
http://larsen.perlmonk.org/blog
mailto:
lar...@perl.it
   |  Italian Perl Mongers: 
http://www.perl.it

 writes:
SR> 2. Automatizzazione nell'inserimento dei tag
SR> Sul secondo punto invece c'e` grande margine di miglioramento,
SR> secondo me.
Occorre un editor programmabile, that's all.
-- 
 /\            ___
/___/\__|_|\_|__|___Gian Uberto Lauri_____________________
  //--\ | | \|  |   Integralista GNUslamico  
\/		    e coltivatore diretto di software

 Occorre un editor programmabile, that's all.
E Vim lo e`. Quel che dicevo e` che, superate le difficolta` 
pratiche della programmazione, non mi e` ancora venuta in mente
una struttura sensata (un framework, se vuoi chiamarlo cosi`) in
cui inserire tutti i comandi che andrei a preparare, e che sia
pronta ad essere integrata con le migliorie che mi verranno in 
mente nel tempo.


> Occorre un editor programmabile, that's all.
SR> E Vim lo e`.
Se  gli hanno inserito  un linguaggio  è perdita  di tempo.  Di editor
programmabili con  linguaggi validi ne  esistevano già. vi  era comodo
perché piccolo e leggero. Ottimo editor da amministrazione di sistema.
E lo stesso potevi "programmarlo" :).
SR> in
SR> cui inserire tutti i comandi che andrei a preparare, e che sia
SR> pronta ad essere integrata con le migliorie che mi verranno in
SR> mente nel tempo.
Il problema  è che si  parte da  un editor che  non è nato  per essere
programmabile,è nato come  una estensione a tutto schermo  di e. 
Se  comunque  puoi definire  dei  prefissi  puoi  usare una  serie  di
prefissi per le categorie di tag,  ed il o i tasti successivi ti fanno
arrivare al tag...
i.e. C-c C-t t (control  C control T T) inserisce <table></table>, C-c
C-t r inserisci <tr></tr> ...


 C-t r inserisci <tr></tr> ...
Quello si può fare, sarebbe da crearsi tutti gli snippets del caso.
Quella si Stefano non è una brutta idea, textile è abbastanza semplice e
gli strumenti ci sono. Mancano purtroppo alcune caratteristiche come il
modo per creare sezioni div o più banalmente impostare il titolo della
pagina, settare la parte head, etc...
Stavo pensando ad un'accoppiata tra :abbr e i vari snippet. Come ad
esempio digitando in inserimento \tab, ne risulti <table></table> e così
via.
Ciao,


 via.
Questo, per come la vedo io, e` un inizio ma e` troppo poco. 
Una cosa


 via.
Questo, per come la vedo io, e` un inizio ma e` troppo poco. 
Ecco un esempio di quello che intendevo.
A parte, ho preparato questo script. Si chiama 
setattr.pl
:
    --------------------------------------------------------
    #!/usr/bin/perl
    use strict;
    use warnings;
    use HTML::TokeParser::Simple;
    use Getopt::Long;
    my ($tag, $attr, $value, $snippet);
    GetOptions( "tag=s"     => \$tag
              , "attr=s"    => \$attr
              , "value=s"   => \$value
              , "snippet=s" => \$snippet
              );
    my $parser = HTML::TokeParser::Simple->new( \$snippet );
    while (my $token = $parser->get_token()) {
        if ($token->is_tag($tag)) {
            $token->set_attr( $attr, $value );
        }
        print $token->as_is();
    }
    --------------------------------------------------------
In .vimrc ho messo questa funzione. Č estremamente probabile
che sia una pena guardarla. Non sarebbe sorprendente, visto che
non so programmare Vim: chiedo agli esperti, anzi, di 
commentarla e correggerla, in particolare per il meccanismo
di sostituzione del testo selezionato.
    --------------------------------------------------------
    fun! SetAttr() range
        let tag   = input("Tag: ")
        let attr  = input("Attr: ")
        let value = input("New value for attribute " . attr . " : ")
        let n = a:firstline
        let text = ""
        while n <= a:lastline
            let text = text . getline(n)
            let n = n + 1
        endwhile
        exec ":'<,'>! ./
setattr.pl
 --tag=" . tag . " --attr=" . attr . "
--value=" . value . " --snippet='" . text . "'"
    endfunction
    --------------------------------------------------------
A questo punto la procedura consiste nello scrivere un pezzetto
di HTML, selezionarlo, e poi scrivere :call SetAttr(). Vim 
chiedera` il tag, l'attributo e il valore per quest'ultimo, e
applichera` la modifica a tutta la selezione.
Problemi:
  * Bisogna quotare gli apici nello snippet HTML selezionato
  * Tutti i newline dell'originale vanno in malora
  * ... altri che al momento non mi vengono in mente
ciao,
