2012-10-10 3 views
0

completing-read에 대한 설명서를 읽고 있는데 필요한 것을 할 수있는 방법을 찾을 수 없습니다.nil을 사용하여 완료 읽기를 막으십시오.

(읽기 완료 PROMPT COLLECTION & 옵션 PREDICATE REQUIRE-MATCH 초기-INPUT HIST의 DEF 상속-INPUT-방법)

:

그것은 말한다. . . - t는 입력이 COLLECTION의 요소이거나 null이 아니면 사용자가 종료 할 수 없음을의 L합니다. - nil은 사용자가 입력을 종료 할 수 있음을 나타냅니다. -`confirm '은 사용자가 모든 입력을 종료 할 수 있음을 의미하지만 입력이 COLLECTION의 요소가 아닌 경우 선택을 확인해야합니다. -`confirm-after-completion '은 사용자가 어떤 입력으로도 끝낼 수 있음을 의미하지만,
`minibuffer-complete-and-exit'바로 전에
을 호출하고 그녀가 선택한 것을 확인해야합니다. 입력이 COLLECTION의 요소가 아닙니다. - null이 아닌 완료를 입력하면 RET이 종료되지 않는다는 점을 제외하고는 t와 같이 동작합니다. - 그러나 나는 모든을 통해 사용자를 실행하지 않으

(completing-read "What kind of project should I create? " 
    haxe-project-kinds 
    (lambda (x) (message "predicate: %s" x)) t) 

가 않는 경우,이 오류 때문에 이것은, nil을 반환해서는 안 : 내가해야 할 일은

은 같은 것입니다 다른 선택권은 그녀가 아주 첫번째 것을 잘못 얻었다는 것을 발견 할 때까지.

그 이상으로, 문서에 광고 된 동작이 실제로 발생하는 것과 일치하지 않습니다. 그것은 4th의 주장의 위치에 넣은 것에는 전혀 차이가 없으며, 행동은 변하지 않습니다.

+0

입력이 non-nil이 될 때까지 반복 할 수 없습니까? – tripleee

+0

require-match as as a function (예제에서와 같이)이 함수는 호출되지 않지만 nil이 아닌 값으로 만 사용됩니다. –

답변

1

정확히 원하는 부분이 샘플 코드에서 만족스럽지 않으므로 좋은 대답을하기가 어렵습니다. 내 생각 엔 사용자가 빈 응답으로 RET을 누르지 못하게하려는 것입니다. 실제로 completing-read은이를 방지하지 않으며 심지어 require-match으로 설정합니다. 이것이 보통 처리되는 방식은 default 인수에 nil이 아닌 값을 사용하는 것입니다.이 경우 사용자가 RET를 눌렀을 때이 값이 반환됩니다.

충분하지 않다면 minibiffer-with-setup-hook을 사용해야하고, RET가 오류를 신호로 보내는 새로운 기능에 바인딩되어있는이 목적을 위해 만든 특수 키맵을 설정해야합니다. 미니 버퍼가 비어 있고 그렇지 않으면 minibuffer-complete-and-exit을 호출합니다.

+0

@wvxvw : 대화 형 (목록 ...))'사용자. (arg1 (error ..)) (list ...)))'가 아니라면, Tu peux utiliser'(대화 형 (let ((arg1 (완료 읽기 ...) La forme est simplement'(interactive EXP) '는 EXP의 표현식을 표현하기위한 표현식을 표현합니다. – Stefan

+0

@wvxvw : Duh! 미안 프랑스 인. – Stefan

관련 문제