home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 5 Edit / 05-Edit.zip / me34src.zip / me3 / mutt / builtin / indent.mut < prev    next >
Text File  |  1995-01-14  |  2KB  |  50 lines

  1. ;; indent.mut : Shift a block left or right
  2. ;; A block is all the lines of text between the dot and mark inclusive.
  3. ;; With no arg: asks for the amount to shift the region.  Positive
  4. ;;   for right shift, negative for left shift.
  5. ;; With arg (ie ^U):  shifts the region by the difference between the dot
  6. ;;   and the first nonblank character on that line.
  7. ;;   eg use this to shift the top line of the region over to the cursor.
  8. ;; Removes white space from blank lines.
  9. ;; When doing a negative shift, text won't be shifted left of the left
  10. ;;   margin.
  11. ;; C Durland    Public Domain
  12.  
  13. (include wspace.mut)
  14. (include runblock.mut)
  15.  
  16. (defun
  17.   indent-line (int shift-count) HIDDEN
  18.   {
  19.     (int col)
  20.  
  21.     (skip-whitespace)(col (current-column))    ; count blanks
  22.     (arg-prefix 0)(cut-line)            ; move text to left margin
  23.     (end-of-line)
  24.     (if (!= 1 (current-column))            ; indent if line not blank
  25.     {
  26.       (beginning-of-line)
  27.       (to-col (+ col shift-count))        ; indent text n more columns
  28.     })
  29.   }
  30.   indent-rigidly
  31.   {
  32.     (int col shift-count)
  33.  
  34.     (if (== 0            ;; if no shifting then don't do anything
  35.       (shift-count            ;; calculate the amount to shift
  36.     (if (arg-flag)            ;; by looking at the point
  37.       {
  38.         (arg-flag FALSE 1)        ;; reset arg count
  39.         (col (current-column))
  40.         (beginning-of-line)(skip-whitespace)
  41.         (- col (current-column))
  42.       }
  43.         ;; by asking
  44.       (convert-to NUMBER (ask "indent region by n spaces.  n = "))
  45.     )))
  46.       (done))
  47.     (run-pgm-on-block (floc indent-line) shift-count)
  48.   }
  49. )
  50.