memo: GNU Emacs 23.1 on W32: Setting for Printer

updated: 2009/11/18 : Lisp code updated.

GNU Emacs 23.1 W32 の印刷の設定を行おうと思ったが、Meadow 3 と同じ設定でOKであったので特に面倒な作業は発生しなかった。

プロセス起動関係はMeadow3と同じなのだろう。

今は以下のように設定してある。
設定というか、ps-print-with-faces を上書きしてまつ...

Meadow 3 と GNU Emacs 23.1 on W32で動く。

C/Perl/Javaモード用に自動で印刷設定を行うようにしてある。
しかし、設定部分がスマートじゃないな。
後でちゃんとした方法を調べとこう。

---
;;
;; Setting of Postscript Printing
;;
;; print by ghost script for Windows Printer
;; c:¥gs¥gs8.57¥bin¥gswin32 -q -DNODISPLAY -dBATCH -sDEVICE=mswinpr2 -dNOPAUSE sourcefile.ps
;; print by ghost script for Postscript Printer
;; c:¥gs¥gs8.57¥bin¥gswin32 -q -DNODISPLAY -dBATCH -sDEVICE#pswrite -sOutputFile#¥¥nt_serv¥AppleLas -dNOPAUSE sourcefile.ps
;;
;; Execute Meadow as printer
;; C:¥usr¥local¥Meadow¥3.00¥bin¥meadow.exe -q -batch -l c:/home/root/elisp/setup-psprint.el "%1" -f ps-print-buffer-with-faces
;;

(setq x-underline-at-descent-line nil)

