2009-09-29 3 views
1

나는 호출 할 때마다 1과 3 사이의 버퍼를 여는 불쾌한 부작용이있는 (icalendar-import-file) 함수를 호출하는 플러그인을 작성하려고하는데 때로는 전체 호출을 호출하려고합니다.elisp에서 어떤 버퍼가 함수에 의해 열렸는지 알아 내겠습니까?

새 버퍼를 팝업하지 않고 버퍼를 나열하는 함수를 찾을 수조차되지 않습니다. 다소 실망 스럽습니다.

필자는 defun (ical...)이 유용한 것을 반환하지 않는다는 것을 알기 때문에 두 가지 확실한 해결책은 다음 중 하나입니다. (1) 함수를 실행하기 전에 변수를 버퍼 목록으로 설정하고, 함수를 종료하고 새로운 것을 지우고 (save-excursion과 비슷하지만 버퍼에 대해) 또는 (2) 어떻게 든 생성을 억제 한 후에 존재하는 버퍼를 스윕합니다. ical...이 꽤 많이 의존하고있는 것처럼 보입니다. 그렇기 때문에 실현 가능성은 확실하지 않습니다.

답변

3

당신은 기능을 찾고 계십니까 :

버퍼 목록 `C 소스 코드의 내장 함수이다 '.

(버퍼 목록 & 선택 FRAME) 모든 라이브 기존 버퍼의

반환 목록을 표시합니다. 선택 항목 인 arg FRAME이 인 경우 프레임의 순서는 이고 프레임의 순서는 입니다. 프레임의 매개 변수가 FRAME의 버퍼 목록 프레임 에 먼저오고 그 다음 버퍼의 나머지 부분은 입니다.

+0

오 주. 네. 목록 버퍼를 처리하는 방법을 알아 내려고 너무 많은 시간을 보냈습니다 ... 감사합니다! – quodlibetor

0

당신이 원치 않는 버퍼를 생성하는 기능을 알고, 그들있을 것이다 제거하는 어떤 영향을 이해한다면, 당신은 항상 바로 문제의 소스에서 원치 않는 버퍼를 제거 (통보 후 사용)을 조언 할 수있다. 함수가 끝나면 단순히 새로운 버퍼를 제거하는 것보다 안전하다고 생각합니다.

+0

나는 그것을 고려했다. 그러나 버퍼 이름은 동적이며 import-icalendar로 제공되지 않는다. 또한, 나는 defadvice가 이맥에서 보편적으로 작동한다고 확신한다. 맞습니까? 나는 내게 불편해서 내부 기능을 심각하게 수정하고 싶지 않다. 버퍼리스트 스윕은 이맥스가 단일 스레드로 남아있는 한 나를 위해 충분히 잘 작동한다고 생각합니다. 왜냐하면 내가 목록을 만들 때와 내가 프로세스 외부에서 여분의 버퍼를 삭제할 때 사이에 아무 것도 없기 때문입니다. – quodlibetor

관련 문제