[해결]emacs nxhtml-mode 에서 버퍼를 w3m으로 불러오는 방법이요.

Meleeis의 이미지

php 공부를 할라고 emacs를 꾸미다가 본 공부는 때려치고 emacs 공부를 하는 중입니다.

html-mode에선 C-c C-v 바인딩이 기본으로 w3m을 불러서 html을 읽게 되어있는데요.

nxhtml-mode에선 그런 키바인딩이 없어서 인터넷을 뒤져보니 키설정으로 걍 읽게는 할수 있는데...

php같은건 그렇게만 해선 안되잖습니까.

프로그래밍을 못하니까 구글신에게 열심히 물어봤지만 이틀째 해답은 안보이네요.

간단한 php예제같은걸
/home/meleeis/public_html/aaa.php 에 저장하고.

C-c C-v 키바인딩으로
http://localhost/~meleeis/aaa.php를 w3m으로 불러오도록 하는 방법을 알고 싶습니다.

사족: kldp 뒤지다가 nxhtml-mode에 관한것들을 읽어보니 nxhtml-mode가 데비안 squeeze에서 부족한것 같다고 있는데.
emacs 23버전대의 데비안 wheezy에 lunchpad nxhtml-mode베타 버전을 적용하면 최소한 별 경고나 에러없이 잘 됩니다.(2012년 2월 6일 현재)

emacs 24 sanpshot 버전은 또 다른 버그때문에
이맥스 23.3+1-4 에 nxhtml-mode 2.09beta 정도 궁합이면 php + html 코딩은 잘 될듯? 합니다.

cinsk의 이미지

(defvar pathname-rewrite-url-table
  '(("\\`/home/\\([^/]+\\)/public_html/\\(.*\\)\\'" . 
     "http://localhost/~\\1/\\2")
    ("\\'/var/www/localhost/htdocs/\\(.*\\)\\'" . "http://localhost/\\1"))
  "Table for mapping pathname into HTTP URL")
 
(defun rewrite-url-from-pathname (pathname)
  "Return URL of PATHNAME if there is a rule.
 
This function uses `pathname-rewrite-url-table' to get the rewrite rule."
  (catch 'matched
    (dolist (ent pathname-rewrite-url-table)
      (let ((pattern (car ent))
            (replace (cdr ent))
            (matched nil)
            (result nil))
        (setq result (replace-regexp-in-string pattern
                                               (lambda (string)
                                                 (setq matched t)
                                                 replace)
                                               pathname))
        (if matched
            (throw 'matched result))))))
 
(defadvice browse-url-of-buffer (around browse-url-rewrite (&optional buffer))
  (let ((url (rewrite-url-from-pathname 
              (expand-file-name (buffer-file-name buffer)))))
    (if url
        (browse-url url)
      ad-do-it)))
 
(ad-activate 'browse-url-of-buffer)

를 등록해두고, browse-url-of-buffer를 C-c C-v로 binding하면 될 겁니다.
cinsk의 이미지

Emacs에 이미 있네요. -_-;
위에꺼 쓰지 마시고,

(add-to-list 'browse-url-filename-alist
             '("\\`/home/\\([^/]+\\)/public_html/\\(.*\\)\\'" . 
               "http://localhost/~\\1/\\2"))
(add-to-list 'browse-url-filename-alist
             '("\\'/var/www/localhost/htdocs/\\(.*\\)\\'" . 
               "http://localhost/\\1"))

그냥 위만 추가하셔도 됩니다.
Meleeis의 이미지

게다가 이렇게 빠른 답변이라니! 감사합니다.
집에가서 적용해보겠습니다.

Meleeis의 이미지

(load "~/.emacs.d/nxhtml/autostart.el"
;; browse url of buffer
(require 'browse-url)
(add-to-list 'browse-url-filename-alist
'("\\`/home/\\([^/]+\\)/public_html/\\(.*\\)\\'" .
"http://localhost/~\\1/\\2"))
(add-to-list 'browse-url-filename-alist
'("\\'/var/www/localhost/htdocs/\\(.*\\)\\'" .
"http://localhost/\\1"))
(global-set-key (kbd "C-c C-w") 'browse-url-of-buffer))

c-c c-v 바인딩이 nxhtml 모드의 마이너 모드 변경? 에 설정되어있기에
w로 변경했습니다.

Meleeis의 이미지

html-mode에선 예전대로 C-c C-v 로 그냥 브라우징만 하도록
nxhtml-mode에서만 키바인딩을 바꿉니다.

(load "~/.emacs.d/nxhtml/autostart.el"
;; browse url of buffer
(require 'browse-url)
(add-to-list 'browse-url-filename-alist
'("\\`/home/\\([^/]+\\)/public_html/\\(.*\\)\\'" .
"http://localhost/~\\1/\\2"))
(add-to-list 'browse-url-filename-alist
'("\\'/var/www/localhost/htdocs/\\(.*\\)\\'" .
"http://localhost/\\1"))
(add-hook 'nxhtml-mode-hook
(lambda ()
(local-set-key (kbd "C-c w") 'browse-url-of-buffer))
))
;; (global-set-key (kbd "C-c C-w") 'browse-url-of-buffer))

Meleeis의 이미지

...cinsk님처럼 어떻게 하는겁니까?

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.