Czy istnieje pakiet / wtyczka / etc dla TextMate umożliwiający wyszukiwanie deklaracji funkcji w plikach?

3

Wiele nowoczesnych IDE zapewnia możliwość przeskakiwania do deklaracji funkcji za pomocą prostego skrótu lub specjalnego kliknięcia myszą w wywołaniu funkcji. Jest to jedyna rzecz, która powstrzymuje TextMate od bycia moim jednym IDE, aby rządzić nimi wszystkimi.

Jak dotąd uważam, że TextMate doskonale nadaje się do tworzenia stron internetowych i tworzenia skryptów, ale wykonywanie na nim dużych aplikacji C ++ lub Java może sprawiać pewne problemy.

rjroy
źródło

Odpowiedzi:

0

Oto jak to zrobić w TextMate (od Pamięć podręczna Google ):

Wiele IDE ma możliwość „przeskoczenia” do deklaracji funkcji   w ramach projektu, w którym pracujesz. Oto jak to zrobić   TextMate. Zakładając, że rozumiesz pakiety, poniższy skrypt Basha powinien   należy umieścić w poleceniu z wyjściem ustawionym na Pokaż jako wskazówkę narzędzia   w końcu wybieramy żądaną kombinację klawiszy.

Po przygotowaniu wystarczy nacisnąć kombinację klawiszy podczas umieszczania Careta   nad twoją funkcją. Poniższy skrypt będzie przechodził przez PHP   pliki szukają deklaracji, a następnie otwierają dokument TextMate pod adresem   właściwa linia. Gdy skrypt nie powiedzie się, pojawi się podpowiedź   wystawiany.

FUNC="$TM_CURRENT_WORD"
DIR="$TM_PROJECT_DIRECTORY"
OUTPUT=''

FILES=(`find "$DIR" -type f | egrep '\.(module|inc|php|engine|install)$'`)

#
# Look for a function declaration within a files contents.
#
# <file> <function>
#
function lookup_function {
  local line=`nl -b a "$1" | grep 'function '"$2"'(' | awk '{print $1}'`
  if [[ "$line" -gt 0 ]]; then
    mate "$1" -l "$line"
    exit 0
  fi
}

# Iterate files
for (( i=0; i < ${#FILES[*]}; i++)); do
  file="${FILES[${i}]}"
  lookup_function "$file" "$FUNC"
done

# Nothing found
echo 'Function '${FUNC}' was not found within the current project.'

Ponadto sprawdź to:

http://www.cocoabits.com/TmCodeBrowser/

ghoppe
źródło
1

Zmodyfikowałem skrypt ghoppe, aby działał dla klasy Pythona i definicje funkcji (działa również trochę szybciej):

FUNC="$TM_CURRENT_WORD"
DIR="$TM_PROJECT_DIRECTORY"
OUTPUT=''

# Define the class or function definition string that we're looking for.
FUNCDEF='(def|class) '$FUNC

# Find all files that contain FUNCDEF
FILES=(`egrep "$FUNCDEF" $DIR/* -r -l --include=*.py`)

#
# Look for a function declaration within a files contents.
#
# <file>
#
function lookup_function {
    local line=`nl -b a "$1" | egrep "$FUNCDEF" | awk '{print $1}'`
    if [[ "$line" -gt 0 ]]; then
      # echo 'Jumping to --> '$1':'$line
      mate "$1" -l "$line"
      exit 0
    fi
}

# Iterate files
for file in ${FILES[@]}; do
    echo $file
    lookup_function "$file"
done

# Nothing found
echo 'Function '${FUNC}' was not found within the current project.'
Mihnea Giurgea
źródło
0

Podczas gdy TextMate ma formatowanie leksykalne (pogrubienie, kursywa, kolorowanie itp.), Nie ma on prawdziwego zrozumienia rzeczywistego kodu, który wpisujesz. Aby zrobić bardziej skomplikowane rzeczy, takie jak ty, TextMate musiałby wykonać inny rodzaj analizy oprócz formatowania, które jest coraz bliższe kompilatorowi.
Z tego co wiem TextMate nie obsługuje teraz tej funkcji.

Daisetsu
źródło