OVH Cloud OVH Cloud

[DEV] Commentez ce code

2 réponses
Avatar
Xavier Maillard
--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

Plop,

Je me suis créé une petite macro toute bête comme suit:


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: inline

(defmacro hide-trailing-whitespace-maybe (m &optional hide)
"Maybe hide trailing whitespace in `m' mode buffers.

If provided, and hide argument is non-nil, hide."
`(let ((mode (intern (concat (symbol-name ,m) "-mode-hook")))
(hide (eq t ,hide)))
(add-hook mode
(lambda ()
,(if (eq t hide)
`(setq show-trailing-whitespace nil)
`(setq show-trailing-whitespace t))
))))



--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit


Comme vous pouvez le constatez, son rôle est d'afficher ou non
suivant le paramètre HIDE, les espaces en fin de ligne dans le
mode donné en paramètre (M).

Voici comment je l'utilise:


--=-=-=
Content-Type: application/emacs-lisp
Content-Disposition: inline

;; Hide extra whitespaces for these modes
(mapc (lambda (mode)
(hide-trailing-whitespace-maybe mode t))
'(buffer-menu custom text term info comint
apropos tooltip gnus-article mail
gnus-summary message gnus-group eshell
w3 diff tla-log-edit tla-inventory))


--=-=-=
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit

Ma question est donc toute simple, ormis le fait que cette macro
n'est pas forcément utile (ie. c'est faisable plus simplement),
comment pourrais-je améliorer le code ? (ie. le rendre moins ...
gruik). Parce que là ça backquote dans tous les sens et je trouve
pas ça très "esthétique" même si ça fonctionne.

Vos commentaires/critiques sont les bienvenues.

Merci
--
.o. | zedek (at) gnu-rox.org
..o Hacker Wonderland |
ooo |


--=-=-=--

2 réponses

Avatar
Matthieu Moy
Xavier Maillard writes:

(defmacro hide-trailing-whitespace-maybe (m &optional hide)



Je ne pense pas qu'il soit nécessaire de mettre une macro ici. On peut
repousser le backquote un peu plus loin, et un defun devrait suffire :

If provided, and hide argument is non-nil, hide."



Vu la façon dont marchent les arguments optionnel, dire

"If hide is non-nil, hide"

C'est la même chose, c'est plus court.

`(let ((mode (intern (concat (symbol-name ,m) "-mode-hook")))
(hide (eq t ,hide)))
(add-hook mode
(lambda ()



(let ((mode (intern (concat (symbol-name ,m) "-mode-hook")))
^^^
(hide (eq t ,hide)))
(add-hook mode
`(lambda ()
^^^

,(if (eq t hide)
`(setq show-trailing-whitespace nil)
`(setq show-trailing-whitespace t))
))))



(setq show-trailing-whitespace ,(not hide))

?

Par ailleurs, les backquotes devant les setq auraient avantageusement
pu être remplacées par des quote à l'endroit, vu qu'il n'y a pas de
virgule dedans.

Vos commentaires/critiques sont les bienvenues.



J'ai assez décortiqué ? ;-)

--
Matthieu
Avatar
Xavier Maillard
On 5 oct 2004, Matthieu Moy wrote:

Xavier Maillard writes:

> (defmacro hide-trailing-whitespace-maybe (m &optional hide)

Je ne pense pas qu'il soit nécessaire de mettre une macro ici.
On peut repousser le backquote un peu plus loin, et un defun
devrait suffire :



Certes. C'est vrai qu'après relecture de cette macro, je me pose
des questions ;)

> If provided, and hide argument is non-nil, hide."

Vu la façon dont marchent les arguments optionnel, dire

"If hide is non-nil, hide"



1 point (dailleurs je ne passe pas au checkdoc avec ça).

C'est la même chose, c'est plus court.

> `(let ((mode (intern (concat (symbol-name ,m) "-mode-hook")))
> (hide (eq t ,hide)))
> (add-hook mode
> (lambda ()

(let ((mode (intern (concat (symbol-name ,m) "-mode-hook")))


^^^^

Ne marchera plus donc.

(hide (eq t ,hide)))
(add-hook mode
`(lambda ()
^^^



Oui.

> ,(if (eq t hide)
> `(setq show-trailing-whitespace nil)
> `(setq show-trailing-whitespace t))
> ))))

(setq show-trailing-whitespace ,(not hide))



C'est déjà comme ça que je fais, mais j'ai posté une version
toute fraîche brute de fonderie.

Par ailleurs, les backquotes devant les setq auraient
avantageusement pu être remplacées par des quote à l'endroit,
vu qu'il n'y a pas de virgule dedans.



1 point (encore).

> Vos commentaires/critiques sont les bienvenues.

J'ai assez décortiqué ? ;-)



Farpait ;) Merci pour l'objectivité.
--
Xavier Maillard
http://www.gnu-rox.org/~zedek/cgi-bin/wiki.pl