Page MenuHomePhabricator

Visual Studio Code
Updated 694 Days AgoPublic

Extensions

We recommend the following Extensions for Visual Studio Code. These have been tested with each other and confirmed (so far) to work with our projects. This assumes you have installed our recommended development environment, including the LLVM Clang toolchain.

  • C/C++
  • C/C++ Advanced Linter
  • C/C++ Snippets
  • CMake
  • gitignore
  • Kivy
  • LLDB Debugger
  • Makefiles support for VSCode
  • markdownlint
  • Python
  • reStructuredText (requires python3-restructuredtext-lint system package)
  • XML Tools
IMPORTANT: C/C++ Clang Command Adapter makes the linter act weird. Leave it out.
NOTE: cppcheck has extremely high CPU usage, so we use C/C++ Advanced Linter instead.

You may also consider the following helpful extensions:

  • Auto Close Tag
  • Contextual Duplicate
  • Reflow paragraph
  • TODO Highlight

Settings

@jcmcdonald uses the following for his VSCode User Settings. If you want to get started quickly, you can copy/paste these and adjust to your preferences.

1{
2 // CORE FEATURES //
3
4 // Turn off data sharing
5 "telemetry.enableCrashReporter": false,
6 "telemetry.enableTelemetry": false,
7
8 // I prefer TAB instead of ENTER for accepting suggestions.
9 "editor.acceptSuggestionOnEnter": "off",
10 // Turn on editor folding; "auto" often doesn't work
11 "editor.foldingStrategy": "indentation",
12 // Minimap can be incredibly helpful.
13 "editor.minimap.enabled": false,
14 // Allow zooming the editor.
15 "editor.mouseWheelZoom": true,
16 // This makes it easier to tell what line I've highlighted
17 "editor.renderLineHighlight": "all",
18 // I like seeing markers for whitespace on the beginning and end of line,
19 // but not middle. Change this to "all" if you like seeing everything.
20 "editor.renderWhitespace": "all",
21 // This shows my 'text overflow' lines
22 "editor.rulers": [80, 120],
23 // Always pre-select the first suggestion in autocomplete
24 "editor.suggestSelection": "first",
25 // Weight autocomplete suggestions based on nearby words
26 "editor.suggest.localityBonus": true,
27
28 "explorer.sortOrder": "type",
29
30 // I don't want to see these files in the file tree
31 "files.exclude": {
32 "**/.git": true,
33 "**/.svn": true,
34 "**/.hg": true,
35 "**/CVS": true,
36 "**/.DS_Store": true,
37 "**/.arcconfig": true,
38 "**/.arclibs": true,
39 "**/.arclint": true
40 },
41
42 // If I'm trying to close, I ALWAYS want to ensure my files are saved!
43 "files.hotExit": "off",
44
45 // I don't want trailing newlines on my files, but one.
46 "files.trimFinalNewlines": true,
47 "files.insertFinalNewline": true,
48 "files.trimTrailingWhitespace": true,
49
50 // Make sure files are saved before comitting, to make sure nothing gets missed.
51 "git.promptToSaveFilesBeforeCommit": "always",
52
53 "terminal.integrated.rendererType": "dom",
54
55 // Start with 100% zoom
56 "window.zoomLevel": 0,
57
58 // Show the activity bar.
59 "workbench.activityBar.visible": true,
60 // If I delete a file, I like to remove it from my viewer.
61 "workbench.editor.closeOnFileDelete": false,
62 // When a tab is modified and unsaved, indicate it.
63 "workbench.editor.highlightModifiedTabs": true,
64 // If I misplace a tab, I don't want a second copy; just take me to it!
65 "workbench.editor.revealIfOpen": true,
66 // Always show open editors in tabs
67 "workbench.editor.showTabs": true,
68
69 // CORE THEMING //
70
71 // I'm partial to the Hack or Source Code Pro font
72 "editor.fontFamily": "'Hack', 'Source Code Pro', 'monospace', monospace, 'Droid Sans Fallback'",
73
74 // I'm partial to the Hack and Source Code Pro font
75 "terminal.integrated.fontFamily": "'Hack', 'Source Code Pro', 'monospace', monospace, 'Droid Sans Fallback'",
76
77 // Set my chosen color theme...
78 "workbench.colorTheme": "LaserWave",
79 // ...and icon theme...
80 "workbench.iconTheme": "material-icon-theme",
81 // Use smooth cursor blinking
82 "editor.cursorSmoothCaretAnimation": true,
83 // I personally like the "phase" animation.
84 "editor.cursorBlinking": "phase",
85
86 // I prefer my sidebar on the right, instead of the left.
87 "workbench.sideBar.location": "right",
88
89 "workbench.colorCustomizations": {
90 "activityBarBadge.background": "#C6FF00",
91 "list.activeSelectionForeground": "#C6FF00",
92 "list.inactiveSelectionForeground": "#C6FF00",
93 "list.highlightForeground": "#C6FF00",
94 "scrollbarSlider.activeBackground": "#C6FF0050",
95 "editorSuggestWidget.highlightForeground": "#C6FF00",
96 "textLink.foreground": "#C6FF00",
97 "progressBar.background": "#C6FF00",
98 "pickerGroup.foreground": "#C6FF00",
99 "tab.activeBorder": "#C6FF00",
100 "notificationLink.foreground": "#C6FF00",
101 "editorWidget.resizeBorder": "#C6FF00",
102 "editorWidget.border": "#C6FF00",
103 "settings.modifiedItemIndicator": "#C6FF00",
104 "settings.headerForeground": "#C6FF00",
105 "panelTitle.activeBorder": "#C6FF00",
106 "breadcrumb.activeSelectionForeground": "#C6FF00",
107 "menu.selectionForeground": "#C6FF00",
108 "menubar.selectionForeground": "#C6FF00"
109 },
110
111 // Do not center layout in zen mode
112 "zenMode.centerLayout": false,
113 // Do not hide line numbers in zen mode
114 "zenMode.hideLineNumbers": false,
115 // Do not hide status bar in zen mode
116 "zenMode.hideStatusBar": false,
117 // Do not hide tabs in zen mode
118 "zenMode.hideTabs": false,
119
120 // PRIMARY EXTENSIONS //
121
122 // Clang linting gets noisy; turn off by default
123 "c-cpp-flylint.clang.enable": false,
124 // cppcheck will throw too many warnings otherwise
125 "c-cpp-flylint.cppcheck.force": false,
126 // We need to point cppcheck to the top of directories containing includes
127 //"c-cpp-flylint.cppcheck.includePaths": ["./", "../libdeps"],
128 "c-cpp-flylint.cppcheck.includePaths": ["./"],
129 // I don't want flexelint
130 "c-cpp-flylint.flexelint.enable": false,
131 // Linters don't understand c++14, use c++11 for modern C/C++.
132 "c-cpp-flylint.standard": ["c11", "c++11"],
133
134 // If all else fails, use LLVM style.
135 "C_Cpp.clang_format_fallbackStyle": "LLVM",
136 // Point to the clang-format executable on the system
137 "C_Cpp.clang_format_path": "clang-format-7",
138 // Only post warnings to the output window.
139 "C_Cpp.loggingLevel": "Warning",
140
141 // Use local docker instance on default port.
142 "docker.host": "127.0.0.1:2375",
143
144 // Point to LLDB
145 "lldb.executable": "lldb-7",
146 // Use the integrated terminal when debugging with LLDB
147 "lldb.launch.terminal": "integrated",
148
149 // Automatically join audio call on starting session.
150 "liveshare.audio.joinCallBehavior": "accept",
151 // Do not automatically share servers
152 "liveshare.autoShareServers": false,
153 // Require approval for any guests to join.
154 "liveshare.guestApprovalRequired": true,
155 // I don't need more than 5 guests at a time.
156 "liveshare.increasedGuestLimit": false,
157 // Do not automaticaly open shared servers in browser. (I seldom do web dev)
158 "liveshare.openSharedServers": false,
159 // Share information about the workspace with guests.
160 "liveshare.publishWorkspaceInfo": true,
161 // It's helpful to see where read-only guests are positioned.
162 "liveshare.showReadOnlyUsersInEditor": "always",
163
164 // BE SURE TO SET phabricator.apiToken!
165 // Base URL for Phabricator interface
166 "phabricator.baseUrl": "https://phabricator.mousepawmedia.net/",
167 // Get notifications about diff approvals
168 "phabricator.diffNotifications": true,
169 // Disable Google tracking
170 "phabricator.enableTelemetry": false,
171
172 // Base URL for Phabricator links
173 "phabricator-links.url": "https://phabricator.mousepawmedia.net/",
174
175 // Show everything in the output window.
176 "python.analysis.logLevel": "Information",
177 // I don't do data science, so don't even bother with these features.
178 "python.dataScience.allowImportFromNotebook": false,
179 "python.dataScience.searchForJupyter": false,
180 "python.dataScience.changeDirOnImportExport": false,
181 // Use black for autoformatting
182 "python.formatting.provider": "black",
183 // Use Microsoft Intellisense instead of Jedi
184 "python.jediEnabled": false,
185 // Lint with Flake8
186 "python.linting.flake8Enabled": true,
187
188 // Use PyTest for testing
189 "pythonTestExplorer.testFramework": "pytest",
190
191 // Just the typical default; this may changes from one project to the next
192 // Should also be defined in Workspace Settings
193 "restructuredtext.builtDocumentationPath": "${workspaceFolder}/build/html",
194 // Point to the restructuredtext-lint executable
195 "restructuredtext.linter.executablePath": "restructuredtext-lint",
196 // Disable RST linter
197 "restructuredtext.linter.run": "off",
198
199 // Automatically upload and download your settings from your sync Gist
200 "sync.autoUpload": true,
201 "sync.autoDownload": true,
202 // Don't make a lot of noise about syncing.
203 "sync.quietSync": true,
204
205 // ADDITIONAL EXTENSIONS //
206
207 "auto-close-tag.activationOnLanguage":[
208 "xml",
209 "php",
210 "blade",
211 "ejs",
212 "jinja",
213 "javascript",
214 "javascriptreact",
215 "typescript",
216 "typescriptreact",
217 "plaintext",
218 "markdown",
219 "vue",
220 "liquid",
221 "erb",
222 "lang-cfml",
223 "cfml",
224 "HTML (Eex)"
225 ],
226
227 "clock.dateFormat": "ddd, dd mmm yy | HH:MM:ss",
228
229 "commentAnchors.workspace.lazyLoad": true,
230 "commentAnchors.workspace.excludeFiles": "**/{node_modules,.git,.idea,target,out,build,vendor,venv}/**/*",
231
232 "cSpell.allowCompoundWords": true,
233 "cSpell.showStatus": false,
234
235 "cSpell.ignorePaths": [
236 "**/node_modules/**",
237 "**/vscode-extension/**",
238 "**/.git/**",
239 ".vscode",
240 "typings"
241 ],
242
243 "cSpell.userWords": [
244 "eigen",
245 "golidlocks",
246 "mousepaw",
247 "mousepawgames",
248 "mousepawmedia",
249 "phabricator",
250 "strftime",
251 "toctree",
252 "vargs"
253 ],
254
255 "gitlens.hovers.currentLine.over": "line",
256 "gitlens.codeLens.recentChange.enabled": false,
257 "gitlens.codeLens.authors.enabled": false,
258 "gitlens.mode.statusBar.enabled": false,
259 "gitlens.currentLine.enabled": false,
260 "gitlens.advanced.messages": {
261 "suppressCommitHasNoPreviousCommitWarning": false,
262 "suppressCommitNotFoundWarning": false,
263 "suppressFileNotUnderSourceControlWarning": false,
264 "suppressGitVersionWarning": false,
265 "suppressLineUncommittedWarning": false,
266 "suppressNoRepositoryWarning": false,
267 "suppressResultsExplorerNotice": false,
268 "suppressShowKeyBindingsNotice": true
269 },
270 "gitlens.views.fileHistory.enabled": true,
271 "gitlens.views.lineHistory.enabled": true,
272
273 // Indents aren't always consistent in these languages, so don't whine if
274 // they're different from the "usual"
275 "indentRainbow.ignoreErrorLanguages": [
276 "markdown",
277 "c",
278 "cpp",
279 "python",
280 "sql"
281 ],
282
283 "java.configuration.checkProjectSettingsExclusions": false,
284 "java.home": "/usr/lib/jvm/java-12-oracle",
285 "java.errors.incompleteClasspath.severity": "ignore",
286
287 "peacock.affectActivityBar": false,
288 "peacock.affectStatusBar": true,
289 "peacock.affectTitleBar": false,
290 "peacock.favoriteColors": [
291 {
292 "name": "MousePaw Yellow",
293 "value": "#FFCB05"
294 },
295 {
296 "name": "MousePaw Pink",
297 "value": "#DE8787"
298 },
299 {
300 "name": "Anari Blue",
301 "value": "#1C41ED"
302 },
303 {
304 "name": "Goldilocks Brown",
305 "value": "#703F2E"
306 },
307 {
308 "name": "Lightrift Orange",
309 "value": "#FAB610"
310 },
311 {
312 "name": "PawLIB Red",
313 "value": "#D90000"
314 },
315 {
316 "name": "Ratscript Green",
317 "value": "#185926"
318 },
319 {
320 "name": "SIMPLEXpress Red",
321 "value": "#FF0000"
322 },
323 {
324 "name": "Stormsound Purple",
325 "value": "#671D87"
326 },
327 {
328 "name": "Trailcrest Yellow",
329 "value": "#FFFF00"
330 }
331 ],
332
333 // Use uppercase keywords for PostgreSQL
334 "pgsql.format.keywordCasing": "uppercase",
335
336 "rust.mode": "rls",
337
338 // Highlight TODO comments.
339 "todohighlight.isEnable": true,
340
341 // Run TODO Highlight on Python, C, and C++ files
342 "todohighlight.include": [
343 "**/*.js",
344 "**/*.jsx",
345 "**/*.ts",
346 "**/*.tsx",
347 "**/*.html",
348 "**/*.php",
349 "**/*.css",
350 "**/*.scss",
351 "**/*.py",
352 "**/*.h",
353 "**/*.hpp",
354 "**/*.c",
355 "**/*.cpp",
356 ],
357
358 // I like to have a few more keywords beyond the defaults.
359 // Yes, I am redefining a couple. Explicit > Implicit and all that.
360 "todohighlight.keywords": [
361 "TODO",
362 "HACK",
363 "FIXME",
364 "NOTE"
365 ],
366
367 "vsicons.dontShowNewVersionMessage": true,
368}

Voice Settings

In case you don't have hardware or software to process microphone input, recommended to use mute functionality to cut down on background noise. Can set up a hotkey to toggle mute. In File -> Preference -> Keyboard Shortcuts. Search for mute. There is a command called liveshare.audio.muteUmute. Unsure on best key combo to choose, if you find an easy one that doesn't coincide with standard commands please edit.

Last Author
jcmcdonald
Last Edited
Sep 14 2020, 10:39 AM