Fare in modo che il paragrafo di riempimento di Emacs funzioni bene con commenti simili a Javadoc

StackOverflow https://stackoverflow.com/questions/71788

  •  09-06-2019
  •  | 
  •  

Domanda

Sto scrivendo una modalità major di Emacs per un dialetto APL che utilizzo al lavoro.Ho ottenuto il blocco dei caratteri di base al lavoro, e dopo aver impostato il commento e il commento-skip, anche la regione di commento/rarement e il paragrafo di riempimento.

Tuttavia, i blocchi di commento spesso contengono commenti in stile Javadoc e vorrei che il paragrafo di riempimento eviti di incollare le righe che iniziano con tali comandi.

Se ho questo (\ invece di javadoc @):

# This is a comment that is long and should be wrapped.
# \arg Description of argument
# \ret Description of return value

M-q mi dà:

# This is a comment that is long and
# should be wrapped. \arg Description
# of argument \ret Description of
# return value

Ma io voglio:

# This is a comment that is long and
# should be wrapped.
# \arg Description of argument
# \ret Description of return value

Ho provato a impostare il paragrafo e il paragrafo separati ai valori appropriati, ma il paragrafo di riempimento non funziona ancora all'interno di un blocco di commenti.Se rimuovo gli indicatori di commento, MQ funziona come voglio, quindi il regexp che uso per il paragrafo sembra funzionare.

Devo scrivere un paragrafo di riempimento personalizzato per la mia modalità principale?CC-Mode ha uno che gestisce casi come questo, ma è davvero complesso, mi piacerebbe evitarlo se possibile.

È stato utile?

Soluzione

Il problema era che l'espressione regolare di inizio paragrafo deve corrispondere all'intera riga per funzionare, incluso il carattere del commento effettivo.La seguente elisp funziona per l'esempio che ho fornito:

(setq paragraph-start "^\\s-*\\#\\s-*\\\\\\(arg\\|ret\\).*$")

Ecco una pagina che ha un esempio di espressione regolare per la modalità php che fa questo:http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/

Altri suggerimenti

Esistono altre modalità che utilizzano funzioni meno complesse fill-paragraph-function.Esplorando la mia installazione, sembra che quelli in modalità ada e make-mode siano buoni esempi.

Ciò che faccio in questi casi è aprire una riga vuota tra le righe del paragrafo e quelle degli argomenti, quindi utilizzare M-q per mandare a capo le righe del paragrafo, quindi eliminare la riga vuota tra di loro.Non è l'ideale, ma funziona ed è abbastanza facile da registrare in una macro se è necessario ripeterla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top