Writing Code

How to turn off code autocomplete on Mac

You can do this with Note My — here is how to switch the suggestion popup off, how to keep only the parts of it that earn their place, and what still works afterwards.

The popup arrives before you have finished the word, covers the line below, and then ⇥ inserts something you never asked for. You do not want a smarter list. You want it to stop, or to stop except when you ask for it.

Every part of code suggestions in Note My is a separate switch, and they live in one place. You can turn the whole thing off, keep it on demand only, or leave the sources that help and drop the ones that do not.

Note

Auto-closing brackets and quotes have a home of their own. They belong to Smart Editing, which has its own toolbar toggle and its own settings, so you can tune the two independently — see the troubleshooting section below.

Where the switches live

Open Settings with ⌘, and choose Code Suggestions — the third pane in the first group of the sidebar, out of fourteen panes in total. Everything on this page is in that one pane.

If you would rather not read the pane top to bottom, type into the sidebar's search field. It finds individual rows, not only pane names, so searching for suggest, Tab or import takes you straight to the switch you are after. Choosing a result opens the pane, scrolls the row into view and flashes it, so you can see which switch it meant before you touch anything.

Rows that depend on another row grey out when their parent is off rather than disappearing, so you can always see what a switch controls. The per-language Add missing imports rows behave that way.

Turn the popup off entirely

  1. Open the Code Suggestions pane

    ⌘,, then Code Suggestions in the sidebar.

  2. Switch off suggest-while-typing

    This is the switch that governs the automatic popup — the one that arrives on its own a moment after you start a word. With it off, nothing appears while you type. No list, no ghost preview of a highlighted row, no documentation panel. The line below your caret stays visible, and ⇥ goes back to being a plain tab.

  3. Know what ⌃Space still does

    Edit ▸ Auto-Complete forces the list open at the caret, and it deliberately still works when suggest-while-typing is off. That is the intended shape for most people who come to this page: a silent editor that answers when asked. ⎋ dismisses the list again.

  4. Decide about call tips separately

    The small signature panel that appears while you are writing a call has a switch of its own, and it also sits behind the master code-suggestions switch. Turn off the call-tip switch alone and the list carries on as before; turn off the master and both go. ⌃⇧Space shows a tip on demand.

Keep the list, drop the sources you do not want

Six sources feed the list. Each has a switch of its own — auto-import's is a row per language rather than a single row — and four of them also sit behind the switch for language-aware suggestions, so one row silences all four at once. Work down the table and keep only what earns its place.

The six suggestion sources, what each contributes and what switching it off removes
SourceWhat it adds to the listTurn it off when
Auto-importA symbol, plus the import line needed to use it. Curated for Swift, Python, JavaScript and TypeScript.You do not want the top of your file edited as a side effect of accepting a row.
PathsFile paths and folders from your own document. Offered in a path-shaped context, or after a /.You are writing prose or config where slashes are not paths.
BuiltinsCurated functions and types with signatures and documentation. This is also what backs call tips.You know the standard library and the rows are noise.
Document symbolsDeclarations from the file you are editing.The file is large and mostly generated.
KeywordsThe keywords of the language you are writing in, for fifteen languages.Short keywords keep winning against what you meant to type.
Words from your documentIdentifier-shaped words already in your document, the nearest ones first.This is the one to keep if you keep only one.

The last row is the one to understand before you start switching things off. Words from your document sits on its own switch, independent of the language-aware one. Turn language-aware suggestions off and the keywords, builtins, document symbols and auto-imports all go — while words carry on, in every document, in every language. That is deliberate, and it is the configuration many people settle on: no library trivia, no imports appearing at the top of the file, just the identifiers you have already typed in the file in front of you. If you would rather those went too, switch off the words row itself, or switch off suggest-while-typing.

The same applies in reverse. In a Plain Text document the list draws on the words source, and on paths when you are typing something path-shaped. Neither of those follows the language-aware switch either, so a prose document is a good place to try a quiet configuration and see how it feels before you commit to it. Switch a row, type a few lines, switch it back — your text is untouched throughout, because these settings only decide what is offered, never what is written.

Stop ⇥ or ↩ accepting a suggestion

Tab-to-accept and Return-to-accept are two separate switches. You can have Tab accept while Return makes a new line, the reverse, or neither — in which case the list becomes read-only and you insert what you wanted by continuing to type.

While the popup is visible it also handles the arrow keys, ⌘ with an arrow to jump to the top or bottom of the list, Page Up and Page Down to move five rows, Home, End, ⎋ to dismiss, and ⌃M to memorise a highlighted path without inserting it. Every other key goes straight into your text, so you can keep typing through an open list.

Important

One separate Tab behaviour survives switching Tab-to-accept off. After you accept a suggestion that carries a template, ⇥ moves you from one placeholder to the next until you have filled them all in. That is the template you accepted, not the completion list, so it keeps working either way.

Smart token suggestions and double braces

Smart tokens sit outside those six sources. They are offered only after you type {{ and they have their own switch. What they insert is small and practical — today's date, the time, the file name, a UUID, the caret position and a handful more in the same spirit. If what you type after the braces matches none of them, you simply get the ordinary suggestions instead, so {{config still offers identifiers.

Switching smart tokens off is the right move if you write templating syntax that uses double braces for something else entirely. Leaving them on costs you nothing in a language that never doubles a brace, and saves retyping a date by hand.

Clear what Note My has learned

Two small lists build up as you work, and both can be emptied.

  • Recent completions. Suggestions you accept come back sooner the next time, so the rows you genuinely use rise to where you can see them, and what you accept in one language does not crowd the list in another. Empty it from Settings ▸ Code Suggestions ▸ Learning ▸ Clear….
  • Memorised paths. The light-bulb beside a path suggestion, or ⌃M, pins that path so it is offered in every other document — useful for paths you type again and again. Empty it from Settings ▸ Code Suggestions ▸ Saved paths ▸ Forget….

Clearing either one changes only which rows come up first. Nothing is removed from your documents, and nothing has ever been anywhere but your Mac: nothing is uploaded, there is no account, and your files never leave the machine.

Troubleshooting

I switched off language suggestions and words still appear

Expected. The words-from-your-document source has its own switch and is intentionally independent of the language-aware ones. Switch that row off too, or switch off suggest-while-typing to silence the automatic popup completely.

Brackets and quotes still close themselves

That is Smart Editing, not suggestions. It has a toolbar toggle whose tooltip reads "Smart Editing: OFF — plain newlines and typing" when it is off, and five switches of its own — a master plus Return, brackets, quotes and tags — all on by default. Six pairs close themselves: (), [], {}, "", '' and backticks. Switch the master off for plain newlines and plain typing, or leave it on and turn off just the one row that was getting in your way.

↩ is accepting instead of breaking the line

Return-to-accept is on, and the popup is visible. Switch that row off and Return will always insert a newline; the list is then accepted with Tab, or not at all.

The row I wanted was further down the list

When the list opens it highlights its first row, and the ghost preview, Tab and Return all act on whichever row is highlighted. Glance at it before you press either key, and arrow down to the one you meant — the arrow keys, ⌘ with an arrow, Page Up and Page Down all move the highlight without disturbing a character of your text. If you would rather never accept a row by reflex, switch off Tab-to-accept and keep the list as something you read.

The popup stopped appearing on its own and I did not change anything

Check the size of the document, and look for the large-file indicator in the status bar. In a very big file our large-file engine keeps typing and scrolling quick and steady, and holds the automatic popup back so nothing gets between you and the keyboard. Your settings are exactly as you left them, and ⌃Space opens the list at the caret whenever you want one.

I want the editor to stop changing my typing altogether

It already does not. No text-mutating assist is enabled in any mode: no automatic spelling correction, no smart quotes, no dash substitution, no text replacement, no link or data detection. There is nothing to switch off, because none of it was ever on. Plain Text documents do turn on the system's spell and grammar underlines, but those mark text — they never rewrite it.

What you keep once it is quiet

A quiet editor is not a smaller one. Three things are worth knowing once the popup has stopped arriving on its own:

  • The list is still there the moment you ask for it. Switching off suggest-while-typing leaves Edit ▸ Auto-Complete and its ⌃Space shortcut exactly where they are, so a full list opens at the caret whenever you call for one, and while the call-tip row is on ⌃⇧Space brings up a signature the same way. That is the shape most people settle on — silence while you type, a list on request, ⎋ to send it away again.
  • You set this up once, and every document follows. The switches live in the Settings window and apply to every tab you open, today and next month, so a configuration you like is a configuration you keep. Auto-imports carry a per-language enable on the same pane, for when you want them in Swift but not in Python.
  • Placeholder templates carry on working. A suggestion that arrives with placeholders still walks you through them with ⇥, so a full call signature costs one keystroke and a few short fields. Turning the builtins row off takes those expansions with it, cleanly, whenever you would rather type the call yourself. Our template library — the file templates you save from the Templates menu — is a separate thing entirely, and nothing on this pane touches it.

Frequently asked questions

Is there a single switch that turns off all code autocomplete?

Switching off suggest-while-typing in Settings ▸ Code Suggestions stops the popup from ever appearing on its own, which is what most people mean. ⌃Space still forces a list when you want one, so nothing appears unless you ask.

Can I keep file-path completion and drop everything else?

Yes. Paths have their own switch, independent of the language-aware sources, and only fire in a path-shaped context or after a /. Switch off builtins, keywords, document symbols, auto-imports and words, and paths are all that is left.

Does turning off suggestions also turn off syntax colouring?

Your colours stay exactly as they are. Our syntax engine carries on colouring your code exactly as before, whatever you switch off on the Code Suggestions pane, so a silent editor is still a legible one. It never changes a character of your file either — the colours are on screen only, so what you save is the plain text you wrote.

How do I stop it learning from what I accept?

Clear the recent completions list from Settings ▸ Code Suggestions ▸ Learning ▸ Clear…. Your documents and every other switch stay exactly as they were. With suggest-while-typing off and the list rarely used, it stays close to empty anyway.

Where do the suggestions come from, and does anything get sent anywhere?

They come from the document you have open and from what ships inside the app, which is why the list keeps up with your typing. Note My contains no networking code of its own; the only network activity is performed by Apple’s own system services, to establish purchases and transactions state. Nothing is uploaded, there is no account, and your files never leave the machine.