Giter Club home page Giter Club logo

ackmate's Introduction

Description

AckMate is a TextMate plugin for running Ack in a Cocoa window.

This plugin is only compatible with Mac OS X 10.5 and above.

Donations

Like many of you, I do this sort of thing to keep my family warm, clothed, and fed. Every hour I spend on AckMate is an hour that I'm not billing for.

If you find AckMate useful, a small donation is a great way to show your appreciation.

Binary Installation

  • Download the latest release from the downloads section
  • Save any unsaved documents you have open in TextMate
  • Unpack the zip file and double-click the AckMate.tmplugin icon

Usage

Check the wiki for usage instructions.

Building From Source

AckMate's build process requires Ragel to be in your PATH.

Contributing

I'm always willing to look at a pull request.

However, any pull requests that include changes to the ackmate_ack.autogenerated file will be ignored without comment.

Changes to ack itself should be directed to Andy Lester (the author of ack) via his github repo. I will periodically rebase AckMate's version of ack against the offical ack release.

ackmate's People

Contributors

caius avatar lazyatom avatar protocool avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ackmate's Issues

Malformed UTF-8 error?

Whenever I search for anything I get a few dozen of these after my correct search results. Even an empty search result will have them:

utf8 "\xE2" does not map to Unicode at /Users/pbhogan/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack at line 1560, <$fh> line 1.
Malformed UTF-8 character (unexpected non-continuation byte 0xe3, immediately after start byte 0xe2 in pattern match (m//) at /Users/pbhogan/Library/Application Support/TextMate/PlugIns/AckMate.tmplugin/Contents/Resources/ackmate_ack at line 1568.

keyboard commands should mirror the find/replace dialog

In the standard find/replace dialog you can use a couple of key combo's to toggle the checkboxes. cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Regular Expression".

It would be useful to have Ackmate respond to the same key combos. So cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Literal Match".

Upgrade to ack 1.96

I would like to use the new --invert-file-match option in ack 1.96 - can you upgrade the bundled version to 1.96?

Search only the selected folder and it's descendants

Ack in Project had the ability to only search the selected folder in the project drawer. I don't seem to be able to get this working in AckMate. I'd love to have this back because my projects can get quite large and the searches take much longer than they should.

Selection sometimes wrong

I can't reproduce it reliably, but sometimes the selection of the search text is not correct when the file is already opened.

Can't open files without using mouse

It'd be nice if I could search/open files without having to use my mouse.

I can tab my way to the results, and move to the file I want, but I would like to be able to open files without using my mouse. Am I just missing a shortcut? Pressing return just searches again.

"Use TextMate folder references" doesn't work

My global TextMate folder patterns and the project's folder patterns both exclude a directory named coverage. I have "Use TextMate folder references" checked but this directory is still included in search results unless I add "--ignore-dir=coverage" to my options.

Hot Key config

Hi, are your sure that command+option+control+F - it's the easiest combination to call AckMate ?

"rake" type doesn't seem to work

I am trying to search for stuff that appears in my .rake files using the "rake" type option but am getting no results.

In the mean time, I've added the .rake extension to my Ruby type:

--type-add=ruby=.haml,.rake,.rsel,.liquid,.feature,.sjs,.treetop

I've confirmed that the search works for the modified "ruby" type that also includes the .rake extension.

Any ideas on why searching the rake type wouldn't work though? I tried changing the "rake" type in my .ackrc to see if I could manually add .rake but that type appears immutable.

Let me know if this is an Ack issue rather than an AckMate issue.

Can't restrict results to a given subfolder

Okay, it's a bit snarky to file this as an issue, but I'm about to install "Ack In Project" specifically so I can search an arbitrary subdirectory. "Time to switch to AckMate folks..." (the latest commit message there as of this writing) is nice and all, but 'ack in subfolder' is the one use case I really like -- rather than scrolling past a bunch of stuff I don't want to see, I'd rather not have it appear in the first place.

Searching for words containing Å, Ä or Ö.

It might be an issue with Ack directly, but it doesn’t seem to be possible to search for words containing local characters like Å, Ä and Ö. Also, the selection is wrong when you search for a partial word that contains those characters.

keyboard commands should mirror the find/replace dialog

In the standard find/replace dialog you can use a couple of key combo's to toggle the checkboxes. cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Regular Expression".

It would be useful to have Ackmate respond to the same key combos. So cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Literal Match".

AckMate changed TextMate's Font Hinting

Just installed AckMate, restarted TextMate and found my font hinting had changed. No idea how to get it back. Removing the plug-in has no effect. Hoping a fresh install of TextMate will fix it. Any idea what might cause this issue?

ackmate-changed-textmates-font-hinting

AckMate inconsistently reading .ackrc

I have some custom extensions defined in ~/.ackrc and AckMate is reading some and ignoring others. Here is are the contents of the file:

--type-add=html=.haml,.liquid
--type-add=css=.sass
--ignore-dir=vendor
--ignore-dir=templates

I am using version 1.1.1 of AckMate because of the utf8 bug already mentioned in the know issue list as well as the latest release of textmate. When I do a search I get results from haml and liquid files but not from sass files. The really odd thing is that if I put this line ( --type-add=css=.sass) in the options input on the search I do get result hits from sass files. I cannot figure out why it works one way and not the other. I tried upgrading to 1.1.2, but that doesn't fix the issue.

Please Help.

incompatible with TextMate 2.0 Alpha

When I open AckMate.tmplugin (from the Finder) using TextMate 2.0 Alpha, the plugin does not register itself. Instead a new editor window opens (viewing the contents of the tmplugin bundle folder).

Opening AckMate.tmplugin with an pre-2.0 version of TextMate like 1.5.10 works fine.

Searching rooted at selected folder

The previous bundle implementation rooted searches at the selected folder, rather than the project root. Any plans on adding that functionality to this implementation?

Feature Request: easier switching back and forth between default

AckMate rocks. I want to set it to the default CMD+SHIFT+F, however it doesnt have Replace functionality. This is fine, but is there a way you could have a button that switches back to the default textmate search and replace?

Ideal workflow:

  1. cmd+shift+f to open ackmate
  2. do searching, everything is fine
  3. oh shit, i need to do a search/replace. press "use textmate default" toggle to switch back

extra points if you have a toggle command that I can map to command+shift+f:

  1. command+shift+f open ackmate
  2. command+shift+f (when ackmate is in foreground) to switch back to textmate find/replace
  3. command+shift+f (when textmate find/replace is in foreground) to switch back to ackmate

Feel free to close this bug if it sounds too crazy. I'm fine having 2 shortcuts, but it would be even more awesome if it were just one.

Thanks!

Add support for HAML files

It appears that AckMate ignores HAML files as its ack doesn't know the file type. I've tried to teach it the file type using a ~/.ackrc file but the embedded ackmate_ack is throwing errors at my --type-set haml=.haml directive.

A command line ackmate_ack --type-set haml=.haml foo /my/project works, tho.

So I'm unsure whether it'd be easier to fix AckMate's issues with the .ackrc file or bake in HAML support.

Also, I hope this project isn't dead by now. :)

AckMate shows files not contained in the TextMate project

(This issue the same as topfunky/PeepOpen-Issues#64)

  1. Create a project file using File > New Project
  2. Drag some files and folders into the project (e.g. drag a few gem folders from your gems directory)
  3. Search using AckMate
  4. AckMate will show results for files that are not in the project file, but are children of some common ancestor of the items in the project file (e.g. it will show files from gems that you've installed, but that are not included in the texmate project)

How can I exclude certain dirs?

I have a large data directory in my profile... I've tried --ignore-dir=data, but that doesn't work... I've already tried playing around with --ackmate-dir-filter, but I can't get that to work either.

Please advise?

Upgrade ackmate_ack?

Is there any chance of upgrading the version of ack used in the plugin to a more recent version? 1.96 seems to be the current version and it has some options which I'd like to use that the ackmate version (1.92) doesn't have. E.g., --color-lineno. Having an incompatibility between the ackmate version and the command-line one means that a single .ackrc can't be used.

Error at EOF?

see these errors in red. often.

utf8 "\xD1" does not map to Unicode at /Users/../Contents/Resources/ackmate_ack line 1560, <$fh> line 1.
Malformed UTF-8 character (unexpected non-continuation byte 0x20, immediately after start byte 0xd1) in pattern match (m//) at /Users/../Contents/Resources/ackmate_ack line 1568.

Add UI for --ignore-dir and -G switches

A list based UI to add ignored directory names would be very useful. I have to enter a large number of these options through the Options field. Adding a line for the -G and a checkbox for --invert-file-match would be helpful as well.

Crashs periodically on Lion

Another person with same issue:
https://gist.github.com/1184968

Always the same stack track of NSTokenField respondsToSelector:... spoke with Allan Osgard and he said Textmate doesn't even use a NSTokenField and since AckMate did there is a good chance the crash could fall on AckMate's shoulders... can anyone else seeing this problem please jump in here.

My log:

Process:         TextMate [34526]
Path:            /Applications/TextMate.app/Contents/MacOS/TextMate
Identifier:      com.macromates.textmate
Version:         1.5.10 (1631)
Code Type:       X86 (Native)
Parent Process:  launchd [179]

Date/Time:       2011-08-31 23:33:14.336 -0400
OS Version:      Mac OS X 10.7.1 (11B2118)
Report Version:  9

Interval Since Last Report:          14321 sec
Crashes Since Last Report:           1
Per-App Interval Since Last Report:  14313 sec
Per-App Crashes Since Last Report:   1
Anonymous UUID:                      005762D1-9097-4963-A23D-6411890272E0

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x00000000d0141aa1

VM Regions Near 0xd0141aa1:
    CG shared images       00000000c2b47000-00000000c2b4f000 [   32K] r--/r-- SM=SHM  
--> 
    Submap                 00000000ffff0000-00000000ffff2000          r-x/r-x process-only submap

Application Specific Information:
objc_msgSend() selector name: respondsToSelector:
objc[34526]: garbage collection is OFF

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libobjc.A.dylib                 0x96406d47 objc_msgSend + 23
1   com.apple.AppKit                0x977302f1 -[NSTokenField respondsToSelector:] + 416
2   com.apple.AppKit                0x97731bc9 -[NSTokenFieldCell _attributedStringForRepresentedObjects:] + 105
3   com.apple.AppKit                0x97735d46 -[NSTokenFieldCell _unformattedAttributedStringValue:] + 103
4   com.apple.AppKit                0x970e7e5c -[NSCell _attributedStringValue:invalid:] + 269
5   com.apple.AppKit                0x970e7d20 -[NSCell attributedStringValue] + 172
6   com.apple.AppKit                0x970f5a5b __NSGetStringAndAttributesFromTextCell + 86
7   com.apple.AppKit                0x970f47a9 _NSDrawTextCell + 257
8   com.apple.AppKit                0x970f3f53 -[NSTextFieldCell drawInteriorWithFrame:inView:] + 776
9   com.apple.AppKit                0x970f3c40 -[NSTextFieldCell drawWithFrame:inView:] + 893
10  com.apple.AppKit                0x970eba0c -[NSControl drawRect:] + 373
11  com.apple.AppKit                0x970b497a -[NSView _drawRect:clip:] + 3717
12  com.apple.AppKit                0x970e46e3 -[NSView _recursiveDisplayAllDirtyWithLockFocus:visRect:] + 1958
13  com.apple.AppKit                0x970b22db -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 708
14  com.apple.AppKit                0x970b3448 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5169
15  com.apple.AppKit                0x970b3448 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5169
16  com.apple.AppKit                0x970b3448 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5169
17  com.apple.AppKit                0x970b3448 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5169
18  com.apple.AppKit                0x970b3448 -[NSView _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 5169
19  com.apple.AppKit                0x970b18e5 -[NSThemeFrame _recursiveDisplayRectIfNeededIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:topView:] + 259
20  com.apple.AppKit                0x970acf59 -[NSView _displayRectIgnoringOpacity:isVisibleRect:rectIsVisibleRectForView:] + 4817
21  com.apple.AppKit                0x970a5e5d -[NSView displayIfNeeded] + 1365
22  com.apple.AppKit                0x970a2c35 -[NSWindow displayIfNeeded] + 316
23  com.apple.AppKit                0x970a572c _handleWindowNeedsDisplayOrLayoutOrUpdateConstraints + 804
24  com.apple.CoreFoundation        0x9be4faad _runLoopObserverWithBlockContext + 29
25  com.apple.CoreFoundation        0x9be1c07e __CFRUNLOOP_IS_CALLING_OUT_TO_AN_OBSERVER_CALLBACK_FUNCTION__ + 30
26  com.apple.CoreFoundation        0x9be1bfbd __CFRunLoopDoObservers + 413
27  com.apple.CoreFoundation        0x9bdee994 __CFRunLoopRun + 1044
28  com.apple.CoreFoundation        0x9bdee1ec CFRunLoopRunSpecific + 332
29  com.apple.CoreFoundation        0x9bdee098 CFRunLoopRunInMode + 120
30  com.apple.HIToolbox             0x93e37487 RunCurrentEventLoopInMode + 318
31  com.apple.HIToolbox             0x93e3ecee ReceiveNextEventCommon + 168
32  com.apple.HIToolbox             0x93e3ec32 BlockUntilNextEventMatchingListInMode + 88
33  com.apple.AppKit                0x970656c0 _DPSNextEvent + 678
34  com.apple.AppKit                0x97064f2d -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 113
35  com.apple.AppKit                0x9706129f -[NSApplication run] + 904
36  com.apple.AppKit                0x972f4928 NSApplicationMain + 1054
37  com.macromates.textmate         0x0012e4f2 main + 168
38  com.macromates.textmate         0x0000610e _start + 216
39  com.macromates.textmate         0x00006035 start + 41

Crash when closing project before search has ended

Hello, I did love Ack in Project and I'm now fond of AckMate, which I use a lot. This is however an annoying bug, if I close a project while a search is still running, it crashes Textmate badly, loosing any changes I may have in other files. I'm using Snow Leopard, I've tried using both TextMate 1.5.9 (1510) and TextMate 1.5.9 (1589).

Respect "Recursively Include Contents Matching" project information

I'm ignoring the build directory using the following contents matching pattern in my project settings

!.*/(\.[^/]*|CVS|build|_darcs|_MTN|\{arch\}|blib|.*~\.nib|.*\.(framework|app|pbproj|pbxproj|xcode(proj)?|bundle))$

It would be nice if AckMate could _ack_knowledge that. Right now "Using TextMate folder references" only respects the application settings for folder references.

If project has multiple folders, AckMate appears to search from their common ancestor

I have a project into which I've dragged the folders ~/foo/bar/ and ~/foo/baz/. When I search the project with AckMate, I also get results from ~/foo/blah/. It appears that AckMate is determining that the common ancestor of my folders is ~/foo/ and is searching its contents.

The command line version of ack appears to handle this correctly. I do "cd ~/foo; ack expression bar baz", I do not get results from blah.

keyboard commands should mirror the find/replace dialog

In the standard find/replace dialog you can use a couple of key combo's to toggle the checkboxes. cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Regular Expression".

It would be useful to have Ackmate respond to the same key combos. So cmd-alt-i toggles "Ignore Case" and cmd-alt-r toggles "Literal Match".

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.