;; ps-print setting for multibyte text printing
(setq ps-multibyte-buffer 'non-latin-printer)

;; load ps-print
(load "ps-print")

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; User Variables:

(defgroup ps-print-setup nil
"PostScript Print Setup Group."
:tag "PostScriptSetup"
:version "20"
:group 'emacs)

(defcustom ps-print-w32-lpr-psprinter nil
"*Non-nil means print to postscript printer.
nil means print to Windows printer driver,"
:type 'boolean
:version "20"
:group 'ps-print-setup)

(defcustom ps-print-w32-lpr-name "¥¥¥¥PS-Printer¥¥DeviceName"
"*when print to postscript printer, MUST set it."
:type 'string
:version "20"
:group 'ps-print-setup)

(defcustom local-ps-paper-type 'letter
"*Specify the size of paper to format for.
Should be one of the paper types defined in `ps-page-dimensions-database', for
example `letter', `legal' or `a4'.
WARNING: WHEN ps-print-w32-lpr-psprinter set to nil, MUST SET TO LETTER."
:type '(symbol :validate (lambda (wid)
(if (assq (widget-value wid)
ps-page-dimensions-database)
nil
(widget-put wid :error "Unknown paper size")
wid)))
:version "20"
:group 'ps-print-setup)

(defcustom local-ps-print-header t
"*Non-nil means print a header at the top of each page.
By default, the header displays the buffer name, page number, and, if the
buffer is visiting a file, the file's directory. Headers are customizable by
changing variables `ps-left-header' and `ps-right-header'."
:type 'boolean
:version "20"
:group 'ps-print-setup)

(defcustom local-ps-header-lines 2
"*Number of lines to display in page header, when generating PostScript."
:type 'integer
:version "20"
:group 'ps-print-setup)

(defcustom local-ps-print-header-filename t
"*Non-nil means print a filename on header."
:type 'boolean
:version "20"
:group 'ps-print-setup)

(defcustom local-ps-print-preview t
"*Non-nil means enable preview for print"
:type 'boolean
:version "20"
:group 'ps-print-setup)


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Interface to the command system

;; for directory print to postscript printer
(if (featurep 'meadow)
(progn
(define-process-argument-editing "/gswin32¥¥.exe$"
(lambda (x)
(general-process-argument-editing-function x nil t)))
;; for preview by gsview
(define-process-argument-editing "/gsview32¥¥.exe$"
(lambda (x)
(general-process-argument-editing-function x nil t)))
(define-process-argument-editing "/cmd¥¥.exe$"
(lambda (x)
(general-process-argument-editing-function x nil t)))))

(defun system-is-windows ()
(equal system-type 'windows-nt))

(setq ps-print-tmp-file nil)

(defun ps-print-delete-tmp (process event)
(delete-file ps-print-tmp-file))

(defun ps-print-call-w32print-proccess (tmpfile)
(if local-ps-print-preview
(progn
(call-process "cmd" nil nil t "/c"
"gsview32" tmpfile)
(delete-file ps-print-tmp-file))
(message "start gs ...")
(start-process "ghost script" "ghost script" "gswin32" "-q" "-dBATCH"
;; "-DNODISPLAY"
;; for Windows Printer Driver
"-sDEVICE=mswinpr2" "-dBATCH"
"-dNOPAUSE" tmpfile)
(setq ps-print-tmp-file tmpfile)
(set-process-sentinel (get-process "ghost script") 'ps-print-delete-tmp))
(signal 'file-error
'("Error: Cannot Use Printer")))

;;
(defun ps-mode-setting (ffont-size ftop-margin fbottom-margin
fleft-margin fright-margin
finter-column fline-number
fps-landscape-mode
fps-number-of-columns)
(interactive "nFont Size=¥nnLeft Margin=¥nnRight Margin=
nInter column=¥nXLine number? ¥nXLandscape mode?
nNumber of columns=")
(setq ps-line-number fline-number)
;;
;; for 2 colums mode
(setq ps-paper-type local-ps-paper-type) ; ps-page-dimensions-database
(setq ps-landscape-mode fps-landscape-mode)
(setq ps-number-of-columns fps-number-of-columns)
(setq ps-left-margin (/ (* 72 fleft-margin ) 2.54))
(setq ps-right-margin (/ (* 72 fright-margin) 2.54))
(setq ps-inter-column (/ (* 72 finter-column) 2.54))
;;(setq ps-bottom-margin (/ (* 72 1.0) 2.54)) ; 1.5 cm
;;(setq ps-top-margin (/ (* 72 1.0) 2.54)) ; 1.5 cm
;;(setq ps-header-offset (/ (* 72 1.0) 2.54)) ; 1.0 cm
;;(setq ps-header-line-pad 0.15)
(set-variable 'ps-header-lines local-ps-header-lines) ;; default 2
(set-variable 'ps-print-header local-ps-print-header)
(set-variable 'ps-print-only-one-header t)
(if local-ps-print-header-filename
(if (< local-ps-header-lines 2)
(set-variable 'ps-left-header
(list (format "(%s)" buffer-file-name))))
(set-variable 'ps-left-header (list "()")))
(setq ps-font-size (if ps-landscape-mode ffont-size ffont-size)) ;; default 7 8.5
(setq ps-header-font-size (if ps-landscape-mode 9 10)) ;; default
;; 10 12
)

;;; font-size left right inter line-number landscape-mode number-of-columns

(defun ps-prog-mode-setting8-02-lnum ()
(interactive)
;;
;; for 2 colums mode
(ps-mode-setting 8 1.0 1.0 2.0 1.5 2.0 t t 2))

(defun ps-prog-mode-setting7-02-lnum ()
(interactive)
;;
;; for 2 colums mode with line number
(ps-mode-setting 7 1.0 1.0 1.5 1.0 1.0 t t 2))

(defun ps-prog-mode-setting6-02-lnum ()
(interactive)
;;
;; for 2 colums mode with line number
(ps-mode-setting 6 1.0 1.0 1.5 1.0 1.0 t t 2))

(defun ps-prog-mode-setting5-02-lnum ()
(interactive)
;;
;; for 2 colums mode with line number
(ps-mode-setting 5 1.0 1.0 1.5 1.0 1.0 t t 2))

(defun ps-prog-mode-setting8-02-nolnum ()
(interactive)
;;
;; for 2 colums mode without line number
(ps-mode-setting 8 1.0 1.0 1.5 1.5 0.2 nil t 2))

(defun ps-prog-mode-setting4-02-vert () ;; vertical split
(interactive)
;;
;; for 2 up mode with line number
(ps-mode-setting 4 0.0 1.0 1.5 1.5 1.0 t nil 2))

(defun ps-prog-mode-setting ()
(interactive)
;; default program mode setting
(ps-prog-mode-setting8-02-lnum))

(defun ps-text-mode-setting () ;; horizontal split
(interactive)
;; default text mode setting
(ps-text-mode-setting6-2-01)
)

(defun ps-text-mode-setting6-2-01 () ;; horizontal split
(interactive)
(ps-mode-setting 6 1.0 1.0 1.0 1.0 0.1 nil t 2)
)

(defun ps-text-mode-setting7-2-01 () ;; horizontal split
(interactive)
(ps-mode-setting 7 1.0 1.0 1.0 1.0 0.1 nil t 2)
)
(defun ps-text-mode-setting8-2-01 () ;; horizontal split
(interactive)
(ps-mode-setting 8 1.0 1.0 1.0 1.0 0.1 nil t 2)
)

(defun ps-text-mode-setting12-1-01 () ;; no split
(interactive)
(ps-mode-setting 12 1.0 1.0 1.5 1.5 0.5 nil nil 1))

(defun ps-text-mode-setting10-1-01 () ;; no split
(interactive)
(ps-mode-setting 10 1.0 1.0 1.5 1.5 0.5 nil nil 1))

;; default setting
(ps-prog-mode-setting)
;; mode-specific setting
(add-hook 'text-mode-hook 'ps-text-mode-setting)
(add-hook 'c-mode-hook 'ps-prog-mode-setting)
(add-hook 'c++-mode-hook 'ps-prog-mode-setting)
(add-hook 'cli-mode-hook 'ps-prog-mode-setting)
(add-hook 'java-mode-hook 'ps-prog-mode-setting)
(add-hook 'emacs-lisp-mode-hook 'ps-prog-mode-setting)

;;
;; main funcs
;;
(defun ps-print-with-faces-sub (region-or-buffer &optional rstart
rend)
"Generate and print a PostScript image of the buffer.
Like `ps-print-buffer', but prints to only file."
(let ((tmpfile
(concat (or (getenv "TMP") (getenv "TEMP")) "/"
(make-temp-name "L") ".tmp")))
(if (file-exists-p tmpfile)
(signal 'file-error
'("The temporary file that I try to create has been exists!")))
(if ps-print-w32-lpr-psprinter
(if (file-exists-p ps-print-w32-lpr-name)
;; for Postscript Printer
;; directory print to PS printer.
(if (eq region-or-buffer 'region)
(ps-print-region rstart rend ps-print-w32-lpr-name)
(ps-print-buffer ps-print-w32-lpr-name))
(message "Printer no existance: %s." ps-print-w32-lpr-name))
;; for Not Postscript Printer
;; STEP 1 : ps-print to file
(if (eq region-or-buffer 'region)
(ps-print-region rstart rend tmpfile)
(ps-print-buffer tmpfile))
;; STEP 2 : print it by ghost script.
(ps-print-call-w32print-proccess tmpfile)
(message "Printed %s." buffer-file-name))))

(defun ps-print-buffer-with-faces ()
"Generate and print a PostScript image of the buffer.
Like `ps-print-buffer', but prints to only file."
(interactive)
(ps-print-with-faces-sub 'buffer))

(defun ps-print-region-with-faces (rstart rend &optional fname)
"Generate and print a PostScript image of the buffer.
Like `ps-print-buffer', but prints to only file."
(interactive "r")
(ps-print-with-faces-sub 'region rstart rend))

memo: GNU Emacs 23.1 on W32: Font Setting

GNU Emacs 23.1 on W32 の固定ピッチフォント(MS 明朝)設定

(create-fontset-from-ascii-font
"-outline-MS 明朝-normal-normal-normal-serif-14-*-*-*-c-*-iso8859-1"
nil "mincho14")
(set-fontset-font "fontset-mincho14" 'latin-iso8859-1
'("MS 明朝" . "iso8859-1"))
(set-fontset-font "fontset-mincho14" 'japanese-jisx0208
'("MS 明朝" . "jisx0208-sjis"))
(set-fontset-font "fontset-mincho14" 'katakana-jisx0201
'("MS 明朝" . "jisx0201-katakana"))

複数フォント混在も以下のような設定を追加すれば出来るが、コーディングには向かないので設定していない。

(create-fontset-from-ascii-font
"-outline-Lucida Sans Unicode-normal-normal-normal-sans-14-*-*-*-p-*-iso10646-1"
nil "mincho14")
(set-fontset-font "fontset-mincho14" 'latin-iso8859-1
'("Lucida Sans Unicode" . "iso10646-1"))

Thanks and Goodbye Meadow 3, Hello GNU Emacs 23

最近、Meadowの開発プロジェクトがあまり良い状態ではなさそうである。
Meadow Tracへスパムチケットが登録したり、トップページに変なサイトのリンクを張る不心得者がいるようで、Meadow Tracを見るのが最近精神的につらくなってきた。

本家の GNU Emacs が 23.1 になっていたので、こちらが日本語環境で使用可能であれば乗り換えようと思って導入してみた。

コンパイル済みバイナリがあるので、導入は簡単である。
Meadowと若干異なる点があるのが、.emacsなどを変更すれば対応可能。
フォントや日本語IMEの設定、およびプロセス起動を除くと、Meadowと本家は同じ設定でOK。

とりあえず、フォントの設定と印刷以外は問題なく使えている。
・日本語入力はKKC
・フォントはとりあえずデフォルトのまま。

等幅フォントの設定と、印刷の設定が残っているが、おそらく問題なかろう。

今のところ致命的な問題は発生していないので、GNU Emacs 23.1 を Meadow の代わりに使うことにした。

23.1はメモリ使用量もMeadow3より少ないし、起動も速い。
多言語対応も22より改善されているようなので、これからは、GNU Emacs 23を使おうと思う。

Thanks and Goodbye Meadow 3!, Hello GNU Emacs 23!!

Meadow 3.01-dev supported, Windows Visa/7 symbolic link, ...

Meadow 3.01-dev で Windows Visa/7 のシンボリックリンクをサポートしたようだ - 2009/05/18 付 trac のタイムライン参照。

Windows 2000 から存在はしていたが、ようやく正式にサポートしたということか → Windows のシンボリックリンク

エクスプローラから使えるということだろうか...

と思ったら、Windows XP までのリンクはハードリンク相当だったようだ。

Visa以降から、シンボリックリンク相当の機能がサポートされたということか。

mklink コマンドね...
Visaを仕事で使う機会があったら確かめてみるか。

1

calendar

S M T W T F S
1234567
891011121314
15161718192021
22232425262728
2930     
<< November 2020 >>

selected entries

categories

archives

recent comment

  • 多機能携帯電話の発注はもうやめて!携帯メーカーのライフはもうゼロよ!
    momonga
  • 小沢が幹事長を辞任するそうだが、議員辞職しないと意味がない。
    死神
  • 「小沢死ね」で検索してくる人が増えている件
    死神
  • 小沢死すべし
    seniorbrother
  • 小沢死すべし
    死神
  • 小沢元代表強制起訴キタ━━━━━━(゚∀゚)━━━━━━!!!!!
    死神
  • 今日は大東亜戦争開戦の日か...
    seniorbrother
  • 今日は大東亜戦争開戦の日か...
    死神
  • 今日は大東亜戦争開戦の日か...
    seniorbrother
  • 民主党独裁は十分駄目だが、小沢が首相になるのは本当にまずい。実現したら日本が終わる...
    seniorbrother

recent trackback

recommend

recommend

recommend

recommend

links

profile

書いた記事数:503 最後に更新した日:2017/01/29

search this site.

others

mobile

qrcode

powered

無料ブログ作成サービス JUGEM