約 4,582,740 件
https://w.atwiki.jp/daisukem/pages/27.html
fortran 90 tips 最適化FORTRAN90 言語 Fortran 90 骨の髄まで
https://w.atwiki.jp/slab/pages/20.html
参考サイト Fortran入門
https://w.atwiki.jp/shirayuu/pages/18.html
Unix 系の中で、2大エディタの1つである Emacs に関する設定の記述。 .emacs.el の設定 Emacs で、anthy-el を使うanthy-el のインストール .emacs.el の記述。 Emacs で、M+ Font (Bitmap Font) を使う。M+ Font がインストールされているか 記述場所 動作確認 Emacs server を使う。同じウインドウで開きつづける 設定手順 環境変数の設定 確認 .emacs.el の設定 主な参考元は以下のとおりです。本当に、ありがとうございます。このような方々がおられるからこそ、快適になります。 http //d.hatena.ne.jp/bluerepliroid/20071227/1197882707 http //www.cozmixng.org/~kou/emacs/dot_emacs http //coderepos.org/share/browser/dotfiles/emacs/shyouhei/.emacs.d/elisp/configs.el ;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 他の elisp の設定を読み込む ;;;;;;;;;;;;;;;;;;;;;;;;;; (setq load-path (cons "~/.emacs.d/" load-path)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Emacs の 表示関係を変更 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; title bar にファイル名を表示 ;;(setq frame-title-format "%f") (setq frame-title-format (format "emacs@%s %%f" (system-name))) ;; tool bar を表示させない (tool-bar-mode 0) ;; menu bar を表示させない (menu-bar-mode -1) ;; スプラッシュを非表示にする (setq inhibit-startup-message t) ;; 行番号・桁番号を modeline に表示する (line-number-mode t) ; 行番号 (column-number-mode t) ; 桁番号 ;;; 対応する括弧を光らせる。 (show-paren-mode 1) ;;; 終了時にオートセーブファイルを消す (setq delete-auto-save-files t) ;;; カーソルの点滅を止める (blink-cursor-mode 0) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; カーソルの位置が何行目かを表示する (line-number-mode t) ;;; スクロールを一行ずつにする (setq scroll-step 1) ;;; スクロールバーを右側に表示する (set-scroll-bar-mode 'right) ;;; 最終行に必ず一行挿入する (setq require-final-newline t) ;;; 一行が 80 字以上になった時には自動改行する (setq fill-column 80) (setq-default auto-fill-mode t) ;;; モードラインに時間を表示する (display-time) ;;; 現在の関数名をモードラインに表示 (which-function-mode 1) ;;行間 (setq-default line-spacing 3) ;; 無駄な空行に気付きやすくする (setq-default indicate-empty-lines t) ;;文字の色つけ (global-font-lock-mode t) ;;Ctrl-Hでバックスペース (global-set-key "\C-h" 'backward-delete-char) ;;警告音を消す (setq visible-bell t) ;; リージョンに色をつける (暫定マークモード) (transient-mark-mode 1) ;; bs-showを使用する (global-set-key "\C-x\C-b" 'bs-show) ;; テキストの折り返し無効 (setq-default truncate-partial-width-windows t) (setq-default truncate-lines t) ;;フレームのタイトル指定 (setq frame-title-format (concat "%b - emacs@" system-name)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 補完関係 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; 補完時に大文字小文字を区別しない (setq completion-ignore-case t) ;;; 強力な補完機能を使う ;;; p-bでprint-bufferとか ;;(load "complete") (partial-completion-mode 1) ;;; 補完可能なものを随時表示 ;;; 少しうるさい (icomplete-mode 1) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 文字表示位置関係 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;整数で指定するとピクセル数で、少数で指定すると ;;行の高さに対して相対値で設定されます。 (setq-default line-spacing 4) ;;; 最終行に必ず一行挿入する (setq require-final-newline t) ;;; 一行が 80 字以上になった時には自動改行する (setq fill-column 80) (setq-default auto-fill-mode t) ;;;;;;;;;;;;;;;;;;;;;; ;; カーソル移動設定 ;;;;;;;;;;;;;;;;;;;;;; ;;カーソル移動を論理行ではなく、物理行(見たまま)単位で移動する。 (require 'physical-line) (setq-default physical-line-mode t) ;; dired-mode は論理行移動のままにする. (setq physical-line-ignoring-mode-list '(dired-mode)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; 日本語設定 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (set-language-environment "Japanese") ;; 文字コード関連 (set-terminal-coding-system 'utf-8-unix) (set-keyboard-coding-system 'utf-8-unix) (set-buffer-file-coding-system 'utf-8-unix) (setq default-buffer-file-coding-system 'utf-8-unix) (prefer-coding-system 'utf-8-unix) (set-default-coding-systems 'utf-8-unix) (setq file-name-coding-system 'utf-8-unix) (set-locale-environment "ja_JP.UTF-8") ;Ctrol + \ 無効 (mozc 使う関係で無効化する) (global-set-key "\C-\\" nil) Emacs で、anthy-el を使う emacs での日本語入力は、インプットメソッドからの入力と Emacs 自体の漢字エンジンを使う方法があります。 今回は、emacs の漢字エンジンに anthy を使おうというものです。 anthy-el のインストール ubuntu では apt で、、 $ sudo apt-get install anthy-el とインストールできます。 .emacs.el の記述。 Anthy Wiki を参考にして。 ~/.emacs.el に、以下の内容を追記すれば日本語入力ができます。 ; 日本語をデフォルトにする。 (set-language-environment "Japanese") ; anthy.el をロードする。 (load-library "anthy") ; japanese-anthy をデフォルトの input-method にする。 (setq default-input-method "japanese-anthy") Emacs で、M+ Font (Bitmap Font) を使う。 M+ Font がインストールされているか $ xlsfonts | grep mplus で確認。 記述場所 ~/.emacs.el に記述する方法もあるが、結構面倒くさいらしいので、 ~/.Xresources に次の記述を行う。 ! ~/.Xresources Emacs.Fontset-0 -mplus-gothic-*-r-normal--10-*-*-*-*-*-fontset-mplus_j10,\ ascii -mplus-gothic-medium-r-normal--10-*-*-*-*-*-iso8859-1 Emacs.Fontset-1 -mplus-gothic-*-r-normal--12-*-*-*-*-*-fontset-mplus_j12,\ ascii -mplus-fxd-medium-r-semicondensed--12-*-*-*-*-*-iso8859-1 Emacs.font fontset-mplus_j12 動作確認 反映されたか確認するために、 $ xrdb -merge .Xresources $ emacs Emacs server を使う。 同じウインドウで開きつづける 特に設定を行わない Emacs では $ emacs と起動するごとに新たなウインドウが開くと思う。 $ emacs filename と記述したとき、既にウインドウが開いている場合はそのウインドウに表示させたいときは 次のような設定を行う。 設定手順 手順1.~/.emacs.el の追記 ;; ~/.emacs.el ;; emacs server の起動 (server-start) 手順2. 次のスプリクトを作成する #!/bin/sh # filename emacs # emacs と言う名前の 全 pid のうち番号の最も若いものを取得 pgreph=`pgrep emacs | head -1` # XIM を起動させない XMODIFIERS=@im=none # 取得した pid は、起動したスプリクトの pid であるか if [ $pgreph -eq $$ ] then /usr/bin/emacs $* # 既に emacs が起動しているとき elif [ -z "$1" ] then # 引数がないときは、起動させない echo "Usage $0 filename " else # emacs client で起動 /usr/bin/emacsclient "$@" fi このスプリクトをemacs という名前にし ~/bin/ に格納する。 (~/bin/ は、自分で作成した起動スプリクトなどを入れる場所とする) 環境変数の設定 環境変数path に~/bin/ を通す。 コマンドでは, $ export PATH=~/bin $PATH と行えばよい。 しかし、起動するたびにコマンドを打ち込むのは面倒なので, ~/.bashrc などに次の内容を追記 (zsh の場合は,.zshrc) # .bashrc export PATH=~/bin $PATH 反映させるために、 $ source .bashrc 確認 touch test.txt emacs ~/.emacs.el emacs test.txt 同じウインドウに表示された?
https://w.atwiki.jp/y0sota/pages/38.html
Fortran入門 http //www.nag-j.co.jp/fortran/index.html http //www5.atpages.jp/~enoyaruk/fortran/index.html
https://w.atwiki.jp/a0061882/pages/16.html
Emacsコマンド備忘録 取り消し等 Ctrl-g 現在のコマンド取り消し 保存関係 Ctrl-x, Ctrl-f ファイル読み込み Ctrl-x, Ctrl-s ファイル上書き保存 Ctrl-x, Ctrl-w 名前を付けて保存 終了 Ctrl-x, Ctrl-z ファイルを閉じる(BGでは走っている) Ctrl-x, Ctrl-c ファイルを閉じる
https://w.atwiki.jp/nkym_memo/pages/28.html
.emacs(ドットemacs;emacs 設定ファイル) ホームディレクトリ(/home/(user),~/) 内に配置 または~/.emacs.dl 、~/.emacs.d/initi.el も初期化ファイルにすることができる 優先順位は ~/.emacs.dl ~/.emacs ~/.emacs.d/init.el .emacs 基本的な設定 ;;;スタートアップを非表示 (setq inhibit-startup-screen -1) ;;;ビープ音を消す (setq ring-bell-function ignore) ;;;ツールバーを非表示 (tool-bar-mode -1) ;;;メニューバーを非表示 (menu-bar-mode -1) ;;;Xでのクリップボードを共有 (setq x-select-enable-clipboard t) ;;; 行の先頭でC-kを一回押すだけで行全体を消去する (setq kill-whole-line t) ;;; 対応する括弧を光らせる (show-paren-mode 1) ;; 現在行に色をつける (global-hl-line-mode 1) ;; その行の色 (set-face-background hl-line "DarkSeaGreen1") ;;; バックアップファイルを作らない (setq backup-inhibited t) ;;; タイトルバーにファイル名を表示する (setq frame-title-format (format "emacs@%s %%f" (system-name))) ;;; カーソルの位置が何文字目かを表示する (column-number-mode t) ;;; yes-or-noをy-or-nに省略 (defalias yes-or-no-p y-or-n-p) ;; 履歴を次回Emacs起動時にも保存する (savehist-mode 1) ;;; 圧縮されたファイルも編集できるようにする (auto-compression-mode t) フレーム設定 ;;; 初期フレームの設定 (setq initial-frame-alist (append ( (width . 47) ; フレーム幅(文字数) (height . 63)) ; フレーム高(文字数) initial-frame-alist)) ;;; 新規フレームのデフォルト設定 (setq default-frame-alist (append ((width . 47); フレーム幅(文字数) (height . 63)); フレーム高(文字数) default-frame-alist)) ファイル更新日の自動更新 ;;; ファイル更新日を自動的に書き換える。 ;;; ファイルの上から8行目以内に "Last Updated "をつけくわえる ;;; そしてLast Updated の後に空白2つ以上いれると置換 ;;; 日本語で日付を入れたくないのでlocaleをCにする ;;; 例)2010/06/30 Wed 16 20 12 (require time-stamp) (defun time-stamp-with-locale-c () (let ((system-time-locale "C")) (time-stamp) nil)) (if (not (memq time-stamp-with-locale-c write-file-hooks)) (add-hook write-file-hooks time-stamp-with-locale-c)) (setq time-stamp-active t) (setq time-stamp-start "Last Updated ") (setq time-stamp-format "%04y/%02m/%02d %3a %02H %02M %02S") (setq time-stamp-end " ") キーバインドの変更 ;;;「Alt-g 行数」で指定の行に移る (global-set-key "\M-g" goto-line) ;;; undoをC-zに (global-set-key "\C-z" undo) ;;; hippie-expandをC-;に (global-set-key [?\C-;] hippie-expand) ;;; M-x compile を C-. に (global-set-key [?\C-\.] compile) ;;; ウィンドウの移動をM-tに (global-set-key "\M-t" other-window) ;;; C-hをBackSpaceに (global-set-key "\C-h" delete-backward-char) .emacsのログ 2014.10.08 2011.10.20 2011.07.08 2010.11.16 2010.11.22 2010.12.16 2010.12.20
https://w.atwiki.jp/ntemacs/
【お知らせ】 ● 本サイトは NTEmacs の情報サイトなのですが、私が WSL版 Emacs に乗り換えたため、そちらに関連する情報が多くなってきています。WSL版 Emacs も Windows 上で動作する Emacs ですので、本サイトの目的とは合致していると思っています。 ● WSL版 Emacs に行き着くまで、Linux版 Emacs、MinGW版 Emacs、Cygwin版 Emacs といろいろ使ってきましたが、今のところ Windows で Emacs を使うには WSL Emacs on VcXsrv がベストな選択だと思っています。WSL コマンド(https //github.com/smzht/wsl-utils)や Windows コマンド(https //github.com/smzht/win-utils)の作成、Google日本語入力 と連携可能な mozc_emacs_helper.exe のビルドの成功(https //github.com/smzht/mozc_emacs_helper)、さらには以降で紹介している Emacs の設定の整備により、WSL 上で Emacs を使う場合の不便な点は概ね解消されていると思います。 ■ Windows 10 2004 がリリースされましたので、WSL から WSL2 に移行しました。多少の調整は必要でしたが、WSL の環境をほぼそのまま WSL2 で実現できました。調整が必要だった箇所は、「WSL で Emacs を使うための設定 」の 【お知らせ】 に記載しています。 ■ X Window Server は VcXsrv から GWSL に乗り換えました。GWSL も 内部で VcXsrv を利用しており、VcXsrv と同等に利用可能です。Microsoft 謹製の WSLg も Windows 11 では利用可能となっていますが、Windows の操作方法が独自になるなどの理由から、GWSL の方を利用しています。 【トピック】 ★ NTEmacs の設定とは関係ありませんが、Windows の操作を Emacs のキーバインドで行うための設定 を公開しています。OS まるごと Emacsキーバインドで操作することができ快適です。お試しください! Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) update! (2022/06/23) ★日本語キーボードを英語キーボード配列で使おうとした際に調べた情報 をまとめています。Keyhac + Fakeymacs で実現する設定のリンクも載せています。お試しください! 英語キーボード設定の OS で日本語キーボードを使うときの情報まとめ update! (2021/09/10) ★ WSL で Emacs を使うための設定 をまとめました。WSL Emacs は Windows との相性がとても良く、Linux、Windows 双方にアクセスするためのユーザインタフェースとしての利用にとても便利です。お試しください! WSL で Emacs を使うための設定 update! (2022/10/14) ● WSL の emacsclient を Windows から利用するための設定 をまとめました。WSL Emacs を Windows で起動するためのコマンドも紹介しています。お試しください。 WSL の emacsclient を Windows から利用するための設定 update! (2021/02/05) ● VSCode で開いているファイルを WSL の Emacs で開くための設定 をまとめました。Remote-WSL を設定した VSCode でも利用可能です。お試しください。 VSCode で開いているファイルを WSL の Emacs で開くための設定 update! (2019/11/06) ● WSL の Emacs から VSCode でファイルを開くための設定 をまとめました。VSCode の Remote Development にも対応しています。お試しください。 WSL の Emacs から VSCode でファイルを開くための設定 update! (2019/10/31) ● helm で peco もどきのコマンドを使うための設定 をまとめした。peco が使えない shell-mode で利用できます。お試しください。 helm で peco もどきのコマンドを使うための設定 update! (2019/04/16) ● google-translate を使いやすくするための設定 をまとめました。翻訳する文章が日本語か英語かを判別し、他方に翻訳する機能をサポートしています。お試しください。 google-translate を使いやすくするための設定 update! (2019/12/30) ● WSL から Windows の exe コマンドを管理者権限で実行するコマンド winsudo を公開しました。UAC が有効な場合、ポップアップによる確認後に管理者権限でコマンドが実行されます。お試しください。 https //github.com/smzht/wsl-utils#-winsudo ● WSL のシェルから Cygwin のコマンドを実行するためのコマンド cyg を公開しました。Cygwin から WSL へ移行する際の過渡期に利用するツールとして使えるかと思います。お試しください。 https //github.com/smzht/wsl-utils#-cyg ● Emacs の日本語マニュアル を公開されている方がいらっしゃいます。大作です。紹介させていただきます。 https //ayatakesi.github.io/ ● Lisp と JavaScript は似ているのですね。興味深い。確かに、JavaScript の旧名は、LI ve S cri P t ですね。 https //www.slideshare.net/taiju/javascriptlisp https //qiita.com/derui/items/6e8de68cc1b7295de3a6 【本題】 このウィキでは、Windows で GNU Emacs を 快適に利用するための設定についてまとめています。完全ではありませんが、以下の環境で動作確認しています。 Windows 11 + GWSL + WSL2 + Ubuntu-20.04 + Emacs-27 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs) Windows 11 + WSLg + WSL2 + Ubuntu-20.04 + Emacs-26 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs) Windows 10 ver 2004 + VcXsrv + WSL2 + Ubuntu-20.04 + Emacs-26 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs) Windows 10 ver 1909 + VcXsrv + WSL + Ubuntu-18.04 + Emacs-25 + emacs-mozc(Google日本語入力 と連携)(Linux版 Emacs) ※ 現在のメイン環境です。「WSL で Emacs を使うための設定」で設定方法を紹介しています。 ※ この環境の特徴は、以下のとおりです。 ・MinGW版 Emacs と異なり、設定でのいろいろな workaround(fakecygpty の設定や UTF-8 を使うための設定など)が不要です。 ・Cygwin版 Emacs と異なり、MinGW版 Emacs 並に高速に動作します。 ・Google日本語入力 との連携を可能とした mozc_emacs_helper.exe の導入で、日本語入力にも対応しています。 ・Cygwin版 Emacs で度々発生する vfork 問題が一切起こりません。 ・Linux の OS 環境をフルに利用可能です。(MinGW版 Emacs の様に別途 UNIX 環境を準備する必要がありません。) ・設定により、dired から Windows のドキュメントを直接開くことができます。(wslstart という cygstart と同機能のコマンドの作成により実現しています。) ・設定により、dired で Windows のショートカットをシンボリックリンクの様に扱えます。(w32-symlinks.el から最低限必要な設定を流用することで実現しています。) ・設定により、Windows パスや UNC パスを Linux のパスと同様に利用できます。(Emacs の Magic File Names の仕組みを利用して実現しています。) ・ViirtualBox で Linux を動作させた環境と異なり、Keyhac との連携(ウィンドウの切り替えなど)が可能です。 ・一つデメリットを挙げれば、画面へのファイルのドラッグ&ドロップができないことです。これは、「dired を OS と連携して使うための設定」で代替になると思います。 Windows 10 + gnupack-13.06(Cygwin は最新に更新)+ emacs-mozc(Google日本語入力 と連携)(Cygwin版 Emacs) Windows 10 + gnupack-13.06(Cygwin は最新に更新)+ Cygwin の emacs-w32 での差替え + emacs-mozc(Google日本語入力 と連携)(Cygwin版 Emacs) ※ WSL に移行する前まで使っていた環境です。 ※ 比較的新しいバージョンが提供される Cygwin の Emacs を利用する方法は、「gnupack-13 の環境で Cygwin の Emacs を利用するための設定」を参考としてください。 ※ この環境の特徴は、以下のとおりです。(以前までお勧めしていたので、まとめています。) ・MinGW版 よりちょっと(かなり?)遅めですが、設定でのいろいろな workaround が不要です。 ・Cygwin 側で作成した Windows ショートカット(CYGWIN環境変数 が winsymlinks lnk に設定された状態で ln -s コマンドで作成したリンク)が、シンボリックリンクとして認識されるのが便利です。 ・Google日本語入力 との連携を可能とした mozc_emacs_helper.exe の導入で、日本語入力も安定して動作します。 ・何らかのタイミングで vfork関連のエラーが発生することがあります。これを解決するのが厄介で、Cygwin版 Emacs を使う上での大きなデメリットとなっています。(この症状が発生した場合、Cygwin に対して rebaseall を行った後、OS の再起動をすると改善するような気がします。Cygwin の更新をすると rebase が掛かるので、その後 OS の再起動をすると良いと思います。) Windows 10 + gnupack-11.00(Cygwin は最新に更新)+ NTEmacs64 での差替え (MinGW版 Emacs) Windows 10 + gnupack-11.00(Cygwin は最新に更新)+ GNU配布版 Emacs での差替え + emacs-mozc(Google日本語入力 と連携)(MinGW版 Emacs) ※ 最新の MinGW版 Emacs を利用する方法は、「gnupack-11.00 の環境で NTEmacs64 を利用するための設定」を参考としてください。 ※ Windows のパスがそのまま利用できるなど、Windows との親和性は高いです。但し、問題なく使うためのハードルも高い(本質的ではない、設定でのいろいろな workaround が必要)です。 VirtualBox + Ubuntu-18.04 + Emacs-25 or 26 + emacs-mozc(mozc-server と連携)(Linux版 Emacs) Hyper-V + Ubuntu-18.04 + Emacs-25 or 26 + emacs-mozc(mozc-server と連携)(Linux版 Emacs) ※ 仮想環境で動かしているのに、非常に高速に動作します。Windows 環境との連携が重要でなければ、この環境が一番お勧めなのかもしれません。 ※ 本ページで紹介する設定は、Emacs バージョン 24.4 以上で利用可能な設定となっています。 ※ MinGW版 Emacs を利用する場合、Cygwin の導入、cygdriveプレフィクス の / 設定、cygwin-mount.el のインストールが前提となっている設定箇所があります。 ※ Cygwin版 Emacs 、MinGW版 Emacs を利用する場合、以下の「【基本設定】」が行われていることが前提となっている設定箇所が多数あります。本ページの設定を利用する場合には、「【基本設定】」の利用を強くお勧めします。 ※ フォントを滑らかに表示させるためには、次の方法をお試しください。 http //121ware.com/qasearch/1007/app/servlet/relatedqa?QID=013964 ■ Cygwin版 Emacs 特有の設定 【基本設定】 Windowsパス と UNCパス を使えるようにするための設定 【推奨設定】 dired でディレクトリのシンボリックリンクを実体のパスで開くための設定 ※ 後半に Cygwin版 Emacs 特有の設定があります。 gnupack-13 の環境で Cygwin の Emacs を利用するための設定 (関連) Cygwin で sudo 的コマンドを使うための設定 Cygwin で sudoedit を使うための設定 singleton な動きをする cygstart 的コマンドを使うための設定 (Cygwin版) gnupack-13.xx の背景色やフォントを gnupack-11.00 の時代のものと同じにするためのパッチ ■ MinGW版 Emacs 特有の設定 【基本設定】 UTF-8 をベースとして利用するための設定 【基本設定】 fakecygpty を使うための設定 tramp を tramp-method “scp” で使うための設定 ※ 後半に MinGW版 Emacs 特有の設定があります。 emacsclientw を使うための設定 Cygwin の Python を使って run-python を動かすための設定 gnupack-11.00 の環境で NTEmacs64 を利用するための設定 ※ MinGW版 Emacs であれば NTEmacs64 以外にも適用可能です。 ■ Windows版 Emacs 共通の設定 (上記の「【基本設定】」が前提となっている設定があります) W32-IME を快適に使うための設定 emacs-mozc を動かすための設定(mozc_emacs_helper コンパイル編) emacs-mozc を動かすための設定(サーバ準備編) emacs-mozc を動かすための設定(Emacs 設定編) ※ 一部の設定を除き、Linux版 Emacs にも適用可能です。 locate を使うための設定 Notepad を使って印刷するための設定 emacs-eclim を使うための設定 Emacs で指定したファイルを Eclipse で開くための設定 Windows ショートカットを dired と連携して使うための設定 ← お薦めはこちら w32-symlinks を dired と連携して使うための設定 ■ Linux の Emacs で利用できる設定 リモートマシン上の Emacs から、ローカルマシンの Windowsアプリケーションソフトを起動するための設定 VirtualBox 上の Ubuntu から WSL を経由して Windows 環境にアクセスするための設定 ■ Windows Subsystem for Linux の Emacs で利用できる設定 【推奨設定】 WSL で Emacs を使うための設定 emacs-mozc を動かすための設定(WSL 設定編) Windowsパス と UNCパス を使えるようにするための設定(WSL 設定編) WSL で NTFS シンボリックリンクや Windows ショートカットを作成するための設定 WSL の emacsclient を Windows から利用するための設定 Windows ショートカットを dired と連携して使うための設定 ← お薦めはこちら w32-symlinks を dired と連携して使うための設定 Notepad を使って印刷するための設定(WSL 設定編) locate を使うための設定(WSL 設定編) WSL の Emacs から VSCode でファイルを開くための設定 VSCode で開いているファイルを WSL の Emacs で開くための設定 Windows の ssh から WSL2 の sshd に接続するための設定 (関連) WSL で cygstart 的コマンドを使うための設定 singleton な動きをする cygstart 的コマンドを使うための設定 (WSL版) ■ Emacs 全般で利用できる設定 shell-mode を使うための設定 shell-mode で複数の漢字コードを混在して利用できるようにするための設定 shellバッファ を簡単にポップアップするための設定 dired を OS と連携して使うための設定 dired をより便利に使うための設定 dired でディレクトリのシンボリックリンクを実体のパスで開くための設定 tramp を tramp-method “scp” で使うための設定 tramp による接続先で Xクライアント を実行するための設定 helm を使うための設定 helm から comint の入力履歴を検索するための設定 helm で peco もどきのコマンドを使うための設定 ediff をスマートに使うための設定 elscreen を使うための設定 whitespace を使うための設定 cua-mode を使うための設定 multiple-cursors を使うための設定 google-translate を使いやすくするための設定 ■ 説明ページを作るまでもない設定の紹介 沢山開いているバッファをできるだけ一度に閉じるための設定 (global-set-key (kbd "M-c") (lambda () (interactive) (desktop-clear) (tramp-cleanup-all-connections))) カレントバッファを一発で閉じるための設定 (global-set-key (kbd "M-k") (lambda () (interactive) (kill-buffer (buffer-name)))) ウィンドウの右端で改行をするかどうかを切り替えるための設定 (global-set-key (kbd "C-c C- return ") 'toggle-truncate-lines) 横スクロールするための設定(キー設定が逆の感覚の方もいるかも) (global-set-key (kbd "C-,") 'scroll-left) ; のキー (global-set-key (kbd "C-.") 'scroll-right) ; のキー other-window がなければ開き、その window に移動するための設定 http //d.hatena.ne.jp/rubikitch/20100210/emacs (defun other-window-or-split () (interactive) (when (one-window-p) (split-window-sensibly)) (other-window 1)) (global-set-key (kbd "C-x o") 'other-window-or-split) 2 分割しているバッファを入れ替えるための設定 http //www.bookshelf.jp/cgi-bin/goto.cgi?file=meadow node=swap%20screen (defun swap-screen-with-cursor() "Swap two screen,with cursor in same buffer." (interactive) (let ((thiswin (selected-window)) (thisbuf (window-buffer))) (other-window 1) (set-window-buffer thiswin (window-buffer)) (set-window-buffer (selected-window) thisbuf))) (global-set-key (kbd "M-t") 'swap-screen-with-cursor) バッファの分割方向を縦と横とで入れ替えるための設定 https //github.com/daichirata/emacs-rotate (require 'rotate) (setq rotate-functions '(rotate even-horizontal rotate even-vertical)) (global-set-key (kbd "M-\\") 'rotate-layout) tramp を使っていて、NTEmacs の起動が遅くなる場合に必要な設定 (require 'recentf) (setq recentf-auto-cleanup 'never) (recentf-mode 1) その他参考 http //www.clear-code.com/blog/2012/3/20.html ■ おまけ ssh-agent や ssh-pageant を使って、ssh のパスフレーズの入力を省略するための設定(方法1) ssh-agent や ssh-pageant を使って、ssh のパスフレーズの入力を省略するための設定(方法2) ssh-agent や ssh-pageant を使って、ssh のパスフレーズの入力を省略するための設定(方法3) ← お薦めはこちら Windows の操作を Emacs のキーバインドで行うための設定 (AutoHotKey版) Windows の操作を Emacs のキーバインドで行うための設定 (Keyhac版) ← お薦めはこちら ■ その他 MobaXterm を使おう Windows で sshfs を使うお薦めのソフト Subversion には dsvn を使っています。melpa からインストールできます。 Git には magit が便利です。 Vimacs というのもあるんですね。Evil と逆の発想のものだと思います。 http //blog.cnu.jp/2009/07/28/vimacs/ http //uguisu.skr.jp/Windows/vim.html spacemacsというのも見つけました。Windows版 Emacs でも動いているようです。 https //github.com/syl20bnr/spacemacs ■ 参考サイト Manual http //emacs.rubikitch.com/emacs245-manual-ja/ https //ayatakesi.github.io/ https //github.com/ayatakesi Lisp と JavaScript https //www.slideshare.net/taiju/javascriptlisp https //qiita.com/derui/items/6e8de68cc1b7295de3a6 Common Lisp http //www.geocities.jp/m_hiroi/xyzzy_lisp.html functional-programming https //postd.cc/an-introduction-to-functional-programming/ https //qiita.com/hiruberuto/items/26a813ab2b188ca39019 nadvice http //g000001.cddddr.org/3623238000 ` before'(lambda ( rest r) (apply FUNCTION r) (apply OLDFUN r)) ` after'(lambda ( rest r) (prog1 (apply OLDFUN r) (apply FUNCTION r))) ` around'(lambda ( rest r) (apply FUNCTION OLDFUN r)) ` override'(lambda ( rest r) (apply FUNCTION r)) ` before-while'(lambda ( rest r) (and (apply FUNCTION r) (apply OLDFUN r))) ` before-until'(lambda ( rest r) (or (apply FUNCTION r) (apply OLDFUN r))) ` after-while'(lambda ( rest r) (and (apply OLDFUN r) (apply FUNCTION r))) ` after-until'(lambda ( rest r) (or (apply OLDFUN r) (apply FUNCTION r))) ` filter-args'(lambda ( rest r) (apply OLDFUN (funcall FUNCTION r))) ` filter-return'(lambda ( rest r) (funcall FUNCTION (apply OLDFUN r))) generalized variables http //kawabata.github.io/blog/2013-03-14-general-variables.html http //qiita.com/kawabata@github/items/9a1a1e211c57a56578d8 lexical-binding http //sakito.jp/emacs/emacs24.html#emacs-lisp-lexical-binding http //d.hatena.ne.jp/mhayashi1120/20130327/1364396586 flet http //ja.stackoverflow.com/questions/5458/flet%E3%81%A8cl-flet%E3%81%AE%E5%B7%AE%E7%95%B0 noflet http //emacs.rubikitch.com/noflet/ function http //www.mew.org/~kazu/doc/elisp/function.html custom-set-variables http //kawamuray.hatenablog.com/entry/2013/11/03/180543 buffer local variable https //qiita.com/yoshrc/items/00f3c08f7a5cac911c3a https //qiita.com/tadsan/items/9d287a57c26711387043 Emacs http //qiita.com/ytoda129/items/58078d8c7e74d9144014 https //miyazakikenji.wordpress.com/2015/08/11/ac-mozc-on-emacs25-in-ubuntu/(誤記有: apt-add repository - apt-add-repository。インストールされるものが最新過ぎるかも。) http //nkenbou.hatenablog.com/entry/2015/06/30/051408 http //askubuntu.com/questions/87872/how-do-i-accept-the-configuration-screen-that-pops-up-when-installing-postfix http //tanehp.ec-net.jp/heppoko-lab/prog/zakki/emacs/emacs.html http //d.hatena.ne.jp/tomoya/20081228/1230421982 http //blog.ichiroc.in/entry/2013/08/30/185953 init-loader.el http //d.hatena.ne.jp/gin0606/20111021/1319196327 http //tech.kayac.com/archive/divide-dot-emacs.html http //qiita.com/catatsuy/items/5f1cd86e2522fd3384a0 font http //extra-vision.blogspot.com/2016/07/emacs.html http //mix-mplus-ipa.osdn.jp/migu/ http //save.sys.t.u-tokyo.ac.jp/~yusa/fonts/ricty.html dabbrev http //konbu13.hatenablog.com/entry/2014/03/09/080947 emacsclient https //qiita.com/acple@github/items/4be7eb774a28d574281e helm https //github.com/emacs-helm/helm/wiki https //github.com/emacs-helm/helm/wiki/Developing http //syohex.hatenablog.com/entry/2015/10/10/171926 https //masutaka.net/chalow/2014-04-02-1.html mozc http //nyaruru.hatenablog.com/archive http //d.hatena.ne.jp/rti7743/20100513/1273710518 https //www.codeproject.com/Articles/13724/Windows-IPC http //myfuturesightforpast.blogspot.com/2015/08/googlemozcimewindowslinuxandroid.html https //github.com/kento1218/mozc-incog-switcher Google日本語入力 https //productforums.google.com/forum/#!topic/ime-ja/5CCIenG_0Zw https //productforums.google.com/forum/#!topic/ime-ja/xBJLDHyJVw0 eclim http //eclim.org https //github.com/senny/emacs-eclim OminiSharp https //github.com/omnisharp roslyn https //www.buildinsider.net/enterprise/roslyn/01 lsp https //github.com/emacs-lsp https //github.com/joaotavora/eglot https //microsoft.github.io/language-server-protocol/implementors/servers/ https //qiita.com/blue0513/items/acc962738c7f4da26656 https //qiita.com/atsushieno/items/ce31df9bd88e98eec5c4 https //qiita.com/515hikaru/items/8b364b4d091459a85dc0 TabNine https //qiita.com/blue0513/items/2634fcb3757629124c87 https //qiita.com/gorogoroyasu/items/f49ee019ea886181d972 IDE https //www.mediamaxjapan.com/techblog/articles/lets-start-using-ide/ WSL https //opcdiary.net/?p=32284 https //qiita.com/nishemon/items/bb3aca972404f68bfcd6 https //qiita.com/zophos/items/5cf66385a88186c2fac9 http //ascii.jp/elem/000/001/278/1278792/ http //ascii.jp/elem/000/001/402/1402257/ https //ascii.jp/elem/000/001/803/1803883/ http //www.clear-code.com/blog/2017/11/8.html https //www.atmarkit.co.jp/ait/articles/1711/09/news032.html for Windows 10 1803 https //kledgeb.blogspot.jp/2018/03/wsl-142-windows-101803wsl.html http //www.atmarkit.co.jp/ait/articles/1805/24/news022.html for Windows 10 1607 https //github.com/goreliu/wsl-terminal https //github.com/rprichard/wslbridge https //github.com/xilun/cbwin http //qiita.com/shiena/items/b8036514c217000a221 WSL2 https //ascii.jp/elem/000/004/007/4007561/ binfmt_misc http //ascii.jp/elem/000/001/428/1428626/ https //qiita.com/lnznt/items/c729d80d0800a8f78298 http //archive.linux.or.jp/JF/JFdocs/kernel-docs-2.6/binfmt_misc.txt.html D-Bus http //d.hatena.ne.jp/debug-ito/20130502/1367487352 http //www.usupi.org/sysad/175.html http //www.usupi.org/sysad/176.html http //wordpress.honobono-life.info/lin-base/linux%E3%81%AEdbus-daemon%E3%83%97%E3%83%AD%E3%82%BB%E3%82%B9%E3%81%AE%E6%A6%82%E8%A6%81/ bash http //www.akamoz.jp/you/uni/shellscript.htm https //orebibou.com/2017/04/shopt%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E3%81%A7%E8%A8%AD%E5%AE%9A%E3%81%A7%E3%81%8D%E3%82%8Bbash%E3%81%AE%E4%BE%BF%E5%88%A9%E8%A8%AD%E5%AE%9A%E3%81%BE%E3%81%A8%E3%82%81/ gsudo https //qiita.com/_masa_u/items/a799745d70b30c32a03b https //github.com/gerardog/gsudo stdbuf https //linuxcommand.net/stdbuf/ cocot https //vmi.jp/software/cygwin/cocot.html ssh http //kazuph.hateblo.jp/entry/2013/02/04/192358 http //qiita.com/kazuph/items/46e7f665f8c09ec29471 http //inaz2.hatenablog.com/entry/2013/04/30/221348 ssh-agent-wsl https //qiita.com/q1701/items/3cdc2d7ef7a3539f351d socat http //racchai.hatenablog.com/entry/2016/04/14/173000 SocksCap64 https //www.cup.com/staticip/manual/win_sockscap64.html Named Pipe TCP Proxy Utility http //shvechkov.tripod.com/nptp.html https //yamanxworld.blogspot.jp/2011/06/com-ems.html trac http //blog.kyanny.me/entry/2011/11/19/023643 DOS https //goo.gl/rS2qoh https //thinca.hatenablog.com/entry/20100210/1265813598 http //coelacanth-deepsea.hatenablog.com/entry/2013/01/13/162350 https //korokorokoron.hatenadiary.org/entries/2010/03/16 http //ykr414.com/dos/bat.html http //pentan.info/server/windows/cmd/dp0.html https //tunemicky.blogspot.com/2012/03/cmdexe-c.html http //www.atmarkit.co.jp/ait/articles/1306/07/news111.html UAC https //www.glamenv-septzen.net/view/832 fsutil http //www.atmarkit.co.jp/ait/articles/1306/28/news106.html https //blogs.technet.microsoft.com/jpntsblog/2016/08/31/smbandsymlink/ Windows Shortcut File Format https //storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/8bits/The_Windows_Shortcut_File_Format.pdf https //docs.microsoft.com/en-us/openspecs/windows_protocols/ms-shllink/16cb4ca1-9339-4d0c-a68d-bf1d6cc0f943 Android http //d.hatena.ne.jp/moerrari/20170723 http //ottan.xyz/android-linux-noroot-gui-5690/ http //qiita.com/z80oolong/items/4ef119a6af79a9276a0d http //www.mhatta.org/wp/blog/2017/08/06/emacs-on-android/ Keyhac https //sites.google.com/site/craftware/keyhac-ja https //github.com/crftwr/keyhac/blob/master/keyhac_main.py#L7-L21 closure http //www.lifewithpython.com/2014/09/python-use-closures.html?m=1 http //blog.starbug1.com/archives/290 AutoHotKey https //so-zou.jp/software/tool/system/auto-hot-key/introduction/ http //ahkwiki.net/Top http //fxrobot.hatenablog.com/archive/category/AutoHotKey Bat To Exe Converter http //blog.mukairiku.net/2012/10/%E3%83%90%E3%83%83%E3%83%81%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92exe%E3%81%AB%E5%A4%89%E6%8F%9B%E3%81%99%E3%82%8B-bat-to-exe-converter.html http //www.f2ko.de/en/b2e.php Emacs keybind https //linuxfan.info/emacs-key-theme https //qiita.com/shiena/items/37032aacc241b1333e13 xkeysnail https //qiita.com/mooz@github/items/c5f25f27847333dd0b37 https //github.com/mooz/xkeysnail q-text-as-data http //harelba.github.io/q/ja/ https //www.google.com/search?q=q-text-as-data qq https //github.com/mattn/qq https //mattn.kaoriya.net/software/lang/go/20160805190022.htm Open-usp-Tukubai https //github.com/usp-engineers-community/Open-usp-Tukubai article http //kledgeb.blogspot.jp/2016/07/wsl-31-windows-10ubuntuunityxubuntuxfce4.html https //github.com/Microsoft/BashOnWindows/issues/637 http //www.zdnet.com/article/how-to-run-run-the-native-ubuntu-desktop-on-windows-10/ http //winaero.com/blog/run-ubuntu-unity-on-windows-10/ https //blogs.msdn.microsoft.com/wsl/2016/10/19/windows-and-ubuntu-interoperability/ http //kledgeb.blogspot.jp/2016/10/wsl-51-bashwindows.html http //ascii.jp/elem/000/001/246/1246548/ http //ascii.jp/elem/000/001/250/1250797/ MacOS https //applech2.com/archives/45181430.html https //applech2.com/archives/47447129.html https //blog.amedama.jp/entry/lima-macos-amd64-vm https //zenn.dev/ciloholic/articles/bbc6927ecfbdb4 https //qiita.com/chibiegg/items/eede37345f7058ce604d https //dev.classmethod.jp/articles/intro-to-multipass/ (function(i,s,o,g,r,a,m){i[ GoogleAnalyticsObject ]=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document, script , //www.google-analytics.com/analytics.js , ga ); ga( create , UA-40267130-1 , atwiki.jp ); ga( send , pageview );
https://w.atwiki.jp/bonbon_wikiwiki/pages/14.html
このページについて。 要するに。 Emacsについてのリンク、および各種設定などを記録してます。 目次 {{toc_here}} .emacs*ファイルの記述について。 カラーテーマ見本帳 http //www.cs.cmu.edu/~maverick/GNUEmacsColorThemeTest/index-c.html が参考になります。結構重いページかも。 私はいちいちあれこれ変更するのが面倒なのでカラーテーマで一括指定。指定方法は下記のとおり。 (require color-theme) (color-theme-initialize) (color-theme-お好きなテーマのタイトル) 注意点 たとえば「Gray30」をテーマに設定したいときに、そのままだとエラーになることがあるようです。「gray30」と頭文字も小文字に設定することが大事らしい…。なんだかなぁ…。 Shell関連。 Bashのプロンプトの表示を変更する。 see - http //www.atmarkit.co.jp/flinux/rensai/linuxtips/002cngprmpt.html たとえば export PS1="\s-\v \w$ " #コマンドプロンプト表示を変更。 といった具合に設定ファイル(.profileなど)に記述して$sourceコマンドで設定を現在のシェルへ反映させてやればすぐに変更される。 画面表示について(含むCarbonEmacsの画面最大化) http //www.sooey.com/journal/2008/04/29/721/ とかを参考に下記のとおり。私はMacOSX-10.4使いなので以下はCarbonEmacs2008春版の設定です。前記リンクに記載されているとおり、2008夏版以降ではきっと設定が違うんでしょね。 (if window-system (progn () ;;ツールバーをoffに。 (tool-bar-mode -1) ;;スクロールバーの設定。不要ならnil。 (toggle-scroll-bar nil) ;;フルスクリーン時にメニューバーを隠したい場合は以下を有効にする (setq mac-autohide-menubar-on-maximize t) ;;ウィンドウ最大化指定。 ;; でもちょっとしたメモのときは ;; M-x mac-toggle-max-window とコマンド打って ;; デフォルトに戻したほうが使いやすいかも。 ;; もういっかい同じコマンド打てば ;; また最大化してくれます。 (mac-toggle-max-window) ;;最大化したときのwindowの縦の段数を指定。 ;;12 は48で丁度。macbookだと50が丁度良いとかなんとか。 (setq default-frame-alist (append (list (height . 48) ))) ) ) howm|http //howm.sourceforge.jp/index-j.html関連。 Emacsのカレンダーをhowmに連動させる.emacsコード。 http //www.bookshelf.jp/soft/meadow_38.html#SEC556 おもしろすぎ。 行末・行頭の折返し記号を消したい。 fringe-modeの設定をする。 # M-x fringe-mode と入力、RETする。 # Select fringe mode for all frames (type ? for list) と聞いてくるのでかまわずRETする。 #消える 。 注意点 折返し記号がなくなった分、文章があまりにバッファの左端から右端までぴったりになってしまうのが難点といえば難点。 折返し記号(fringe)の色を変えてしまう。 (set-face-foreground fringe "gray15") といったコードを.emacsファイルに書き込んで、背景色と同化させてしまう。前記の場合はgray15と設定している。 Emacsの色見本 http //suiten.wig.nu/text/diary/1999/rgb.html ベターザンベター。 雑記 最近のcarbonEmacsには最初からhowmがインストールされているのね。 最初netInstallの項目から外れているしbuildしようとすると./configureで「あんさんのEmacsには組みこめませんて」といわれるしで混乱。 もののためしにM-xで「howm」と入力してタブ補完させると候補がずらずらでるので「まさか…ひょっとして…」とC-c,,するとhowm起動。すみません3日ぐらい気づきませんでしたorz。[2008/08/01]
https://w.atwiki.jp/ntemacs/pages/42.html
■ Windows版 Emacs 共通の設定 【お知らせ】 2017/05/25 追記 Language Server Protocol client for Emacs というのもあるようです。 https //github.com/emacs-lsp/ 2017/04/05 追記 OmniSharp も面白そうです。 http //qiita.com/haripo/items/bbe2b91b83bf3c71dac8 2015/05/19 追記 Cygwin版 Emacs に対応しました。設定を MinGW版 Emacs と Cygwin版 Emacs で共有できるようにするため、パスの指定方法を cygpathコマンド で言うところの unix形式 に統一しています。MinGW版 Emacs を利用する場合、Cygwin の導入、cygdriveプレフィクス の / 設定、cygwin-mount.el のインストールが行われていれば(gnupack-11.00 の標準設定)、うまく動くと思います。(もしうまく動かない場合には、パスを mixed形式(c /foo/bar のような形式) に変更してみてください。) 2015/05/18 追記 Eclipse に pleiades をインストールする場合に eclimd が起動しない対策をアドバイスを用いて対応しました。 (この対応により、eclipse.ini の修正は不要となりました。) 【本題】 emacs-eclim を使うための設定です。 1) Eclipse、JDK をインストールする。 2015/5/18 時点で最新の eclim は、v2.4.1です。 http //eclim.org このeclim を利用するには、Eclipse 4.4.x(Luna) と JDK 1.7 以上が必要です。 http //eclim.org/install.html 必要に応じて、pleiades もインストールしてください。 2) eclim をインストールする。 次のコマンドでインストールできます。途中、vimfiles のディレクトリがないと怒られますが、"作らない"(いいえ)を選択し、「Do not install vim files (emacs users only)」にチェックを入れ、進んでください。 java -jar eclim_2.4.1.jar http //eclim.org/install.html#installing-upgrading 3) emacs-eclim、auto-complete をインストールする。 melpa からインストールしてください。 4) emacs-eclim の設定をする。 https //github.com/senny/emacs-eclim 上記のページを参考にしながら、以下のような設定を行ってください。eclim-executable の変数の設定では、コメントに書いているとおり、ドライブの指定方法に留意してください。 また、Eclipse のインストールパスと workspace のディフォルトパスは適宜変更してください。 (require cl-lib) (require eclim) (global-eclim-mode) (require eclimd) (custom-set-variables (eclim-eclipse-dirs ("/c/opt/eclipse")) ;; MinGW版 Emacs の場合、「c /」を使った表記とすると eclim--call-process から ;; 呼ばれる shell-command-to-string が正常に動作しない。 ;; (shell-quote-argument で追加されたエスケープ文字をうまく処理できないようだ。) ;; 理由は分らないが、「c /」の前にスペースを入れるか、unixタイプのパスとすると ;; 動作することを確認している。 ;; × (eclim-executable "c /usr/local/eclipse_4.4/eclim.bat") (eclim-executable "/c/opt/eclipse/eclim.bat") (eclimd-executable "/c/opt/eclipse/eclimd.bat") (eclimd-default-workspace "/c/home/workspace") ;; eclimd の起動が完了するのを待たない(*eclimd* バッファで起動の状況を確認できます) (eclimd-wait-for-process nil)) ;; Eclipse に pleiades をインストールしている場合に eclimd が起動しないことの対策 (advice-add start-eclimd around (lambda (orig-fun rest args) (let ((default-directory (file-name-directory (expand-file-name eclimd-executable)))) (apply orig-fun args)))) ;; executable-find によるチェックにより、eclimd が起動できない場合の対策 (advice-add start-eclimd around (lambda (orig-fun rest args) (cl-letf (((symbol-function executable-find) (symbol-function identity))) (apply orig-fun args)))) ;; Workspace directory を windows形式のパス に変換する (advice-add start-eclimd before (lambda (orig-fun rest args) (interactive (list (read-directory-name "Workspace directory " eclimd-default-workspace nil t))) (setf (nth 0 args) (if (fboundp cygwin-convert-file-name-to-windows) (cygwin-convert-file-name-to-windows (expand-file-name (nth 0 args))) (expand-file-name (nth 0 args)))))) (when (eq os-type cygwin) ;; 作成するコマンドにファイルのパスが含まれていれば、mixed形式 のパスに変換する (advice-add eclim--make-command around (lambda (orig-fun rest args) (cl-letf (((symbol-function shell-quote-argument-original) (symbol-function shell-quote-argument)) ((symbol-function shell-quote-argument) (lambda (argument) (shell-quote-argument-original (replace-regexp-in-string "^/\\([a-zA-Z]\\)/" "\\1 /" argument))))) (apply orig-fun args))))) ;; auto-complete の設定を行う ;; http //dev.ariel-networks.com/wp/documents/aritcles/emacs/part9 ;; http //cx4a.org/software/auto-complete/manual.ja.html (require auto-complete-config) (ac-config-default) ;; emacs-eclim source の追加を行う (require ac-emacs-eclim-source) (ac-emacs-eclim-config) ;; 補完を自動的に開始しない (setq ac-auto-start nil) ;; TABキーで補完を開始する(TABキーをコンテキストに応じて補完用のキーにする) (ac-set-trigger-key "TAB") ;; 次候補、前候補を選択するキーを設定する (define-key ac-complete-mode-map (kbd "C-n") ac-next) (define-key ac-complete-mode-map (kbd "C-p") ac-previous) ;; デバッグメッセージを表示する ;; (eclim-toggle-print-debug-messages) ;; java-mode で eclim-mode を有効にする (add-hook java-mode-hook eclim-mode) 5) eclimd を起動する。 M-x start-eclimd で起動してください。 正常に起動したかは、別途開く DOS窓 で確認してください。 なお、Windows から eclimd.bat をダブルクリックすることでも起動可能ですが、この場合、パラメータとして workspaceパスを渡すことができません。 次のページの「For Windows」で始まる行以降にこの対策方法が載っていますので、eclimd.bat を直接起動させたい方は参考としてください。 http //eclim.org/faq.html 6) NTEmacsを立ち上げ、eclim-emacs を起動する。 M-x eclim-project-mode 7) Eclipse のプロジェクトを選択し、編集するソースファイルを開く。 8) eclim で始まるいろいろなコマンドを試す。 helm の場合、C-c C-e C-h でコマンドの一覧を確認できます。 9) eclimd を停止する。 M-x stop-eclimd で停止してください。DOS窓 の×で停止すると、Javaエラーとなります。 なお、M-x start-eclimd を使わずに Eclipse を GUI で立ち上げ、eclimd を起動する方法があります。 この場合は、5) の代わりに Eclipse を立ち上げ、メニューから以下を辿って eclimd を起動してください。起動は初回のみで OK です。 日本語メニューの場合) ウインドウ ビューの表示 その他 Eclim eclimd 英語メニューの場合) Window Show View Other Eclim eclimd また、eclimd を外部の DOS窓 を開かずに、Emacs のバッファ内で起動する方法があります。 ちょっとトリッキーな設定が必要となりますが、興味のある方は以下を参考にして試してみてください。 1) eclimd-executable の設定を次のとおりに変更する。 (custom-set-variables (eclimd-executable "/c/opt/eclipse/eclimd.sh")) Eclipse のインストールパスは適宜変更してください。 2) Eclipse のインストールディレクトリ(eclim.bat がある場所)に次のスクリプトを eclimd.sh として格納する。 eclimd.sh #!/bin/sh # -*- coding utf-8-unix -*- export SHELLOPTS set -o igncr function pwd() { cygpath -m `/bin/pwd`; } export -f pwd `dirname $0`/plugins/org.eclim_2.4.1/bin/eclimd "$@" 3) eclimd を起動する。 M-x start-eclimd で起動してください。 正常に起動したかは、*eclimd* バッファを確認することでわかります。 こちらの環境では次のページに書かれている問題が発生したので、「%JAVA_HOME%\bin」をPathの一番最初に移動しました。 http //d.hatena.ne.jp/happynow/20120521/1337599059 4) eclimd を停止する。 M-x stop-eclimd で停止してください。 変更履歴 2014/09/26 このページを作成した。 2014/09/27 start-eclimd と stop-eclimd を動かすための設定を追加した。 2014/09/29 eclimd を eclimd.bat で起動した際の停止方法を追記した。 2014/09/29 eclimd-wait-for-process の設定を追加した。 2014/09/30 eclimd.sh のスクリプト内容の見直しを行った。 2014/09/30 eclim-executable の設定内容を変更した。(「/c/」から始まる文字列を、最初にスペースの入った「 c /」の文字列で始まるようにした。) 2014/10/01 eclimd.bat の起動方法を変更した。また、eclimd.sh の内容を修正した。 2015.05.18 Eclipse に pleiades をインストールする場合に eclimd が起動しない対策をアドバイスを用いて対応しました。(eclipse.ini の修正は不要となりました。) 2015.05.19 Cygwin版 Emacs に対応した。 2015/09/13 advice を Emacs-24.4 以降の書式に見直した。
https://w.atwiki.jp/mynote/pages/10.html
Fortran Fortran FFTプログラム以下簡単な使い方 Gnu fortran77 コンパイルオプション Fortranのデータ型 「'」「"」シングルクォーテーションとダブルクォーテーション Fortran90の2連コロンとは・・・? Option説明 Tips format文 エラーメモこれはmain.fにendを入れていなかったとき出たエラー・・・最低ですね ファイル名をcip.fじゃなくてcpi.fにしてmakeしてたときに出たエラー・・・ (^)病人の本質的な'COS'の参照--1つ以上の議論には、不正確なタイプがあります。 型の宣言がおかしい、i,jはinteger(整数型)・・・当然cos()の中はflot commonファイルにistepというのがあってIntegerだよ! f(i,j)とかのi,jが設定値を超えると出るエラーらしい Permissionつまり実行権限の問題!(chmod -777 で変えてやればいいときもあるが、なぜそのパーミッションになってしまっているかが問題) COMMON分メモ http //www.jp.freebsd.org/cgi/mroff.cgi?sect=1 cmd= lc=1 subdir=man dir=jpman-6.0.0%2Fman subdir=man man=f77 FFTプログラム k-spaceを見るときフーリエ変換を用いるが、普通にフーリエ変換をしていくと何日かかるかわからない。そこで使用するのがFFT(Fast Fourier Transform=高速フーリエ変換)である! 数値計算結果の解析を行う上で数多あるFFTの内1つぐらいはFFTライブラリを使用できるべきであろうと思う。 http //www.kurims.kyoto-u.ac.jp/~ooura/fftman/ 以下簡単な使い方 http //www20.atwiki.jp/mynote/pages/81.html Gnu fortran77 コンパイルオプション $g77 -O3 -ml -o acip.out -g -Wall acip.f O3 最適化オプション 「Option Level 3」の意味 ml Mathe libraryの使用(C言語やSin等の関数を仕様するとき必要かも) Wall -Wunused と -Wuninitialized オプションの結合(Wから始まるオプションを全てと言う意味) Fortranのデータ型 Integer型10桁 整数(4Byte)だから2^(4*8)で+ーある訳だから/2が最大値format文はI10で 2147483647(0を含む)~-2147483648 「 」「"」シングルクォーテーションとダブルクォーテーション print文などで文字列を扱う場合には、文字列をシングルクォーテーション( ) またはダブルクォーテーション( " )でくくります。シングルクォーテーションでくくるかダブルクォーテーションでくくるかでは多少意味が異なります。シングルクォーテーション( )でくくった場合は、そのままの文字として扱われます。 例) print そのまま\n出力します ;- [表示]そのまま\n出力します ダブルクォーテーション( " )でくくった場合は、メタ文字(\+アルファベットで制御コードなどを表す文字)や 変数等を挿入して扱う事ができるようになります。 例) print "メタ文字を\n出力します";- [表示]メタ文字を(ここに改行コードが入る)出力します 状況に応じて使い分けるしかないのですが、全角の表示でShiftJISを使用する場合に、 「ソ」や「表」といった文字は2バイト目が \ と同じコードとなり、文字が化ける場合が あるため、全角の表示はシングルクォーテーション( )でくくる方が無難です。 Fortran90の2連コロンとは・・・? 2連コロンを使った宣言方法あります。「integer c」と書きます。これまでに紹介した方法と、どこが違うのでしょうか。一つは、宣言に加えて初期値の設定ができるという点です。今までは初期値の設定は、宣言文で宣言した後、算術代入文やDATA文で値を入力する方法しかありませんでした。しかしこの宣言方法の場合、「integer a=4」というように、宣言の段階で値の入力ができるのです。これにより、書く量が少なくなり、aの扱われ方が非常に分かりやすくなります。C言語では宣言+入力は当たり前のことなのですが、Fortran77の段階ではこれは不可能でした。もう一つの利点は、宣言を複数重ねることができるのです。例えば、後の章で学ぶ「配列」の宣言文である「DIMENSION文」がありまして、今までは「integer g」の後に、「dimension g(20)」と書いていました。2連コロンの宣言方法を使うと、これと型宣言文を一つにまとめて、「integer,dimension(20) g」(宣言文同士の間にカンマが入ります)とすることができます。慣れるとこの宣言方法ばかり使用します。では、練習してみましょう。 Option説明 -O3 最適化を行います。最適化コンパイルは幾分長めの処理時間と、大きな関数に対する非常に多くのメモリを必要とします。これ以上の最適化オプションについては GCC ドキュメントを参照して下さい。特にループ展開は典型的な数値計算の Fortran プログラムにとっては調べる価値があるかも知れません。 -o file 出力先を file に指定します。 -g オペレーティングシステムのネイティブのフォーマット (DBX, SDB,DWARF) でデバッグ情報を生成します。GDB はこのデバッグ情報に基づいて動作することができます。 DBX フォーマットを使用するほとんどのシステムにおいては、`-g を指定すると、GDB だけが使用できる余分なデバッグ情報が使用可能になります。他の多くの Fortran コンパイラと異なり、GNU Fortran は `-g を `-O とともに使用することを許しています。最適化されたコードが通る近道は、時には驚くべき結果を生み出すかもしれません。定義したはずの変数が存在しなかったり、制御の流れが予想もしなかった場所に移動したり、結果が定数とわかる計算や、結果がすでに手元にある文は実行されなくなり、ある文がループの外に追い出されて別の場所で実行されたりします。それにも関わらず、このオプションは最適化された出力のデバッグを可能としています。これによって、バグを含むかもしれないプログラムに対してオプティマイザを使用することができるようになります。 -Wall たとえマクロとの組み合わせであっても、避けたほうがいいと我々が推奨する用法や、簡単に避けることができると我々が信じている用法に関する場合に警告します http //www-lab.imr.tohoku.ac.jp/~t-nissie/computer/c-tips/#section4 Fortran は write 文を 1 回実行する度に改行を行う。 (1) do i=1,n write(6,*) a(i) end do (2) write(6,*) (a(i),i=1,n) では異なる結果となります。(1) では一つの要素毎に改行するのに対して、(2) では全ての要素を空白で繋げて出力したのち改行します。 Tips http //docs.sun.com/source/806-4841/representations.html その四「Fortran WRITE文で改行させない方法」 FortranであるWRITE文で改行せず, その次のWRITE文で同じ行に書き続けたいときには書式 (FORMAT) の最後に$を付ける. こんなかんじ program suppress_new_line implicit none write(6, (a,$) ) abc write(6, (a) ) def write(6, (a) ) ghi end program suppress_new_line その五「Fortran 文字列をつなげる方法」 Fortranで二つの文字列をつなげるには//を使う. こんなかんじ implicit none character*1 a,b,c,d character*1 e character*2 f a = X b = Y c = U d = V write(6, (a) ) a // b e = (c // d) f = (c // d) write(6, (a) ) e write(6, (a) ) f end format文 format 文を使うと文番号を使う必要があります。以下のようにすると format 文を使わずに済ませることが出来ます。 write(6, (a,f8.5,a,i3.3) ) a = ,a, i = ,i format 文を使わないことにより、プログラムの cut paste のときに文番号の衝突を気にしなくて済みます。なお、上の例の i3.3 は 3 桁で出力し、それに満たない場合は 0 を補うと言う意味です。 エラーメモ 1 main.f In program `MAIN__ main.f 9 call init ^ End of source file before end of block started at (^) make *** [main.o] Error 1 utmcc000 ~/programs/zalesak02/zal_source SaitouDaisuke$ これはmain.fにendを入れていなかったとき出たエラー・・・最低ですね 2 make *** No rule to make target `cip.f , needed by `cip.o . Stop. ファイル名をcip.fじゃなくてcpi.fにしてmakeしてたときに出たエラー・・・ 3 Reference to intrinsic `EXP at (^) invalid -- one or more arguments have incorrect type init.f 26 f(i,j) = (1/sqrt(2.0*3.141))*EXP(-(j**2)/2)*(1+0.01*cos(i/2)) ^ Reference to intrinsic `COS at (^) invalid -- one or more arguments have incorrect type (^)病人の本質的な COS の参照--1つ以上の議論には、不正確なタイプがあります。 型の宣言がおかしい、i,jはinteger(整数型)・・・当然cos()の中はflot 4 g77 -c -O init.f init.f In subroutine `init parameter.h 1 warning common f(0 im,0 jm),fs(0 im,0 jm), fss(0 im,0 jm), ^ Padding of 4 bytes required before `dt in common block `_BLNK__ at (^) -- consider reordering members, largest-type-size first common /a/ f(0 im,0 jm),fs(0 im,0 jm), fss(0 im,0 jm), gx(0 im,0 jm), gsx(0 im,0 jm), gssx(0 im,0 jm), gv(0 im,0 jm), gsv(0 im,0 jm), gssv(0 im,0 jm), fn(0 im,0 jm), gnx(0 im,0 jm), gnv(0 im,0 jm), es(0 im), v(0 jm), x(0 im), istep, dt, dx, dy, sum commonファイルにistepというのがあってIntegerだよ! 5 h153 ~/programs/CV2_2DCIP/fortran se$ make make Circular main.f - main.f dependency dropped. make Circular input.f - input.f dependency dropped. make Circular output.f - output.f dependency dropped. make Circular acip2d.f - acip2d.f dependency dropped. make Circular poisson.f - poisson.f dependency dropped. g77 main.f input.f output.f acip2d.f poisson.f -o cv2 ./cv2 make *** [run_main] Segmentation fault f(i,j)とかのi,jが設定値を超えると出るエラーらしい 6 h153 ~/programs/CV2_2DCIP/fortran se$ make make Circular main.f - main.f dependency dropped. make Circular input.f - input.f dependency dropped. make Circular output.f - output.f dependency dropped. make Circular acip2d.f - acip2d.f dependency dropped. make Circular poisson.f - poisson.f dependency dropped. g77 main.f input.f output.f acip2d.f poisson.f -o cv2 ./cv2 make Permission to access file denied Permissionつまり実行権限の問題!(chmod -777 で変えてやればいいときもあるが、なぜそのパーミッションになってしまっているかが問題) ____ COMMON分メモ 便利なツールとして、次は「COMMON」文を紹介しましょう。ただ、余り使用は進められません。理由は、次章でお話しますが、COMMON文にはいろいろと問題が多いのです。これと同じ機能を持ち、かつ安全なモジュール(次章)がFortran90には用意されているので、あくまでFortran90 の人は、モジュールを使用するようにしてください。ここでのCOMMON文の紹介は、Fortran77人向けや一応の紹介だと受け止めてください。 COMMON文というのは、宣言した変数を、大域要素と使用、というものです。大域要素というのは、局所要素の反対で、どのプログラム単位においても有効な要素のことです。これまでは、主プログラムで宣言した変数と同じ名前の変数を副プログラムで使用していたとしても、それらは見かけ上同じでもまったく別の変数でしたね。主プログラムで「x」を使い、副プログラムでも「x」を使ったとしても、それらはx1とx2のように別の変数でした。このCOMMON 文を使用すると、それらが同じ「x」になるのです。同じ変数なので、型宣言をする必要がなくなります。変数全てに対して型宣言を再びしなくてもよくなるというのは、仮引数が多ければ多いほどありがたみを感じます。 使用方法は、まず主プログラムでCOMMON文を使用して、大域要素として変巣を定義します。「common /変数群の名前(領域名)/変数群」と書きます。領域名というのは、COMMON文を使用すると、「この領域にある変数が大域要素ですよ」ということを示す共通領域(ブロック)が作られます。その名前を、領域名のところに書きます。領域名は必須ではなく、書かなくても構いません。変数群を2種類以上に分け、それぞれに違った領域名をつける場合は、「common /p/a,b/q/c,d」のように、一つの領域名、変数群を書き、スラッシュを間に挟んで2つ目の領域名、、変数群を書いていきます。 br 2; COMMON文を使用すると、主プログラム・副プログラムの実・仮引数が不要となります。また、先ほども申し上げたとおり、型宣言をしなくてすむようになります(配列宣言は必要ですが)。副プログラムにおいて、使用する変数を、「common /領域名/使用する変数」のように定義します。これで、何が引数になるのかを示すわけですね。COMMON文を使用した例が、下の例文です。 program main common /p/a(5),xmax,xmin integer a,xmax,xmin print *, 最大値と最小値を求める。5個値を入力 read *,a(1 5) call sub print *, 最大値 ,xmax, 最小値 ,xmin end program subroutine sub common /p/a(5),xmax,xmin xmax=maxval(a,1) xmin=minval(a,1) end subroutine sub この例では、「a(5),xmax,xmin」を変数群、「p」を領域名とする共通ブロックを作成しました。領域名は省略可能です。これにより、 SUBROUTINEを使用する際の引数と、副プログラム内での型宣言が省略されています。ちなみに、COMMON文において配列宣言がなされているので、主プログラムでの型宣言時に「integer a(5)」という配列宣言は不要です。 しかし、COMMON文は使いづらい面があります。それは、副プログラム内で使用する際には、COMMON文を書くときに、変数の並び順を買えずにそのまま書かなければならない、ということです。この場合ですと、「common /p/a(5),xmax,xmin」というのを、「common /p/xmax,a(5),xmin」としてはいけない、ということです。COMMON文で変数を共通利用する際のその方法というのは、変数の名前ではなく、変数の並び順なのです。副プログラムに書かれたCOMMON文の変数の並び順に、主プログラムでのCOMMON文の並び順が適用されてしまうのです。ですから、副プログラムで「common /p/xmax,a(5),xmin」と書いてしまうと、「xmax」は主プログラムの「a(5)」に、「a(5)」は主プログラムの「xmax」になってしまうのです。名前でなく順番で変数を対応させているので、「common /p/y(5),c,i」でも可能です。この、並び順を正確に書かなければならないというのが、COMMON文の使いづらさです。 次は、「INTENT」と「OPTIONAL」です。共に仮引数に対して使います。INTENTから説明しましょう。INTENT文は、仮引数が主プログラムからの値や副プログラムで求めた値に対し、どう対応するのか、ということを決める文です。仮引数は、値に対する対応で3種類に分かれます。1つ目は、副プログラムでの計算をするために、主プログラムから必要な値を実引数から受け取ると言う、入力のみの引数です。2つ目は結果変数のことで、副プログラムで求めた値を、実引数に渡す、出力のみの引数です。3つ目は、今までは1回ぐらいしか出てこなかったと思いますが、入力も出力もこなす引数です(例えば、「a=a+2」のみが副プログラムでの計算であれば、、「a」は右辺で入力をし、左辺で計算結果を受け取って主プログラムに出力しています)。副プログラムで使用する仮引数が、この3つうちのどれなのかをコンピュータに対して明示的にするのが、INTENT文です。 使い方はいたって簡単です。副プログラムでの変数の型宣言のときに、「intent(属性)」を書けばいいだけです。先ほどの3つのうち、1つ目は属性が「in」、2つ目は「out」、3つ目は「inout」となります。例えば、整数型で入力のみの仮引数nの宣言文は、「integer,intent (in) n」と書きます。 この文は使用しなくても、副プログラムが3つのうちどれなのかを自動的に判断してくれますので、今までの仮引数の宣言の仕方は間違ってはいません。しかし、コンピュータといえども、先ほどのEXTERNALでの関数の間違いと同じように、仮引数の属性を間違ってしまうことがあります。自分では1番目の属性としてプログラムを組んでいるのに、コンピュータが3番目だと判断してしまい、おかしな実行結果になることがあることは考えられます。ですから、そうしたエラーを出さないようにするためには、INTENT文を使用してその属性をはっきりさせることが大事だということです。また属性を宣言することにより、プログラマ自身にとっても、その変数の役割をしっかりと認識することができます。 2つ目のOPTIONAL文は、対象の引数に省略可能を認める機能を持つ文です。副プログラムは実引数と仮引数の個数が一致するように書きますが、場合によっては省略できたほうが便利になることがあります。3つの引数を入力用として受け取る副プログラムがあるとしましょう。その副プログラムはこの3つを使って計算処理をするわけですが、2つに引数が減ったとしても、ほとんどの部分が3つの場合と同じ処理で可能だと分かりました。どうせほぼ同じ処理しかしないのであれば、わざわざ引数が2つ用の副プログラムをもう一個余分に作るよりも、3つ目の引数を省略可能な引数にして、引数が2つでも3つでも対応可能な副プログラムを作ったほうが簡単です。それを実現するのが、OPTIONAL文です。 引数を省略可能にするには、型宣言文にOPTIONAL文を追加します。例えば、「real,optional r」です。ただ、これだけでは不完全で、主プログラムにおいて、「INTERFACE」宣言をする必要があります。これは、INTERFACE文を使用して、「この副プログラムでは、この仮引数が使われていて、かつこの引数は省略可能なものとする」ということを宣言するのです。下の例をご覧ください。INTENTも一緒に使用しています。 program main implicit none interface real function f(x,y,z) real,intent(in),optional z real,intent(in) x,y end function f end interface integer n real x,y,z,kyori,f print *, 原点からある点までの距離を求める。ある点の次元数(2か3)を入力 read *,n if(n==2)then print *, 2次元で、ある点の座標を入力 read *,x,y kyori=f(x,y) print *,kyori else print *, 3次元で、ある点の座標を入力 read *,x,y,z kyori=f(x,y,z) print *,kyori endif end program real function f(x,y,z) real,optional z real x,y f=x**2+y**2 if(present(z))f=f+z**2 f=sqrt(f) end function f INTERFACE宣言は、PROGRAM文やFUNCTION文のように、END分が付いて、ここで宣言を閉じます。INTERFACE宣言の中には、副プログラムの先頭と、変数の宣言文をそっくりそのまま書きます。書いたらEND文で副プログラムを閉じるのを忘れないようにしてください。これにより、「z」は省略可能な引数になります。ですから、副プログラムを呼ぶときに、実引数が「x」と「y」だけでも、また「z」を含めても、同じ副プログラムで対応することができます。 副プログラム中にある「PRESENT」文は、省略可能な引数が今現在副プログラム中に存在しているかどうかを問い合わせる組み込み関数です。存在していれば真を返します。このプログラムの場合、「z」を引数として渡していれば、「f=f+z**2」、つまり「f=x**2+y**2+z**2」が行なわれることになります。 h153 ~/programs/CV2_2DCIP/fortran saitoudaisuke$ make make Circular main.f - main.f dependency dropped. make Circular input.f - input.f dependency dropped. make Circular output.f - output.f dependency dropped. make Circular acip2d.f - acip2d.f dependency dropped. make Circular poisson.f - poisson.f dependency dropped. g77 main.f input.f output.f acip2d.f poisson.f -o cv2 /usr/bin/ld Undefined symbols _MAIN__ collect2 ld returned 1 exit status make *** [cv2] Error 1 h153 ~/programs/CV2_2DCIP/fortran saitoudaisuke$ 判らんエラーだ???2010-02-03