Comment aligner à droite la région et / ou la ligne?

10

Nous pouvons centrer le texte avec M-x center-regionet M-o M-s. Existe-t-il quelque chose de similaire pour l'alignement à droite?

Exemple avant:

Item 0: value                                                       |
Item 100: value                                                     |
Item 30: value                                                      |

après:

                                                       Item 0: value|
                                                     Item 100: value|
                                                      Item 30: value|
                                                       fill-column  ^

Quelle est la façon la plus simple d'aligner le texte à droite?

Mark Karpov
la source

Réponses:

13

Selon le nœud manuel sur le remplissage , plusieurs des fonctions de remplissage prennent un argument JUSTIFY facultatif que vous pouvez utiliser. Ainsi, par exemple, pour remplir un paragraphe avec une justification correcte, vous pouvez utiliser (fill-paragraph 'right).

Vous pouvez également utiliser (justify-current-line 'right)pour une seule ligne.

Si vous prévoyez d'utiliser beaucoup ces options, vous pouvez les encapsuler dans des fonctions, telles que les suivantes, puis lier ces fonctions aux touches de votre choix:

(defun right-justify-current-line ()
  "Right-justify this line."
  (interactive)
  (justify-current-line 'right))

(defun right-fill-paragraph ()
  "Fill paragraph with right justification."
  (interactive)
  (fill-paragraph 'right))

Voici une fonction que vous pourriez remplacer en remplacement fill-paragraph. Avec différents préfixes, il vous permet de décider quel type de justification utiliser sur le paragraphe que vous remplissez:

(defun fill-paragraph-dwim (&optional arg)
  "Fills the paragraph as normal with no prefix. With C-u,
right-justify.  With C-u C-u, center-justify.  With C-u C-u C-u,
full-justify."
  (interactive "p")
  (fill-paragraph (cond ((= arg 4)  'right)
                        ((= arg 16) 'center)
                        ((= arg 64) 'full))))

Si vous ne voulez pas remplir lorsque vous êtes aligné à droite, vous pouvez utiliser la fonction suivante, qui est directement ajoutée à la center-regionfonction avec une modification sur une seule ligne pour l'aligner à la place:

(defun right-region (from to)
  "Right-justify each nonblank line starting in the region."
  (interactive "r")
  (if (> from to)
      (let ((tem to))
    (setq to from from tem)))
  (save-excursion
    (save-restriction
      (narrow-to-region from to)
      (goto-char from)
      (while (not (eobp))
    (or (save-excursion (skip-chars-forward " \t") (eolp))
        ;; (center-line))              ; this was the original code
        (justify-current-line 'right)) ; this is the new code
    (forward-line 1)))))
Dan
la source