format-time-string 의 문제인것 같은데 linux 에서는 eshell 상에서 ls -al 의 포매팅이 줄이 잘 맞지만 win32 에서는 줄이 흩어져서 보기가 흉하다.
오늘까지 걍 참고 썼는데 갑자기 눈에 거슬리길래 그냥 소스를 수정했다.
em-ls.el 의 eshell-ls-file 함수 코드중에 format-time-string 를 부르는 부분이 있는데 이중 "%b %e " 를 적절히 수정하면 된다. 나는 "%2b-%d " 로 사용중.
음 스샷에 찍힌것은 "%2b %d " 를 사용한것이군..
2009/06/09 추가. 그냥 수정한 함수 올려둔다. 별의미는 없다만 가까운 시일내에 또 삽질하게 되면 그냥 가져다 붙여야지
펼쳐두기..
(defun eshell-ls-file (fileinfo &optional size-width copy-fileinfo)
"Output FILE in long format.
FILE may be a string, or a cons cell whose car is the filename and
whose cdr is the list of file attributes."
(if (not (cdr fileinfo))
(funcall error-func (format "%s: No such file or directory\n"
(car fileinfo)))
(setq fileinfo
(eshell-ls-annotate (if copy-fileinfo
(cons (car fileinfo)
(cdr fileinfo))
fileinfo)))
(let ((file (car fileinfo))
(attrs (cdr fileinfo)))
(if (not (eq listing-style 'long-listing))
(if show-size
(funcall insert-func (eshell-ls-size-string attrs size-width)
" " file "\n")
(funcall insert-func file "\n"))
(let ((line
(concat
(if show-size
(concat (eshell-ls-size-string attrs size-width) " "))
(format
(if numeric-uid-gid
"%s%4d %-8s %-8s "
"%s%4d %-2s %-8s ") ; 그룹 안찍으니 크기 줄여버렸다.
(or (nth 8 attrs) "??????????")
(or (nth 1 attrs) 0)
(or (let ((user (nth 2 attrs)))
(and (stringp user)
(eshell-substring user 14)))
(nth 2 attrs)
"")
;; 그룹은 한글이라 보여주기 좀 그렇다. 빼자.
;; (or (let ((group (nth 3 attrs)))
;; (and (stringp group)
;; (eshell-substring group 8)))
;; (nth 3 attrs)
;; "")
"")
(let* ((str (eshell-ls-printable-size (nth 7 attrs)))
(len (length str)))
;; Let file sizes shorter than 9 align neatly.
(if (< len (or size-width 8))
(concat (make-string (- (or size-width 8) len) ? ) str)
str))
" " (format-time-string
(concat
"%02b-%02e "
(if (= (nth 5 (decode-time (current-time)))
(nth 5 (decode-time
(nth (cond
((eq sort-method 'by-atime) 4)
((eq sort-method 'by-ctime) 6)
(t 5)) attrs))))
"%H:%M"
" %Y")) (nth (cond
((eq sort-method 'by-atime) 4)
((eq sort-method 'by-ctime) 6)
(t 5)) attrs)) " ")))
(funcall insert-func line file "\n"))))))
댓글 없음:
댓글 쓰기