📄 pgindent
字号:
#!/bin/sh# Known bugs:## Blank line is added after, seen as a function definition, no space# after *:# y = (int) x *y;trap "rm -f /tmp/$$ /tmp/$$a" 0 1 2 3 15entab </dev/null >/dev/nullif [ "$?" -ne 0 ]then echo "Go to the src/tools/entab directory and do a 'make' and 'make install'." >&2 echo "This will put the 'entab' command in your path." >&2 echo "Then run $0 again." exit 1fiindent -? </dev/null >/dev/null 2>&1if [ "$?" -ne 1 ]then echo "You do not appear to have 'indent' installed on your system." >&2 exit 1fiindent -gnu </dev/null >/dev/null 2>&1if [ "$?" -eq 0 ]then echo "You appear to have GNU indent rather than BSD indent." >&2 echo "See the pgindent/README file for a description of its problems." >&2 EXTRA_OPTS="-cdb -bli0 -npcs -cli4 -sc"else echo "Hope you installed /src/tools/pgindent/indent.bsd.patch." >&2 EXTRA_OPTS="-cli1"fifor FILEdo cat "$FILE" |# convert // comments to /* */ sed 's;^\([ ]*\)//\(.*\)$;\1/* \2 */;g' |# Avoid bug that converts 'x =- 1' to 'x = -1' sed 's;=- ;-= ;g' |# mark some comments for special treatment later sed 's;/\* *---;/*---X_X;g' |# workaround for indent bug with 'else' handling sed 's;\([} ]\)else[ ]*\(/\*.*\)$;\1else\\2;g' | detab -t4 -qc |# work around bug where function that defines no local variables misindents# switch() case lines and line after #else. Do not do for struct/enum. awk ' BEGIN {line1 = ""; line2 = ""} { line2 = $0; if (NR >= 2) print line1; if (NR >= 2 && line2 ~ "^{[ ]*$" && line1 !~ "^struct" && line1 !~ "^enum" && line1 !~ "^typedef" && line1 !~ "^extern[ ][ ]*\"C\"" && line1 !~ "=" && line1 ~ "\)") print "int pgindent_func_no_var_fix;"; line1 = line2; } END { if (NR >= 1) print line1; }' |# prevent indenting of code in 'extern "C"' blocks awk ' BEGIN {line1 = ""; line2 = ""; skips = 0} { line2 = $0; if (skips > 0) skips--; if (line1 ~ "^#ifdef[ ]*__cplusplus" && line2 ~ "^extern[ ]*\"C\"[ ]*$") { print line1; print line2; if (getline && $0 ~ /^{[ ]*$/) print "/* Open extern \"C\" */"; else print $0; line2 = ""; skips = 2; } else if (line1 ~ "^#ifdef[ ]*__cplusplus" && line2 ~ "^}[ ]*$") { print line1; print "/* Close extern \"C\" */"; line2 = ""; skips = 2; } else if (skips == 0 && NR >= 2) print line1; line1 = line2; } END { if (NR >= 1 && skips <= 1) print line1; }' |# protect backslashes in DATA() sed 's;^DATA(.*$;/*&*/;' |# protect wrapping in CATALOG() sed 's;^CATALOG(.*$;/*&*/;' >/tmp/$$a# We get the list of typedef's from /src/tools/find_typedef indent -bad -bap -bc -bl -d0 -cdb -nce -nfc1 -di12 -i4 -l75 \ -lp -nip -npro -bbb $EXTRA_OPTS \-TASN1_BIT_STRING \-TASN1_BMPSTRING \-TASN1_BOOLEAN \-TASN1_CTX \-TASN1_ENUMERATED \-TASN1_GENERALIZEDTIME \-TASN1_GENERALSTRING \-TASN1_HEADER \-TASN1_IA5STRING \-TASN1_INTEGER \-TASN1_METHOD \-TASN1_NULL \-TASN1_OBJECT \-TASN1_OCTET_STRING \-TASN1_PRINTABLESTRING \-TASN1_STRING \-TASN1_STRING_TABLE \-TASN1_T61STRING \-TASN1_TIME \-TASN1_TYPE \-TASN1_UNIVERSALSTRING \-TASN1_UTCTIME \-TASN1_UTF8STRING \-TASN1_VISIBLESTRING \-TA_Const \-TA_Expr \-TA_Expr_Kind \-TA_Indices \-TAbsoluteTime \-TAcl \-TAclId \-TAclItem \-TAclMode \-TAclObjectKind \-TAclResult \-TAgg \-TAggHashEntry \-TAggHashEntryData \-TAggInfo \-TAggState \-TAggStatePerAgg \-TAggStatePerAggData \-TAggStatePerGroup \-TAggStatePerGroupData \-TAggStrategy \-TAggref \-TAggrefExprState \-TAlgCode \-TAlias \-TAllocBlock \-TAllocBlockData \-TAllocChunk \-TAllocChunkData \-TAllocPointer \-TAllocSet \-TAllocSetContext \-TAlterDatabaseSetStmt \-TAlterDomainStmt \-TAlterGroupStmt \-TAlterSeqStmt \-TAlterTableStmt \-TAlterUserSetStmt \-TAlterUserStmt \-TAppend \-TAppendPath \-TAppendState \-TArchive \-TArchiveEntryPtr \-TArchiveFormat \-TArchiveHandle \-TArchiveMode \-TArrayBuildState \-TArrayExpr \-TArrayExprState \-TArrayMetaState \-TArrayRef \-TArrayRefExprState \-TArrayType \-TAtom \-TAttInMetadata \-TAttrDefault \-TAttrNumber \-TAuthRequest \-TBF_KEY \-TBIGNUM \-TBIO \-TBIO_F_BUFFER_CTX \-TBIO_METHOD \-TBIO_dummy \-TBIT_STRING_BITNAME \-TBMS_Membership \-TBN_BLINDING \-TBN_CTX \-TBN_MONT_CTX \-TBN_RECP_CTX \-TBOX \-TBTBuildState \-TBTItem \-TBTItemData \-TBTMetaPageData \-TBTPageOpaque \-TBTPageOpaqueData \-TBTPageState \-TBTScanOpaque \-TBTScanOpaqueData \-TBTSpool \-TBTStack \-TBTStackData \-TBUF_MEM \-TBackend \-TBackendId \-TBitmapset \-TBkpBlock \-TBlock \-TBlockId \-TBlockIdData \-TBlockNumber \-TBoolExpr \-TBoolExprState \-TBoolExprType \-TBoolPtr \-TBoolTestType \-TBooleanTest \-TBpChar \-TBucket \-TBufFile \-TBufFlags \-TBuffer \-TBufferDesc \-TBufferLookupEnt \-TBufferTag \-TByte \-TBytef \-TCAST_KEY \-TCATEGORY \-TCBC_PARAM \-TCIRCLE \-TCOMP_CTX \-TCOMP_METHOD \-TCONSTRAINTCATEGORY \-TCPFunction \-TCPPFunction \-TCRYPTO_EX_DATA \-TCRYPTO_EX_DATA_FUNCS \-TCRYPTO_EX_dup \-TCRYPTO_EX_free \-TCRYPTO_EX_new \-TCRYPTO_dynlock \-TCacheCallbackFunction \-TCancelRequestPacket \-TCaseExpr \-TCaseExprState \-TCaseWhen \-TCaseWhenState \-TCash \-TCatCList \-TCatCTup \-TCatCache \-TCatCacheHeader \-TCatalogIndexState \-TChangeVarNodes_context \-TCheckPoint \-TCheckPointStmt \-TChromosome \-TCity \-TClientData \-TClosePortalStmt \-TClosePtr \-TClusterStmt \-TCmdType \-TCoalesceExpr \-TCoalesceExprState \-TCoerceToDomain \-TCoerceToDomainState \-TCoerceToDomainValue \-TCoercionCodes \-TCoercionContext \-TCoercionForm \-TColormap \-TColumnDef \-TColumnRef \-TCommandDest \-TCommandId \-TCommentStmt \-TCompositeTypeStmt \-TConnStatusType \-TConst \-TConstrCheck \-TConstrType \-TConstraint \-TConstraintsSetStmt \-TControlFileData \-TCopyDest \-TCopyReadResult \-TCopyStmt \-TCost \-TCostSelector \-TCreateCastStmt \-TCreateConversionStmt \-TCreateDomainStmt \-TCreateFunctionStmt \-TCreateGroupStmt \-TCreateOpClassItem \-TCreateOpClassStmt \-TCreatePLangStmt \-TCreateSchemaStmt \-TCreateSchemaStmtContext \-TCreateSeqStmt \-TCreateStmt \-TCreateStmtContext \-TCreateTrigStmt \-TCreateUserStmt \-TCreatedbStmt \-TCred \-TCursor \-TCustomOutPtr \-TDBState \-TDCHCacheEntry \-TDCH_poz \-TDEADLOCK_INFO \-TDH \-TDH_METHOD \-TDIR \-TDR_printtup \-TDSA \-TDSA_METHOD \-TDSA_SIG \-TDataDumperPtr \-TDateADT \-TDatum \-TDatumPtr \-TDatumTuple \-TDeallocateStmt \-TDeclareCursorStmt \-TDefElem \-TDeferredTriggerEvent \-TDeferredTriggerEventData \-TDeferredTriggerEventItem \-TDeferredTriggerStatus \-TDeferredTriggerStatusData \-TDeferredTriggers \-TDeferredTriggersData \-TDefineStmt \-TDeleteStmt \-TDependencyType \-TDepth \-TDestReceiver \-TDisplay \-TDistinctExpr \-TDl_info \-TDlelem \-TDllist \-TDomainConstraintState \-TDomainConstraintType \-TDrawable \-TDropBehavior \-TDropCastStmt \-TDropGroupStmt \-TDropPLangStmt \-TDropPropertyStmt \-TDropStmt \-TDropUserStmt \-TDropdbStmt \-TDumpContext \-TDynamicFileList \-TEDGE \-TERR_STATE \-TERR_STRING_DATA \-TEState \-TEVP_CIPHER \-TEVP_CIPHER_CTX \-TEVP_CIPHER_INFO \-TEVP_ENCODE_CTX \-TEVP_MD \-TEVP_MD_CTX \-TEVP_PBE_KEYGEN \-TEVP_PKEY \-TEdge \-TEndBlobPtr \-TEndBlobsPtr \-TEndDataPtr \-TEolType \-TErrorContextCallback \-TErrorData \-TExecScanAccessMtd \-TExecStatus \-TExecStatusType \-TExecuteStmt \-TExplainState \-TExplainStmt \-TExpr \-TExprContext \-TExprContextCallbackFunction \-TExprContext_CB \-TExprDoneCond \-TExprFieldSelect \-TExprState \-TFILE \-TFSMHeader \-TFSMPageData \-TFSMRelation \-TFUNMAP \-TFastList \-TFetchDirection \-TFetchStmt \-TFieldSelect \-TFile \-TFileName \-TFindSplitData \-TFkConstraint \-TFmgrBuiltin \-TFmgrInfo \-TFont \-TFormData_pg_aggregate \-TFormData_pg_am \-TFormData_pg_amop \-TFormData_pg_amproc \-TFormData_pg_attrdef \-TFormData_pg_attribute \-TFormData_pg_cast \-TFormData_pg_class \-TFormData_pg_constraint \-TFormData_pg_conversion \-TFormData_pg_database \-TFormData_pg_depend \-TFormData_pg_description \-TFormData_pg_group \-TFormData_pg_index \-TFormData_pg_inherits \-TFormData_pg_language \-TFormData_pg_largeobject \-TFormData_pg_listener \-TFormData_pg_namespace \-TFormData_pg_opclass \-TFormData_pg_operator \-TFormData_pg_proc \-TFormData_pg_rewrite \-TFormData_pg_sequence \-TFormData_pg_shadow \-TFormData_pg_statistic \-TFormData_pg_trigger \-TFormData_pg_type \-TForm_pg_aggregate \-TForm_pg_am \-TForm_pg_amop \-TForm_pg_amproc \-TForm_pg_attrdef \-TForm_pg_attribute \-TForm_pg_cast \-TForm_pg_class \-TForm_pg_constraint \-TForm_pg_conversion \-TForm_pg_database \-TForm_pg_depend \-TForm_pg_description \-TForm_pg_group \-TForm_pg_index \-TForm_pg_inherits \-TForm_pg_language \-TForm_pg_largeobject \-TForm_pg_listener \-TForm_pg_namespace \-TForm_pg_opclass \-TForm_pg_operator \-TForm_pg_proc \-TForm_pg_rewrite \-TForm_pg_sequence \-TForm_pg_shadow \-TForm_pg_statistic \-TForm_pg_trigger \-TForm_pg_type \-TFormatNode \-TFromExpr \-TFsmCacheFileHeader \-TFsmCacheRelHeader \-TFuncCall \-TFuncCallContext \-TFuncCandidateList \-TFuncDetailCode \-TFuncExpr \-TFuncExprState \-TFuncInfo \-TFuncWithArgs \-TFunction \-TFunctionCallInfo \-TFunctionCallInfoData \-TFunctionScan \-TFunctionScanState \-TGC \-TGContext \-TGISTBuildState \-TGISTENTRY \-TGISTPageOpaque \-TGISTPageOpaqueData \-TGISTSTACK \-TGISTSTATE \-TGISTScanList \-TGISTScanListData \-TGISTScanOpaque \-TGISTScanOpaqueData \-TGIST_SPLITVEC \-TGUC_yy_size_t \-TGUC_yy_state_type \-TGene \-TGenericExprState \-TGrantObjectType \-TGrantStmt \-TGroup \-TGroupClause \-TGroupState \-TGucContext \-TGucSource \-THASHACTION \-THASHBUCKET \-THASHCTL \-THASHELEMENT \-THASHHDR \-THASHSEGMENT \-THASH_SEQ_STATUS \-THISTORY_STATE \-THIST_ENTRY \-THTAB \-THTSV_Result \-THash \-THashBuildState \-THashItem \-THashItemData \-THashJoin \-THashJoinState \-THashJoinTable \-THashJoinTuple \-THashJoinTupleData \-THashMetaPage \-THashMetaPageData \-THashPageOpaque \-THashPageOpaqueData \-THashPath \-THashScanList \-THashScanListData \-THashScanOpaque \-THashScanOpaqueData \-THashState \-THashTableData \-THeapScanDesc \-THeapScanDescData \-THeapTuple \-THeapTupleData \-THeapTupleHeader \-THeapTupleHeaderData \-TIOFuncSelector \-TIdList \-TInClauseInfo \-TIncrementVarSublevelsUp_context \-TIndex \-TIndexAttributeBitMap \-TIndexAttributeBitMapData \-TIndexAttrs \-TIndexBuildCallback \-TIndexBulkDeleteCallback \-TIndexBulkDeleteResult \-TIndexElem \-TIndexFSMPageData \-TIndexInfo \-TIndexList \-TIndexOptInfo \-TIndexPath \-TIndexScan \-TIndexScanDesc \-TIndexScanDescData \-TIndexScanDescPtr \-TIndexScanState \-TIndexStmt \-TIndexStrategy \-TIndexStrategyData \-TIndexTuple \-TIndexTupleData \-TIndexVacuumCleanupInfo \-TIndirectBlock \-TInhInfo \-TInhOption \-TInhPaths \-TInhRelation \-TInnerIndexscanInfo \-TInsertIndexResult \-TInsertIndexResultData \-TInsertStmt \-TInstrumentation \-TInt8TransTypeData \-TIntArray \-TInt_yy_size_t \-TInt_yy_state_type \-TInt_yysigned_char \-TInterval \-TInvalidationChunk \-TInvalidationListHeader \-TIpcMemoryId \-TIpcMemoryKey \-TIpcSemaphoreId \-TIpcSemaphoreKey \-TItem \-TItemId \-TItemIdData \-TItemIdFlags \-TItemLength \-TItemOffset \-TItemPointer \-TItemPointerData \-TJoin \-TJoinExpr \-TJoinInfo \-TJoinPath \-TJoinState \
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -