[Linuxtrent] Programmare con (X)Emacs

  • From: Luca Manini <manini@xxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Fri, 21 Jun 2002 09:34:20 +0200

>>>>> "Claudio" == Claudio Granatiero <claudiog@xxxxxxxxxxxxx> writes:

    Claudio> In particolare, esiste un modo per avere da qualche parte
    Claudio> (status line, prima riga, al limite in un menu
    Claudio> contestuale) il nome della funzione in cui si trova il
    Claudio> cursore?  

    Una quasi-rapida ricerca mi ha portato su questa pagina, che mi
    sembra interessante, al momento vado di fretta, ma poi gli dò
    un'occhiata.

        
http://www.cs.washington.edu/~voelker/ntemacs/discuss/emacs20-3-which-func-mode

    Claudio> Mi spiego meglio: mi trovo a dover analizzare
    Claudio> spesso sorgenti in C in cui certe funzioni occupano
    Claudio> alcune pagine. Saltarellando allegramente in giro con C-s
    Claudio> alla ricerca di variabili, mi piacerebbe capire subito
    Claudio> dove sono, senza dover andare alla ricerca della
    Claudio> definizione tre pagine più sopra...

    Per "gironzolare" nel codice può essere utile utilizzare TAGS

        C-h i emacs s tags

    Io, con Python ho usato anche oo-browser (che funzia anche per
    C++), un po' "strano", ma utile (per C liscio non saprei).

    Il supporto di outlining in (GNU) Emacs è purtroppo un po'
    "ridicolo", soprattutto perchè hanno fatto un casino bestiale con
    i nomi (qualcuno ci azzecca sempre con branches, subtrees, levels,
    body...) e per non aver messo i binding ovvi (il + e il - del
    tastierino). Per questo io lo uso meno di quanto dovrei (potrei). 

    A suo tempo (Delphi sotto Windoze...andato...) mi ero organizzato
    come segue (snippet del .emacs - non ricordo un granché,
    outline-regexp definisce le parole chiave del primo (e unico)
    livello di nesting (in C-mode probabilmente basti l'indentazione),
    ma la cosa più utile sono i define-key che corrispondono a ciò che
    io trovo "naturale". Vedi se ti ci raccapezzi, altrimenti me li
    "ristudio" un po' per il C. 

        bye, Luca




;;; Aggiungo i miei comandi, definiti come lambda function, all'hook
;;; che viene chiamato dal delphi-mode quando "parte". In realtà,
;;; nella documentazione, dice che l'hook viene chiamato se non nil,
;;; quindi forse dovrei testare se l'hook esiste e se non esiste
;;; ßostituirlo" con come la mia lamba altrimenti aggiungere la mia
;;; lamba a quello esistente (spererei che add-hook lo faccia da
;;; solo...)

(add-hook 
 'delphi-mode-hook
 '(lambda ()
    
    ;; Diciamo che lo voglio sempre...
    
    (outline-minor-mode 1)
    
    ;; Qui definisco i miei "tag"di sectioning...
    
    (set-variable 'outline-regexp 
                  
"//\\|unit\\|interface\\|implementation\\|type\\|procedure\\|function")

    ;; Qui vorrei definire delle associazioni (locali al minor-mode)
    ;; per le quattro cose che servono

    (define-key outline-minor-mode-map
      [\C-kp-multiply]
      'show-all)
    (define-key outline-minor-mode-map
      [\C-kp-divide]
      'hide-body)
    (define-key outline-minor-mode-map
      [\C-kp-add]
      'show-entry)
    (define-key outline-minor-mode-map
      [\C-kp-subtract]
      'hide-entry)
    )
)




-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con SOGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: