-
Notifications
You must be signed in to change notification settings - Fork 1.8k
Expand file tree
/
Copy pathDisabledLanguageList.swift
More file actions
40 lines (32 loc) · 1.1 KB
/
DisabledLanguageList.swift
File metadata and controls
40 lines (32 loc) · 1.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import Foundation
import Preferences
import SuggestionBasic
public class DisabledLanguageList {
public static let shared = DisabledLanguageList()
private init() {}
public var activeDocumentLanguage: CodeLanguage? {
let activeURL = XcodeInspector.shared.activeDocumentURL
return activeURL.map(languageIdentifierFromFileURL)
}
public var list: [String] {
UserDefaults.shared.value(for: \.suggestionFeatureDisabledLanguageList)
}
public func isEnabled(_ language: CodeLanguage) -> Bool {
return !list.contains(language.rawValue)
}
public func enable(_ language: CodeLanguage) {
UserDefaults.shared.set(
list.filter { $0 != language.rawValue },
for: \.suggestionFeatureDisabledLanguageList
)
}
public func disable(_ language: CodeLanguage) {
let currentList = list
if !currentList.contains(language.rawValue) {
UserDefaults.shared.set(
currentList + [language.rawValue],
for: \.suggestionFeatureDisabledLanguageList
)
}
}
}