diff --git a/QLColorCode.xcodeproj/project.pbxproj b/QLColorCode.xcodeproj/project.pbxproj index fa9b139..0237d09 100644 --- a/QLColorCode.xcodeproj/project.pbxproj +++ b/QLColorCode.xcodeproj/project.pbxproj @@ -206,6 +206,12 @@ isa = PBXProject; attributes = { LastUpgradeCheck = 0940; + TargetAttributes = { + 8D57630D048677EA00EA77CD = { + DevelopmentTeam = 7MGU4K38T3; + ProvisioningStyle = Manual; + }; + }; }; buildConfigurationList = 2CA326220896AD4900168862 /* Build configuration list for PBXProject "QLColorCode" */; compatibilityVersion = "Xcode 3.2"; @@ -328,8 +334,14 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "Developer ID Application: Curt Tate-Roach (7MGU4K38T3)"; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 7MGU4K38T3; + ENABLE_HARDENED_RUNTIME = YES; OTHER_CFLAGS = "-DDEBUG"; + OTHER_CODE_SIGN_FLAGS = "--timestamp"; }; name = Debug; }; @@ -337,7 +349,13 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_OBJC_WEAK = YES; + CODE_SIGN_IDENTITY = "Developer ID Application: Curt Tate-Roach (7MGU4K38T3)"; + CODE_SIGN_INJECT_BASE_ENTITLEMENTS = NO; + CODE_SIGN_STYLE = Manual; COMBINE_HIDPI_IMAGES = YES; + DEVELOPMENT_TEAM = 7MGU4K38T3; + ENABLE_HARDENED_RUNTIME = YES; + OTHER_CODE_SIGN_FLAGS = "--timestamp"; }; name = Release; }; diff --git a/src/GeneratePreviewForURL.m b/src/GeneratePreviewForURL.m index f3b991b..602b7e9 100644 --- a/src/GeneratePreviewForURL.m +++ b/src/GeneratePreviewForURL.m @@ -58,9 +58,10 @@ OSStatus GeneratePreviewForURL(void *thisInterface, QLPreviewRequestRef preview, stringForKey:@"webkitTextEncoding"]; if (!textEncoding || [textEncoding length] == 0) textEncoding = @"UTF-8"; - CFDictionaryRef properties = - (CFDictionaryRef)[NSDictionary dictionaryWithObject:textEncoding - forKey:(NSString *)kQLPreviewPropertyTextEncodingNameKey]; + CFDictionaryRef properties = (CFDictionaryRef)@{ + (__bridge NSString *)kQLPreviewPropertyTextEncodingNameKey : textEncoding, + (__bridge NSString *)kQLPreviewPropertyMIMETypeKey : @"text/html", + }; if (use_rtf) QLPreviewRequestSetDataRepresentation(preview, (CFDataRef)rtf, kUTTypeRTF, properties); diff --git a/test/css/blog-stylesheet.css b/test/css/blog-stylesheet.css deleted file mode 100644 index a3b1e6e..0000000 --- a/test/css/blog-stylesheet.css +++ /dev/null @@ -1,307 +0,0 @@ -/* For help understanding this stuff see: - http://www.w3.org/TR/2004/CR-CSS21-20040225/cover.html#minitoc - -#f30 reddish (bird) -#f60 orange (bedspread) -#f93 light orange (bird beak) - -#630 brown (wood streaks) -#c60 light brown (wood) -#cc0 yellowish (egg yolk) - -#036 dark blue (streaks on wall) -#369 light blue (picture frame) - -#666 gray (wall) -#ccc light gray (shaded white) - -#996 Yellowish olive green. -#50573f Classic n8gray NEdit green. - -*/ - -/* Generic styles */ -body { - font-family: Verdana,Geneva,Arial,Sans-serif; - color: white; - background: black; -} -a { - color: inherit -} -code, pre { - color: #036; -} - -/* Header styles */ -.pagetitle { - font-size: 150%; - font-weight: bold; - color: #f93; - text-shadow: rgba(0, 255, 255, 0.7) 0px 0px 10px; -} -.pagesubtitle { - font-size: small; - color: #996; -} -.dateheader { - font-size: 120%; - font-weight: bold; - /* color: #630; */ - color: #f93; - text-shadow: rgba(0, 0, 0, 0.4) 3px 3px 3px; /* h, v, blurriness */ -} - -/* Style for gradient row at top */ -.gradrow img { - display: block; -} - -/* Content bar styles */ -.contentTable { - /* background: yellow; */ -} - - -/* The left-hand (navigation) column */ -.leftbar { - border-width: 0; - margin: 0; - font-size: 80%; - /* background: #50573f; */ - background: #996; - /* color: white; */ - color: black; - padding: 18px; -} -.leftbar a:link:hover, .leftbar a:visited:hover { - color: #ff0; -} -.leftbar h3 { - font-size: 100%; - font-weight: bold; - /* color: #f93; */ - color: #630; - text-shadow: rgba(255, 96, 0, 0.7) 0px 0px 10px; - /* text-shadow: rgba(0, 0, 0, 0.4) 3px 3px 3px; */ /* h, v, blurriness */ -} -.leftbar p { - margin-left: 1em; -} - - -/* The right-hand (main content) column */ -.rightbar { - max-width: 100em; - max-width: 80em; - border-width: 0; - margin: 0; - /* background: #996 url(/images/bee-clear.gif) center fixed no-repeat; */ - background: #50573f url(/images/bee-clear.gif) center fixed no-repeat; - padding: 18px; - padding-top: 15px; - border: 3px solid #996; - border-left-width: 0; -} -.rightbar a:link:hover, .rightbar a:visited:hover, -.blosxomCalendar a:link:hover, .blosxomCalendar a:visited:hover { - color: #f30; -} - - -/* Story styles */ -.blosxomCalendar, -.commentbox, -.storybox -{ - background: #666; - color: #333; - border-style: solid; - border-color: #f60; - border-width: 1px; - /* font-size: small; */ - width: 100%; - padding: 0px; - margin-bottom: 1em; - clear: left; -} - -.blosxomCalendarHead, -.commenttitle, -.storytitle -{ - color: white; - background: #f93; - font-weight: bold; - text-shadow: rgba(0, 0, 0, 0.4) 3px 3px 3px; /* h, v, blurriness */ - width: 100%; - padding: 2px; -} - -.commentbody, -.storybody -{ - background: #fff url(/images/bee-blurry.gif) center fixed no-repeat; - text-align: justify; - padding: 4px; -} - -.commentbody p:first-letter, -.storybody p:first-letter -{ - font-size: 110%; - color: #f30; -} - -.commentfooter, -.storyfooter -{ - background: #fff url(/images/bee-blurry.gif) center fixed no-repeat; - text-align: right; - padding: 4px; - font-size: small; - font-style: italic; -} - -.storybody img -{ - border-style: solid; - border-color: #f60; - border-width: 1px; -} - -/* comment styles */ -.commentbox { - border-color: yellow; -} -.indextitle, .commenttitle { - background: #50573f -} -.commentbody pre { - font: inherit; - color: inherit; -} -.commentfooter { } -.comment_msg { - border-style: solid; - border-color: #f60; - border-width: 1px; - width: 75%; - padding: 0px; - margin-bottom: 1em; - clear: left; - background: red; - color: white; - font-size: large; - text-align: center; -} - -/* Styles for the calendar */ -.blosxomCalendar { /* The calendar table */ - background: #666; - font-size: 90%; - text-align: right; -} - -.blosxomCalendarHead { /* The Month header row */ - font-size: 90%; -} - -.blosxomCalendarWeekHeader { /* The Week header row */ - font-size: 80%; - background: #996; - color: white; - font-weight: normal; -} - -.blosxomCalendarEmpty { /* A non-day cell */ - background: #666; -} - -.blosxomCalendarBlogged, /* A day with a blog entry */ -.blosxomCalendarCell, /* A normal day */ -.blosxomCalendarToday { /* Today */ - background: white; -} - -.blosxomCalendarBlogged, -.blosxomCalendarSpecificDay { /* The "currently focused" day */ - font-weight: bold; -} - -.blosxomCalendarSpecificDay { - background: yellow; -} - -.blosxomCalendarToday { - background: #f93; - color: white; -} - -/* Styles for the Category tree: */ -.leftbar ul, -.headlines, -.categorytree { - list-style-type: none; - /* Prevent over-indentation of the list items */ - margin-left: 1em; - padding-left: 0; -} - -.categorytree_item {} - -/* Headlines classes include: - headlines, headlines_date, headlines_item */ - -.headlines_item { - margin-bottom: 0.75em; -} - -/* ************************************************************************* */ -/* This is the magic CSS rollover code! */ -/* ************************************************************************* */ - -#buttonList { - /* This style makes a list look nothing like a list. :-) */ - list-style-type: none; - border: 0; - padding: 0; - margin: 0; -} - -#buttonList > li { /* The > selects immediate children */ - /* Pad between the buttons */ - padding-bottom: 2px; -} - -#buttonList a { - /* Make the entire button clickable by turning links into blocks */ - display: block; - height: 36px; - width: 150px; - line-height: 36px; - /* This causes the text to be vertically centered */ - font-family: Arial Narrow,Helvetica,Sans-serif,Verdana,Geneva; - font-size: 14pt; - font-weight: bold; - text-align: center; - text-decoration: none; - /* Disable underline */ - background-image: url(/images/blankBoth.gif); - background-repeat: no-repeat; -} - -#buttonList a:hover, -#buttonList a#here { - /* Highlight on hover, or by default for current page's button */ - color: yellow; - background-position: top left; -} - -#buttonList a, -#buttonList a:active, -#buttonList a#here:active { - /* Unhighlight unselected buttons, and while clicking */ - color: #220; - background-position: bottom left; -} diff --git a/test/css/main-stylesheet.css b/test/css/main-stylesheet.css deleted file mode 100644 index febcb84..0000000 --- a/test/css/main-stylesheet.css +++ /dev/null @@ -1,207 +0,0 @@ -/* For help understanding this stuff see: - http://www.w3.org/TR/2004/CR-CSS21-20040225/cover.html#minitoc - -#f30 reddish (bird) -#f60 orange (bedspread) -#f93 light orange (bird beak) - -#630 brown (wood streaks) -#c60 light brown (wood) -#cc0 yellowish (egg yolk) - -#036 dark blue (streaks on wall) -#369 light blue (picture frame) - -#666 gray (wall) -#ccc light gray (shaded white) - -#996 Yellowish olive green. -#50573f Classic n8gray NEdit green. - -*/ - -/* Generic styles */ -body { - background: black; -} -a { - color: inherit -} - -a:link:hover, a:visited:hover { - color: #f30 -} - -/* Style for gradient row at top */ -.gradrow img { - display: block; -} - -/* This is a trick for getting something to center vertically. - see: http://www.wpdfd.com/editorial/thebox/deadcentre4.html */ -#horizon { - /* A 1px-high, full-width box halfway down the screen */ - position: absolute; - top: 50%; - left: 0px; - width: 100%; - height: 1px; - overflow: visible; /* This is critical! */ - display: block; -} - -#topdiv { - /* The "absolute" positioning of the nested table is relative to #horizon */ - position: absolute; - bottom: -175px; /* Half the height */ - left: 50%; /* Put the left edge in the center, except... */ - margin-left: -150px; /* Move the left edge back so image is centered */ - - background-image: url("/images/redlizard_duncan_parks-tail.png"); - background-repeat: no-repeat; - background-position: bottom left; - - padding-bottom: 70px; /* Ensure the bottom of the tail is visible */ -} - -#lizardpanel { - background: #50573f; - /* background: #996; */ - /* background: white; */ - border: solid #996; - border-left-width: 3px; - border-bottom-width: 3px; - border-right-width: 0; - border-top-width: 0; - width: 121px; - overflow: visible; -} - -#notail { - position: absolute; - bottom: 0px; - z-index: 9999; -} - -/* #tail { - position: absolute; - bottom: -30px; - z-index: 1; -} */ - -.rtpanel { - background-repeat: no-repeat; - background-position: left; -} -.navtable { - z-index: 5000; -} - -.navtitle_l, -.navtitle_r { - color: #f93; - background: #50573f; - font-weight: bold; - font-family: Arial,Helvetica,Sans-Serif; - text-shadow: rgba(0, 0, 0, 0.4) 3px 3px 3px; /* h, v, blurriness */ - padding: 2px; - padding-left: 4px; - padding-right: 4px; - text-align: center; - border: 3px solid #996; - border-bottom-width: 0; -} -.navtitle_r { - border-left-width: 0; -} -.navtitle_l { - border-right-width: 0; -} - - -.navcell { - padding: 4px; - background: #996; - color: white; - text-align: center; -} - -/* Style the button list differently on the front page */ -.navcell #buttonList a { - background-image: url(/images/blankBoth.gif); - -} - -/* The table inside the gradient, containing the button bar and content. */ -.innerTable { - background-color: #996; -} - -/* The left column (with the button bar) */ -.leftcol { - padding: 18px; -} - -/* The right column (with the content) */ -.rightcol { - background-color: #50573f; - padding: 18px; - padding-top: 15px; - border: 3px solid #996; - border-left-width: 0; - - color: white; -} -.rightcol h3 { - color: #f93; -} -.rightcol a { - color: yellow; -} - -/* ************************************************************************* */ -/* This is the magic CSS rollover code! */ -/* ************************************************************************* */ - -#buttonList { - /* This style makes a list look nothing like a list. :-) */ - list-style-type: none; - border: 0; - padding: 0; - margin: 0; -} - -#buttonList > li { /* The > selects immediate children */ - /* Pad between the buttons */ - padding-bottom: 2px; -} - -#buttonList a { - /* Make the entire button clickable by turning links into blocks */ - display: block; - height: 36px; - width: 150px; - line-height: 36px; /* This causes the text to be vertically centered */ - font-family: Arial Narrow,Helvetica,Sans-serif,Verdana,Geneva; - font-size: 14pt; - font-weight: bold; - text-align: center; - text-decoration: none; /* Disable underline */ - background-image: url(/images/blankBoth.gif); - background-repeat: no-repeat; -} - -#buttonList a:hover, -#buttonList a#here { - /* Highlight on hover, or by default for current page's button */ - color: yellow; - background-position: top left; -} - -#buttonList a, -#buttonList a:active, -#buttonList a#here:active { - /* Unhighlight unselected buttons, and while clicking */ - color: #220; - background-position: bottom left; -} diff --git "a/test/de\314\201ltatre\303\270/de\314\201ltatre\303\270.ml" "b/test/de\314\201ltatre\303\270/de\314\201ltatre\303\270.ml" deleted file mode 100644 index 259c1c8..0000000 --- "a/test/de\314\201ltatre\303\270/de\314\201ltatre\303\270.ml" +++ /dev/null @@ -1,249 +0,0 @@ -(** - * Delta Tree - * - * @author Nathaniel Gray - * @version 0.1 - * - * This is a proof-of-concept of a data structure that can be used, for example, - * to keep track of marks (or newlines) in a text file while supporting quick - * insertion and deletion of text. The main "innovation" comes from storing - * the elements as offsets rather than absolute values. I think that this - * idea can be applied to almost any type of tree, but I'm using 2-3 trees - * because I find them easy to think about. - * - * The idea is that as you dig down into the tree you keep a sum of the - * deltas that you pass on the right. So this is one possible tree for - * the values [50, 75, 100, 130, 150, 200, 295, 297]: - * {v - [ 100 100 ] - ___/ | \___ - / | \ - [50 25] [30 20] [95 2] - v} - * To retrieve the values, perform an inorder walk of the tree, adding the - * values in each node. This representation is useful because if you want to - * insert 35 characters at position 110 you only need to update two entries - * (marked with * ): - * {v - [ 100 *135 ] - ___/ | \___ - / | \ - [50 25] [*65 20] [95 2] - v} - * Text insertion costs h (the height of the tree) additions in the worst - * case. Adding or deleting marks has the usual log n cost for element - * insertion/deletion. - * - *) - -open Printf - -let debug = true - -module type DeltaTree = -sig - type 'a t - - val empty : 'a t - val add : 'a t -> int -> 'a -> 'a t - val find : 'a t -> int -> int * 'a - val print_tree : ('a -> string) -> 'a t -> unit - (* val remove : 'a t -> int -> 'a t *) -end - -module DeltaTree : DeltaTree = -struct - type 'elt dtree = - Node of 'elt dtree * (int * 'elt) * 'elt dtree * (int * 'elt) option - * 'elt dtree - | Leaf - - type 'a t = 'a dtree - - let empty = Leaf - - type direction = Left | Center | Right - - let rec print_tree printer indent prefix tree = - let print_tree = print_tree printer in - match tree with - Leaf -> () (* printf "%s%sLeaf\n" indent prefix *) - | Node (tl, (pl, el), tc, er_opt, tr) -> - begin match er_opt with - Some (pr, er) -> - print_tree (indent ^ " ") "/-" tr; - printf "%s%s[%i, %s]\n" indent prefix pr (printer er); - print_tree (indent ^ " ") ">-" tc - | None -> - print_tree (indent ^ " ") "/-" tc - end; - printf "%s%s[%i, %s]\n" indent prefix pl (printer el); - print_tree (indent ^ " ") "\\-" tl - - let print_tree printer tree = - print_tree printer "" "" tree - - type 'elt pick_subtree_result = - MatchElt of direction * (int * 'elt) - | Subtree of direction * (int * 'elt) option * int * 'elt dtree - - (* A utility function *) - let dtree_pick_subtree d (t1, e1, t2, e2opt, t3) pos = - (* if debug then - printf "pick_subtree: %i, %i\n" d pos; *) - let pos1 = d + fst e1 in - if pos = pos1 then - MatchElt (Left, e1) - else if pos < pos1 then - Subtree (Left, None, d, t1) - else - let d = pos1 in - match e2opt with - None -> - Subtree (Center, Some e1, d, t2) - | Some e2 -> - (* if debug then - printf "pick_subtree2: %i, %i\n" d pos; *) - let pos2 = d + fst e2 in - if pos = pos2 then - MatchElt (Right, e2) - else if pos < pos2 then - Subtree (Center, Some e1, d, t2) - else - Subtree (Right, Some e2, pos2, t3) - - - let rec dtree_find_pos d best_elt dtree pos : (int * 'elt) option = - match dtree with - Node (t1, e1, t2, e2opt, t3) -> - begin - match dtree_pick_subtree d (t1, e1, t2, e2opt, t3) pos with - MatchElt (_, e) -> - Some e - | Subtree (_, lparent, d, t) -> - begin - let best_elt = match lparent with - None -> best_elt - | e -> e - in - dtree_find_pos d best_elt t pos - end - end - | Leaf -> - best_elt - - (* - * Find the element before or at position pos. - * If the position is before any element, returns None. Otherwise - * returns Some (elt_pos, elt). - *) - let find dtree pos : (int * 'elt) option = - dtree_find_pos 0 None dtree pos - - let find dtree pos = - match find dtree pos with - Some x -> x - | None -> raise Not_found - - type 'elt insert_result = - Promote of 'elt dtree * (int * 'elt) * 'elt dtree - | Done of 'elt dtree - - (* Have to be careful to keep the deltas in shape while unwinding *) - let unwind_insert d (t1, e1, t2, e2opt, t3) dir result = - match result, e2opt, dir with - (* These are the easy Done cases *) - Done node, _, Left -> - Done (Node (node, e1, t2, e2opt, t3)) - | Done node, _, Center -> - Done (Node (t1, e1, node, e2opt, t3)) - | Done node, _, Right -> - Done (Node (t1, e1, t2, e2opt, node)) - - (* These are the easy merge cases *) - | Promote (tl, e, tr), None, Left -> - let p = fst e in - let p1 = fst e1 in - let e1 = (p1 - p, snd e1) in - Done (Node (tl, e, tr, Some e1, t2)) - | Promote (tl, e, tr), None, Center -> - Done (Node (t1, e1, tl, Some e, tr)) - - (* These are the merge cases that require promoting an element *) - | Promote (tl, e, tr), Some e2, Left -> - let left_tree = Node (tl, e, tr, None, Leaf) in - let right_tree = Node (t2, e2, t3, None, Leaf) in - Promote (left_tree, e1, right_tree) - | Promote (tl, e, tr), Some e2, Center -> - let p = fst e in - let p1 = fst e1 in - let p2 = fst e2 in - let e = (p1 + p, snd e) in - let e2 = (p2 - p, snd e2) in - let left_tree = Node (t1, e1, tl, None, Leaf) in - let right_tree = Node (tr, e2, t3, None, Leaf) in - Promote (left_tree, e, right_tree) - | Promote (tl, e, tr), Some e2, Right -> - let p1 = fst e1 in - let p2 = fst e2 in - let e2 = (p2 + p1, snd e2) in - let left_tree = Node (t1, e1, t2, None, Leaf) in - let right_tree = Node (tl, e, tr, None, Leaf) in - Promote (left_tree, e2, right_tree) - | _ -> - failwith "Internal error: unwind_insert" - - - let rec dtree_insert_elt d dtree pos elt = - match dtree with - Node (t1, e1, t2, e2opt, t3) -> - begin - match dtree_pick_subtree d (t1, e1, t2, e2opt, t3) pos with - MatchElt (dir, e) -> - (* There's already an element at this position - For now just replace it. Later maybe I should think - about this more *) - (* if debug then - printf "match: %i (%s -> %s)\n" pos (snd e) elt; *) - if dir = Left then - Done (Node (t1, (pos-d, elt), t2, e2opt, t3)) - else - Done (Node (t1, e1, t2, Some (pos-(fst e1), elt), t3)) - | Subtree (dir, lparent, d', tree) -> - let insert_result = dtree_insert_elt d' tree pos elt in - unwind_insert d (t1, e1, t2, e2opt, t3) dir - insert_result - end - | Leaf -> - (* if debug then - printf "promote: %i, %s\n" (pos-d) elt; *) - Promote (Leaf, (pos-d, elt), Leaf) - - let add dtree pos elt = - match dtree_insert_elt 0 dtree pos elt with - Done node -> - node - | Promote (tl, e, tr) -> - Node (tl, e, tr, None, Leaf) - - (* let remove dtree pos = *) - - -end - - - -let _ = - let values = [5; 15; 10; 20; 30; 25; 35; 40; 1; 95; 3928; 298; 22; 17; 5] in - (* let values = List.rev values in *) - let values = List.map (fun x -> x, string_of_int x ^ "s" ) values in - let print_tree = DeltaTree.print_tree (fun x-> "\"" ^ x ^ "\"") in - let dt = DeltaTree.empty in - let dt = List.fold_left - (fun dt (loc, str) -> - print_tree dt; print_newline (); - DeltaTree.add dt loc str) - dt values - in - print_tree dt - diff --git a/test/mdlocate.bogus_extension b/test/mdlocate.bogus_extension deleted file mode 100644 index 8811ec2..0000000 --- a/test/mdlocate.bogus_extension +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/sh -f - -mdfind "kMDItemFSName == \"$1\"" diff --git a/test/objc/DMWindowMemoryController.m b/test/objc/DMWindowMemoryController.m deleted file mode 100644 index 120929d..0000000 --- a/test/objc/DMWindowMemoryController.m +++ /dev/null @@ -1,116 +0,0 @@ -// -// DMWindowMemoryController.m -// DMWindowMemory -// -// Created by Nathaniel Gray on 5/25/06. -// Copyright 2006 __MyCompanyName__. All rights reserved. -// - -#import "DMWindowMemoryController.h" -#import "Notifications.h" - -@implementation DMWindowMemoryController - -- someMethod { -} - -- someOtherMethod -{} - -- foo : (baz) bar { -} - -+ blah { -} - -- (NSString*) name { - return @"Window Memory Plugin"; -} -- (NSString*) description { - return @"A plugin to save and restore the positions of your windows when your screen configuration changes"; -} -- (int) interfaceVersion { - return 1; -} -- (NSBundle*) preferencesBundle { - return nil; -} - -/* This is in response to notification that the screen geometry has changed */ -- (void) handleScreenChange: (NSNotification *)notif { - NSLog(@"*** handleScreenChange\n"); - [mConfigurationLock lock]; - NSEnumerator *configEnum = [mConfigurations objectEnumerator]; - ScreenConfiguration *config; - BOOL found = NO; - while (config = [configEnum nextObject]) { - if ([config matchesCurrentConfig]) { - NSLog(@"Found matching config: %@", config); - mCurrentConfig = config; - [config restoreWindowLayout]; - found = YES; - break; - } - } - if (!found) { - config = [ScreenConfiguration configWithCurrent]; - [mConfigurations insertObject:config - atIndex:0]; - mCurrentConfig = config; - NSLog(@"Added new config: %@", config); - } - [mConfigurationLock unlock]; -} - -/* This is in response to the periodic updates to the window layout on screen */ -- (void) handleWindowChanges: (NSNotification *)notif { - //NSLog(@"handleWindowChanges\n"); - [mConfigurationLock lock]; - [mCurrentConfig updateWindowLayout]; - [mConfigurationLock unlock]; -} - -- (void) pluginLoaded: (DMController*) controller withBundle: (NSBundle*) thisBundle -{ - NSLog(@"DMWindowMemoryController pluginLoaded\n"); - mController = controller; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - mConfigurationLock = [[NSLock alloc] init]; - [mConfigurationLock lock]; - - // Find out when screens are added/removed - [nc addObserver: self - selector: @selector(handleScreenChange:) - name: NSApplicationDidChangeScreenParametersNotification - object: nil]; - - // Get the periodic window layout updates - [nc addObserver: self - selector: @selector(handleWindowChanges:) - name: NOTIFICATION_WINDOWLAYOUTUPDATED - object: nil]; - - mCurrentConfig = [ScreenConfiguration configWithCurrent]; - mConfigurations = [[NSMutableArray arrayWithObject:mCurrentConfig] retain]; - [mConfigurationLock unlock]; - NSLog(@"Finished initializing plugin\n"); -} - -- (void) dealloc { - [mConfigurationLock lock]; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - [nc removeObserver:self]; - // We don't release mCurrentConfig because we never actually retain it. - if (mConfigurations) { - [mConfigurations release]; - mConfigurations = nil; - } - if (mController) { - [mController release]; - mController = nil; - } - [mConfigurationLock unlock]; - [mConfigurationLock release]; - [super dealloc]; -} -@end diff --git a/test/objc/X11BridgeController.m b/test/objc/X11BridgeController.m deleted file mode 100644 index fb9ad4d..0000000 --- a/test/objc/X11BridgeController.m +++ /dev/null @@ -1,552 +0,0 @@ - -#import "X11BridgeController.h" -#import "ForeignWindow.h" -#import "CGSPrivate.h" - -#import /* For XmuClientWindow */ -#import -/* #define XP_NO_X_HEADERS -#import */ - -@implementation X11BridgeController - - -/***************************************************************************** - * Debugging and logging macros - */ -//#define DEBUG_X11 -#ifdef DEBUG_X11 -#define LOG(cmd) cmd -#else -#define LOG(cmd) do {} while(0) -#endif - -//#define SILENT_X11 -#ifdef SILENT_X11 -#define ERR(cmd) do {} while(0) -#else -#define ERR(cmd) cmd -#endif - - -/*************************************************************************** -** Plugin Methods -*/ -- (NSString*) name { return @"X11 Bridge"; } -- (NSString*) description { return @"Integrate Desktop Manager with X11."; } -- (int) interfaceVersion { return 1; } -- (NSBundle*) preferencesBundle { return nil; } - -/*************************************************************************** -** Global variables (gasp!) -*/ - -DMController *mDMController; -WorkspaceController *mWSController; - -Display *Disp; -Window Root; - -NSMutableDictionary *x11_of_native, *native_of_x11; - -Atom net_supported; -/* Atom net_supporting_wm_check; */ -Atom net_current_desktop; -Atom net_number_of_desktops; -/* Atom net_desktop_names; -Atom net_desktop_layout; */ -Atom net_wm_desktop; -/* Atom net_wm_state_sticky; -Atom wm_state; */ -Atom native_window_id; - -/***************************************************************************** - * Utility Macros - */ -#define SET_CARD32(win,atom,valuePtr) XChangeProperty(Disp, (win), \ - (atom), XA_CARDINAL, 32, \ - PropModeReplace, (unsigned char *)(valuePtr), 1) -#define SET_DESKTOP(n) \ - do { unsigned int v = (n); \ - SET_CARD32( Root, net_current_desktop, &v ); } while (0) -#define SET_WIN_DESKTOP(win,n) \ - do { unsigned int v = (n); \ - SET_CARD32( (win), net_wm_desktop, &v ); } while (0) - -/***************************************************************************** - * X11 Error handlers - */ - -/* Define our own error handlers that don't crash DM */ -int xErrHandler( Display *d, XErrorEvent *error ) { - char message[1024]; - XGetErrorText(d, error->error_code, message, 1024); - message[1023] = '\0'; - ERR(NSLog( @"%s", message )); - return 0; -} - -/* - * For some reason this often gets called twice when the server dies. - * Surprisingly, it all works out ok despite that. - */ -int ioErrHandler( Display *d ) { - Disp = NULL; - ERR(NSLog( @"X11BridgeController: I/O Error. Perhaps the X Server Died.\n" )); - @throw( @"X11 IO Error" ); -} - -/***************************************************************************** - * Utility functions - */ - -/* - * Intern all the atoms we'll need - */ -void intern_atoms() -{ - net_supported = - XInternAtom(Disp, "_NET_SUPPORTED", False); - /* net_supporting_wm_check = - XInternAtom(Disp, "_NET_SUPPORTING_WM_CHECK", False); */ - net_current_desktop = - XInternAtom(Disp, "_NET_CURRENT_DESKTOP", False); - net_number_of_desktops = - XInternAtom(Disp, "_NET_NUMBER_OF_DESKTOPS", False); - /* net_desktop_names = - XInternAtom(Disp, "_NET_DESKTOP_NAMES", False); - net_desktop_layout = - XInternAtom(Disp, "_NET_DESKTOP_LAYOUT", False); - net_wm_state_sticky = - XInternAtom(Disp, "_NET_WM_STATE_STICKY", False); - */ - net_wm_desktop = - XInternAtom(Disp, "_NET_WM_DESKTOP", False); - /* wm_state = - XInternAtom(Disp, "WM_STATE", False); */ - /* This atom is supported by X11.app and XDarwin.app, which is very good - for us! */ - native_window_id = - XInternAtom(Disp, "_NATIVE_WINDOW_ID", False); -} - -Window x11_window_of_native_window( CGSWindow w_native ) { - NSValue *v_native = - [NSValue value:&w_native withObjCType:@encode(CGSWindow)]; - NSValue *v_x11 = [x11_of_native objectForKey:v_native]; - - /* It's a shame this doesn't work. - { - xp_window_id winid; - xp_bool status; - status = xp_lookup_native_window( (unsigned int)w_native, &winid ); - LOG(NSLog(@"xp_lookup_native_window: lookup %u -> %d, 0x%x\n", - (unsigned int)w_native, status, (unsigned int)winid)); - } */ - - if (!v_x11) - return 0; - Window w; - [v_x11 getValue:(void *)(&w)]; - return w; -} - -CGSWindow native_window_of_x11_window( Window w ) { - Window w_dummy, *wins, found=(Window)0, parent, w_orig = w; - unsigned int n_wins; - Atom type; - int format; - unsigned long n_items, bytes_after; - CGSWindow *win_id_ptr; - - - XGrabServer(Disp); - - /* It's a shame this doesn't work. - { - unsigned int natid; - xp_bool status; - status = xp_get_native_window( (xp_window_id)w, &natid ); - LOG(NSLog(@"xp_get_native_window: lookup 0x%x -> %d, %d\n", - (unsigned int)w, status, (unsigned int)natid)); - } */ - - for (; w != Root && !found; w = parent) { - if (XQueryTree( Disp, w, &w_dummy, &parent, &wins, &n_wins )) { - if (n_wins) - XFree(wins); - - n_items = 0; - //NSLog(@"0x%x", wins[i]); - XGetWindowProperty( Disp, parent, native_window_id, 0, 1, False, - AnyPropertyType, &type, &format, &n_items, - &bytes_after, (unsigned char **)(&win_id_ptr) ); - if (n_items) { - /* native_window_id property was read */ - //NSLog(@"= %d", *win_id_ptr); - found = *win_id_ptr; - XFree(win_id_ptr); - } - } else { - ERR(NSLog(@"X11BridgeController: XQueryTree failed\n")); - XUngrabServer(Disp); - return 0; - } - } - if (!found) { - LOG(NSLog(@"X11BridgeController: Failed to find native window for " - @"window 0x%x", w_orig)); - } - - XUngrabServer(Disp); - return found; -} - -void add_to_window_map( Window w ) { - NSValue *n_native, - *n_x11 = [NSValue value:&w withObjCType:@encode(Window)]; - if (![native_of_x11 objectForKey:n_x11]) { - CGSWindow native; - if ((native = native_window_of_x11_window( w ))) { - LOG(NSLog(@"Adding 0x%x <-> %d\n", w, native)); - n_native = [NSValue value:&native withObjCType:@encode(CGSWindow)]; - - // Put the windows in both maps - [native_of_x11 setObject:n_native forKey:n_x11]; - [x11_of_native setObject:n_x11 forKey:n_native]; - } - } -} - -void delete_from_window_map( Window w ) { - NSValue *n_native, - *n_x11 = [NSValue value:&w withObjCType:@encode(Window)]; - LOG(NSLog(@"Deleting 0x%x\n", w)); - n_native = [native_of_x11 objectForKey:n_x11]; - if (n_native) { - [x11_of_native removeObjectForKey:n_native]; - [native_of_x11 removeObjectForKey:n_x11]; - } -} - -int init_window_atoms(int nWorkspaces, int currentWorkspace) { - Window w, dummy_w, *wins; - unsigned int i,nwins; - Atom root_atoms[] = {net_wm_desktop, net_current_desktop, - net_number_of_desktops}; - CGSConnection conn; - - SET_CARD32(Root, net_number_of_desktops, &nWorkspaces); - SET_DESKTOP(currentWorkspace); - XChangeProperty(Disp, Root, net_supported, XA_ATOM, 32, PropModeAppend, - (unsigned char *)(&root_atoms[0]), 3); - - XGrabServer( Disp ); - if (!XQueryTree(Disp, Root, &dummy_w, &dummy_w, &wins, &nwins)) { - XUngrabServer( Disp ); - return 0; - } - - conn = _CGSDefaultConnection(); - for (i=0; ievent; - - if (w != Root) { - unsigned int currentWS = [mWSController currentWorkspaceIndex]; - LOG(NSLog( @"X11BridgeController: MapNotify event for window 0x%x.\n", - (unsigned int)w )); - SET_WIN_DESKTOP( w, currentWS ); - add_to_window_map( w ); - } else { - /* LOG(NSLog( @"X11BridgeController: " - @"Ignoring Root MapNotify event for 0x%x.\n", - (unsigned int)e->window )) */ - ; - } -} - -// This handles newly created or displayed windows -void handle_ReparentNotify( XEvent *event ) { - XReparentEvent *e = (XReparentEvent *)event; - Window w = e->window; - unsigned int currentWS = [mWSController currentWorkspaceIndex]; - - LOG(NSLog( @"ReparentNotify: New Parent = 0x%x, Window = 0x%x, " - @"override_redirect = %d\n", - e->parent, w, e->override_redirect )); - if ( e->parent != Root ) { - SET_WIN_DESKTOP( w, currentWS ); - // We want to know when this window gets mapped/unmapped - XSelectInput(Disp, w, StructureNotifyMask); - // This may fail, but if it does then the MapNotify will get it. - // If it succeeds then it would have been too late to catch the - // MapNotify. Thus we (probably) need both. - add_to_window_map( w ); - } -} - -void handle_UnmapNotify( XEvent *event ) { - XUnmapEvent *e = (XUnmapEvent *)event; - Window w = e->event; - - if ( w != Root ) { - LOG(NSLog( @"X11BridgeController: %s UnmapNotify event for window " - @"0x%x.\n", - (e->send_event ? "Synthetic" : ""), (unsigned int)w )); - XDeleteProperty( Disp, w, net_wm_desktop ); - delete_from_window_map( w ); - } else { - /* LOG(NSLog( @"X11BridgeController: " - @"Ignoring Root UnmapNotify event for 0x%x.\n", - (unsigned int)e->window )) */ - ; - } -} - -/***************************************************************************** - * The X11 Monitor thread - */ -- (void) startX11MonitorThread: (id)argument { - char *dispName; - NSAutoreleasePool *arp = [[NSAutoreleasePool alloc] init]; - - if (!XInitThreads()) { - ERR(NSLog(@"X11BridgeController: " - @"Couldn't initialize multithreaded Xlib.\n")); - return; - } - - XSetErrorHandler(xErrHandler); - XSetIOErrorHandler(ioErrHandler); - - /* XXX: We should allow another way to set this, like a file or a dialog */ - if (!(dispName = getenv("DISPLAY"))) - dispName = ":0"; - - x11_of_native = [NSMutableDictionary dictionaryWithCapacity:128]; - native_of_x11 = [NSMutableDictionary dictionaryWithCapacity:128]; - - /* { - xp_error err; - err = xp_init( XP_IN_BACKGROUND ); - if( !err ) - LOG(NSLog(@"Error on xp_init: %u\n", err)); - } */ - - while( 1 ) { - LOG(NSLog(@"Waiting for connection to X Server\n")); - Disp = NULL; - - [x11_of_native removeAllObjects]; - [native_of_x11 removeAllObjects]; - - @try { - while (!Disp) { - Disp = XOpenDisplay(dispName); - //NSLog(@"X11BridgeController: cannot open display\n"); - if(!Disp) - sleep(1); - } - LOG(NSLog(@"Opened connection to X Server\n")); - Root = DefaultRootWindow(Disp); - - /* Ask for notification whenever a child of the root window is - reparented, mapped, or unmapped */ - XSelectInput(Disp, Root, SubstructureNotifyMask); - - // Initialize the atoms on Root and windows that exist now. - intern_atoms(); - if (!init_window_atoms( [mWSController workspaceCount], - [mWSController currentWorkspaceIndex] )) { - ERR(NSLog(@"X11BridgeController: Error setting up root atoms\n")); - return; - } - - while ( 1 ) { - XEvent event; - NSAutoreleasePool *arp2 = [[NSAutoreleasePool alloc] init]; - - XNextEvent(Disp, &event); - - XLockDisplay(Disp); - switch (event.type) { - case UnmapNotify: - handle_UnmapNotify(&event); - break; - case MapNotify: - handle_MapNotify(&event); - break; - case ReparentNotify: - handle_ReparentNotify(&event); - break; - default: - break; - } - XUnlockDisplay(Disp); - [arp2 release]; - } - - } @catch( id ex ) { - // If the server exits we should end up here. - ; - } - - // XCloseDisplay(Disp); We never do this voluntarily. - } - [arp release]; -} - -/***************************************************************************** - * DM Event handlers - */ - -/* - * React to a change of workspace by setting the proper atom on X11's root - * window. - */ -- (void) setRootWorkspace: (NSNotification *)n { - int ws; - if (!Disp) - return; - ws = [mWSController currentWorkspaceIndex]; - @try { - XLockDisplay( Disp ); - SET_DESKTOP( ws ); - XUnlockDisplay( Disp ); - } @catch( id ex ) { - return; - } -} - -- (void) handleWindowWarp: (NSNotification *)n { - ForeignWindow *fw; - NSString *owner; - - if (!Disp) - return; - - fw = [n object]; - owner = [fw ownerName]; - /* XXX: These should be in a plist */ - if ( [owner compare:@"X11"] == NSOrderedSame - || [owner compare:@"XDarwin"] == NSOrderedSame ) { - int ws_index = [fw workspaceNumber] - 1; - CGSWindow native_w = [fw windowNumber]; - Window w = (Window)0; - - LOG(NSLog(@"Window #%d (%@) warped to workspace %d.\n", - native_w, owner, ws_index)); - @try { - XLockDisplay(Disp); - if (( w = x11_window_of_native_window(native_w) )) { - LOG(NSLog(@" -- X11 window: 0x%x\n", w)); - SET_WIN_DESKTOP( w, ws_index ); - } else { - ERR(NSLog(@"Couldn't convert native window %u to X11 window.\n", - (unsigned int)native_w)); - } - XUnlockDisplay(Disp); - } @catch( id ex ) { - return; - } - } -} - -#define X11_DESKTOP_STICKY 0xFFFFFFFFL -- (void) handleWindowSticky: (NSNotification *)n { - ForeignWindow *fw; - NSString *owner; - - if (!Disp) - return; - - fw = [n object]; - owner = [fw ownerName]; - if ( [owner compare:@"X11"] == NSOrderedSame - || [owner compare:@"XDarwin"] == NSOrderedSame ) { - @try { - CGSWindow native_w = [fw windowNumber]; - Window w = (Window)0; - - XLockDisplay(Disp); - if (( w = x11_window_of_native_window(native_w) )) { - long desktop = X11_DESKTOP_STICKY; - LOG(NSLog(@" -- X11 window: 0x%x\n", w)); - SET_WIN_DESKTOP( w, desktop ); - } else { - ERR(NSLog(@"Couldn't convert native window %u to X11 window.\n", - (unsigned int)native_w)); - } - XUnlockDisplay(Disp); - } @catch( id ex ) { - return; - } - } -} - -- (void) pluginLoaded: (DMController*) controller withBundle: (NSBundle*) thisBundle { - mDMController = controller; - mWSController = [controller workspaceController]; - NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; - - - // Start up the thread that monitors for X11 Events - [NSThread detachNewThreadSelector:@selector(startX11MonitorThread:) - toTarget:self - withObject:nil]; - - // Register for workspace switch events - // This needs to be done in this thread because notifications are always - // delivered in the same thread they're sent from. - [nc addObserver: self - selector: @selector(setRootWorkspace:) - name: NOTIFICATION_WORKSPACESELECTED object: nil]; - - // Register for window warp events - [nc addObserver: self - selector: @selector(handleWindowWarp:) - name: NOTIFICATION_WINDOWWARPED object: nil]; - - // Register for window sticky events - /* Actually, sticky windows work ok for now. They don't get - set to desktop 0xFFFFFFFF, but they always get set to the current - desktop. Later I should fix this, but it's a bit tricky. - [nc addObserver: self - selector: @selector(handleWindowSticky:) - name: NOTIFICATION_WINDOWSTICKY object: nil]; - [nc addObserver: self - selector: @selector(handleWindowWarp:) // Yes, that's right - name: NOTIFICATION_WINDOWUNSTICKY object: nil]; - */ - -} - -@end diff --git a/test/test$var$escaping.py b/test/test$var$escaping.py deleted file mode 100644 index 0ef36a5..0000000 --- a/test/test$var$escaping.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is encoded UTF-8 - -print u"Hello würld" -print u"This is a Lambda: λ" -print u"Some Cyrillic for you: Позвоните пожалуйста в милицию!" diff --git a/test/test%%.plist b/test/test%%.plist deleted file mode 100644 index c84446e..0000000 --- a/test/test%%.plist +++ /dev/null @@ -1,594 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleDocumentTypes - - - CFBundleTypeRole - QLGenerator - LSItemContentTypes - - public.source-code - public.xml - com.apple.property-list - org.tug.tex - public.plain-text - - - - CFBundleExecutable - ${EXECUTABLE_NAME} - CFBundleName - ${PRODUCT_NAME} - CFBundleIconFile - - CFBundleIdentifier - org.n8gray.qlcolorcode - CFBundleInfoDictionaryVersion - 6.0 - CFBundleVersion - ${CURRENT_PROJECT_VERSION} - CFBundleShortVersionString - ${CURRENT_PROJECT_VERSION} - CFPlugInDynamicRegisterFunction - - CFPlugInDynamicRegistration - NO - CFPlugInFactories - - C044543D-70A1-46D8-A908-4B8AEA1197A4 - QuickLookGeneratorPluginFactory - - CFPlugInTypes - - 5E2D9680-5022-40FA-B806-43349622E5B9 - - C044543D-70A1-46D8-A908-4B8AEA1197A4 - - - CFPlugInUnloadFunction - - QLSupportsConcurrentRequests - - QLNeedsToBeRunInMainThread - - QLThumbnailMinimumSize - 32 - QLPreviewWidth - 800 - QLPreviewHeight - 800 - UTImportedTypeDeclarations - - - UTTypeIdentifier - org.ocaml.ocaml-source - UTTypeReferenceURL - http://www.ocaml.org/ - UTTypeDescription - OCaml Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - ml - mll - mly - - - - - UTTypeIdentifier - org.ocaml.ocaml-interface - UTTypeReferenceURL - http://www.ocaml.org/ - UTTypeDescription - OCaml Interface File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - mli - - - - - UTTypeIdentifier - org.haskell.haskell-source - UTTypeReferenceURL - http://www.haskell.org/ - UTTypeDescription - Haskell Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - hs - - - - - UTTypeIdentifier - org.haskell.literate-haskell-source - UTTypeReferenceURL - http://www.haskell.org/ - UTTypeDescription - Literate Haskell Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - lhs - - - - - UTTypeIdentifier - org.n8gray.scheme-source - UTTypeDescription - scheme Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - scm - - - - - UTTypeIdentifier - org.n8gray.ini-source - UTTypeDescription - .ini Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - ini - - public.mime-type - text/x-ini - - - - UTTypeConformsTo - - public.text - - UTTypeDescription - TeX text file - UTTypeIdentifier - org.tug.tex - UTTypeTagSpecification - - com.apple.ostype - TEXT - public.filename-extension - - tex - latex - ltx - texi - ctx - sty - cls - - - - - UTTypeIdentifier - org.erlang.erlang-source - UTTypeDescription - Erlang Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - erl - hrl - - - - - UTTypeIdentifier - org.n8gray.standard-ml-source - UTTypeDescription - Standard ML Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - sml - - - - - UTTypeIdentifier - org.n8gray.structured-query-language-source - UTTypeDescription - SQL Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - sql - - - - - UTTypeIdentifier - org.n8gray.diff-script - UTTypeDescription - Diff File - UTTypeConformsTo - - public.script - - UTTypeTagSpecification - - public.filename-extension - - diff - patch - - - - - UTTypeIdentifier - public.css - UTTypeDescription - CSS File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - css - - - - - UTTypeIdentifier - org.lua.lua-source - UTTypeDescription - Lua Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - lua - - - - - UTTypeIdentifier - tk.tcl.tcl-source - UTTypeDescription - Tcl Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - tcl - - - - - UTTypeIdentifier - org.n8gray.jsp-source - UTTypeDescription - JSP Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - jsp - - - - - UTTypeIdentifier - com.adobe.actionscript - UTTypeDescription - Adobe Flash ActionScript Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - as - - - - - UTTypeIdentifier - org.n8gray.lisp - UTTypeDescription - Lisp Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - lisp - lsp - asd - el - - - - - UTTypeIdentifier - org.n8gray.idl - UTTypeDescription - IDL Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - pro - - - - - UTTypeIdentifier - org.n8gray.verilog - UTTypeDescription - Verilog Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - v - - - - - UTTypeIdentifier - org.n8gray.vhdl - UTTypeDescription - VHDL Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - vhdl - - - - - UTTypeIdentifier - org.n8gray.xhtml - UTTypeDescription - XHTML Source File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - xhtml - - - - - UTTypeIdentifier - org.n8gray.javaInstaller - UTTypeDescription - Java Web Installer (XML) - UTTypeConformsTo - - public.xml - - UTTypeTagSpecification - - public.filename-extension - - jnlp - - - - - UTTypeConformsTo - - public.source-code - - UTTypeDescription - Eiffel source code file - UTTypeIdentifier - com.eiffel.source-code - UTTypeTagSpecification - - public.filename-extension - - e - - - - - UTTypeConformsTo - - public.xml - - UTTypeDescription - EiffelStudio project configuration file - UTTypeIdentifier - com.eiffel.eiffelstudio-project-config - UTTypeTagSpecification - - public.filename-extension - - ecf - - - - - UTTypeConformsTo - - public.source-code - - UTTypeDescription - C# Source File - UTTypeIdentifier - com.microsoft.csharp-source - UTTypeReferenceURL - http://www.microsoft.com/ - UTTypeTagSpecification - - public.filename-extension - - cs - - - - - UTTypeConformsTo - - public.source-code - - UTTypeDescription - Visual Basic Source File - UTTypeIdentifier - com.microsoft.vb-source - UTTypeReferenceURL - http://www.microsoft.com/ - UTTypeTagSpecification - - public.filename-extension - - vb - - - - - UTTypeConformsTo - - public.source-code - - UTTypeDescription - Ruby on Rails File - UTTypeIdentifier - org.n8gray.railstemplate - UTTypeTagSpecification - - public.filename-extension - - rhtml - erb - rjs - - - - - UTTypeIdentifier - org.n8gray.bogusextension - UTTypeDescription - QLColorCode Test File - UTTypeConformsTo - - public.source-code - - UTTypeTagSpecification - - public.filename-extension - - bogus_extension - - - - - - UTTypeConformsTo - - public.source-code - - UTTypeDescription - Groovy Source Code - UTTypeIdentifier - org.codehaus.groovy-source - UTTypeTagSpecification - - public.filename-extension - - groovy - - - - - - - diff --git a/test/test-encoding.py b/test/test-encoding.py deleted file mode 100644 index 0ef36a5..0000000 --- a/test/test-encoding.py +++ /dev/null @@ -1,5 +0,0 @@ -# This file is encoded UTF-8 - -print u"Hello würld" -print u"This is a Lambda: λ" -print u"Some Cyrillic for you: Позвоните пожалуйста в милицию!"