Skip to content

Commit 4c102fb

Browse files
committed
fix: don't open diff for binary files, just open them instead
close #801
1 parent 16f0bd9 commit 4c102fb

File tree

5 files changed

+333
-9
lines changed

5 files changed

+333
-9
lines changed

src/constants.ts

Lines changed: 267 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,3 +111,270 @@ RESPONSE=$(cat "$TEMP_FILE.response")
111111
112112
echo "$RESPONSE"
113113
`;
114+
115+
/**
116+
* Copied from https://github.com/sindresorhus/binary-extensions/blob/main/binary-extensions.json
117+
*/
118+
export const BINARY_EXTENSIONS = [
119+
"3dm",
120+
"3ds",
121+
"3g2",
122+
"3gp",
123+
"7z",
124+
"a",
125+
"aac",
126+
"adp",
127+
"afdesign",
128+
"afphoto",
129+
"afpub",
130+
"ai",
131+
"aif",
132+
"aiff",
133+
"alz",
134+
"ape",
135+
"apk",
136+
"appimage",
137+
"ar",
138+
"arj",
139+
"asf",
140+
"au",
141+
"avi",
142+
"bak",
143+
"baml",
144+
"bh",
145+
"bin",
146+
"bk",
147+
"bmp",
148+
"btif",
149+
"bz2",
150+
"bzip2",
151+
"cab",
152+
"caf",
153+
"cgm",
154+
"class",
155+
"cmx",
156+
"cpio",
157+
"cr2",
158+
"cur",
159+
"dat",
160+
"dcm",
161+
"deb",
162+
"dex",
163+
"djvu",
164+
"dll",
165+
"dmg",
166+
"dng",
167+
"doc",
168+
"docm",
169+
"docx",
170+
"dot",
171+
"dotm",
172+
"dra",
173+
"DS_Store",
174+
"dsk",
175+
"dts",
176+
"dtshd",
177+
"dvb",
178+
"dwg",
179+
"dxf",
180+
"ecelp4800",
181+
"ecelp7470",
182+
"ecelp9600",
183+
"egg",
184+
"eol",
185+
"eot",
186+
"epub",
187+
"exe",
188+
"f4v",
189+
"fbs",
190+
"fh",
191+
"fla",
192+
"flac",
193+
"flatpak",
194+
"fli",
195+
"flv",
196+
"fpx",
197+
"fst",
198+
"fvt",
199+
"g3",
200+
"gh",
201+
"gif",
202+
"graffle",
203+
"gz",
204+
"gzip",
205+
"h261",
206+
"h263",
207+
"h264",
208+
"icns",
209+
"ico",
210+
"ief",
211+
"img",
212+
"ipa",
213+
"iso",
214+
"jar",
215+
"jpeg",
216+
"jpg",
217+
"jpgv",
218+
"jpm",
219+
"jxr",
220+
"key",
221+
"ktx",
222+
"lha",
223+
"lib",
224+
"lvp",
225+
"lz",
226+
"lzh",
227+
"lzma",
228+
"lzo",
229+
"m3u",
230+
"m4a",
231+
"m4v",
232+
"mar",
233+
"mdi",
234+
"mht",
235+
"mid",
236+
"midi",
237+
"mj2",
238+
"mka",
239+
"mkv",
240+
"mmr",
241+
"mng",
242+
"mobi",
243+
"mov",
244+
"movie",
245+
"mp3",
246+
"mp4",
247+
"mp4a",
248+
"mpeg",
249+
"mpg",
250+
"mpga",
251+
"mxu",
252+
"nef",
253+
"npx",
254+
"numbers",
255+
"nupkg",
256+
"o",
257+
"odp",
258+
"ods",
259+
"odt",
260+
"oga",
261+
"ogg",
262+
"ogv",
263+
"otf",
264+
"ott",
265+
"pages",
266+
"pbm",
267+
"pcx",
268+
"pdb",
269+
"pdf",
270+
"pea",
271+
"pgm",
272+
"pic",
273+
"png",
274+
"pnm",
275+
"pot",
276+
"potm",
277+
"potx",
278+
"ppa",
279+
"ppam",
280+
"ppm",
281+
"pps",
282+
"ppsm",
283+
"ppsx",
284+
"ppt",
285+
"pptm",
286+
"pptx",
287+
"psd",
288+
"pya",
289+
"pyc",
290+
"pyo",
291+
"pyv",
292+
"qt",
293+
"rar",
294+
"ras",
295+
"raw",
296+
"resources",
297+
"rgb",
298+
"rip",
299+
"rlc",
300+
"rmf",
301+
"rmvb",
302+
"rpm",
303+
"rtf",
304+
"rz",
305+
"s3m",
306+
"s7z",
307+
"scpt",
308+
"sgi",
309+
"shar",
310+
"snap",
311+
"sil",
312+
"sketch",
313+
"slk",
314+
"smv",
315+
"snk",
316+
"so",
317+
"stl",
318+
"suo",
319+
"sub",
320+
"swf",
321+
"tar",
322+
"tbz",
323+
"tbz2",
324+
"tga",
325+
"tgz",
326+
"thmx",
327+
"tif",
328+
"tiff",
329+
"tlz",
330+
"ttc",
331+
"ttf",
332+
"txz",
333+
"udf",
334+
"uvh",
335+
"uvi",
336+
"uvm",
337+
"uvp",
338+
"uvs",
339+
"uvu",
340+
"viv",
341+
"vob",
342+
"war",
343+
"wav",
344+
"wax",
345+
"wbmp",
346+
"wdp",
347+
"weba",
348+
"webm",
349+
"webp",
350+
"whl",
351+
"wim",
352+
"wm",
353+
"wma",
354+
"wmv",
355+
"wmx",
356+
"woff",
357+
"woff2",
358+
"wrm",
359+
"wvx",
360+
"xbm",
361+
"xif",
362+
"xla",
363+
"xlam",
364+
"xls",
365+
"xlsb",
366+
"xlsm",
367+
"xlsx",
368+
"xlt",
369+
"xltm",
370+
"xltx",
371+
"xm",
372+
"xmind",
373+
"xpi",
374+
"xpm",
375+
"xwd",
376+
"xz",
377+
"z",
378+
"zip",
379+
"zipx",
380+
];

src/ui/history/components/logFileComponent.svelte

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
<script lang="ts">
22
import { setIcon, TFile } from "obsidian";
33
import type { DiffFile } from "src/types";
4-
import { getDisplayPath, getNewLeaf, mayTriggerFileMenu } from "src/utils";
4+
import {
5+
fileIsBinary,
6+
getDisplayPath,
7+
getNewLeaf,
8+
mayTriggerFileMenu,
9+
} from "src/utils";
510
import type HistoryView from "../historyView";
611
712
export let diff: DiffFile;
@@ -16,6 +21,14 @@
1621
0
1722
);
1823
24+
function mainClick(event: MouseEvent) {
25+
if (fileIsBinary(diff.path)) {
26+
open(event);
27+
} else {
28+
showDiff(event);
29+
}
30+
}
31+
1932
function open(event: MouseEvent) {
2033
const file = view.app.vault.getAbstractFileByPath(diff.vault_path);
2134
@@ -41,7 +54,7 @@
4154
<!-- svelte-ignore a11y-no-static-element-interactions -->
4255
<!-- svelte-ignore a11y-no-noninteractive-element-interactions -->
4356
<main
44-
on:click|stopPropagation={showDiff}
57+
on:click|stopPropagation={mainClick}
4558
on:auxclick|stopPropagation={(event) => {
4659
if (event.button == 2)
4760
mayTriggerFileMenu(
@@ -51,7 +64,7 @@
5164
view.leaf,
5265
"git-history"
5366
);
54-
else showDiff(event);
67+
else mainClick(event);
5568
}}
5669
on:focus
5770
class="tree-item nav-file"

src/ui/sourceControl/components/fileComponent.svelte

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,12 @@
44
import type { GitManager } from "src/gitManager/gitManager";
55
import type { FileStatusResult } from "src/types";
66
import { DiscardModal } from "src/ui/modals/discardModal";
7-
import { getDisplayPath, getNewLeaf, mayTriggerFileMenu } from "src/utils";
7+
import {
8+
fileIsBinary,
9+
getDisplayPath,
10+
getNewLeaf,
11+
mayTriggerFileMenu,
12+
} from "src/utils";
813
import type GitView from "../sourceControl";
914
1015
export let change: FileStatusResult;
@@ -20,6 +25,14 @@
2025
0
2126
);
2227
28+
function mainClick(event: MouseEvent) {
29+
if (fileIsBinary(change.path)) {
30+
open(event);
31+
} else {
32+
showDiff(event);
33+
}
34+
}
35+
2336
function hover(event: MouseEvent) {
2437
//Don't show previews of config- or hidden files.
2538
if (view.app.vault.getAbstractFileByPath(change.vault_path)) {
@@ -86,7 +99,7 @@
8699
<!-- svelte-ignore a11y-unknown-aria-attribute -->
87100
<main
88101
on:mouseover={hover}
89-
on:click|stopPropagation={showDiff}
102+
on:click|stopPropagation={mainClick}
90103
on:auxclick|stopPropagation={(event) => {
91104
if (event.button == 2)
92105
mayTriggerFileMenu(
@@ -96,7 +109,7 @@
96109
view.leaf,
97110
"git-source-control"
98111
);
99-
else showDiff(event);
112+
else mainClick(event);
100113
}}
101114
on:focus
102115
class="tree-item nav-file"

0 commit comments

Comments
 (0)