Mathematica 10에서 Emacs에서 mathematica.el을 성공적으로 사용하고 있습니다. 그러나 문자 인코딩과 관련하여 Mathematica 표현식에서 mathematica-execute를 호출하면 많은^M 문자가 결과로 출력됩니다. OS X Mavericks에서 모든 프로세스를 실행하고 있습니다.) 처음에는 매쓰 매 티카의 $ CharacterEncoding이 파일과 일치하고 Emacs의 인코딩 과정을 최대한 잘 사용하고 있는지 확인했습니다 : utf-8. 여전히 문제가있을 수 있지만 그 경로는 해결책을 찾지 못했습니다. 다음으로 mathematica-execute를 호출하고 결과 출력에서 ^ M 문자를 제거하는 자체 함수를 작성하지 않는 것이 좋습니다. 다음은 관련 코드입니다.Emacs, mathematica.el 및 Mathematica 10에서 문자 인코딩 문제를 해결하는 방법은 무엇입니까?
(defun delete-to-out()
(next-line)
(set-mark-command nil)
(search-forward "]=")
(previous-line)
(delete-region (region-beginning) (region-end)))
(defun remove-^M()
"Get rid of ^M characters"
(interactive)
(message "remove-^M called!")
(save-excursion
(goto-char (point-min))
(while (re-search-forward "\r" nil t)
(replace-match ""))))
(defun my-mathematica-execute (arg)
"Call mathematica-execute and then clean out the ^M characters
it inserts by calling remove-^M"
(interactive "P")
(save-excursion
(mathematica-execute arg)
(remove-^M)
;; (delete-to-out)
))
;;; Define some mathematica mode keyboard bindings
(if mathematica-mode-map
(progn
(define-key mathematica-mode-map [remap mathematica-execute]
'my-mathematica-execute)
(define-key mathematica-mode-map (kbd "C-c m")
'remove-^M)))
my-mathematica-execute를 호출해도 작동하지만^M 문자는 제거되지 않습니다. remove-^M 또는 delete-to-out을 호출하면 이후에는 격리되어 작동합니다. 동기화 문제 또는 타이밍 문제 일 수 있습니까? 어떤 도움을 주시면 감사하겠습니다. 대안 솔루션은 확실히 환영합니다.
@Stefan에게 제안 해 주셔서 감사합니다. 나는 네가 그랬던 것처럼 생각했지만, 그렇지 않다는 것을 알았다. Mathematica는 utf-8을 Emacs로 사용하고 있습니다. (필자가 말할 수있는 한) Emacs이며, 터미널, 키보드, 파일, 프로세스 및 기타 다른 상황을 통해 인코딩을 설정할 수 있습니다.). – Joe
저는 mathematica 프로세스 출력을위한 프로세스 필터로 설정되는 mathematica-filter라는 함수를 해킹 할 적절한 장소를 찾을 수있었습니다. 거기에 replace-regexp-in-string 호출을 삽입하여 모든 \ r 문자를 제거했습니다. 그거야. 이제는 약간 조정할 것입니다 : 결과는 출력과 함께 현재 입력을 울려 퍼지고 싶지 않을 수 있습니다. 전형적으로 그것은 기본 쉘이 반향하기 때문입니다 (Mathematica가 쉘에서 실행 중이기 때문에, zsh). 적어도 내가 원하는대로 출력 스트림을 조작 할 수있는 엔트리 포인트가 있습니다. ... – Joe
잘만되면 누군가가 따라 와서 Emacs와 zsh가 함께 작업하여 입력 음을 멈추게 할 수있는 방법을 말해 주겠지 만 그것은 아마도 다른 질문 일 수 있습니다. 도움을 주셔서 다시 한 번 감사드립니다. – Joe