Notebook 셀 접기 전후 Context Keys 비교하기
같은 셀의 입력을 접기 전과 후 두 Snapshot으로 Collapse·Expand 조건이 교대하는 경계를 확인합니다.
이번 편의 핵심
notebookCellInputIsCollapsed가 false → true로 바뀌는 순간을 직접 관찰합니다.
셀과 포커스를 고정하고 펼치기로 복구하며 파일·키 바인딩 변경 0건을 확인합니다.
1. 시작하기 전에
초보자가 Notebook 셀 입력 접힘 상태와 같은 Chord의 When 조건을 안전하게 연결하는 읽기 전용 관찰 실습입니다.
준비할 것
- VS Code Stable 1.139.0 portable 격리 Profile — 최신 Stable UI 확인
- 코드 셀 하나가 있는 샘플 Notebook — kernel·셀 실행 불필요
- Developer Tools Console — Context 객체 확인
- Notebook과 User keybindings.json 원본 — 변경 0건 비교
적용 환경 2026-09-23 · Windows 11 · VS Code Stable 1.139.0 · PowerShell · 영어 기본 UI·사용자 확장 0개·내장 Notebook 지원 활성
2. 알아둘 핵심 개념
FACT · notebookCellInputIsCollapsed
선택된 Notebook 셀 입력이 접혔는지를 나타내는 Boolean Context key입니다.
FACT · 두 When 식
Collapse는 notebookCellListFocused && !notebookCellInputIsCollapsed && !inputFocus, Expand는 notebookCellListFocused && notebookCellInputIsCollapsed입니다.
FACT · 상태 변경
Stable 1.139.0 소스는 Collapse에서 isInputCollapsed = true, Expand에서 false로 설정합니다.
PROCEDURE · 두 Snapshot
같은 셀 컨테이너를 클릭해 접기 전 A와 접은 후 B를 만들고 세 key를 표로 비교합니다.
EXAMPLE · 격리 관찰
A는 true / false / false, B는 true / false / true였고 두 When 결과가 교대했습니다.
RECOMMENDATION · 한 변수만 바꾸기
셀·포커스·클릭 위치는 고정하고 접힘 상태만 바꿉니다.
UNCONFIRMED · 환경 차이
확장, UI 언어, 선택 DOM과 내부 Context key는 독자 환경에서 다를 수 있으므로 실제 Snapshot을 기준으로 합니다.
3. 순서대로 진행하기
각 단계의 정상 결과를 확인한 뒤 다음 단계로 이동합니다.
1. 격리 Notebook과 읽기 전용 경계 확인
목적 업무 Notebook과 User 단축키를 보호한다.
- 한 개 코드 셀만 있는 샘플 Notebook을 열고 셀 실행·저장·키 바인딩 편집을 하지 않기로 확인한다.
입력 위치 격리 폴더의 collapse-context.ipynb
kernel 미선택 / outputs 빈 배열 / User keybindings.json 원본정상 결과 샘플 셀 입력이 펼쳐져 보인다.
확인 코드 두 줄과 출력 0건을 확인한다.
실패 신호 업무 Notebook이 열렸거나 셀이 실행됐다.
복구와 재합류 즉시 닫고 저장하지 않은 뒤 격리 샘플에서 STEP-01로 재합류한다.
2. 비교할 두 When 식 적기
목적 상태 변화 전에 판정식을 고정한다.
- Stable 소스의 Collapse와 Expand Cell Input When 식을 실습 메모에 그대로 적는다.
입력 위치 공식 Stable cellCommands.ts
Collapse: listFocused && !inputCollapsed && !inputFocus / Expand: listFocused && inputCollapsed정상 결과 두 식의 차이가 inputCollapsed 부정 여부로 표시된다.
확인 명령 ID와 식을 한 줄씩 대조한다.
실패 신호 출처 버전이나 명령 ID가 없다.
복구와 재합류 현재 Stable 버전과 commit을 다시 기록하고 STEP-02로 돌아온다.
3. Developer Tools Console 준비
목적 Context 객체가 출력될 위치를 연다.
- Command Palette에서 Developer: Toggle Developer Tools를 실행하고 Console을 선택한다.
입력 위치 Command Palette → Developer Tools Console
Console정상 결과 Console 입출력 영역이 보인다.
확인 Developer Tools 상단의 Console 탭을 확인한다.
실패 신호 Console이 없거나 별도 창을 찾을 수 없다.
복구와 재합류 Help > Toggle Developer Tools로 다시 열고 STEP-03에 재합류한다.
4. 셀을 command mode로 선택
목적 inputFocus가 거짓인 같은 측정 위치를 만든다.
- Notebook 셀 왼쪽 여백을 클릭하고 Esc를 눌러 편집 caret을 없앤다.
입력 위치 Notebook cell container
selected cell / no input caret정상 결과 셀 선택 표시가 남고 코드 입력 caret은 없다.
확인 선택 테두리와 caret 부재를 함께 확인한다.
실패 신호 코드 입력 caret이 깜박인다.
복구와 재합류 Esc를 한 번 누르고 셀 컨테이너를 다시 클릭해 STEP-04를 반복한다.
5. 접기 전 Context snapshot
목적 초기 inputCollapsed 값을 같은 셀에서 수집한다.
- Developer: Inspect Context Keys를 실행하고 선택된 셀 컨테이너를 한 번 클릭한다.
입력 위치 Command Palette → selected Notebook cell
Snapshot A정상 결과 Console에 Context 객체 하나가 추가된다.
확인 객체에서 notebookCellListFocused, inputFocus, notebookCellInputIsCollapsed를 찾는다.
실패 신호 객체가 없거나 키가 없다.
복구와 재합류 선택 요소를 기록하고 STEP-04부터 다시 측정한다.
6. Snapshot A 판정
목적 접기 명령이 활성인 이유를 값으로 설명한다.
- Snapshot A의 세 값을 Collapse와 Expand 식에 각각 대입한다.
입력 위치 실습 메모
listFocused=true / inputFocus=false / inputCollapsed=false정상 결과 Collapse=true, Expand=false로 계산된다.
확인 원시 값과 최종 Boolean을 나란히 대조한다.
실패 신호 값을 다른 Context 객체에서 섞었다.
복구와 재합류 Snapshot A 한 객체만 다시 읽고 STEP-06을 반복한다.
7. Notebook: Collapse Cell Input 실행
목적 입력 접힘 상태만 한 번 바꾼다.
- Command Palette에서 Notebook: Collapse Cell Input을 실행한다.
입력 위치 Command Palette
notebook.cell.collapseCellInput정상 결과 코드 입력이 한 줄 높이의 접힌 상태가 된다.
확인 셀의 입력 영역이 접혔고 출력·파일 내용은 바뀌지 않았는지 확인한다.
실패 신호 다른 셀이나 출력이 접혔다.
복구와 재합류 Notebook: Expand Cell Input으로 즉시 복구하고 STEP-04로 돌아간다.
8. 접은 후 Context snapshot
목적 같은 셀에서 바뀐 key만 비교한다.
- 셀 컨테이너 선택을 유지한 채 Developer: Inspect Context Keys를 다시 실행해 같은 위치를 클릭한다.
입력 위치 Command Palette → same Notebook cell
Snapshot B정상 결과 Console에 두 번째 Context 객체가 추가된다.
확인 두 객체의 세 key를 표로 비교한다.
실패 신호 다른 셀 또는 입력 편집기를 클릭했다.
복구와 재합류 클릭 대상을 기록하고 Expand로 복구한 뒤 STEP-04부터 다시 시작한다.
9. Snapshot B 판정
목적 두 명령의 활성 조건이 교대했음을 확인한다.
- Snapshot B 값을 같은 두 When 식에 대입한다.
입력 위치 실습 메모
listFocused=true / inputFocus=false / inputCollapsed=true정상 결과 Collapse=false, Expand=true로 계산된다.
확인 Snapshot A와 비교해 inputCollapsed만 false→true인지 확인한다.
실패 신호 listFocused나 inputFocus도 달라졌다.
복구와 재합류 환경 차이를 UNKNOWN으로 기록하고 같은 대상·포커스로 STEP-08을 재측정한다.
10. Notebook: Expand Cell Input으로 복구
목적 실습 전 표시 상태로 되돌린다.
- Command Palette에서 Notebook: Expand Cell Input을 실행한다.
입력 위치 Command Palette
notebook.cell.expandCellInput정상 결과 코드 입력 두 줄이 다시 펼쳐진다.
확인 초기 화면과 코드 줄 수를 비교한다.
실패 신호 입력이 계속 접혀 있거나 코드가 달라졌다.
복구와 재합류 추가 명령을 중단하고 원문을 보존한 뒤 Expand 명령을 한 번만 다시 확인한다.
11. 파일과 키 바인딩 변경 0건 확인
목적 상태 관찰 외 변경이 없음을 독립 확인한다.
- Notebook 파일과 격리 User keybindings.json을 실습 전 원본과 바이트 비교한다.
입력 위치 PowerShell / 격리 파일
Notebook unchanged / keybindings []정상 결과 두 파일이 원본과 같고 셀 입력이 펼쳐져 있다.
확인 해시 또는 전체 문자열 비교 결과를 확인한다.
실패 신호 어느 파일이든 달라졌다.
복구와 재합류 오류 원문과 현재 파일을 보존하고 백업으로 복원한 뒤 STEP-11을 다시 확인한다.
4. 완료 확인하기
두 Context 객체와 파일 비교로 교차 확인합니다.
- Snapshot A —
listFocused=true,inputFocus=false,inputCollapsed=false. - Snapshot B — 앞 두 값은 같고
inputCollapsed=true. - When 판정 — Collapse
true→false, Expandfalse→true. - 복구 — Expand 뒤 코드 입력 두 줄이 다시 보인다.
- 독립 확인 — Notebook과 격리
keybindings.json이 원본과 같다.
완료 기준 두 Snapshot, 두 식의 교대, 펼침 복구, 파일 변경 0건이 모두 확인됐습니다.
5. 문제가 생겼다면
Context 객체가 없음
먼저 확인 Console 탭과 클릭 대상을 확인합니다.
복구 오류 원문을 보존하고 Console을 다시 엽니다.
재합류 STEP-03
inputFocus가 true
먼저 확인 코드 입력 caret이 남아 있는지 봅니다.
복구 Esc로 command mode에 들어갑니다.
재합류 STEP-04
접기 후 key가 false
먼저 확인 같은 셀 컨테이너를 클릭했는지 기록합니다. 원인은 UNKNOWN일 수 있습니다.
복구 Expand로 복구하고 처음부터 다시 측정합니다.
재합류 STEP-04
Expand가 보이지 않음
먼저 확인 접힘 상태와 셀 선택을 확인합니다.
복구 Snapshot B를 보존하고 임의 단축키 편집 없이 Command Palette를 다시 엽니다.
재합류 STEP-10
파일이 달라짐
먼저 확인 현재 파일과 오류 원문을 보존합니다.
복구 추가 저장·Reset을 중단하고 백업으로 복원합니다.
재합류 STEP-11
6. 핵심 정리와 공식 자료
- Collapse와 Expand는
notebookCellInputIsCollapsed값에 따라 교대한다. - Snapshot 비교는 셀·포커스·클릭 위치를 고정한다.
- Expand로 복구하고 파일·키 바인딩 변경 0건을 확인한다.
공식 자료
아래 자료는 2026-09-23 19:00 KST 기준입니다. 공식 사실과 UI 검증은 Stable 1.139.0 commit 2242ebbb54efeeb0129e08e919e7e8d43033cd83 기준이며 기본 설치본 1.138.0과 구분했습니다.
- When clause contexts · Microsoft
- Jupyter Notebooks in VS Code · Microsoft
- Notebook cell commands · Microsoft vscode Stable 1.139.0
- Notebook Context Keys · Microsoft vscode Stable 1.139.0
- Visual Studio Code 1.139.0 Release Notes · Microsoft
notebookCellOutputIsCollapsed와 notebookCellHasOutputs를 접기 전후 두 Snapshot으로 비교해 출력 Collapse·Expand 경계를 확인합니다.'개발 > Visual Studio Code' 카테고리의 다른 글
| 커맨드 팔레트 57부: 출력이 없는 Notebook 셀의 출력 접기 조건 확인하기 (0) | 2026.09.25 |
|---|---|
| 커맨드 팔레트 56부: Notebook 셀 출력 접기 전후 Context Keys 비교하기 (0) | 2026.09.25 |
| 커맨드 팔레트 54부: 같은 Chord의 When 조건을 Context Keys로 확인하기 (0) | 2026.09.22 |
| 커맨드 팔레트 53부: 같은 Chord 규칙을 우선순위 순서로 읽기 (0) | 2026.09.22 |
| 커맨드 팔레트 52부: 같은 Chord의 Source와 When 비교하기 (0) | 2026.09.20 |